@oomol-lab/open-connector 1.6.5 → 1.8.0

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 (495) hide show
  1. package/README.md +4 -0
  2. package/assets/open-connector/catalog/apps/airtable.json +134 -0
  3. package/assets/open-connector/catalog/apps/aisa.json +6985 -319
  4. package/assets/open-connector/catalog/apps/baizhi_mcp.json +135 -0
  5. package/assets/open-connector/catalog/apps/cal.json +24 -6
  6. package/assets/open-connector/catalog/apps/discordbot.json +2888 -248
  7. package/assets/open-connector/catalog/apps/drawio_mcp.json +192 -0
  8. package/assets/open-connector/catalog/apps/enormail.json +411 -0
  9. package/assets/open-connector/catalog/apps/feishu_app_bot.json +158 -0
  10. package/assets/open-connector/catalog/apps/firecrawl.json +176 -32
  11. package/assets/open-connector/catalog/apps/framejet.json +273 -0
  12. package/assets/open-connector/catalog/apps/futunn.json +2967 -0
  13. package/assets/open-connector/catalog/apps/github.json +275 -0
  14. package/assets/open-connector/catalog/apps/gitlab.json +125 -0
  15. package/assets/open-connector/catalog/apps/gmail.json +376 -0
  16. package/assets/open-connector/catalog/apps/google_analytics.json +4 -1
  17. package/assets/open-connector/catalog/apps/google_bigquery.json +4 -1
  18. package/assets/open-connector/catalog/apps/google_search_console.json +4 -1
  19. package/assets/open-connector/catalog/apps/googlecalendar.json +210 -1
  20. package/assets/open-connector/catalog/apps/googlechat.json +694 -7
  21. package/assets/open-connector/catalog/apps/googledocs.json +4 -1
  22. package/assets/open-connector/catalog/apps/googledrive.json +479 -0
  23. package/assets/open-connector/catalog/apps/googlesheets.json +148 -1
  24. package/assets/open-connector/catalog/apps/granola.json +23 -0
  25. package/assets/open-connector/catalog/apps/hithink_finance.json +6 -3
  26. package/assets/open-connector/catalog/apps/indexed.json +1115 -0
  27. package/assets/open-connector/catalog/apps/keepa.json +3534 -987
  28. package/assets/open-connector/catalog/apps/linear.json +133 -0
  29. package/assets/open-connector/catalog/apps/linear_mcp.json +510 -0
  30. package/assets/open-connector/catalog/apps/moneyforward_mcp.json +1432 -0
  31. package/assets/open-connector/catalog/apps/notion.json +588 -1
  32. package/assets/open-connector/catalog/apps/notion_mcp.json +490 -0
  33. package/assets/open-connector/catalog/apps/odoo.json +619 -0
  34. package/assets/open-connector/catalog/apps/one_drive.json +185 -0
  35. package/assets/open-connector/catalog/apps/outlook.json +212 -8
  36. package/assets/open-connector/catalog/apps/outlook_calendar.json +23 -2
  37. package/assets/open-connector/catalog/apps/postiz.json +334 -0
  38. package/assets/open-connector/catalog/apps/proworkflow.json +529 -0
  39. package/assets/open-connector/catalog/apps/sellersprite_mcp.json +2 -1
  40. package/assets/open-connector/catalog/apps/shopify.json +282 -0
  41. package/assets/open-connector/catalog/apps/slack.json +405 -0
  42. package/assets/open-connector/catalog/apps/slackbot.json +214 -0
  43. package/assets/open-connector/catalog/apps/spotify.json +46 -43
  44. package/assets/open-connector/catalog/apps/stripe.json +96 -0
  45. package/assets/open-connector/catalog/apps/telegram.json +138 -0
  46. package/assets/open-connector/catalog/apps/tencent_docs.json +3 -0
  47. package/assets/open-connector/catalog/apps/weixin_store.json +543 -2
  48. package/assets/open-connector/catalog/apps/wisburg.json +1528 -0
  49. package/assets/open-connector/catalog/apps/woocommerce.json +127 -0
  50. package/assets/open-connector/catalog/apps/youtube.json +4 -1
  51. package/assets/open-connector/catalog/apps/zendesk.json +152 -0
  52. package/assets/open-connector/catalog/apps/zerotier.json +3319 -0
  53. package/assets/open-connector/catalog/apps-index.json +1 -1
  54. package/assets/open-connector/migrations/0014_saas_project.sql +55 -0
  55. package/assets/open-connector/migrations/0015_saas_cleanup_runtime.sql +8 -0
  56. package/assets/open-connector/migrations/0016_trigger_policy.sql +1 -0
  57. package/assets/open-connector/migrations/0017_trigger_subscriptions.sql +17 -0
  58. package/assets/open-connector/migrations/postgresql/0014_saas_project.sql +55 -0
  59. package/assets/open-connector/migrations/postgresql/0015_saas_cleanup_runtime.sql +8 -0
  60. package/assets/open-connector/migrations/postgresql/0016_trigger_policy.sql +1 -0
  61. package/assets/open-connector/migrations/postgresql/0017_trigger_subscriptions.sql +17 -0
  62. package/package.json +2 -2
  63. package/src/connection-service.d.ts +40 -7
  64. package/src/connection-service.js +60 -18
  65. package/src/core/action-policy.d.ts +8 -1
  66. package/src/core/action-policy.js +51 -0
  67. package/src/core/cast.d.ts +13 -0
  68. package/src/core/cast.js +18 -1
  69. package/src/core/guarded-fetch.d.ts +11 -3
  70. package/src/core/guarded-fetch.js +19 -7
  71. package/src/core/provider-scenarios.js +67 -13
  72. package/src/core/remote-http.d.ts +33 -0
  73. package/src/core/remote-http.js +104 -0
  74. package/src/core/request.d.ts +1 -0
  75. package/src/core/request.js +11 -1
  76. package/src/core/types.d.ts +5 -1
  77. package/src/marketplace/marketplace-service.d.ts +0 -1
  78. package/src/marketplace/marketplace-service.js +80 -92
  79. package/src/mcp.js +26 -9
  80. package/src/oauth/oauth-client-config-service.d.ts +16 -1
  81. package/src/oauth/oauth-client-config-service.js +59 -3
  82. package/src/oauth/oauth-flow-service.d.ts +14 -1
  83. package/src/oauth/oauth-flow-service.js +14 -6
  84. package/src/providers/17track/runtime.js +1 -1
  85. package/src/providers/action-contracts.generated.d.ts +20 -6
  86. package/src/providers/aifinmarket/runtime.js +1 -1
  87. package/src/providers/airtable/executors.d.ts +3 -0
  88. package/src/providers/airtable/executors.js +2 -0
  89. package/src/providers/airtable/trigger-on-record-changed.d.ts +2 -0
  90. package/src/providers/airtable/trigger-on-record-changed.definition.d.ts +4 -0
  91. package/src/providers/airtable/trigger-on-record-changed.definition.js +54 -0
  92. package/src/providers/airtable/trigger-on-record-changed.js +235 -0
  93. package/src/providers/aisa/executors.js +912 -50
  94. package/src/providers/aliyun_ack/runtime.js +1 -1
  95. package/src/providers/aliyun_sls/runtime.js +1 -1
  96. package/src/providers/app_store_server/runtime-helpers.js +1 -1
  97. package/src/providers/baizhi_mcp/actions.d.ts +2 -0
  98. package/src/providers/baizhi_mcp/actions.js +40 -0
  99. package/src/providers/baizhi_mcp/executors.d.ts +3 -0
  100. package/src/providers/baizhi_mcp/executors.js +102 -0
  101. package/src/providers/bazhuayu/runtime.js +2 -2
  102. package/src/providers/bilibili/runtime.js +2 -4
  103. package/src/providers/bilibili/upload.js +9 -7
  104. package/src/providers/cal/actions.js +5 -1
  105. package/src/providers/cloudflare_browser_rendering/executors.js +1 -1
  106. package/src/providers/cloudflare_dns/executors.js +1 -1
  107. package/src/providers/{cloudflare-current-user.js → cloudflare_dns/runtime-user.js} +2 -2
  108. package/src/providers/cloudflare_dns/runtime.d.ts +1 -1
  109. package/src/providers/cloudflare_dns/runtime.js +1 -1
  110. package/src/providers/cloudflare_r2/executors.js +1 -1
  111. package/src/providers/cloudflare_r2/runtime.d.ts +1 -1
  112. package/src/providers/cloudflare_r2/runtime.js +1 -1
  113. package/src/providers/cloudflare_worker/executors.js +1 -1
  114. package/src/providers/cloudflare_worker/runtime.d.ts +1 -1
  115. package/src/providers/cloudflare_worker/runtime.js +1 -1
  116. package/src/providers/dingtalk_mcp/runtime.js +1 -1
  117. package/src/providers/discordbot/executors.d.ts +0 -9
  118. package/src/providers/discordbot/executors.js +9 -101
  119. package/src/providers/discordbot/runtime-guilds.d.ts +3 -0
  120. package/src/providers/discordbot/runtime-guilds.js +464 -0
  121. package/src/providers/discordbot/runtime.d.ts +42 -0
  122. package/src/providers/discordbot/runtime.js +124 -0
  123. package/src/providers/drawio_mcp/executors.d.ts +3 -0
  124. package/src/providers/drawio_mcp/executors.js +19 -0
  125. package/src/providers/drawio_mcp/runtime.d.ts +8 -0
  126. package/src/providers/drawio_mcp/runtime.js +175 -0
  127. package/src/providers/enormail/executors.d.ts +4 -0
  128. package/src/providers/enormail/executors.js +97 -0
  129. package/src/providers/fastmoss_mcp/executors.js +2 -2
  130. package/src/providers/feishu_app_bot/executors.d.ts +3 -0
  131. package/src/providers/feishu_app_bot/executors.js +2 -0
  132. package/src/providers/feishu_app_bot/trigger-config.d.ts +1 -0
  133. package/src/providers/feishu_app_bot/trigger-config.js +10 -0
  134. package/src/providers/feishu_app_bot/trigger-on-event.d.ts +2 -0
  135. package/src/providers/feishu_app_bot/trigger-on-event.definition.d.ts +4 -0
  136. package/src/providers/feishu_app_bot/trigger-on-event.definition.js +63 -0
  137. package/src/providers/feishu_app_bot/trigger-on-event.js +29 -0
  138. package/src/providers/feishu_app_bot/trigger-subscriptions.d.ts +5 -0
  139. package/src/providers/feishu_app_bot/trigger-subscriptions.js +70 -0
  140. package/src/providers/finchina/executors.js +1 -1
  141. package/src/providers/framejet/executors.d.ts +4 -0
  142. package/src/providers/framejet/executors.js +19 -0
  143. package/src/providers/framejet/runtime.d.ts +16 -0
  144. package/src/providers/framejet/runtime.js +148 -0
  145. package/src/providers/futunn/actions.d.ts +2 -0
  146. package/src/providers/futunn/actions.js +152 -0
  147. package/src/providers/futunn/actions.research.d.ts +2 -0
  148. package/src/providers/futunn/actions.research.js +423 -0
  149. package/src/providers/futunn/actions.trading.d.ts +2 -0
  150. package/src/providers/futunn/actions.trading.js +204 -0
  151. package/src/providers/futunn/executors.d.ts +3 -0
  152. package/src/providers/futunn/executors.js +24 -0
  153. package/src/providers/futunn/runtime-research.d.ts +3 -0
  154. package/src/providers/futunn/runtime-research.js +133 -0
  155. package/src/providers/futunn/runtime-trading.d.ts +3 -0
  156. package/src/providers/futunn/runtime-trading.js +39 -0
  157. package/src/providers/futunn/runtime.d.ts +2 -0
  158. package/src/providers/futunn/runtime.js +50 -0
  159. package/src/providers/futunn/transport.d.ts +11 -0
  160. package/src/providers/futunn/transport.js +76 -0
  161. package/src/providers/gildata/executors.js +1 -1
  162. package/src/providers/github/executors.d.ts +3 -0
  163. package/src/providers/github/executors.js +6 -0
  164. package/src/providers/github/trigger-on-repo-event.d.ts +2 -0
  165. package/src/providers/github/trigger-on-repo-event.definition.d.ts +4 -0
  166. package/src/providers/github/trigger-on-repo-event.definition.js +94 -0
  167. package/src/providers/github/trigger-on-repo-event.js +168 -0
  168. package/src/providers/github/trigger-watch-pull-request.d.ts +2 -0
  169. package/src/providers/github/trigger-watch-pull-request.definition.d.ts +4 -0
  170. package/src/providers/github/trigger-watch-pull-request.definition.js +49 -0
  171. package/src/providers/github/trigger-watch-pull-request.js +106 -0
  172. package/src/providers/gitlab/executors.d.ts +3 -0
  173. package/src/providers/gitlab/executors.js +2 -0
  174. package/src/providers/gitlab/trigger-on-project-event.d.ts +2 -0
  175. package/src/providers/gitlab/trigger-on-project-event.definition.d.ts +5 -0
  176. package/src/providers/gitlab/trigger-on-project-event.definition.js +63 -0
  177. package/src/providers/gitlab/trigger-on-project-event.js +186 -0
  178. package/src/providers/gmail/executors.d.ts +3 -0
  179. package/src/providers/gmail/executors.js +5 -3
  180. package/src/providers/gmail/message.d.ts +6 -8
  181. package/src/providers/gmail/message.js +4 -0
  182. package/src/providers/gmail/scopes.d.ts +32 -0
  183. package/src/providers/gmail/scopes.js +37 -0
  184. package/src/providers/gmail/trigger-on-message-received.d.ts +2 -0
  185. package/src/providers/gmail/trigger-on-message-received.definition.d.ts +4 -0
  186. package/src/providers/gmail/trigger-on-message-received.definition.js +74 -0
  187. package/src/providers/gmail/trigger-on-message-received.js +232 -0
  188. package/src/providers/google_analytics/executors.js +2 -2
  189. package/src/providers/google_analytics/scopes.js +6 -1
  190. package/src/providers/google_bigquery/executors.js +2 -2
  191. package/src/providers/google_bigquery/scopes.js +2 -0
  192. package/src/providers/google_search_console/executors.js +2 -2
  193. package/src/providers/google_search_console/scopes.js +2 -0
  194. package/src/providers/googleads/executors.js +1 -1
  195. package/src/providers/googleads/scopes.d.ts +1 -3
  196. package/src/providers/googleads/scopes.js +2 -4
  197. package/src/providers/googlecalendar/executors.d.ts +3 -0
  198. package/src/providers/googlecalendar/executors.js +3 -1
  199. package/src/providers/googlecalendar/runtime-shared.js +2 -2
  200. package/src/providers/googlecalendar/scopes.js +2 -0
  201. package/src/providers/googlecalendar/trigger-on-event-changed.d.ts +2 -0
  202. package/src/providers/googlecalendar/trigger-on-event-changed.definition.d.ts +4 -0
  203. package/src/providers/googlecalendar/trigger-on-event-changed.definition.js +74 -0
  204. package/src/providers/googlecalendar/trigger-on-event-changed.js +233 -0
  205. package/src/providers/googlechat/executors.d.ts +1 -3
  206. package/src/providers/googlechat/executors.js +219 -28
  207. package/src/providers/googlechat/members.d.ts +55 -0
  208. package/src/providers/googlechat/members.js +293 -0
  209. package/src/providers/googlechat/runtime.d.ts +16 -0
  210. package/src/providers/googlechat/runtime.js +25 -0
  211. package/src/providers/googlechat/scopes.d.ts +22 -3
  212. package/src/providers/googlechat/scopes.js +30 -7
  213. package/src/providers/googledocs/executors.js +1 -1
  214. package/src/providers/googledrive/executors.d.ts +3 -0
  215. package/src/providers/googledrive/executors.js +9 -2
  216. package/src/providers/{google-auth.d.ts → googledrive/runtime-auth.d.ts} +2 -2
  217. package/src/providers/{google-auth.js → googledrive/runtime-auth.js} +3 -3
  218. package/src/providers/googledrive/runtime-collaboration.js +1 -1
  219. package/src/providers/{google-runtime.d.ts → googledrive/runtime-request.d.ts} +1 -1
  220. package/src/providers/{google-runtime.js → googledrive/runtime-request.js} +2 -2
  221. package/src/providers/googledrive/trigger-changes.d.ts +12 -0
  222. package/src/providers/googledrive/trigger-changes.definition.d.ts +7 -0
  223. package/src/providers/googledrive/trigger-changes.definition.js +101 -0
  224. package/src/providers/googledrive/trigger-changes.js +452 -0
  225. package/src/providers/googledrive/trigger-on-file-change.d.ts +2 -0
  226. package/src/providers/googledrive/trigger-on-file-change.definition.d.ts +4 -0
  227. package/src/providers/googledrive/trigger-on-file-change.definition.js +77 -0
  228. package/src/providers/googledrive/trigger-on-file-change.js +258 -0
  229. package/src/providers/googleforms/executors.js +2 -2
  230. package/src/providers/googleforms/scopes.d.ts +0 -3
  231. package/src/providers/googleforms/scopes.js +2 -6
  232. package/src/providers/googlemeet/executors.js +2 -2
  233. package/src/providers/googlemeet/scopes.d.ts +0 -3
  234. package/src/providers/googlemeet/scopes.js +2 -6
  235. package/src/providers/googlesheets/executors.d.ts +3 -0
  236. package/src/providers/googlesheets/executors.js +3 -1
  237. package/src/providers/googlesheets/scopes.js +2 -0
  238. package/src/providers/googlesheets/trigger-on-row-added.d.ts +2 -0
  239. package/src/providers/googlesheets/trigger-on-row-added.definition.d.ts +4 -0
  240. package/src/providers/googlesheets/trigger-on-row-added.definition.js +54 -0
  241. package/src/providers/googlesheets/trigger-on-row-added.js +234 -0
  242. package/src/providers/googleslides/executors.js +2 -2
  243. package/src/providers/googleslides/scopes.d.ts +0 -3
  244. package/src/providers/googleslides/scopes.js +2 -6
  245. package/src/providers/googletasks/executors.js +2 -2
  246. package/src/providers/googletasks/scopes.d.ts +0 -3
  247. package/src/providers/googletasks/scopes.js +2 -6
  248. package/src/providers/granola/actions.js +2 -0
  249. package/src/providers/granola/runtime-mcp.js +2 -0
  250. package/src/providers/granola/runtime.js +2 -2
  251. package/src/providers/hithink_finance/runtime.js +1 -1
  252. package/src/providers/indexed/executors.d.ts +4 -0
  253. package/src/providers/indexed/executors.js +16 -0
  254. package/src/providers/indexed/runtime.d.ts +26 -0
  255. package/src/providers/indexed/runtime.js +129 -0
  256. package/src/providers/indiegogo/executors.js +1 -1
  257. package/src/providers/investoday_mcp/executors.js +2 -2
  258. package/src/providers/iyunbiao/runtime.js +2 -2
  259. package/src/providers/keepa/actions.d.ts +1 -1
  260. package/src/providers/keepa/actions.js +371 -149
  261. package/src/providers/keepa/deal-attributes.d.ts +1 -0
  262. package/src/providers/keepa/deal-attributes.js +26 -0
  263. package/src/providers/keepa/runtime.js +212 -18
  264. package/src/providers/kingdee/executors.js +1 -1
  265. package/src/providers/kingdee/runtime.js +2 -2
  266. package/src/providers/kuaidi100/runtime.js +1 -1
  267. package/src/providers/linear/executors.d.ts +3 -0
  268. package/src/providers/linear/executors.js +14 -9
  269. package/src/providers/linear/trigger-on-issue-changed.d.ts +2 -0
  270. package/src/providers/linear/trigger-on-issue-changed.definition.d.ts +5 -0
  271. package/src/providers/linear/trigger-on-issue-changed.definition.js +43 -0
  272. package/src/providers/linear/trigger-on-issue-changed.js +215 -0
  273. package/src/providers/linear_mcp/actions.d.ts +47 -0
  274. package/src/providers/linear_mcp/actions.js +102 -0
  275. package/src/providers/linear_mcp/endpoints.d.ts +3 -0
  276. package/src/providers/linear_mcp/endpoints.js +3 -0
  277. package/src/providers/linear_mcp/executors.d.ts +3 -0
  278. package/src/providers/linear_mcp/executors.js +9 -0
  279. package/src/providers/linear_mcp/runtime-mcp.d.ts +15 -0
  280. package/src/providers/linear_mcp/runtime-mcp.js +238 -0
  281. package/src/providers/lingxing_mcp/runtime.js +1 -1
  282. package/src/providers/mcdonalds_cn_mcp/runtime.js +1 -1
  283. package/src/providers/metabase/mcp-runtime.js +1 -1
  284. package/src/providers/moneyforward_mcp/executors.d.ts +3 -0
  285. package/src/providers/moneyforward_mcp/executors.js +11 -0
  286. package/src/providers/moneyforward_mcp/manifest.d.ts +31 -0
  287. package/src/providers/moneyforward_mcp/manifest.js +204 -0
  288. package/src/providers/moneyforward_mcp/runtime.d.ts +18 -0
  289. package/src/providers/moneyforward_mcp/runtime.js +296 -0
  290. package/src/providers/notion/executors.d.ts +3 -0
  291. package/src/providers/notion/executors.js +41 -3
  292. package/src/providers/notion/trigger-on-database-page-event.d.ts +2 -0
  293. package/src/providers/notion/trigger-on-database-page-event.definition.d.ts +4 -0
  294. package/src/providers/notion/trigger-on-database-page-event.definition.js +63 -0
  295. package/src/providers/notion/trigger-on-database-page-event.js +293 -0
  296. package/src/providers/notion_mcp/endpoints.d.ts +3 -0
  297. package/src/providers/notion_mcp/endpoints.js +3 -0
  298. package/src/providers/notion_mcp/executors.d.ts +3 -0
  299. package/src/providers/notion_mcp/executors.js +176 -0
  300. package/src/providers/notion_mcp/mcp-response.d.ts +86 -0
  301. package/src/providers/notion_mcp/mcp-response.js +314 -0
  302. package/src/providers/odoo/executors.d.ts +3 -0
  303. package/src/providers/odoo/executors.js +32 -0
  304. package/src/providers/odoo/runtime.d.ts +16 -0
  305. package/src/providers/odoo/runtime.js +140 -0
  306. package/src/providers/one_drive/executors.d.ts +3 -0
  307. package/src/providers/one_drive/executors.js +2 -0
  308. package/src/providers/one_drive/trigger-on-item-changed.d.ts +2 -0
  309. package/src/providers/one_drive/trigger-on-item-changed.definition.d.ts +4 -0
  310. package/src/providers/one_drive/trigger-on-item-changed.definition.js +63 -0
  311. package/src/providers/one_drive/trigger-on-item-changed.js +214 -0
  312. package/src/providers/outlook/executors.d.ts +3 -0
  313. package/src/providers/outlook/executors.js +29 -6
  314. package/src/providers/outlook/microsoft-graph.js +17 -6
  315. package/src/providers/outlook/trigger-on-message-received.d.ts +2 -0
  316. package/src/providers/outlook/trigger-on-message-received.definition.d.ts +4 -0
  317. package/src/providers/outlook/trigger-on-message-received.definition.js +93 -0
  318. package/src/providers/outlook/trigger-on-message-received.js +226 -0
  319. package/src/providers/outlook_calendar/executors.js +30 -7
  320. package/src/providers/patsnap_mcp/executors.js +2 -2
  321. package/src/providers/postiz/executors.d.ts +4 -0
  322. package/src/providers/postiz/executors.js +83 -0
  323. package/src/providers/provider-loader.d.ts +5 -0
  324. package/src/providers/provider-loader.js +4 -0
  325. package/src/providers/provider-runtime.d.ts +15 -0
  326. package/src/providers/provider-runtime.js +57 -4
  327. package/src/providers/proworkflow/executors.d.ts +4 -0
  328. package/src/providers/proworkflow/executors.js +135 -0
  329. package/src/providers/registry.generated.js +14 -0
  330. package/src/providers/scrape_creators/catalog.js +1 -1
  331. package/src/providers/scrape_creators/runtime.js +1 -1
  332. package/src/providers/sellersprite_mcp/executors.js +2 -2
  333. package/src/providers/sellersprite_mcp/official-actions.js +3 -2
  334. package/src/providers/sentry/runtime.js +6 -7
  335. package/src/providers/shopify/executors.d.ts +3 -0
  336. package/src/providers/shopify/executors.js +2 -0
  337. package/src/providers/shopify/trigger-on-shop-event.d.ts +2 -0
  338. package/src/providers/shopify/trigger-on-shop-event.definition.d.ts +4 -0
  339. package/src/providers/shopify/trigger-on-shop-event.definition.js +214 -0
  340. package/src/providers/shopify/trigger-on-shop-event.js +165 -0
  341. package/src/providers/slack/actions.js +52 -3
  342. package/src/providers/slack/executors.d.ts +3 -0
  343. package/src/providers/slack/executors.js +2 -0
  344. package/src/providers/slack/runtime.js +58 -21
  345. package/src/providers/slack/trigger-on-message-posted.d.ts +2 -0
  346. package/src/providers/slack/trigger-on-message-posted.definition.d.ts +4 -0
  347. package/src/providers/slack/trigger-on-message-posted.definition.js +80 -0
  348. package/src/providers/slack/trigger-on-message-posted.js +176 -0
  349. package/src/providers/slickdeals/runtime.js +1 -1
  350. package/src/providers/sorftime_mcp/executors.js +2 -2
  351. package/src/providers/spotify/runtime.js +15 -4
  352. package/src/providers/stripe/executors.d.ts +3 -0
  353. package/src/providers/stripe/executors.js +2 -0
  354. package/src/providers/stripe/trigger-on-event.d.ts +2 -0
  355. package/src/providers/stripe/trigger-on-event.definition.d.ts +4 -0
  356. package/src/providers/stripe/trigger-on-event.definition.js +43 -0
  357. package/src/providers/stripe/trigger-on-event.js +212 -0
  358. package/src/providers/telegram/executors.d.ts +3 -0
  359. package/src/providers/telegram/executors.js +2 -0
  360. package/src/providers/telegram/trigger-on-update.d.ts +2 -0
  361. package/src/providers/telegram/trigger-on-update.definition.d.ts +5 -0
  362. package/src/providers/telegram/trigger-on-update.definition.js +78 -0
  363. package/src/providers/telegram/trigger-on-update.js +141 -0
  364. package/src/providers/tikhub/bounded-response.d.ts +1 -1
  365. package/src/providers/tikhub/bounded-response.js +8 -34
  366. package/src/providers/tikhub/endpoint-catalog.js +1 -1
  367. package/src/providers/tikhub/runtime.js +2 -2
  368. package/src/providers/tongdaxin/executors.js +79 -15
  369. package/src/providers/uspto/executors.js +1 -1
  370. package/src/providers/waffo/executors.js +1 -1
  371. package/src/providers/waffo/runtime.js +1 -1
  372. package/src/providers/wecom_mcp/runtime.js +1 -1
  373. package/src/providers/weixin_store/access-token.d.ts +2 -1
  374. package/src/providers/weixin_store/access-token.js +15 -4
  375. package/src/providers/weixin_store/executors.js +97 -12
  376. package/src/providers/wisburg/executors.d.ts +4 -0
  377. package/src/providers/wisburg/executors.js +13 -0
  378. package/src/providers/wisburg/runtime.d.ts +12 -0
  379. package/src/providers/wisburg/runtime.js +133 -0
  380. package/src/providers/woocommerce/executors.d.ts +3 -0
  381. package/src/providers/woocommerce/executors.js +2 -0
  382. package/src/providers/woocommerce/trigger-on-store-event.d.ts +2 -0
  383. package/src/providers/woocommerce/trigger-on-store-event.definition.d.ts +4 -0
  384. package/src/providers/woocommerce/trigger-on-store-event.definition.js +55 -0
  385. package/src/providers/woocommerce/trigger-on-store-event.js +179 -0
  386. package/src/providers/xydc_mcp/executors.js +2 -2
  387. package/src/providers/youtube/executors.js +1 -1
  388. package/src/providers/youtube/runtime.js +1 -1
  389. package/src/providers/zendesk/executors.d.ts +3 -0
  390. package/src/providers/zendesk/executors.js +2 -0
  391. package/src/providers/zendesk/trigger-on-event.d.ts +2 -0
  392. package/src/providers/zendesk/trigger-on-event.definition.d.ts +5 -0
  393. package/src/providers/zendesk/trigger-on-event.definition.js +101 -0
  394. package/src/providers/zendesk/trigger-on-event.js +188 -0
  395. package/src/providers/zerotier/executors.d.ts +9 -0
  396. package/src/providers/zerotier/executors.js +629 -0
  397. package/src/providers/zerotier/runtime.d.ts +54 -0
  398. package/src/providers/zerotier/runtime.js +207 -0
  399. package/src/saas/saas-cleanup-service.d.ts +26 -0
  400. package/src/saas/saas-cleanup-service.js +124 -0
  401. package/src/saas/saas-client.d.ts +86 -0
  402. package/src/saas/saas-client.js +369 -0
  403. package/src/saas/saas-execution-service.d.ts +15 -0
  404. package/src/saas/saas-execution-service.js +21 -0
  405. package/src/saas/saas-oauth-service.d.ts +25 -0
  406. package/src/saas/saas-oauth-service.js +197 -0
  407. package/src/saas/saas-project-service.d.ts +61 -0
  408. package/src/saas/saas-project-service.js +211 -0
  409. package/src/server/actions/action-idempotency.d.ts +1 -0
  410. package/src/server/actions/action-idempotency.js +1 -0
  411. package/src/server/actions/action-runner.d.ts +7 -0
  412. package/src/server/actions/action-runner.js +43 -7
  413. package/src/server/actions/run-log-summary.js +9 -0
  414. package/src/server/api/auth.d.ts +1 -0
  415. package/src/server/api/auth.js +13 -2
  416. package/src/server/api/cache-policy.js +4 -1
  417. package/src/server/api/connection-input.d.ts +7 -1
  418. package/src/server/api/connection-input.js +7 -1
  419. package/src/server/api/connection-routes.d.ts +3 -1
  420. package/src/server/api/connection-routes.js +21 -3
  421. package/src/server/api/http-utils.d.ts +4 -3
  422. package/src/server/api/oauth-completion-page.d.ts +124 -0
  423. package/src/server/api/oauth-completion-page.js +113 -18
  424. package/src/server/api/openapi.js +123 -15
  425. package/src/server/api/policy-input.js +6 -0
  426. package/src/server/api/runtime-api.d.ts +18 -3
  427. package/src/server/api/runtime-api.js +36 -5
  428. package/src/server/api/saas-completion-page.d.ts +2 -0
  429. package/src/server/api/saas-completion-page.js +103 -0
  430. package/src/server/connect-app.d.ts +5 -0
  431. package/src/server/connect-app.js +50 -0
  432. package/src/server/connect-server.d.ts +12 -0
  433. package/src/server/connect-server.js +157 -15
  434. package/src/server/connector-runtime.d.ts +3 -1
  435. package/src/server/connector-runtime.js +5 -2
  436. package/src/server/files/transit-files.js +16 -7
  437. package/src/server/proxy/proxy-runner.d.ts +5 -1
  438. package/src/server/proxy/proxy-runner.js +72 -26
  439. package/src/server/storage/connection-request-store.d.ts +41 -1
  440. package/src/server/storage/connection-request-store.js +245 -20
  441. package/src/server/storage/connection-store.d.ts +16 -0
  442. package/src/server/storage/connection-store.js +119 -0
  443. package/src/server/storage/node-runtime-database.js +3 -3
  444. package/src/server/storage/{postgres-migrations.d.ts → postgres/migrations.d.ts} +2 -2
  445. package/src/server/storage/{postgres-migrations.js → postgres/migrations.js} +1 -1
  446. package/src/server/storage/postgres/runtime-store.d.ts +43 -0
  447. package/src/server/storage/{postgres-runtime-store.js → postgres/runtime-store.js} +59 -94
  448. package/src/server/storage/runtime-database.d.ts +4 -0
  449. package/src/server/storage/runtime-sql.d.ts +1 -1
  450. package/src/server/storage/runtime-sql.js +2 -1
  451. package/src/server/storage/runtime-store.d.ts +1 -0
  452. package/src/server/storage/runtime-token-service.d.ts +2 -0
  453. package/src/server/storage/runtime-token-service.js +3 -0
  454. package/src/server/storage/saas-project-store.d.ts +77 -0
  455. package/src/server/storage/saas-project-store.js +273 -0
  456. package/src/server/storage/{sqlite-runtime-store.d.ts → sqlite/runtime-store.d.ts} +21 -25
  457. package/src/server/storage/{sqlite-runtime-store.js → sqlite/runtime-store.js} +100 -115
  458. package/src/server/storage/trigger-store.d.ts +16 -0
  459. package/src/server/storage/trigger-store.js +96 -0
  460. package/src/triggers/common/config.d.ts +2 -0
  461. package/src/triggers/common/config.js +17 -0
  462. package/src/triggers/common/configOptions.d.ts +13 -0
  463. package/src/triggers/common/configOptions.js +1 -0
  464. package/src/triggers/common/encoding.d.ts +3 -0
  465. package/src/triggers/common/encoding.js +19 -0
  466. package/src/triggers/common/integration.d.ts +115 -0
  467. package/src/triggers/common/integration.js +31 -0
  468. package/src/triggers/common/json.d.ts +6 -0
  469. package/src/triggers/common/json.js +91 -0
  470. package/src/triggers/common/poll.d.ts +41 -0
  471. package/src/triggers/common/poll.js +15 -0
  472. package/src/triggers/common/proxy.d.ts +14 -0
  473. package/src/triggers/common/proxy.js +1 -0
  474. package/src/triggers/common/types.d.ts +42 -0
  475. package/src/triggers/common/types.js +1 -0
  476. package/src/triggers/maintenance.d.ts +40 -0
  477. package/src/triggers/maintenance.js +120 -0
  478. package/src/triggers/metadata.d.ts +8 -0
  479. package/src/triggers/metadata.js +1 -0
  480. package/src/triggers/request.d.ts +33 -0
  481. package/src/triggers/request.js +52 -0
  482. package/src/triggers/resources.d.ts +12 -0
  483. package/src/triggers/resources.js +121 -0
  484. package/src/triggers/signature.d.ts +4 -0
  485. package/src/triggers/signature.js +48 -0
  486. package/src/triggers/store.d.ts +29 -0
  487. package/src/triggers/store.js +1 -0
  488. package/src/triggers/subscriptions.d.ts +22 -0
  489. package/src/triggers/subscriptions.js +220 -0
  490. package/src/triggers/trigger-runner.d.ts +34 -0
  491. package/src/triggers/trigger-runner.js +169 -0
  492. package/src/providers/sentry/scopes.d.ts +0 -1
  493. package/src/providers/sentry/scopes.js +0 -7
  494. package/src/server/storage/postgres-runtime-store.d.ts +0 -39
  495. /package/src/providers/{cloudflare-current-user.d.ts → cloudflare_dns/runtime-user.d.ts} +0 -0
