veryfront 0.0.49 → 0.0.51

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 (493) 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 -215
  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 -4
  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/status/route.ts +3 -3
  25. package/dist/integrations/_base/files/app/api/integrations/token-storage/route.ts +26 -0
  26. package/dist/integrations/_base/files/app/components/ServiceConnections.tsx +2 -1
  27. package/dist/integrations/_base/files/app/setup/page.tsx +869 -55
  28. package/dist/integrations/_base/files/lib/token-store-examples.ts +435 -0
  29. package/dist/integrations/_base/files/lib/token-store.ts +273 -23
  30. package/dist/integrations/airtable/connector.json +99 -0
  31. package/dist/integrations/airtable/files/ai/tools/create-record.ts +25 -0
  32. package/dist/integrations/airtable/files/ai/tools/get-base.ts +34 -0
  33. package/dist/integrations/airtable/files/ai/tools/get-record.ts +23 -0
  34. package/dist/integrations/airtable/files/ai/tools/list-bases.ts +19 -0
  35. package/dist/integrations/airtable/files/ai/tools/list-records.ts +47 -0
  36. package/dist/integrations/airtable/files/app/api/auth/airtable/callback/route.ts +11 -0
  37. package/dist/integrations/airtable/files/app/api/auth/airtable/route.ts +9 -0
  38. package/dist/integrations/airtable/files/lib/airtable-client.ts +244 -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/aws/connector.json +72 -0
  59. package/dist/integrations/aws/files/_env.example +10 -0
  60. package/dist/integrations/aws/files/ai/tools/get-s3-object.ts +62 -0
  61. package/dist/integrations/aws/files/ai/tools/list-ec2-instances.ts +56 -0
  62. package/dist/integrations/aws/files/ai/tools/list-lambda-functions.ts +57 -0
  63. package/dist/integrations/aws/files/ai/tools/list-s3-buckets.ts +44 -0
  64. package/dist/integrations/aws/files/ai/tools/list-s3-objects.ts +58 -0
  65. package/dist/integrations/aws/files/lib/aws-client.ts +255 -0
  66. package/dist/integrations/bitbucket/connector.json +85 -0
  67. package/dist/integrations/bitbucket/files/_env.example +9 -0
  68. package/dist/integrations/bitbucket/files/ai/tools/create-pull-request.ts +83 -0
  69. package/dist/integrations/bitbucket/files/ai/tools/list-issues.ts +112 -0
  70. package/dist/integrations/bitbucket/files/ai/tools/list-pull-requests.ts +91 -0
  71. package/dist/integrations/bitbucket/files/ai/tools/list-repositories.ts +78 -0
  72. package/dist/integrations/bitbucket/files/app/api/auth/bitbucket/callback/route.ts +11 -0
  73. package/dist/integrations/bitbucket/files/app/api/auth/bitbucket/route.ts +9 -0
  74. package/dist/integrations/bitbucket/files/lib/bitbucket-client.ts +316 -0
  75. package/dist/integrations/box/connector.json +85 -0
  76. package/dist/integrations/box/files/_env.example +4 -0
  77. package/dist/integrations/box/files/ai/tools/create-folder.ts +28 -0
  78. package/dist/integrations/box/files/ai/tools/get-file.ts +29 -0
  79. package/dist/integrations/box/files/ai/tools/list-files.ts +33 -0
  80. package/dist/integrations/box/files/ai/tools/search-files.ts +35 -0
  81. package/dist/integrations/box/files/ai/tools/upload-file.ts +32 -0
  82. package/dist/integrations/box/files/app/api/auth/box/callback/route.ts +11 -0
  83. package/dist/integrations/box/files/app/api/auth/box/route.ts +7 -0
  84. package/dist/integrations/box/files/lib/box-client.ts +280 -0
  85. package/dist/integrations/calendar/files/app/api/auth/calendar/callback/route.ts +7 -110
  86. package/dist/integrations/calendar/files/app/api/auth/calendar/route.ts +5 -25
  87. package/dist/integrations/clickup/connector.json +85 -0
  88. package/dist/integrations/clickup/files/_env.example +4 -0
  89. package/dist/integrations/clickup/files/ai/tools/create-task.ts +64 -0
  90. package/dist/integrations/clickup/files/ai/tools/get-task.ts +59 -0
  91. package/dist/integrations/clickup/files/ai/tools/list-lists.ts +109 -0
  92. package/dist/integrations/clickup/files/ai/tools/list-tasks.ts +95 -0
  93. package/dist/integrations/clickup/files/ai/tools/update-task.ts +85 -0
  94. package/dist/integrations/clickup/files/app/api/auth/clickup/callback/route.ts +11 -0
  95. package/dist/integrations/clickup/files/app/api/auth/clickup/route.ts +7 -0
  96. package/dist/integrations/clickup/files/lib/clickup-client.ts +439 -0
  97. package/dist/integrations/confluence/README.md +246 -0
  98. package/dist/integrations/confluence/connector.json +104 -0
  99. package/dist/integrations/confluence/files/_env.example +4 -0
  100. package/dist/integrations/confluence/files/ai/tools/create-page.ts +43 -0
  101. package/dist/integrations/confluence/files/ai/tools/get-page.ts +30 -0
  102. package/dist/integrations/confluence/files/ai/tools/list-spaces.ts +31 -0
  103. package/dist/integrations/confluence/files/ai/tools/search-content.ts +38 -0
  104. package/dist/integrations/confluence/files/ai/tools/update-page.ts +45 -0
  105. package/dist/integrations/confluence/files/app/api/auth/confluence/callback/route.ts +11 -0
  106. package/dist/integrations/confluence/files/app/api/auth/confluence/route.ts +9 -0
  107. package/dist/integrations/confluence/files/lib/confluence-client.ts +281 -0
  108. package/dist/integrations/discord/connector.json +100 -0
  109. package/dist/integrations/discord/files/_env.example +12 -0
  110. package/dist/integrations/discord/files/ai/tools/get-messages.ts +55 -0
  111. package/dist/integrations/discord/files/ai/tools/get-user.ts +32 -0
  112. package/dist/integrations/discord/files/ai/tools/list-channels.ts +32 -0
  113. package/dist/integrations/discord/files/ai/tools/list-guilds.ts +24 -0
  114. package/dist/integrations/discord/files/ai/tools/send-message.ts +33 -0
  115. package/dist/integrations/discord/files/app/api/auth/discord/callback/route.ts +11 -0
  116. package/dist/integrations/discord/files/app/api/auth/discord/route.ts +9 -0
  117. package/dist/integrations/discord/files/lib/discord-client.ts +273 -0
  118. package/dist/integrations/docs-google/connector.json +101 -0
  119. package/dist/integrations/docs-google/files/_env.example +8 -0
  120. package/dist/integrations/docs-google/files/ai/tools/create-document.ts +46 -0
  121. package/dist/integrations/docs-google/files/ai/tools/get-document.ts +46 -0
  122. package/dist/integrations/docs-google/files/ai/tools/list-documents.ts +42 -0
  123. package/dist/integrations/docs-google/files/ai/tools/search-documents.ts +38 -0
  124. package/dist/integrations/docs-google/files/ai/tools/update-document.ts +131 -0
  125. package/dist/integrations/docs-google/files/app/api/auth/docs-google/callback/route.ts +11 -0
  126. package/dist/integrations/docs-google/files/app/api/auth/docs-google/route.ts +9 -0
  127. package/dist/integrations/docs-google/files/lib/docs-client.ts +582 -0
  128. package/dist/integrations/drive/connector.json +134 -0
  129. package/dist/integrations/drive/files/_env.example +9 -0
  130. package/dist/integrations/drive/files/ai/tools/create-folder.ts +47 -0
  131. package/dist/integrations/drive/files/ai/tools/get-file.ts +55 -0
  132. package/dist/integrations/drive/files/ai/tools/list-files.ts +78 -0
  133. package/dist/integrations/drive/files/ai/tools/search-files.ts +79 -0
  134. package/dist/integrations/drive/files/ai/tools/upload-file.ts +59 -0
  135. package/dist/integrations/drive/files/app/api/auth/drive/callback/route.ts +11 -0
  136. package/dist/integrations/drive/files/app/api/auth/drive/route.ts +9 -0
  137. package/dist/integrations/drive/files/lib/drive-client.ts +359 -0
  138. package/dist/integrations/dropbox/connector.json +107 -0
  139. package/dist/integrations/dropbox/files/_env.example +24 -0
  140. package/dist/integrations/dropbox/files/ai/tools/get-account.ts +58 -0
  141. package/dist/integrations/dropbox/files/ai/tools/get-file.ts +61 -0
  142. package/dist/integrations/dropbox/files/ai/tools/list-files.ts +56 -0
  143. package/dist/integrations/dropbox/files/ai/tools/search-files.ts +70 -0
  144. package/dist/integrations/dropbox/files/ai/tools/upload-file.ts +48 -0
  145. package/dist/integrations/dropbox/files/app/api/auth/dropbox/callback/route.ts +11 -0
  146. package/dist/integrations/dropbox/files/app/api/auth/dropbox/route.ts +9 -0
  147. package/dist/integrations/dropbox/files/lib/dropbox-client.ts +397 -0
  148. package/dist/integrations/figma/INTEGRATION_SUMMARY.md +436 -0
  149. package/dist/integrations/figma/README.md +287 -0
  150. package/dist/integrations/figma/connector.json +100 -0
  151. package/dist/integrations/figma/files/_env.example +5 -0
  152. package/dist/integrations/figma/files/ai/tools/get-comments.ts +72 -0
  153. package/dist/integrations/figma/files/ai/tools/get-file.ts +54 -0
  154. package/dist/integrations/figma/files/ai/tools/list-files.ts +39 -0
  155. package/dist/integrations/figma/files/ai/tools/list-projects.ts +69 -0
  156. package/dist/integrations/figma/files/ai/tools/post-comment.ts +54 -0
  157. package/dist/integrations/figma/files/app/api/auth/figma/callback/route.ts +11 -0
  158. package/dist/integrations/figma/files/app/api/auth/figma/route.ts +9 -0
  159. package/dist/integrations/figma/files/lib/figma-client.ts +355 -0
  160. package/dist/integrations/figma/files/lib/types.ts +503 -0
  161. package/dist/integrations/freshdesk/connector.json +85 -0
  162. package/dist/integrations/freshdesk/files/_env.example +4 -0
  163. package/dist/integrations/freshdesk/files/ai/tools/create-ticket.ts +60 -0
  164. package/dist/integrations/freshdesk/files/ai/tools/get-ticket.ts +46 -0
  165. package/dist/integrations/freshdesk/files/ai/tools/list-contacts.ts +37 -0
  166. package/dist/integrations/freshdesk/files/ai/tools/list-tickets.ts +59 -0
  167. package/dist/integrations/freshdesk/files/ai/tools/update-ticket.ts +61 -0
  168. package/dist/integrations/freshdesk/files/app/api/auth/freshdesk/callback/route.ts +11 -0
  169. package/dist/integrations/freshdesk/files/app/api/auth/freshdesk/route.ts +7 -0
  170. package/dist/integrations/freshdesk/files/lib/freshdesk-client.ts +178 -0
  171. package/dist/integrations/github/files/app/api/auth/github/callback/route.ts +6 -127
  172. package/dist/integrations/github/files/app/api/auth/github/route.ts +4 -24
  173. package/dist/integrations/gitlab/connector.json +100 -0
  174. package/dist/integrations/gitlab/files/_env.example +7 -0
  175. package/dist/integrations/gitlab/files/ai/tools/create-issue.ts +49 -0
  176. package/dist/integrations/gitlab/files/ai/tools/get-issue.ts +56 -0
  177. package/dist/integrations/gitlab/files/ai/tools/list-merge-requests.ts +75 -0
  178. package/dist/integrations/gitlab/files/ai/tools/list-projects.ts +51 -0
  179. package/dist/integrations/gitlab/files/ai/tools/search-issues.ts +67 -0
  180. package/dist/integrations/gitlab/files/app/api/auth/gitlab/callback/route.ts +11 -0
  181. package/dist/integrations/gitlab/files/app/api/auth/gitlab/route.ts +9 -0
  182. package/dist/integrations/gitlab/files/lib/gitlab-client.ts +366 -0
  183. package/dist/integrations/gmail/files/app/api/auth/gmail/callback/route.ts +7 -108
  184. package/dist/integrations/gmail/files/app/api/auth/gmail/route.ts +5 -23
  185. package/dist/integrations/gmail/files/lib/gmail-client.ts +16 -55
  186. package/dist/integrations/hubspot/connector.json +98 -0
  187. package/dist/integrations/hubspot/files/_env.example +5 -0
  188. package/dist/integrations/hubspot/files/ai/tools/create-contact.ts +41 -0
  189. package/dist/integrations/hubspot/files/ai/tools/create-deal.ts +41 -0
  190. package/dist/integrations/hubspot/files/ai/tools/get-contact.ts +39 -0
  191. package/dist/integrations/hubspot/files/ai/tools/list-contacts.ts +43 -0
  192. package/dist/integrations/hubspot/files/ai/tools/list-deals.ts +41 -0
  193. package/dist/integrations/hubspot/files/app/api/auth/hubspot/callback/route.ts +11 -0
  194. package/dist/integrations/hubspot/files/app/api/auth/hubspot/route.ts +9 -0
  195. package/dist/integrations/hubspot/files/lib/hubspot-client.ts +393 -0
  196. package/dist/integrations/intercom/connector.json +85 -0
  197. package/dist/integrations/intercom/files/_env.example +4 -0
  198. package/dist/integrations/intercom/files/ai/tools/get-contact.ts +35 -0
  199. package/dist/integrations/intercom/files/ai/tools/get-conversation.ts +55 -0
  200. package/dist/integrations/intercom/files/ai/tools/list-contacts.ts +35 -0
  201. package/dist/integrations/intercom/files/ai/tools/list-conversations.ts +49 -0
  202. package/dist/integrations/intercom/files/ai/tools/send-message.ts +34 -0
  203. package/dist/integrations/intercom/files/app/api/auth/intercom/callback/route.ts +11 -0
  204. package/dist/integrations/intercom/files/app/api/auth/intercom/route.ts +7 -0
  205. package/dist/integrations/intercom/files/lib/intercom-client.ts +308 -0
  206. package/dist/integrations/jira/connector.json +109 -0
  207. package/dist/integrations/jira/files/ai/tools/create-issue.ts +47 -0
  208. package/dist/integrations/jira/files/ai/tools/get-issue.ts +57 -0
  209. package/dist/integrations/jira/files/ai/tools/list-projects.ts +30 -0
  210. package/dist/integrations/jira/files/ai/tools/search-issues.ts +49 -0
  211. package/dist/integrations/jira/files/ai/tools/update-issue.ts +81 -0
  212. package/dist/integrations/jira/files/app/api/auth/jira/callback/route.ts +11 -0
  213. package/dist/integrations/jira/files/app/api/auth/jira/route.ts +9 -0
  214. package/dist/integrations/jira/files/lib/jira-client.ts +338 -0
  215. package/dist/integrations/linear/connector.json +100 -0
  216. package/dist/integrations/linear/files/_env.example +6 -0
  217. package/dist/integrations/linear/files/ai/tools/create-issue.ts +71 -0
  218. package/dist/integrations/linear/files/ai/tools/get-issue.ts +55 -0
  219. package/dist/integrations/linear/files/ai/tools/list-projects.ts +43 -0
  220. package/dist/integrations/linear/files/ai/tools/search-issues.ts +54 -0
  221. package/dist/integrations/linear/files/ai/tools/update-issue.ts +71 -0
  222. package/dist/integrations/linear/files/app/api/auth/linear/callback/route.ts +11 -0
  223. package/dist/integrations/linear/files/app/api/auth/linear/route.ts +9 -0
  224. package/dist/integrations/linear/files/lib/linear-client.ts +464 -0
  225. package/dist/integrations/mailchimp/connector.json +85 -0
  226. package/dist/integrations/mailchimp/files/_env.example +4 -0
  227. package/dist/integrations/mailchimp/files/ai/tools/get-campaign.ts +45 -0
  228. package/dist/integrations/mailchimp/files/ai/tools/get-list.ts +51 -0
  229. package/dist/integrations/mailchimp/files/ai/tools/list-campaigns.ts +46 -0
  230. package/dist/integrations/mailchimp/files/ai/tools/list-lists.ts +46 -0
  231. package/dist/integrations/mailchimp/files/ai/tools/list-members.ts +58 -0
  232. package/dist/integrations/mailchimp/files/app/api/auth/mailchimp/callback/route.ts +11 -0
  233. package/dist/integrations/mailchimp/files/app/api/auth/mailchimp/route.ts +7 -0
  234. package/dist/integrations/mailchimp/files/lib/mailchimp-client.ts +267 -0
  235. package/dist/integrations/mixpanel/connector.json +96 -0
  236. package/dist/integrations/mixpanel/files/_env.example +11 -0
  237. package/dist/integrations/mixpanel/files/ai/tools/get-funnel.ts +46 -0
  238. package/dist/integrations/mixpanel/files/ai/tools/get-retention.ts +64 -0
  239. package/dist/integrations/mixpanel/files/ai/tools/list-cohorts.ts +46 -0
  240. package/dist/integrations/mixpanel/files/ai/tools/query-events.ts +43 -0
  241. package/dist/integrations/mixpanel/files/ai/tools/track-event.ts +41 -0
  242. package/dist/integrations/mixpanel/files/lib/mixpanel-client.ts +319 -0
  243. package/dist/integrations/monday/connector.json +85 -0
  244. package/dist/integrations/monday/files/_env.example +4 -0
  245. package/dist/integrations/monday/files/ai/tools/create-item.ts +36 -0
  246. package/dist/integrations/monday/files/ai/tools/get-item.ts +31 -0
  247. package/dist/integrations/monday/files/ai/tools/list-boards.ts +29 -0
  248. package/dist/integrations/monday/files/ai/tools/list-items.ts +36 -0
  249. package/dist/integrations/monday/files/ai/tools/update-item.ts +36 -0
  250. package/dist/integrations/monday/files/app/api/auth/monday/callback/route.ts +11 -0
  251. package/dist/integrations/monday/files/app/api/auth/monday/route.ts +7 -0
  252. package/dist/integrations/monday/files/lib/monday-client.ts +329 -0
  253. package/dist/integrations/neon/connector.json +89 -0
  254. package/dist/integrations/neon/files/_env.example +6 -0
  255. package/dist/integrations/neon/files/ai/tools/describe-table.ts +38 -0
  256. package/dist/integrations/neon/files/ai/tools/list-branches.ts +35 -0
  257. package/dist/integrations/neon/files/ai/tools/list-projects.ts +31 -0
  258. package/dist/integrations/neon/files/ai/tools/list-tables.ts +49 -0
  259. package/dist/integrations/neon/files/ai/tools/query-database.ts +33 -0
  260. package/dist/integrations/neon/files/app/api/auth/neon/route.ts +51 -0
  261. package/dist/integrations/neon/files/lib/neon-client.ts +294 -0
  262. package/dist/integrations/notion/connector.json +87 -0
  263. package/dist/integrations/notion/files/_env.example +6 -0
  264. package/dist/integrations/notion/files/ai/tools/create-page.ts +32 -0
  265. package/dist/integrations/notion/files/ai/tools/query-database.ts +44 -0
  266. package/dist/integrations/notion/files/ai/tools/read-page.ts +34 -0
  267. package/dist/integrations/notion/files/ai/tools/search-notion.ts +51 -0
  268. package/dist/integrations/notion/files/app/api/auth/notion/callback/route.ts +11 -0
  269. package/dist/integrations/notion/files/app/api/auth/notion/route.ts +9 -0
  270. package/dist/integrations/notion/files/lib/notion-client.ts +218 -0
  271. package/dist/integrations/onedrive/connector.json +100 -0
  272. package/dist/integrations/onedrive/files/_env.example +23 -0
  273. package/dist/integrations/onedrive/files/ai/tools/download-file.ts +38 -0
  274. package/dist/integrations/onedrive/files/ai/tools/list-files.ts +63 -0
  275. package/dist/integrations/onedrive/files/ai/tools/search-files.ts +59 -0
  276. package/dist/integrations/onedrive/files/ai/tools/upload-file.ts +43 -0
  277. package/dist/integrations/onedrive/files/app/api/auth/onedrive/callback/route.ts +11 -0
  278. package/dist/integrations/onedrive/files/app/api/auth/onedrive/route.ts +9 -0
  279. package/dist/integrations/onedrive/files/lib/onedrive-client.ts +314 -0
  280. package/dist/integrations/outlook/README.md +308 -0
  281. package/dist/integrations/outlook/connector.json +98 -0
  282. package/dist/integrations/outlook/files/_env.example +8 -0
  283. package/dist/integrations/outlook/files/ai/tools/get-email.ts +47 -0
  284. package/dist/integrations/outlook/files/ai/tools/list-emails.ts +46 -0
  285. package/dist/integrations/outlook/files/ai/tools/list-folders.ts +22 -0
  286. package/dist/integrations/outlook/files/ai/tools/search-emails.ts +41 -0
  287. package/dist/integrations/outlook/files/ai/tools/send-email.ts +41 -0
  288. package/dist/integrations/outlook/files/app/api/auth/outlook/callback/route.ts +11 -0
  289. package/dist/integrations/outlook/files/app/api/auth/outlook/route.ts +9 -0
  290. package/dist/integrations/outlook/files/lib/outlook-client.ts +204 -0
  291. package/dist/integrations/pipedrive/connector.json +85 -0
  292. package/dist/integrations/pipedrive/files/_env.example +4 -0
  293. package/dist/integrations/pipedrive/files/ai/tools/create-deal.ts +44 -0
  294. package/dist/integrations/pipedrive/files/ai/tools/get-deal.ts +34 -0
  295. package/dist/integrations/pipedrive/files/ai/tools/list-deals.ts +40 -0
  296. package/dist/integrations/pipedrive/files/ai/tools/list-persons.ts +33 -0
  297. package/dist/integrations/pipedrive/files/ai/tools/update-deal.ts +46 -0
  298. package/dist/integrations/pipedrive/files/app/api/auth/pipedrive/callback/route.ts +11 -0
  299. package/dist/integrations/pipedrive/files/app/api/auth/pipedrive/route.ts +7 -0
  300. package/dist/integrations/pipedrive/files/lib/pipedrive-client.ts +259 -0
  301. package/dist/integrations/posthog/connector.json +84 -0
  302. package/dist/integrations/posthog/files/_env.example +6 -0
  303. package/dist/integrations/posthog/files/ai/tools/capture-event.ts +37 -0
  304. package/dist/integrations/posthog/files/ai/tools/get-trends.ts +44 -0
  305. package/dist/integrations/posthog/files/ai/tools/list-feature-flags.ts +38 -0
  306. package/dist/integrations/posthog/files/ai/tools/list-persons.ts +32 -0
  307. package/dist/integrations/posthog/files/lib/posthog-client.ts +286 -0
  308. package/dist/integrations/quickbooks/connector.json +85 -0
  309. package/dist/integrations/quickbooks/files/_env.example +4 -0
  310. package/dist/integrations/quickbooks/files/ai/tools/create-invoice.ts +48 -0
  311. package/dist/integrations/quickbooks/files/ai/tools/get-customer.ts +36 -0
  312. package/dist/integrations/quickbooks/files/ai/tools/get-invoice.ts +46 -0
  313. package/dist/integrations/quickbooks/files/ai/tools/list-customers.ts +37 -0
  314. package/dist/integrations/quickbooks/files/ai/tools/list-invoices.ts +40 -0
  315. package/dist/integrations/quickbooks/files/app/api/auth/quickbooks/callback/route.ts +11 -0
  316. package/dist/integrations/quickbooks/files/app/api/auth/quickbooks/route.ts +7 -0
  317. package/dist/integrations/quickbooks/files/lib/quickbooks-client.ts +252 -0
  318. package/dist/integrations/salesforce/connector.json +104 -0
  319. package/dist/integrations/salesforce/files/ai/tools/create-lead.ts +101 -0
  320. package/dist/integrations/salesforce/files/ai/tools/get-account.ts +53 -0
  321. package/dist/integrations/salesforce/files/ai/tools/list-accounts.ts +50 -0
  322. package/dist/integrations/salesforce/files/ai/tools/list-contacts.ts +54 -0
  323. package/dist/integrations/salesforce/files/ai/tools/list-opportunities.ts +55 -0
  324. package/dist/integrations/salesforce/files/app/api/auth/salesforce/callback/route.ts +11 -0
  325. package/dist/integrations/salesforce/files/app/api/auth/salesforce/route.ts +9 -0
  326. package/dist/integrations/salesforce/files/lib/salesforce-client.ts +539 -0
  327. package/dist/integrations/sentry/connector.json +84 -0
  328. package/dist/integrations/sentry/files/_env.example +6 -0
  329. package/dist/integrations/sentry/files/ai/tools/get-issue.ts +66 -0
  330. package/dist/integrations/sentry/files/ai/tools/list-issues.ts +57 -0
  331. package/dist/integrations/sentry/files/ai/tools/list-projects.ts +32 -0
  332. package/dist/integrations/sentry/files/ai/tools/resolve-issue.ts +28 -0
  333. package/dist/integrations/sentry/files/lib/sentry-client.ts +268 -0
  334. package/dist/integrations/servicenow/connector.json +66 -0
  335. package/dist/integrations/servicenow/files/_env.example +5 -0
  336. package/dist/integrations/servicenow/files/ai/tools/create-incident.ts +58 -0
  337. package/dist/integrations/servicenow/files/ai/tools/get-incident.ts +59 -0
  338. package/dist/integrations/servicenow/files/ai/tools/list-incidents.ts +72 -0
  339. package/dist/integrations/servicenow/files/ai/tools/search-knowledge.ts +48 -0
  340. package/dist/integrations/servicenow/files/ai/tools/update-incident.ts +60 -0
  341. package/dist/integrations/servicenow/files/app/api/auth/servicenow/callback/route.ts +89 -0
  342. package/dist/integrations/servicenow/files/app/api/auth/servicenow/route.ts +42 -0
  343. package/dist/integrations/servicenow/files/lib/servicenow-client.ts +239 -0
  344. package/dist/integrations/sharepoint/connector.json +99 -0
  345. package/dist/integrations/sharepoint/files/ai/tools/get-file.ts +93 -0
  346. package/dist/integrations/sharepoint/files/ai/tools/get-site.ts +51 -0
  347. package/dist/integrations/sharepoint/files/ai/tools/list-files.ts +63 -0
  348. package/dist/integrations/sharepoint/files/ai/tools/list-sites.ts +28 -0
  349. package/dist/integrations/sharepoint/files/ai/tools/upload-file.ts +72 -0
  350. package/dist/integrations/sharepoint/files/app/api/auth/sharepoint/callback/route.ts +11 -0
  351. package/dist/integrations/sharepoint/files/app/api/auth/sharepoint/route.ts +9 -0
  352. package/dist/integrations/sharepoint/files/lib/sharepoint-client.ts +420 -0
  353. package/dist/integrations/sheets/README.md +331 -0
  354. package/dist/integrations/sheets/connector.json +99 -0
  355. package/dist/integrations/sheets/files/_env.example +8 -0
  356. package/dist/integrations/sheets/files/ai/tools/create-spreadsheet.ts +85 -0
  357. package/dist/integrations/sheets/files/ai/tools/get-spreadsheet.ts +39 -0
  358. package/dist/integrations/sheets/files/ai/tools/list-spreadsheets.ts +41 -0
  359. package/dist/integrations/sheets/files/ai/tools/read-range.ts +35 -0
  360. package/dist/integrations/sheets/files/ai/tools/write-range.ts +51 -0
  361. package/dist/integrations/sheets/files/app/api/auth/sheets/callback/route.ts +11 -0
  362. package/dist/integrations/sheets/files/app/api/auth/sheets/route.ts +9 -0
  363. package/dist/integrations/sheets/files/lib/sheets-client.ts +425 -0
  364. package/dist/integrations/shopify/connector.json +99 -0
  365. package/dist/integrations/shopify/files/_env.example +5 -0
  366. package/dist/integrations/shopify/files/ai/tools/get-order.ts +49 -0
  367. package/dist/integrations/shopify/files/ai/tools/get-product.ts +39 -0
  368. package/dist/integrations/shopify/files/ai/tools/list-customers.ts +40 -0
  369. package/dist/integrations/shopify/files/ai/tools/list-orders.ts +52 -0
  370. package/dist/integrations/shopify/files/ai/tools/list-products.ts +39 -0
  371. package/dist/integrations/shopify/files/app/api/auth/shopify/callback/route.ts +11 -0
  372. package/dist/integrations/shopify/files/app/api/auth/shopify/route.ts +7 -0
  373. package/dist/integrations/shopify/files/lib/shopify-client.ts +198 -0
  374. package/dist/integrations/slack/files/app/api/auth/slack/callback/route.ts +6 -127
  375. package/dist/integrations/slack/files/app/api/auth/slack/route.ts +4 -24
  376. package/dist/integrations/snowflake/connector.json +151 -0
  377. package/dist/integrations/snowflake/files/_env.example +16 -0
  378. package/dist/integrations/snowflake/files/ai/tools/describe-table.ts +57 -0
  379. package/dist/integrations/snowflake/files/ai/tools/list-databases.ts +34 -0
  380. package/dist/integrations/snowflake/files/ai/tools/list-schemas.ts +40 -0
  381. package/dist/integrations/snowflake/files/ai/tools/list-tables.ts +49 -0
  382. package/dist/integrations/snowflake/files/ai/tools/run-query.ts +119 -0
  383. package/dist/integrations/snowflake/files/lib/snowflake-client.ts +389 -0
  384. package/dist/integrations/stripe/connector.json +97 -0
  385. package/dist/integrations/stripe/files/_env.example +6 -0
  386. package/dist/integrations/stripe/files/ai/tools/get-balance.ts +28 -0
  387. package/dist/integrations/stripe/files/ai/tools/get-customer.ts +26 -0
  388. package/dist/integrations/stripe/files/ai/tools/list-customers.ts +42 -0
  389. package/dist/integrations/stripe/files/ai/tools/list-payments.ts +45 -0
  390. package/dist/integrations/stripe/files/ai/tools/list-subscriptions.ts +67 -0
  391. package/dist/integrations/stripe/files/app/api/auth/stripe/route.ts +71 -0
  392. package/dist/integrations/stripe/files/lib/stripe-client.ts +376 -0
  393. package/dist/integrations/supabase/connector.json +101 -0
  394. package/dist/integrations/supabase/files/_env.example +6 -0
  395. package/dist/integrations/supabase/files/ai/tools/delete-row.ts +77 -0
  396. package/dist/integrations/supabase/files/ai/tools/insert-row.ts +35 -0
  397. package/dist/integrations/supabase/files/ai/tools/list-tables.ts +60 -0
  398. package/dist/integrations/supabase/files/ai/tools/query-table.ts +48 -0
  399. package/dist/integrations/supabase/files/ai/tools/update-row.ts +64 -0
  400. package/dist/integrations/supabase/files/app/api/auth/supabase/route.ts +91 -0
  401. package/dist/integrations/supabase/files/lib/supabase-client.ts +296 -0
  402. package/dist/integrations/teams/README.md +256 -0
  403. package/dist/integrations/teams/connector.json +99 -0
  404. package/dist/integrations/teams/files/ai/tools/get-messages.ts +55 -0
  405. package/dist/integrations/teams/files/ai/tools/list-channels.ts +28 -0
  406. package/dist/integrations/teams/files/ai/tools/list-chats.ts +41 -0
  407. package/dist/integrations/teams/files/ai/tools/list-teams.ts +27 -0
  408. package/dist/integrations/teams/files/ai/tools/send-message.ts +61 -0
  409. package/dist/integrations/teams/files/app/api/auth/teams/callback/route.ts +11 -0
  410. package/dist/integrations/teams/files/app/api/auth/teams/route.ts +9 -0
  411. package/dist/integrations/teams/files/lib/teams-client.ts +345 -0
  412. package/dist/integrations/trello/connector.json +85 -0
  413. package/dist/integrations/trello/files/_env.example +4 -0
  414. package/dist/integrations/trello/files/ai/tools/create-card.ts +54 -0
  415. package/dist/integrations/trello/files/ai/tools/get-card.ts +33 -0
  416. package/dist/integrations/trello/files/ai/tools/list-boards.ts +29 -0
  417. package/dist/integrations/trello/files/ai/tools/list-cards.ts +52 -0
  418. package/dist/integrations/trello/files/ai/tools/update-card.ts +65 -0
  419. package/dist/integrations/trello/files/app/api/auth/trello/callback/route.ts +11 -0
  420. package/dist/integrations/trello/files/app/api/auth/trello/route.ts +7 -0
  421. package/dist/integrations/trello/files/lib/trello-client.ts +202 -0
  422. package/dist/integrations/twilio/connector.json +146 -0
  423. package/dist/integrations/twilio/files/_env.example +14 -0
  424. package/dist/integrations/twilio/files/ai/tools/get-message.ts +58 -0
  425. package/dist/integrations/twilio/files/ai/tools/list-calls.ts +129 -0
  426. package/dist/integrations/twilio/files/ai/tools/list-messages.ts +97 -0
  427. package/dist/integrations/twilio/files/ai/tools/send-sms.ts +75 -0
  428. package/dist/integrations/twilio/files/ai/tools/send-whatsapp.ts +81 -0
  429. package/dist/integrations/twilio/files/lib/twilio-client.ts +375 -0
  430. package/dist/integrations/twitter/connector.json +87 -0
  431. package/dist/integrations/twitter/files/_env.example +6 -0
  432. package/dist/integrations/twitter/files/ai/tools/get-timeline.ts +59 -0
  433. package/dist/integrations/twitter/files/ai/tools/post-tweet.ts +49 -0
  434. package/dist/integrations/twitter/files/ai/tools/search-tweets.ts +71 -0
  435. package/dist/integrations/twitter/files/app/api/auth/twitter/callback/route.ts +11 -0
  436. package/dist/integrations/twitter/files/app/api/auth/twitter/route.ts +9 -0
  437. package/dist/integrations/twitter/files/lib/twitter-client.ts +236 -0
  438. package/dist/integrations/webex/connector.json +85 -0
  439. package/dist/integrations/webex/files/_env.example +4 -0
  440. package/dist/integrations/webex/files/ai/tools/create-meeting.ts +69 -0
  441. package/dist/integrations/webex/files/ai/tools/get-meeting.ts +31 -0
  442. package/dist/integrations/webex/files/ai/tools/list-meetings.ts +44 -0
  443. package/dist/integrations/webex/files/ai/tools/list-rooms.ts +35 -0
  444. package/dist/integrations/webex/files/ai/tools/send-message.ts +51 -0
  445. package/dist/integrations/webex/files/app/api/auth/webex/callback/route.ts +11 -0
  446. package/dist/integrations/webex/files/app/api/auth/webex/route.ts +7 -0
  447. package/dist/integrations/webex/files/lib/webex-client.ts +279 -0
  448. package/dist/integrations/xero/connector.json +85 -0
  449. package/dist/integrations/xero/files/_env.example +4 -0
  450. package/dist/integrations/xero/files/ai/tools/create-invoice.ts +65 -0
  451. package/dist/integrations/xero/files/ai/tools/get-contact.ts +40 -0
  452. package/dist/integrations/xero/files/ai/tools/get-invoice.ts +44 -0
  453. package/dist/integrations/xero/files/ai/tools/list-contacts.ts +54 -0
  454. package/dist/integrations/xero/files/ai/tools/list-invoices.ts +54 -0
  455. package/dist/integrations/xero/files/app/api/auth/xero/callback/route.ts +11 -0
  456. package/dist/integrations/xero/files/app/api/auth/xero/route.ts +7 -0
  457. package/dist/integrations/xero/files/lib/xero-client.ts +292 -0
  458. package/dist/integrations/zendesk/connector.json +61 -0
  459. package/dist/integrations/zendesk/files/_env.example +5 -0
  460. package/dist/integrations/zendesk/files/ai/tools/create-ticket.ts +82 -0
  461. package/dist/integrations/zendesk/files/ai/tools/get-ticket.ts +53 -0
  462. package/dist/integrations/zendesk/files/ai/tools/list-tickets.ts +60 -0
  463. package/dist/integrations/zendesk/files/ai/tools/search-tickets.ts +56 -0
  464. package/dist/integrations/zendesk/files/app/api/auth/zendesk/callback/route.ts +91 -0
  465. package/dist/integrations/zendesk/files/app/api/auth/zendesk/route.ts +41 -0
  466. package/dist/integrations/zendesk/files/lib/zendesk-client.ts +265 -0
  467. package/dist/integrations/zoom/connector.json +85 -0
  468. package/dist/integrations/zoom/files/_env.example +4 -0
  469. package/dist/integrations/zoom/files/ai/tools/create-meeting.ts +106 -0
  470. package/dist/integrations/zoom/files/ai/tools/delete-meeting.ts +32 -0
  471. package/dist/integrations/zoom/files/ai/tools/get-meeting.ts +44 -0
  472. package/dist/integrations/zoom/files/ai/tools/list-meetings.ts +47 -0
  473. package/dist/integrations/zoom/files/ai/tools/update-meeting.ts +111 -0
  474. package/dist/integrations/zoom/files/app/api/auth/zoom/callback/route.ts +11 -0
  475. package/dist/integrations/zoom/files/app/api/auth/zoom/route.ts +7 -0
  476. package/dist/integrations/zoom/files/lib/zoom-client.ts +228 -0
  477. package/dist/oauth/handlers.js +554 -0
  478. package/dist/oauth/handlers.js.map +7 -0
  479. package/dist/oauth/index.js +1157 -0
  480. package/dist/oauth/index.js.map +7 -0
  481. package/dist/oauth/providers.js +927 -0
  482. package/dist/oauth/providers.js.map +7 -0
  483. package/dist/oauth/token-store.js +82 -0
  484. package/dist/oauth/token-store.js.map +7 -0
  485. package/package.json +25 -1
  486. package/dist/integrations/calendar/files/lib/token-store.ts +0 -113
  487. package/dist/integrations/github/files/lib/token-store.ts +0 -113
  488. package/dist/integrations/gmail/files/lib/oauth.ts +0 -145
  489. package/dist/integrations/gmail/files/lib/token-store.ts +0 -113
  490. package/dist/integrations/slack/files/lib/oauth.ts +0 -145
  491. package/dist/integrations/slack/files/lib/token-store.ts +0 -113
  492. /package/dist/integrations/{calendar → docs-google}/files/lib/oauth.ts +0 -0
  493. /package/dist/integrations/{github → drive}/files/lib/oauth.ts +0 -0
