veryfront 0.0.48 → 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 +976 -234
  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 -8
  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,244 @@
1
+ import { getAccessToken } from "./token-store.ts";
2
+
3
+ const AIRTABLE_BASE_URL = "https://api.airtable.com/v0";
4
+
5
+ interface AirtableResponse<T> {
6
+ records?: T[];
7
+ offset?: string;
8
+ }
9
+
10
+ interface AirtableBase {
11
+ id: string;
12
+ name: string;
13
+ permissionLevel: string;
14
+ }
15
+
16
+ interface AirtableBaseSchema {
17
+ tables: Array<{
18
+ id: string;
19
+ name: string;
20
+ primaryFieldId: string;
21
+ fields: Array<{
22
+ id: string;
23
+ name: string;
24
+ type: string;
25
+ options?: Record<string, unknown>;
26
+ }>;
27
+ views: Array<{
28
+ id: string;
29
+ name: string;
30
+ type: string;
31
+ }>;
32
+ }>;
33
+ }
34
+
35
+ export interface AirtableRecord {
36
+ id: string;
37
+ createdTime: string;
38
+ fields: Record<string, unknown>;
39
+ }
40
+
41
+ interface AirtableField {
42
+ id: string;
43
+ name: string;
44
+ type: string;
45
+ options?: Record<string, unknown>;
46
+ }
47
+
48
+ async function airtableFetch<T>(
49
+ endpoint: string,
50
+ options: RequestInit = {},
51
+ ): Promise<T> {
52
+ const token = getAccessToken();
53
+ if (!token) {
54
+ throw new Error("Not authenticated with Airtable. Please connect your account.");
55
+ }
56
+
57
+ const response = await fetch(`${AIRTABLE_BASE_URL}${endpoint}`, {
58
+ ...options,
59
+ headers: {
60
+ "Authorization": `Bearer ${token}`,
61
+ "Content-Type": "application/json",
62
+ ...options.headers,
63
+ },
64
+ });
65
+
66
+ if (!response.ok) {
67
+ const error = await response.json().catch(() => ({}));
68
+ throw new Error(
69
+ `Airtable API error: ${response.status} ${error.error?.message || response.statusText}`,
70
+ );
71
+ }
72
+
73
+ return response.json();
74
+ }
75
+
76
+ // Meta API for listing bases
77
+ async function metaFetch<T>(
78
+ endpoint: string,
79
+ options: RequestInit = {},
80
+ ): Promise<T> {
81
+ const token = getAccessToken();
82
+ if (!token) {
83
+ throw new Error("Not authenticated with Airtable. Please connect your account.");
84
+ }
85
+
86
+ const response = await fetch(`https://api.airtable.com/v0/meta${endpoint}`, {
87
+ ...options,
88
+ headers: {
89
+ "Authorization": `Bearer ${token}`,
90
+ "Content-Type": "application/json",
91
+ ...options.headers,
92
+ },
93
+ });
94
+
95
+ if (!response.ok) {
96
+ const error = await response.json().catch(() => ({}));
97
+ throw new Error(
98
+ `Airtable Meta API error: ${response.status} ${error.error?.message || response.statusText}`,
99
+ );
100
+ }
101
+
102
+ return response.json();
103
+ }
104
+
105
+ export async function listBases(): Promise<AirtableBase[]> {
106
+ const response = await metaFetch<{ bases: AirtableBase[] }>("/bases");
107
+ return response.bases || [];
108
+ }
109
+
110
+ export async function getBase(baseId: string): Promise<AirtableBaseSchema> {
111
+ const response = await metaFetch<AirtableBaseSchema>(`/bases/${baseId}/tables`);
112
+ return response;
113
+ }
114
+
115
+ export async function listRecords(
116
+ baseId: string,
117
+ tableIdOrName: string,
118
+ options?: {
119
+ fields?: string[];
120
+ filterByFormula?: string;
121
+ maxRecords?: number;
122
+ pageSize?: number;
123
+ sort?: Array<{ field: string; direction: "asc" | "desc" }>;
124
+ view?: string;
125
+ offset?: string;
126
+ },
127
+ ): Promise<{ records: AirtableRecord[]; offset?: string }> {
128
+ const params = new URLSearchParams();
129
+
130
+ if (options?.fields) {
131
+ options.fields.forEach((field) => params.append("fields[]", field));
132
+ }
133
+ if (options?.filterByFormula) {
134
+ params.append("filterByFormula", options.filterByFormula);
135
+ }
136
+ if (options?.maxRecords) {
137
+ params.append("maxRecords", options.maxRecords.toString());
138
+ }
139
+ if (options?.pageSize) {
140
+ params.append("pageSize", options.pageSize.toString());
141
+ }
142
+ if (options?.sort) {
143
+ options.sort.forEach((s, i) => {
144
+ params.append(`sort[${i}][field]`, s.field);
145
+ params.append(`sort[${i}][direction]`, s.direction);
146
+ });
147
+ }
148
+ if (options?.view) {
149
+ params.append("view", options.view);
150
+ }
151
+ if (options?.offset) {
152
+ params.append("offset", options.offset);
153
+ }
154
+
155
+ const queryString = params.toString();
156
+ const endpoint = `/${baseId}/${encodeURIComponent(tableIdOrName)}${
157
+ queryString ? `?${queryString}` : ""
158
+ }`;
159
+
160
+ const response = await airtableFetch<AirtableResponse<AirtableRecord>>(endpoint);
161
+
162
+ return {
163
+ records: response.records || [],
164
+ offset: response.offset,
165
+ };
166
+ }
167
+
168
+ export function getRecord(
169
+ baseId: string,
170
+ tableIdOrName: string,
171
+ recordId: string,
172
+ ): Promise<AirtableRecord> {
173
+ return airtableFetch<AirtableRecord>(
174
+ `/${baseId}/${encodeURIComponent(tableIdOrName)}/${recordId}`,
175
+ );
176
+ }
177
+
178
+ export function createRecord(
179
+ baseId: string,
180
+ tableIdOrName: string,
181
+ fields: Record<string, unknown>,
182
+ ): Promise<AirtableRecord> {
183
+ return airtableFetch<AirtableRecord>(
184
+ `/${baseId}/${encodeURIComponent(tableIdOrName)}`,
185
+ {
186
+ method: "POST",
187
+ body: JSON.stringify({ fields }),
188
+ },
189
+ );
190
+ }
191
+
192
+ export async function createRecords(
193
+ baseId: string,
194
+ tableIdOrName: string,
195
+ records: Array<{ fields: Record<string, unknown> }>,
196
+ ): Promise<AirtableRecord[]> {
197
+ const response = await airtableFetch<{ records: AirtableRecord[] }>(
198
+ `/${baseId}/${encodeURIComponent(tableIdOrName)}`,
199
+ {
200
+ method: "POST",
201
+ body: JSON.stringify({ records }),
202
+ },
203
+ );
204
+ return response.records;
205
+ }
206
+
207
+ export function updateRecord(
208
+ baseId: string,
209
+ tableIdOrName: string,
210
+ recordId: string,
211
+ fields: Record<string, unknown>,
212
+ options?: { destructive?: boolean },
213
+ ): Promise<AirtableRecord> {
214
+ return airtableFetch<AirtableRecord>(
215
+ `/${baseId}/${encodeURIComponent(tableIdOrName)}/${recordId}`,
216
+ {
217
+ method: options?.destructive ? "PUT" : "PATCH",
218
+ body: JSON.stringify({ fields }),
219
+ },
220
+ );
221
+ }
222
+
223
+ export function deleteRecord(
224
+ baseId: string,
225
+ tableIdOrName: string,
226
+ recordId: string,
227
+ ): Promise<{ id: string; deleted: boolean }> {
228
+ return airtableFetch<{ id: string; deleted: boolean }>(
229
+ `/${baseId}/${encodeURIComponent(tableIdOrName)}/${recordId}`,
230
+ { method: "DELETE" },
231
+ );
232
+ }
233
+
234
+ // Helper to format field value for display
235
+ export function formatFieldValue(value: unknown): string {
236
+ if (value === null || value === undefined) return "";
237
+ if (Array.isArray(value)) {
238
+ return value.map((v) => formatFieldValue(v)).join(", ");
239
+ }
240
+ if (typeof value === "object") {
241
+ return JSON.stringify(value);
242
+ }
243
+ return String(value);
244
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Airtable Token Store
3
+ */
4
+
5
+ export { memoryTokenStore as tokenStore, type OAuthTokens, type TokenStore } from "veryfront/oauth";
@@ -0,0 +1,181 @@
1
+ # Anthropic Admin Integration
2
+
3
+ A complete integration with the Anthropic Admin API for organization management, usage tracking, and workspace administration.
4
+
5
+ ## Overview
6
+
7
+ This integration provides AI-powered tools to interact with the Anthropic Admin API, enabling you to:
8
+
9
+ - List and manage workspaces
10
+ - Monitor API usage and costs
11
+ - Manage API keys
12
+ - View organization members
13
+ - Access organization settings
14
+
15
+ ## Files Created
16
+
17
+ ### Configuration
18
+ - **connector.json** - Integration metadata with setup guide
19
+ - **files/_env.example** - Environment variable template
20
+
21
+ ### API Client
22
+ - **files/lib/anthropic-admin-client.ts** - Fully typed TypeScript client for Anthropic Admin API
23
+ - `AnthropicAdminClient` class with methods for all API endpoints
24
+ - Strong TypeScript interfaces for all response types
25
+ - Comprehensive error handling with custom `AnthropicAdminError`
26
+ - Singleton pattern with `getAnthropicAdminClient()`
27
+
28
+ ### AI Tools
29
+ All tools use `import { tool } from 'veryfront/ai'` and Zod schemas:
30
+
31
+ - **files/ai/tools/list-workspaces.ts** - List all workspaces in the organization
32
+ - **files/ai/tools/get-usage.ts** - Get API usage statistics with filtering options
33
+ - **files/ai/tools/list-api-keys.ts** - List API keys for organization or workspace
34
+ - **files/ai/tools/list-members.ts** - List organization members with role breakdown
35
+ - **files/ai/tools/get-organization.ts** - Get organization details and settings
36
+
37
+ ## Setup
38
+
39
+ 1. Get an admin API key from https://console.anthropic.com
40
+ 2. Add to your `.env` file:
41
+ ```
42
+ ANTHROPIC_ADMIN_API_KEY=sk-ant-admin-your-key-here
43
+ ```
44
+
45
+ 3. Install the integration via Veryfront CLI (when available)
46
+
47
+ ## API Client Features
48
+
49
+ ### Strong TypeScript Types
50
+
51
+ ```typescript
52
+ interface AnthropicWorkspace {
53
+ id: string;
54
+ name: string;
55
+ display_name: string;
56
+ created_at: string;
57
+ }
58
+
59
+ interface AnthropicUsageRecord {
60
+ workspace_id: string;
61
+ date: string;
62
+ model: string;
63
+ input_tokens: number;
64
+ output_tokens: number;
65
+ cache_creation_tokens?: number;
66
+ cache_read_tokens?: number;
67
+ total_cost_usd: number;
68
+ }
69
+ ```
70
+
71
+ ### Error Handling
72
+
73
+ Custom `AnthropicAdminError` class with:
74
+ - Error message
75
+ - HTTP status code
76
+ - Raw API response
77
+
78
+ ### Usage Examples
79
+
80
+ ```typescript
81
+ import { getAnthropicAdminClient } from './lib/anthropic-admin-client';
82
+
83
+ // List workspaces
84
+ const client = getAnthropicAdminClient();
85
+ const { workspaces } = await client.listWorkspaces();
86
+
87
+ // Get usage for date range
88
+ const usage = await client.getUsage({
89
+ startDate: '2025-01-01',
90
+ endDate: '2025-01-31',
91
+ workspaceId: 'ws-123',
92
+ model: 'claude-3-opus-20240229',
93
+ granularity: 'day'
94
+ });
95
+
96
+ // List API keys
97
+ const { api_keys } = await client.listAPIKeys('ws-123');
98
+
99
+ // Get organization details
100
+ const org = await client.getOrganization();
101
+ ```
102
+
103
+ ## AI Tools Features
104
+
105
+ All tools return structured responses with:
106
+ - `success` boolean
107
+ - `message` string description
108
+ - Relevant data fields
109
+ - Error information on failure
110
+ - Summary statistics where applicable
111
+
112
+ ### Example Tool Response
113
+
114
+ ```typescript
115
+ {
116
+ success: true,
117
+ usage: [...],
118
+ summary: {
119
+ total_cost_usd: 45.67,
120
+ total_input_tokens: 123456,
121
+ total_output_tokens: 78901,
122
+ record_count: 31,
123
+ date_range: {
124
+ start: '2025-01-01',
125
+ end: '2025-01-31'
126
+ }
127
+ },
128
+ message: "Retrieved 31 usage record(s) totaling $45.67 USD"
129
+ }
130
+ ```
131
+
132
+ ## Authentication
133
+
134
+ This integration uses API key authentication. No OAuth flow required.
135
+
136
+ - Admin keys provide full access to organization management
137
+ - Keys should start with `sk-ant-`
138
+ - Store securely and never commit to version control
139
+
140
+ ## Security Considerations
141
+
142
+ - Admin API keys have full organization access
143
+ - Consider using workspace-specific keys with limited permissions for production
144
+ - Keys can be revoked at any time via the Anthropic Console
145
+ - The API client validates key format on initialization
146
+
147
+ ## Rate Limits
148
+
149
+ All endpoints are subject to Anthropic's rate limits. See https://docs.anthropic.com/en/api/rate-limits
150
+
151
+ ## Documentation
152
+
153
+ Official Anthropic Admin API docs: https://docs.anthropic.com/en/api/admin-api
154
+
155
+ ## Directory Structure
156
+
157
+ ```
158
+ anthropic/
159
+ ├── connector.json # Integration metadata
160
+ ├── README.md # This file
161
+ └── files/
162
+ ├── _env.example # Environment template
163
+ ├── lib/
164
+ │ └── anthropic-admin-client.ts # API client
165
+ └── ai/
166
+ └── tools/
167
+ ├── list-workspaces.ts # Workspace listing
168
+ ├── get-usage.ts # Usage statistics
169
+ ├── list-api-keys.ts # API key management
170
+ ├── list-members.ts # Member listing
171
+ └── get-organization.ts # Organization details
172
+ ```
173
+
174
+ ## TypeScript Features
175
+
176
+ - Strict type checking throughout
177
+ - Comprehensive interfaces for all API responses
178
+ - Generic request method with type parameters
179
+ - Proper error type guards
180
+ - TSDoc comments for all public methods
181
+ - Utility types for optional parameters
@@ -0,0 +1,88 @@
1
+ {
2
+ "name": "anthropic",
3
+ "displayName": "Anthropic",
4
+ "description": "Integrate with Anthropic Admin API to manage workspaces, monitor usage, and access organization data",
5
+ "auth": {
6
+ "type": "api-key",
7
+ "envVars": {
8
+ "ANTHROPIC_ADMIN_API_KEY": {
9
+ "description": "Admin API key for Anthropic organization management",
10
+ "required": true
11
+ }
12
+ }
13
+ },
14
+ "tools": [
15
+ {
16
+ "name": "list-workspaces",
17
+ "description": "List all workspaces in the organization"
18
+ },
19
+ {
20
+ "name": "get-usage",
21
+ "description": "Get API usage statistics for a date range"
22
+ },
23
+ {
24
+ "name": "list-api-keys",
25
+ "description": "List API keys for a workspace or organization"
26
+ },
27
+ {
28
+ "name": "list-members",
29
+ "description": "List all members in the organization"
30
+ },
31
+ {
32
+ "name": "get-organization",
33
+ "description": "Get organization details and settings"
34
+ }
35
+ ],
36
+ "SETUP_GUIDE": {
37
+ "title": "Anthropic Admin API Setup",
38
+ "steps": [
39
+ {
40
+ "step": 1,
41
+ "title": "Access Anthropic Console",
42
+ "description": "Go to https://console.anthropic.com and sign in to your organization account"
43
+ },
44
+ {
45
+ "step": 2,
46
+ "title": "Navigate to Organization Settings",
47
+ "description": "Click on your organization name in the top-right corner, then select 'Organization Settings'"
48
+ },
49
+ {
50
+ "step": 3,
51
+ "title": "Go to API Keys",
52
+ "description": "In the left sidebar, click on 'API Keys' under the Organization section"
53
+ },
54
+ {
55
+ "step": 4,
56
+ "title": "Create Admin API Key",
57
+ "description": "Click 'Create API Key' and select 'Admin' as the key type. Admin keys have full access to organization management features including workspaces, usage data, members, and API key management"
58
+ },
59
+ {
60
+ "step": 5,
61
+ "title": "Name Your Key",
62
+ "description": "Give your key a descriptive name (e.g., 'Veryfront Admin Integration') to identify its purpose"
63
+ },
64
+ {
65
+ "step": 6,
66
+ "title": "Copy and Secure Your Key",
67
+ "description": "Copy the API key immediately after creation. This is the only time you'll be able to see the full key. Store it securely - you'll need it for the ANTHROPIC_ADMIN_API_KEY environment variable"
68
+ },
69
+ {
70
+ "step": 7,
71
+ "title": "Set Environment Variable",
72
+ "description": "Add the API key to your .env file: ANTHROPIC_ADMIN_API_KEY=sk-ant-admin-***"
73
+ },
74
+ {
75
+ "step": 8,
76
+ "title": "Verify Access",
77
+ "description": "Test the integration by calling the get-organization tool to confirm your admin key has the correct permissions"
78
+ }
79
+ ],
80
+ "notes": [
81
+ "Admin API keys have full access to organization management features. Keep them secure and never commit them to version control",
82
+ "For production use, consider using workspace-specific keys with limited permissions where appropriate",
83
+ "You can revoke API keys at any time from the Anthropic Console",
84
+ "Rate limits apply to all API endpoints. See https://docs.anthropic.com/en/api/rate-limits for details"
85
+ ],
86
+ "documentation": "https://docs.anthropic.com/en/api/admin-api"
87
+ }
88
+ }
@@ -0,0 +1,4 @@
1
+ # Anthropic Admin API Configuration
2
+ # Get your admin API key from https://console.anthropic.com
3
+ # Admin keys provide full access to organization management features
4
+ ANTHROPIC_ADMIN_API_KEY=sk-ant-admin-your-api-key-here
@@ -0,0 +1,36 @@
1
+ import { tool } from 'veryfront/ai';
2
+ import { z } from 'zod';
3
+ import { getAnthropicAdminClient } from '../../lib/anthropic-admin-client';
4
+
5
+ /**
6
+ * Tool for retrieving Anthropic organization details
7
+ */
8
+ export const getOrganization = tool({
9
+ name: 'get_organization',
10
+ description:
11
+ 'Get detailed information about the Anthropic organization including name, settings, default configurations, and billing information.',
12
+ parameters: z.object({}),
13
+ execute: async () => {
14
+ try {
15
+ const client = getAnthropicAdminClient();
16
+ const organization = await client.getOrganization();
17
+
18
+ return {
19
+ success: true,
20
+ organization,
21
+ message: `Retrieved organization details for ${organization.display_name}`,
22
+ };
23
+ } catch (error) {
24
+ return {
25
+ success: false,
26
+ error:
27
+ error instanceof Error
28
+ ? error.message
29
+ : 'Failed to retrieve organization details',
30
+ organization: null,
31
+ };
32
+ }
33
+ },
34
+ });
35
+
36
+ export default getOrganization;
@@ -0,0 +1,100 @@
1
+ import { tool } from 'veryfront/ai';
2
+ import { z } from 'zod';
3
+ import { getAnthropicAdminClient } from '../../lib/anthropic-admin-client';
4
+
5
+ /**
6
+ * Tool for retrieving API usage statistics from Anthropic
7
+ */
8
+ export const getUsage = tool({
9
+ name: 'get_usage',
10
+ description:
11
+ 'Get API usage statistics for a specific date range. Returns token usage and costs broken down by date, workspace, and model. Dates must be in YYYY-MM-DD format.',
12
+ parameters: z.object({
13
+ startDate: z
14
+ .string()
15
+ .regex(/^\d{4}-\d{2}-\d{2}$/, 'Date must be in YYYY-MM-DD format')
16
+ .describe('Start date for usage query (YYYY-MM-DD format, e.g., 2025-01-01)'),
17
+ endDate: z
18
+ .string()
19
+ .regex(/^\d{4}-\d{2}-\d{2}$/, 'Date must be in YYYY-MM-DD format')
20
+ .describe('End date for usage query (YYYY-MM-DD format, e.g., 2025-01-31)'),
21
+ workspaceId: z
22
+ .string()
23
+ .optional()
24
+ .describe(
25
+ 'Optional workspace ID to filter usage by specific workspace'
26
+ ),
27
+ model: z
28
+ .string()
29
+ .optional()
30
+ .describe(
31
+ 'Optional model name to filter usage (e.g., claude-3-opus-20240229, claude-3-sonnet-20240229)'
32
+ ),
33
+ granularity: z
34
+ .enum(['day', 'hour'])
35
+ .default('day')
36
+ .describe('Time granularity for usage aggregation (day or hour)'),
37
+ }),
38
+ execute: async ({ startDate, endDate, workspaceId, model, granularity }) => {
39
+ try {
40
+ const client = getAnthropicAdminClient();
41
+ const result = await client.getUsage({
42
+ startDate,
43
+ endDate,
44
+ workspaceId,
45
+ model,
46
+ granularity,
47
+ });
48
+
49
+ // Calculate summary statistics
50
+ const totalInputTokens = result.usage.reduce(
51
+ (sum, record) => sum + record.input_tokens,
52
+ 0
53
+ );
54
+ const totalOutputTokens = result.usage.reduce(
55
+ (sum, record) => sum + record.output_tokens,
56
+ 0
57
+ );
58
+ const totalCacheCreationTokens = result.usage.reduce(
59
+ (sum, record) => sum + (record.cache_creation_tokens || 0),
60
+ 0
61
+ );
62
+ const totalCacheReadTokens = result.usage.reduce(
63
+ (sum, record) => sum + (record.cache_read_tokens || 0),
64
+ 0
65
+ );
66
+
67
+ return {
68
+ success: true,
69
+ usage: result.usage,
70
+ summary: {
71
+ total_cost_usd: result.total_cost_usd,
72
+ total_input_tokens: totalInputTokens,
73
+ total_output_tokens: totalOutputTokens,
74
+ total_cache_creation_tokens: totalCacheCreationTokens,
75
+ total_cache_read_tokens: totalCacheReadTokens,
76
+ record_count: result.usage.length,
77
+ date_range: {
78
+ start: startDate,
79
+ end: endDate,
80
+ },
81
+ filters: {
82
+ workspace_id: workspaceId,
83
+ model,
84
+ granularity,
85
+ },
86
+ },
87
+ message: `Retrieved ${result.usage.length} usage record(s) totaling $${result.total_cost_usd.toFixed(4)} USD`,
88
+ };
89
+ } catch (error) {
90
+ return {
91
+ success: false,
92
+ error:
93
+ error instanceof Error ? error.message : 'Failed to retrieve usage data',
94
+ usage: [],
95
+ };
96
+ }
97
+ },
98
+ });
99
+
100
+ export default getUsage;