@@ -0,0 +1,258 @@
1
+ import { eventsPollOutputs, maximumPollEventsPerPage, PermanentPollError, PollConnectionError, TransientPollError, } from "../../triggers/common/poll.js";
2
+ import { snapshot } from "./trigger-on-file-change.definition.js";
3
+ const folderMimeType = "application/vnd.google-apps.folder";
4
+ const listFields = "nextPageToken,incompleteSearch,files(id,name,mimeType,createdTime,modifiedTime,parents,trashed,webViewLink,driveId,size,version,lastModifyingUser(displayName,emailAddress))";
5
+ const transientReasons = new Set([
6
+ "rateLimitExceeded",
7
+ "userRateLimitExceeded",
8
+ "dailyLimitExceeded",
9
+ "sharingRateLimitExceeded",
10
+ ]);
11
+ const permanentReasons = new Set(["insufficientFilePermissions", "appNotAuthorizedToFile"]);
12
+ export const googleDriveFileChange = {
13
+ buildOutputs: eventsPollOutputs,
14
+ snapshot,
15
+ async poll(context) {
16
+ const config = resolveConfig(context.config);
17
+ if (context.checkpoint === null)
18
+ return seed(context, config);
19
+ const checkpoint = readCheckpoint(context.checkpoint);
20
+ if (checkpoint.changeType !== config.changeType) {
21
+ return {
22
+ checkpoint: seeded(context.now, config.changeType),
23
+ events: [],
24
+ };
25
+ }
26
+ return pollFolder(context, config, checkpoint);
27
+ },
28
+ };
29
+ function resolveConfig(value) {
30
+ return {
31
+ changeType: value.changeType,
32
+ driveId: value.driveId,
33
+ folderId: value.folderId,
34
+ itemTypes: new Set(value.itemTypes),
35
+ maxFilesPerPoll: value.maxFilesPerPoll,
36
+ mimeTypes: value.mimeTypes,
37
+ namePrefix: value.namePrefix,
38
+ };
39
+ }
40
+ function readCheckpoint(value) {
41
+ const checkpoint = record(value);
42
+ if (typeof checkpoint?.since != "string" || Number.isNaN(Date.parse(checkpoint.since))) {
43
+ throw new PermanentPollError("Google Drive checkpoint is invalid; recreate the Trigger.");
44
+ }
45
+ const boundary = checkpoint.boundaryKeys;
46
+ return {
47
+ since: checkpoint.since,
48
+ ...(typeof checkpoint.floor == "string" ? { floor: checkpoint.floor } : {}),
49
+ ...(typeof checkpoint.pageToken == "string" ? { pageToken: checkpoint.pageToken } : {}),
50
+ ...(typeof checkpoint.pageQuery == "string" ? { pageQuery: checkpoint.pageQuery } : {}),
51
+ ...(typeof checkpoint.changeType == "string" ? { changeType: checkpoint.changeType } : {}),
52
+ ...(typeof checkpoint.maxSeen == "string" ? { maxSeen: checkpoint.maxSeen } : {}),
53
+ ...(Array.isArray(boundary)
54
+ ? { boundaryKeys: boundary.filter((key) => typeof key == "string") }
55
+ : {}),
56
+ };
57
+ }
58
+ async function seed(context, config) {
59
+ const result = await get(context, `/drive/v3/files/${encodeURIComponent(config.folderId)}`, {
60
+ fields: "id,name,mimeType,driveId,trashed",
61
+ supportsAllDrives: "true",
62
+ });
63
+ success(result, "folder probe");
64
+ const probe = record(result.data);
65
+ if (probe == null)
66
+ throw new TransientPollError("Google Drive folder probe returned no payload.");
67
+ if (probe.mimeType !== folderMimeType)
68
+ throw new PermanentPollError("Google Drive folderId does not point to a folder.");
69
+ if (probe.trashed === true)
70
+ throw new PermanentPollError("The Google Drive folder is in the trash.");
71
+ if (config.driveId.length > 0 && (probe.driveId ?? "") !== config.driveId) {
72
+ throw new PermanentPollError("The configured Google Drive shared drive does not contain this folder.");
73
+ }
74
+ return { checkpoint: seeded(context.now, config.changeType), events: [] };
75
+ }
76
+ function seeded(now, change) {
77
+ const since = now.toISOString();
78
+ return { changeType: change, floor: since, since };
79
+ }
80
+ async function pollFolder(context, config, checkpoint) {
81
+ const query = filesQuery(config, checkpoint.since, checkpoint.floor);
82
+ const fingerprint = `${config.driveId}|${query}`;
83
+ const pageToken = checkpoint.pageQuery == fingerprint ? checkpoint.pageToken : undefined;
84
+ const result = await get(context, "/drive/v3/files", {
85
+ corpora: config.driveId.length == 0 ? "allDrives" : "drive",
86
+ driveId: config.driveId.length == 0 ? undefined : config.driveId,
87
+ fields: listFields,
88
+ includeItemsFromAllDrives: "true",
89
+ pageSize: Math.min(config.maxFilesPerPoll, maximumPollEventsPerPage),
90
+ pageToken,
91
+ q: query,
92
+ spaces: "drive",
93
+ supportsAllDrives: "true",
94
+ });
95
+ success(result, "files list");
96
+ const page = (record(result.data) ?? {});
97
+ const delivered = new Set(checkpoint.boundaryKeys ?? []);
98
+ const events = [];
99
+ const consumed = [];
100
+ let maxSeen = pageToken == null ? undefined : checkpoint.maxSeen;
101
+ for (const file of page.files ?? []) {
102
+ if (file.id == null || file.id.length == 0)
103
+ continue;
104
+ const timestamp = trackedTime(file, config.changeType);
105
+ if (timestamp == null)
106
+ continue;
107
+ const value = event(file, file.id, timestamp, config.changeType);
108
+ consumed.push(value.dedupeKey);
109
+ if (later(timestamp, maxSeen))
110
+ maxSeen = timestamp;
111
+ if (!delivered.has(value.dedupeKey))
112
+ events.push(value);
113
+ }
114
+ if (page.incompleteSearch === true) {
115
+ const drain = pageToken == null ? {} : pageState(pageToken, fingerprint, maxSeen);
116
+ return {
117
+ checkpoint: checkpointValue(checkpoint, config.changeType, checkpoint.since, consumed, drain),
118
+ events,
119
+ };
120
+ }
121
+ if (page.nextPageToken) {
122
+ return {
123
+ checkpoint: checkpointValue(checkpoint, config.changeType, checkpoint.since, consumed, pageState(page.nextPageToken, fingerprint, maxSeen)),
124
+ events,
125
+ hasMore: true,
126
+ };
127
+ }
128
+ const since = maxSeen ?? checkpoint.since;
129
+ return {
130
+ checkpoint: checkpointValue(checkpoint, config.changeType, since, consumed),
131
+ events,
132
+ };
133
+ }
134
+ function pageState(pageToken, pageQuery, maxSeen) {
135
+ return { pageQuery, pageToken, ...(maxSeen == null ? {} : { maxSeen }) };
136
+ }
137
+ function checkpointValue(previous, change, since, consumed, page = {}) {
138
+ const boundaryKeys = [...new Set([...(previous.boundaryKeys ?? []), ...consumed])]
139
+ .map((key) => ({ at: Date.parse(key.slice(key.indexOf(":") + 1)), key }))
140
+ .filter(({ at }) => at >= windowStart(since, previous.floor))
141
+ .toSorted((left, right) => right.at - left.at)
142
+ .slice(0, 200)
143
+ .map(({ key }) => key);
144
+ return {
145
+ changeType: change,
146
+ since,
147
+ ...floorField(previous.floor, since),
148
+ ...page,
149
+ ...(boundaryKeys.length == 0 ? {} : { boundaryKeys }),
150
+ };
151
+ }
152
+ function filesQuery(config, since, floorValue) {
153
+ const field = config.changeType == "created" ? "createdTime" : "modifiedTime";
154
+ const terms = [
155
+ `'${escape(config.folderId)}' in parents`,
156
+ "trashed = false",
157
+ `${field} >= '${new Date(windowStart(since, floorValue)).toISOString()}'`,
158
+ ];
159
+ if (!config.itemTypes.has("folder"))
160
+ terms.push(`mimeType != '${folderMimeType}'`);
161
+ else if (!config.itemTypes.has("file"))
162
+ terms.push(`mimeType = '${folderMimeType}'`);
163
+ if (config.mimeTypes.length > 0)
164
+ terms.push(`(${config.mimeTypes.map((type) => `mimeType = '${escape(type)}'`).join(" or ")})`);
165
+ if (config.namePrefix.length > 0)
166
+ terms.push(`name contains '${escape(config.namePrefix)}'`);
167
+ return terms.join(" and ");
168
+ }
169
+ function windowStart(since, floorValue) {
170
+ const start = Date.parse(since) - 60_000;
171
+ const minimum = floorValue == null ? Number.NaN : Date.parse(floorValue);
172
+ return Number.isNaN(minimum) ? start : Math.max(start, minimum);
173
+ }
174
+ function floorField(value, since) {
175
+ if (value == null || Number.isNaN(Date.parse(value)) || Date.parse(since) - 60_000 >= Date.parse(value))
176
+ return {};
177
+ return { floor: value };
178
+ }
179
+ function trackedTime(file, change) {
180
+ const value = change == "created" ? file.createdTime : file.modifiedTime;
181
+ return value == null || value.length == 0 || Number.isNaN(Date.parse(value)) ? undefined : value;
182
+ }
183
+ function event(file, id, timestamp, change) {
184
+ const itemType = file.mimeType == folderMimeType ? "folder" : "file";
185
+ const user = file.lastModifyingUser;
186
+ return {
187
+ dedupeKey: `${id}:${timestamp}`,
188
+ payload: {
189
+ createdTime: file.createdTime ?? null,
190
+ driveId: file.driveId ?? null,
191
+ eventType: `${itemType}_${change}`,
192
+ fileId: id,
193
+ itemType,
194
+ lastModifyingUser: user == null ? null : { displayName: user.displayName ?? "", emailAddress: user.emailAddress ?? "" },
195
+ mimeType: file.mimeType ?? "",
196
+ modifiedTime: file.modifiedTime ?? null,
197
+ name: file.name ?? "",
198
+ parents: file.parents ?? [],
199
+ ...(file.size == null ? {} : { size: file.size }),
200
+ webViewLink: file.webViewLink ?? null,
201
+ },
202
+ };
203
+ }
204
+ async function get(context, endpoint, query) {
205
+ try {
206
+ return await context.connector.execute({
207
+ endpoint,
208
+ method: "GET",
209
+ query: Object.fromEntries(Object.entries(query).filter((entry) => entry[1] != null)),
210
+ }, context.signal);
211
+ }
212
+ catch (cause) {
213
+ throw new TransientPollError(`Google Drive proxy request to ${endpoint} failed.`, { cause });
214
+ }
215
+ }
216
+ function success(result, operation) {
217
+ if (result.status >= 200 && result.status < 300)
218
+ return;
219
+ if (result.status == 400 || result.status == 404)
220
+ throw new PermanentPollError(`Google Drive ${operation} rejected the configuration.`);
221
+ if (result.status == 401)
222
+ throw new PollConnectionError(`Google Drive ${operation} rejected the Connection.`);
223
+ if (result.status == 403) {
224
+ const values = reasons(result.data);
225
+ if (values.some((reason) => transientReasons.has(reason)))
226
+ throw new TransientPollError(`Google Drive ${operation} was rate limited.`);
227
+ if (values.some((reason) => permanentReasons.has(reason)))
228
+ throw new PermanentPollError(`Google Drive ${operation} was rejected by an ACL.`);
229
+ if (insufficientScopes(result.data))
230
+ throw new PollConnectionError(`Google Drive ${operation} needs additional scopes.`);
231
+ }
232
+ throw new TransientPollError(`Google Drive ${operation} failed with status ${result.status}.`);
233
+ }
234
+ function reasons(data) {
235
+ const error = record(record(data)?.error);
236
+ const nested = [error?.errors, error?.details].flatMap((value) => (Array.isArray(value) ? value : []));
237
+ return [...nested.map((value) => record(value)?.reason), error?.status].filter((value) => typeof value == "string");
238
+ }
239
+ function insufficientScopes(data) {
240
+ if (reasons(data).includes("ACCESS_TOKEN_SCOPE_INSUFFICIENT"))
241
+ return true;
242
+ const message = record(record(data)?.error)?.message;
243
+ return typeof message == "string" && message.toLowerCase().includes("insufficient authentication scopes");
244
+ }
245
+ function escape(value) {
246
+ return value.replaceAll("\\", "\\\\").replaceAll("'", "\\'");
247
+ }
248
+ function later(candidate, current) {
249
+ const candidateMs = Date.parse(candidate);
250
+ if (Number.isNaN(candidateMs))
251
+ return false;
252
+ return current == null || Number.isNaN(Date.parse(current)) || candidateMs > Date.parse(current);
253
+ }
254
+ function record(value) {
255
+ return value != null && typeof value == "object" && !Array.isArray(value)
256
+ ? value
257
+ : undefined;
258
+ }
@@ -1,6 +1,6 @@
1
1
  import { compactObject, objectArray, optionalBoolean, optionalInteger, optionalRecord, optionalString, } from "../../core/cast.js";