@@ -0,0 +1,582 @@
1
+ /**
2
+ * Google Docs API Client
3
+ *
4
+ * Provides a type-safe interface to Google Docs API operations.
5
+ */
6
+
7
+ import { tokenStore as _tokenStore } from "./token-store.ts";
8
+ import { getValidToken } from "./oauth.ts";
9
+
10
+ // Helper for Cross-Platform environment access
11
+ function getEnv(key: string): string | undefined {
12
+ // @ts-ignore - Deno global
13
+ if (typeof Deno !== "undefined") {
14
+ // @ts-ignore - Deno global
15
+ return Deno.env.get(key);
16
+ } // @ts-ignore - process global
17
+ else if (typeof process !== "undefined" && process.env) {
18
+ // @ts-ignore - process global
19
+ return process.env[key];
20
+ }
21
+ return undefined;
22
+ }
23
+
24
+ const DOCS_API_BASE = "https://docs.googleapis.com/v1";
25
+ const DRIVE_API_BASE = "https://www.googleapis.com/drive/v3";
26
+
27
+ export interface Document {
28
+ documentId: string;
29
+ title: string;
30
+ body: {
31
+ content: StructuralElement[];
32
+ };
33
+ revisionId: string;
34
+ suggestionsViewMode: string;
35
+ documentStyle: DocumentStyle;
36
+ }
37
+
38
+ export interface StructuralElement {
39
+ startIndex: number;
40
+ endIndex: number;
41
+ paragraph?: Paragraph;
42
+ table?: Table;
43
+ sectionBreak?: SectionBreak;
44
+ }
45
+
46
+ export interface Paragraph {
47
+ elements: ParagraphElement[];
48
+ paragraphStyle?: ParagraphStyle;
49
+ bullet?: Bullet;
50
+ }
51
+
52
+ export interface ParagraphElement {
53
+ startIndex: number;
54
+ endIndex: number;
55
+ textRun?: TextRun;
56
+ inlineObjectElement?: InlineObjectElement;
57
+ }
58
+
59
+ export interface TextRun {
60
+ content: string;
61
+ textStyle?: TextStyle;
62
+ }
63
+
64
+ export interface TextStyle {
65
+ bold?: boolean;
66
+ italic?: boolean;
67
+ underline?: boolean;
68
+ strikethrough?: boolean;
69
+ fontSize?: Dimension;
70
+ foregroundColor?: Color;
71
+ backgroundColor?: Color;
72
+ fontFamily?: string;
73
+ link?: Link;
74
+ }
75
+
76
+ export interface Link {
77
+ url?: string;
78
+ bookmarkId?: string;
79
+ headingId?: string;
80
+ }
81
+
82
+ export interface Dimension {
83
+ magnitude: number;
84
+ unit: string;
85
+ }
86
+
87
+ export interface Color {
88
+ rgbColor?: RgbColor;
89
+ }
90
+
91
+ export interface RgbColor {
92
+ red: number;
93
+ green: number;
94
+ blue: number;
95
+ }
96
+
97
+ export interface ParagraphStyle {
98
+ headingId?: string;
99
+ namedStyleType?: string;
100
+ alignment?: string;
101
+ lineSpacing?: number;
102
+ direction?: string;
103
+ spacingMode?: string;
104
+ spaceAbove?: Dimension;
105
+ spaceBelow?: Dimension;
106
+ indentFirstLine?: Dimension;
107
+ indentStart?: Dimension;
108
+ indentEnd?: Dimension;
109
+ }
110
+
111
+ export interface Bullet {
112
+ listId: string;
113
+ nestingLevel?: number;
114
+ textStyle?: TextStyle;
115
+ }
116
+
117
+ export interface Table {
118
+ rows: number;
119
+ columns: number;
120
+ tableRows: TableRow[];
121
+ tableStyle?: TableStyle;
122
+ }
123
+
124
+ export interface TableRow {
125
+ startIndex: number;
126
+ endIndex: number;
127
+ tableCells: TableCell[];
128
+ }
129
+
130
+ export interface TableCell {
131
+ startIndex: number;
132
+ endIndex: number;
133
+ content: StructuralElement[];
134
+ tableCellStyle?: TableCellStyle;
135
+ }
136
+
137
+ export interface TableCellStyle {
138
+ rowSpan?: number;
139
+ columnSpan?: number;
140
+ backgroundColor?: Color;
141
+ borderLeft?: TableCellBorder;
142
+ borderRight?: TableCellBorder;
143
+ borderTop?: TableCellBorder;
144
+ borderBottom?: TableCellBorder;
145
+ paddingLeft?: Dimension;
146
+ paddingRight?: Dimension;
147
+ paddingTop?: Dimension;
148
+ paddingBottom?: Dimension;
149
+ }
150
+
151
+ export interface TableCellBorder {
152
+ color?: Color;
153
+ width?: Dimension;
154
+ dashStyle?: string;
155
+ }
156
+
157
+ export interface TableStyle {
158
+ tableColumnProperties?: TableColumnProperties[];
159
+ }
160
+
161
+ export interface TableColumnProperties {
162
+ width?: Dimension;
163
+ widthType?: string;
164
+ }
165
+
166
+ export interface SectionBreak {
167
+ sectionStyle?: SectionStyle;
168
+ }
169
+
170
+ export interface SectionStyle {
171
+ columnSeparatorStyle?: string;
172
+ contentDirection?: string;
173
+ marginTop?: Dimension;
174
+ marginBottom?: Dimension;
175
+ marginRight?: Dimension;
176
+ marginLeft?: Dimension;
177
+ pageNumberStart?: number;
178
+ }
179
+
180
+ export interface DocumentStyle {
181
+ background?: Background;
182
+ pageNumberStart?: number;
183
+ marginTop?: Dimension;
184
+ marginBottom?: Dimension;
185
+ marginRight?: Dimension;
186
+ marginLeft?: Dimension;
187
+ pageSize?: Size;
188
+ marginHeader?: Dimension;
189
+ marginFooter?: Dimension;
190
+ useFirstPageHeaderFooter?: boolean;
191
+ }
192
+
193
+ export interface Background {
194
+ color?: Color;
195
+ }
196
+
197
+ export interface Size {
198
+ height?: Dimension;
199
+ width?: Dimension;
200
+ }
201
+
202
+ export interface InlineObjectElement {
203
+ inlineObjectId: string;
204
+ textStyle?: TextStyle;
205
+ }
206
+
207
+ export interface DocumentFile {
208
+ id: string;
209
+ name: string;
210
+ mimeType: string;
211
+ createdTime: string;
212
+ modifiedTime: string;
213
+ webViewLink: string;
214
+ iconLink?: string;
215
+ thumbnailLink?: string;
216
+ }
217
+
218
+ export interface CreateDocumentOptions {
219
+ title: string;
220
+ }
221
+
222
+ export interface BatchUpdateRequest {
223
+ requests: Request[];
224
+ }
225
+
226
+ export interface Request {
227
+ insertText?: InsertTextRequest;
228
+ deleteContentRange?: DeleteContentRangeRequest;
229
+ replaceAllText?: ReplaceAllTextRequest;
230
+ updateTextStyle?: UpdateTextStyleRequest;
231
+ updateParagraphStyle?: UpdateParagraphStyleRequest;
232
+ insertPageBreak?: InsertPageBreakRequest;
233
+ insertTable?: InsertTableRequest;
234
+ deleteTableRow?: DeleteTableRowRequest;
235
+ deleteTableColumn?: DeleteTableColumnRequest;
236
+ createParagraphBullets?: CreateParagraphBulletsRequest;
237
+ deleteParagraphBullets?: DeleteParagraphBulletsRequest;
238
+ }
239
+
240
+ export interface InsertTextRequest {
241
+ text: string;
242
+ location: Location;
243
+ }
244
+
245
+ export interface DeleteContentRangeRequest {
246
+ range: Range;
247
+ }
248
+
249
+ export interface ReplaceAllTextRequest {
250
+ containsText: ContainsText;
251
+ replaceText: string;
252
+ }
253
+
254
+ export interface UpdateTextStyleRequest {
255
+ range: Range;
256
+ textStyle: TextStyle;
257
+ fields: string;
258
+ }
259
+
260
+ export interface UpdateParagraphStyleRequest {
261
+ range: Range;
262
+ paragraphStyle: ParagraphStyle;
263
+ fields: string;
264
+ }
265
+
266
+ export interface InsertPageBreakRequest {
267
+ location: Location;
268
+ }
269
+
270
+ export interface InsertTableRequest {
271
+ rows: number;
272
+ columns: number;
273
+ location: Location;
274
+ }
275
+
276
+ export interface DeleteTableRowRequest {
277
+ tableCellLocation: TableCellLocation;
278
+ }
279
+
280
+ export interface DeleteTableColumnRequest {
281
+ tableCellLocation: TableCellLocation;
282
+ }
283
+
284
+ export interface CreateParagraphBulletsRequest {
285
+ range: Range;
286
+ bulletPreset: string;
287
+ }
288
+
289
+ export interface DeleteParagraphBulletsRequest {
290
+ range: Range;
291
+ }
292
+
293
+ export interface Location {
294
+ index: number;
295
+ segmentId?: string;
296
+ }
297
+
298
+ export interface Range {
299
+ startIndex: number;
300
+ endIndex: number;
301
+ segmentId?: string;
302
+ }
303
+
304
+ export interface ContainsText {
305
+ text: string;
306
+ matchCase: boolean;
307
+ }
308
+
309
+ export interface TableCellLocation {
310
+ tableStartLocation: Location;
311
+ rowIndex: number;
312
+ columnIndex: number;
313
+ }
314
+
315
+ export interface BatchUpdateResponse {
316
+ documentId: string;
317
+ replies: Reply[];
318
+ writeControl?: WriteControl;
319
+ }
320
+
321
+ export interface Reply {
322
+ [key: string]: unknown;
323
+ }
324
+
325
+ export interface WriteControl {
326
+ requiredRevisionId: string;
327
+ targetRevisionId: string;
328
+ }
329
+
330
+ /**
331
+ * Google Docs OAuth provider configuration
332
+ */
333
+ export const docsOAuthProvider = {
334
+ name: "docs-google",
335
+ authorizationUrl: "https://accounts.google.com/o/oauth2/v2/auth",
336
+ tokenUrl: "https://oauth2.googleapis.com/token",
337
+ clientId: getEnv("GOOGLE_CLIENT_ID") || "",
338
+ clientSecret: getEnv("GOOGLE_CLIENT_SECRET") || "",
339
+ scopes: [
340
+ "https://www.googleapis.com/auth/documents.readonly",
341
+ "https://www.googleapis.com/auth/documents",
342
+ "https://www.googleapis.com/auth/drive.readonly",
343
+ ],
344
+ callbackPath: "/api/auth/docs-google/callback",
345
+ };
346
+
347
+ /**
348
+ * Create a Docs client for a specific user
349
+ */
350
+ export function createDocsClient(userId: string) {
351
+ async function getAccessToken(): Promise<string> {
352
+ const token = await getValidToken(docsOAuthProvider, userId, "docs-google");
353
+ if (!token) {
354
+ throw new Error("Google Docs not connected. Please connect your Google account first.");
355
+ }
356
+ return token;
357
+ }
358
+
359
+ async function docsApiRequest<T>(
360
+ endpoint: string,
361
+ options: RequestInit = {},
362
+ ): Promise<T> {
363
+ const accessToken = await getAccessToken();
364
+
365
+ const response = await fetch(`${DOCS_API_BASE}${endpoint}`, {
366
+ ...options,
367
+ headers: {
368
+ Authorization: `Bearer ${accessToken}`,
369
+ "Content-Type": "application/json",
370
+ ...options.headers,
371
+ },
372
+ });
373
+
374
+ if (!response.ok) {
375
+ const error = await response.text();
376
+ throw new Error(`Docs API error: ${response.status} - ${error}`);
377
+ }
378
+
379
+ return response.json();
380
+ }
381
+
382
+ async function driveApiRequest<T>(
383
+ endpoint: string,
384
+ options: RequestInit = {},
385
+ ): Promise<T> {
386
+ const accessToken = await getAccessToken();
387
+
388
+ const response = await fetch(`${DRIVE_API_BASE}${endpoint}`, {
389
+ ...options,
390
+ headers: {
391
+ Authorization: `Bearer ${accessToken}`,
392
+ "Content-Type": "application/json",
393
+ ...options.headers,
394
+ },
395
+ });
396
+
397
+ if (!response.ok) {
398
+ const error = await response.text();
399
+ throw new Error(`Drive API error: ${response.status} - ${error}`);
400
+ }
401
+
402
+ return response.json();
403
+ }
404
+
405
+ return {
406
+ /**
407
+ * List documents from Google Drive
408
+ */
409
+ async listDocuments(options: {
410
+ maxResults?: number;
411
+ orderBy?: "createdTime" | "modifiedTime" | "name";
412
+ } = {}): Promise<DocumentFile[]> {
413
+ const params = new URLSearchParams({
414
+ q: "mimeType='application/vnd.google-apps.document' and trashed=false",
415
+ fields: "files(id,name,mimeType,createdTime,modifiedTime,webViewLink,iconLink,thumbnailLink)",
416
+ pageSize: String(options.maxResults || 20),
417
+ orderBy: `${options.orderBy || "modifiedTime"} desc`,
418
+ });
419
+
420
+ const result = await driveApiRequest<{ files: DocumentFile[] }>(
421
+ `/files?${params.toString()}`,
422
+ );
423
+
424
+ return result.files || [];
425
+ },
426
+
427
+ /**
428
+ * Get document content and metadata
429
+ */
430
+ getDocument(documentId: string): Promise<Document> {
431
+ return docsApiRequest<Document>(`/documents/${documentId}`);
432
+ },
433
+
434
+ /**
435
+ * Create a new document
436
+ */
437
+ createDocument(options: CreateDocumentOptions): Promise<Document> {
438
+ return docsApiRequest<Document>("/documents", {
439
+ method: "POST",
440
+ body: JSON.stringify({
441
+ title: options.title,
442
+ }),
443
+ });
444
+ },
445
+
446
+ /**
447
+ * Update document using batch requests
448
+ */
449
+ async updateDocument(
450
+ documentId: string,
451
+ requests: Request[],
452
+ ): Promise<BatchUpdateResponse> {
453
+ return docsApiRequest<BatchUpdateResponse>(
454
+ `/documents/${documentId}:batchUpdate`,
455
+ {
456
+ method: "POST",
457
+ body: JSON.stringify({ requests }),
458
+ },
459
+ );
460
+ },
461
+
462
+ /**
463
+ * Insert text at a specific location
464
+ */
465
+ async insertText(
466
+ documentId: string,
467
+ text: string,
468
+ index: number,
469
+ ): Promise<BatchUpdateResponse> {
470
+ return this.updateDocument(documentId, [
471
+ {
472
+ insertText: {
473
+ text,
474
+ location: { index },
475
+ },
476
+ },
477
+ ]);
478
+ },
479
+
480
+ /**
481
+ * Delete content in a range
482
+ */
483
+ async deleteContent(
484
+ documentId: string,
485
+ startIndex: number,
486
+ endIndex: number,
487
+ ): Promise<BatchUpdateResponse> {
488
+ return this.updateDocument(documentId, [
489
+ {
490
+ deleteContentRange: {
491
+ range: { startIndex, endIndex },
492
+ },
493
+ },
494
+ ]);
495
+ },
496
+
497
+ /**
498
+ * Replace all occurrences of text
499
+ */
500
+ async replaceAllText(
501
+ documentId: string,
502
+ searchText: string,
503
+ replaceText: string,
504
+ matchCase = false,
505
+ ): Promise<BatchUpdateResponse> {
506
+ return this.updateDocument(documentId, [
507
+ {
508
+ replaceAllText: {
509
+ containsText: {
510
+ text: searchText,
511
+ matchCase,
512
+ },
513
+ replaceText,
514
+ },
515
+ },
516
+ ]);
517
+ },
518
+
519
+ /**
520
+ * Search documents by query
521
+ */
522
+ async searchDocuments(query: string, maxResults = 20): Promise<DocumentFile[]> {
523
+ const params = new URLSearchParams({
524
+ q: `mimeType='application/vnd.google-apps.document' and trashed=false and fullText contains '${query}'`,
525
+ fields: "files(id,name,mimeType,createdTime,modifiedTime,webViewLink,iconLink,thumbnailLink)",
526
+ pageSize: String(maxResults),
527
+ orderBy: "modifiedTime desc",
528
+ });
529
+
530
+ const result = await driveApiRequest<{ files: DocumentFile[] }>(
531
+ `/files?${params.toString()}`,
532
+ );
533
+
534
+ return result.files || [];
535
+ },
536
+
537
+ /**
538
+ * Extract plain text from document body
539
+ */
540
+ extractText(document: Document): string {
541
+ const textParts: string[] = [];
542
+
543
+ function processElement(element: StructuralElement) {
544
+ if (element.paragraph) {
545
+ element.paragraph.elements.forEach((el) => {
546
+ if (el.textRun) {
547
+ textParts.push(el.textRun.content);
548
+ }
549
+ });
550
+ } else if (element.table) {
551
+ element.table.tableRows.forEach((row) => {
552
+ row.tableCells.forEach((cell) => {
553
+ cell.content.forEach(processElement);
554
+ });
555
+ });
556
+ }
557
+ }
558
+
559
+ document.body.content.forEach(processElement);
560
+ return textParts.join("");
561
+ },
562
+
563
+ /**
564
+ * Create a document with initial content
565
+ */
566
+ async createDocumentWithContent(
567
+ title: string,
568
+ content: string,
569
+ ): Promise<Document> {
570
+ // Create the document
571
+ const doc = await this.createDocument({ title });
572
+
573
+ // Insert content at index 1 (after the title)
574
+ await this.insertText(doc.documentId, content, 1);
575
+
576
+ // Fetch and return the updated document
577
+ return this.getDocument(doc.documentId);
578
+ },
579
+ };
580
+ }
581
+
582
+ export type DocsClient = ReturnType<typeof createDocsClient>;
@@ -0,0 +1,134 @@
1
+ {
2
+ "name": "drive",
3
+ "displayName": "Google Drive",
4
+ "icon": "drive.svg",
5
+ "description": "Access, search, and manage files and folders in Google Drive",
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/drive.readonly",
13
+ "https://www.googleapis.com/auth/drive.file"
14
+ ],
15
+ "callbackPath": "/api/auth/drive/callback",
16
+ "requiredApis": [
17
+ {
18
+ "name": "Google Drive API",
19
+ "enableUrl": "https://console.cloud.google.com/apis/library/drive.googleapis.com"
20
+ }
21
+ ]
22
+ },
23
+ "envVars": [
24
+ {
25
+ "name": "GOOGLE_CLIENT_ID",
26
+ "description": "Google OAuth Client ID",
27
+ "required": true,
28
+ "sensitive": false,
29
+ "docsUrl": "https://console.cloud.google.com/apis/credentials"
30
+ },
31
+ {
32
+ "name": "GOOGLE_CLIENT_SECRET",
33
+ "description": "Google OAuth Client Secret",
34
+ "required": true,
35
+ "sensitive": true,
36
+ "docsUrl": "https://console.cloud.google.com/apis/credentials"
37
+ }
38
+ ],
39
+ "tools": [
40
+ {
41
+ "id": "list-files",
42
+ "name": "List Files",
43
+ "description": "List files and folders in a Google Drive folder or root",
44
+ "requiresWrite": false
45
+ },
46
+ {
47
+ "id": "get-file",
48
+ "name": "Get File",
49
+ "description": "Get metadata and details about a specific file or folder",
50
+ "requiresWrite": false
51
+ },
52
+ {
53
+ "id": "search-files",
54
+ "name": "Search Files",
55
+ "description": "Search for files and folders using queries",
56
+ "requiresWrite": false
57
+ },
58
+ {
59
+ "id": "create-folder",
60
+ "name": "Create Folder",
61
+ "description": "Create a new folder in Google Drive",
62
+ "requiresWrite": true
63
+ },
64
+ {
65
+ "id": "upload-file",
66
+ "name": "Upload File",
67
+ "description": "Upload or create a file in Google Drive",
68
+ "requiresWrite": true
69
+ }
70
+ ],
71
+ "prompts": [
72
+ {
73
+ "id": "organize-files",
74
+ "title": "Organize Drive files",
75
+ "prompt": "Help me organize files in Google Drive by creating folders and moving files based on file types or names.",
76
+ "category": "productivity",
77
+ "icon": "folder"
78
+ },
79
+ {
80
+ "id": "find-document",
81
+ "title": "Find a document",
82
+ "prompt": "Search Google Drive for a specific file or document by name, type, or content.",
83
+ "category": "productivity",
84
+ "icon": "search"
85
+ },
86
+ {
87
+ "id": "backup-files",
88
+ "title": "Create backup structure",
89
+ "prompt": "Create a backup folder structure in Google Drive and organize important files.",
90
+ "category": "productivity",
91
+ "icon": "upload"
92
+ }
93
+ ],
94
+ "suggestedWith": ["gmail", "calendar", "sheets"],
95
+ "setupGuide": {
96
+ "title": "Google Drive Integration Setup",
97
+ "steps": [
98
+ {
99
+ "title": "Create a Google Cloud Project",
100
+ "description": "Go to the Google Cloud Console and create a new project",
101
+ "url": "https://console.cloud.google.com/projectcreate"
102
+ },
103
+ {
104
+ "title": "Enable the Google Drive API",
105
+ "description": "Navigate to APIs & Services > Library and enable the Google Drive API",
106
+ "url": "https://console.cloud.google.com/apis/library/drive.googleapis.com"
107
+ },
108
+ {
109
+ "title": "Configure OAuth Consent Screen",
110
+ "description": "Go to APIs & Services > OAuth consent screen. Set up your app name, user support email, and developer contact. Add scopes: drive.readonly and drive.file",
111
+ "url": "https://console.cloud.google.com/apis/credentials/consent"
112
+ },
113
+ {
114
+ "title": "Create OAuth 2.0 Client ID",
115
+ "description": "Go to APIs & Services > Credentials. Click 'Create Credentials' > 'OAuth client ID'. Choose 'Web application'. Add authorized redirect URI: http://localhost:3000/api/auth/drive/callback (adjust port/domain for production)",
116
+ "url": "https://console.cloud.google.com/apis/credentials"
117
+ },
118
+ {
119
+ "title": "Copy Credentials to .env",
120
+ "description": "Copy the Client ID and Client Secret to your .env file as GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET"
121
+ },
122
+ {
123
+ "title": "Test the Integration",
124
+ "description": "Start your application and navigate to /api/auth/drive to initiate the OAuth flow"
125
+ }
126
+ ],
127
+ "notes": [
128
+ "The same Google OAuth credentials work for all Google services (Gmail, Calendar, Sheets, Drive)",
129
+ "In production, make sure to add your production callback URL to authorized redirect URIs",
130
+ "The drive.file scope only grants access to files created by your app, use drive for full access",
131
+ "You may need to verify your app if you plan to distribute it publicly"
132
+ ]
133
+ }
134
+ }