2
- import { defineGoogleProviderExecutors, googleBearerProxyAuth, googleServiceAccountValidator } from "../google-auth.js";
3
- import { googleJsonRequest } from "../google-runtime.js";
2
+ import { defineGoogleProviderExecutors, googleBearerProxyAuth, googleServiceAccountValidator, } from "../googledrive/runtime-auth.js";
3
+ import { googleJsonRequest } from "../googledrive/runtime-request.js";
4
4
  import { defineProviderProxy, providerInputError, ProviderRequestError } from "../provider-runtime.js";
5
5
  import { googleFormsOAuthScopes } from "./scopes.js";
6
6
  export const googleFormsApiBaseUrl = "https://forms.googleapis.com/v1/forms";
@@ -1,7 +1,4 @@
1
1
  export declare const googleFormsReadScope = "https://www.googleapis.com/auth/forms.body.readonly";
2
2
  export declare const googleFormsWriteScope = "https://www.googleapis.com/auth/forms.body";
3
3
  export declare const googleFormsResponsesReadScope = "https://www.googleapis.com/auth/forms.responses.readonly";
4
- export declare const googleOpenIdScope = "openid";
5
- export declare const googleEmailScope = "email";
6
- export declare const googleProfileScope = "profile";
7
4
  export declare const googleFormsOAuthScopes: string[];
@@ -1,14 +1,10 @@
1
+ import { googleIdentityScopes } from "../googleads/scopes.js";
1
2
  export const googleFormsReadScope = "https://www.googleapis.com/auth/forms.body.readonly";
2
3
  export const googleFormsWriteScope = "https://www.googleapis.com/auth/forms.body";
3
4
  export const googleFormsResponsesReadScope = "https://www.googleapis.com/auth/forms.responses.readonly";
4
- export const googleOpenIdScope = "openid";
5
- export const googleEmailScope = "email";
6
- export const googleProfileScope = "profile";
7
5
  export const googleFormsOAuthScopes = [
8
6
  googleFormsReadScope,
9
7
  googleFormsWriteScope,
10
8
  googleFormsResponsesReadScope,
11
- googleOpenIdScope,
12
- googleEmailScope,
13
- googleProfileScope,
9
+ ...googleIdentityScopes,
14
10
  ];
@@ -1,6 +1,6 @@
1
1
  import { compactObject, looseArray, optionalInteger, optionalRecord, optionalString, requiredRecord, } from "../../core/cast.js";
2
- import { defineGoogleProviderExecutors, googleBearerProxyAuth, googleServiceAccountValidator } from "../google-auth.js";
3
- import { googleJsonRequest } from "../google-runtime.js";
2
+ import { defineGoogleProviderExecutors, googleBearerProxyAuth, googleServiceAccountValidator, } from "../googledrive/runtime-auth.js";
3
+ import { googleJsonRequest } from "../googledrive/runtime-request.js";
4
4
  import { defineProviderProxy, providerProxyEndpointPrefixes, ProviderRequestError } from "../provider-runtime.js";
5
5
  import { googleMeetApiBaseUrl, googleMeetApiOrigin, googleMeetUserInfoUrl } from "./constants.js";
6
6
  import { googleMeetOAuthScopes } from "./scopes.js";
@@ -1,9 +1,6 @@
1
1
  export declare const googleMeetSpaceCreatedScope = "https://www.googleapis.com/auth/meetings.space.created";
2
2
  export declare const googleMeetSpaceReadonlyScope = "https://www.googleapis.com/auth/meetings.space.readonly";
3
3
  export declare const googleMeetSpaceSettingsScope = "https://www.googleapis.com/auth/meetings.space.settings";
4
- export declare const googleOpenIdScope = "openid";
5
- export declare const googleEmailScope = "email";
6
- export declare const googleProfileScope = "profile";
7
4
  export declare const googleMeetCreateScopes: string[];
8
5
  export declare const googleMeetReadScopes: string[];
9
6
  export declare const googleMeetSettingsScopes: string[];
@@ -1,9 +1,7 @@
1
+ import { googleIdentityScopes } from "../googleads/scopes.js";
1
2
  export const googleMeetSpaceCreatedScope = "https://www.googleapis.com/auth/meetings.space.created";
2
3
  export const googleMeetSpaceReadonlyScope = "https://www.googleapis.com/auth/meetings.space.readonly";
3
4
  export const googleMeetSpaceSettingsScope = "https://www.googleapis.com/auth/meetings.space.settings";
4
- export const googleOpenIdScope = "openid";
5
- export const googleEmailScope = "email";
6
- export const googleProfileScope = "profile";
7
5
  export const googleMeetCreateScopes = [googleMeetSpaceCreatedScope];
8
6
  export const googleMeetReadScopes = [googleMeetSpaceReadonlyScope];
9
7
  export const googleMeetSettingsScopes = [googleMeetSpaceSettingsScope];
@@ -11,7 +9,5 @@ export const googleMeetOAuthScopes = [
11
9
  googleMeetSpaceCreatedScope,
12
10
  googleMeetSpaceReadonlyScope,
13
11
  googleMeetSpaceSettingsScope,
14
- googleOpenIdScope,
15
- googleEmailScope,
16
- googleProfileScope,
12
+ ...googleIdentityScopes,
17
13
  ];
@@ -1,4 +1,6 @@
1
1
  import type { CredentialValidators, ProviderExecutors, ProviderProxyExecutor } from "../../core/types.ts";
2
+ import type { IntegrationDefinition } from "../../triggers/common/integration.ts";
3
+ import type { PollDefinition } from "../../triggers/common/poll.ts";
2
4
  import type { ProviderActionHandlers } from "../provider-runtime.ts";
3
5
  import type { OAuthProviderContext } from "../provider-runtime.ts";
4
6
  type ActionContext = OAuthProviderContext;
@@ -7,4 +9,5 @@ export declare const googlesheetsActionHandlers: ProviderActionHandlers<"googles
7
9
  export declare const executors: ProviderExecutors;
8
10
  export declare const credentialValidators: CredentialValidators;
9
11
  export declare const proxy: ProviderProxyExecutor;
12
+ export declare const triggers: readonly (IntegrationDefinition | PollDefinition)[];
10
13
  export {};
@@ -1,4 +1,4 @@
1
- import { defineGoogleProviderExecutors, googleBearerProxyAuth, googleServiceAccountValidator } from "../google-auth.js";
1
+ import { defineGoogleProviderExecutors, googleBearerProxyAuth, googleServiceAccountValidator, } from "../googledrive/runtime-auth.js";
2
2
  import { defineProviderProxy } from "../provider-runtime.js";
3
3
  import { addSheet, appendDimension, autoResizeDimensions, clearBasicFilter, copySheetToOtherSpreadsheet, createChart, deleteDimension, deleteSheet, findReplace, formatCell, insertDimension, mutateConditionalFormatRules, setBasicFilter, setDataValidationRule, updateDimensionProperties, updateSheetProperties, updateSpreadsheetProperties, } from "./runtime-batch-update.js";
4
4
  import { createGoogleSheet, getConditionalFormatRules, getDataValidationRules, getSheetNames, getSpreadsheetByDataFilter, getSpreadsheetInfo, searchDeveloperMetadata, searchSpreadsheets, } from "./runtime-metadata.js";
@@ -7,6 +7,7 @@ import { aggregateColumnData, createSpreadsheetColumn, createSpreadsheetRow, loo
7
7
  import { batchGetValues, batchGetValuesByDataFilter, getValues } from "./runtime-values.js";
8
8
  import { appendValues, batchClearValues, batchClearValuesByDataFilter, batchUpdateValuesByDataFilter, clearValues, updateValues, updateValuesBatch, } from "./runtime-values.js";
9
9
  import { googlesheetsOAuthScopes } from "./scopes.js";
10
+ import { googleSheetsRowAdded } from "./trigger-on-row-added.js";
10
11
  const service = "googlesheets";
11
12
  const implementedActionHandlers = {
12
13
  search_spreadsheets(input, { accessToken, fetcher }) {
@@ -158,3 +159,4 @@ export const proxy = defineProviderProxy({
158
159
  baseUrl: "https://sheets.googleapis.com/v4",
159
160
  auth: googleBearerProxyAuth(googlesheetsOAuthScopes),
160
161
  });
162
+ export const triggers = [googleSheetsRowAdded];
@@ -1,3 +1,4 @@
1
+ import { googleIdentityScopes } from "../googleads/scopes.js";
1
2
  export const googleSheetsReadonlyScope = "https://www.googleapis.com/auth/spreadsheets.readonly";
2
3
  export const googleSheetsFullScope = "https://www.googleapis.com/auth/spreadsheets";
3
4
  export const googleDriveReadonlyScope = "https://www.googleapis.com/auth/drive.readonly";
@@ -9,4 +10,5 @@ export const googlesheetsOAuthScopes = [
9
10
  googleSheetsFullScope,
10
11
  googleDriveReadonlyScope,
11
12
  googleDriveFullScope,
13
+ ...googleIdentityScopes,
12
14
  ];
@@ -0,0 +1,2 @@
1
+ import type { PollDefinition } from "../../triggers/common/poll.ts";
2
+ export declare const googleSheetsRowAdded: PollDefinition;
@@ -0,0 +1,4 @@
1
+ import type { TriggerKeySnapshot } from "../../triggers/common/types.ts";
2
+ export declare const snapshot: TriggerKeySnapshot & {
3
+ readonly type: "poll";
4
+ };
@@ -0,0 +1,54 @@
1
+ import { jsonSchema as s } from "../../core/json-schema.js";
2
+ const eventSchema = s.object({
3
+ row: { type: "object" },
4
+ rowNumber: s.integer(),
5
+ sheetId: s.integer(),
6
+ sheetTitle: s.string(),
7
+ spreadsheetId: s.string(),
8
+ values: s.array({}),
9
+ }, { additionalProperties: false, required: ["spreadsheetId", "sheetId", "sheetTitle", "rowNumber", "row", "values"] });
10
+ export const snapshot = {
11
+ configInputs: [
12
+ {
13
+ handle: "columnRange",
14
+ jsonSchema: s.string({ pattern: "^[A-Za-z]{1,3}(?::[A-Za-z]{1,3})?$" }),
15
+ nullable: false,
16
+ value: "A:ZZZ",
17
+ },
18
+ {
19
+ handle: "dateTimeRender",
20
+ jsonSchema: s.stringEnum(["FORMATTED_STRING", "SERIAL_NUMBER"]),
21
+ nullable: false,
22
+ value: "FORMATTED_STRING",
23
+ },
24
+ {
25
+ handle: "firstDataRow",
26
+ jsonSchema: s.integer({ minimum: 1 }),
27
+ nullable: false,
28
+ value: 2,
29
+ },
30
+ { handle: "headerRow", jsonSchema: s.integer({ minimum: 1 }), nullable: false, value: 1 },
31
+ {
32
+ handle: "maxRowsPerPoll",
33
+ jsonSchema: s.integer({ maximum: 500, minimum: 1 }),
34
+ nullable: false,
35
+ value: 100,
36
+ },
37
+ { handle: "sheet", jsonSchema: s.string({ minLength: 1 }), nullable: false },
38
+ { handle: "spreadsheetId", jsonSchema: s.string({ minLength: 1 }), nullable: false },
39
+ {
40
+ handle: "valueRender",
41
+ jsonSchema: s.stringEnum(["UNFORMATTED_VALUE", "FORMATTED_VALUE", "FORMULA"]),
42
+ nullable: false,
43
+ value: "UNFORMATTED_VALUE",
44
+ },
45
+ ],
46
+ definitionVersion: 2,
47
+ description: "Polls a sheet and triggers once for every new row appended below the last row already seen.",
48
+ displayName: "New Row Added",
49
+ key: "googlesheets.on_row_added",
50
+ name: "on_row_added",
51
+ outputs: [{ handle: "events", jsonSchema: s.array(eventSchema), nullable: false }],
52
+ provider: "googlesheets",
53
+ type: "poll",
54
+ };