@oomol-lab/open-connector 1.9.1 → 1.9.2

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 (461) hide show
  1. package/assets/open-connector/catalog/apps/aisa.json +1946 -56
  2. package/assets/open-connector/catalog/apps/akta.json +1181 -0
  3. package/assets/open-connector/catalog/apps/asana.json +110 -0
  4. package/assets/open-connector/catalog/apps/calendly.json +103 -0
  5. package/assets/open-connector/catalog/apps/clickup.json +104 -0
  6. package/assets/open-connector/catalog/apps/cloro.json +9289 -0
  7. package/assets/open-connector/catalog/apps/contextdev.json +20670 -0
  8. package/assets/open-connector/catalog/apps/deepseek.json +177 -0
  9. package/assets/open-connector/catalog/apps/defillama.json +23747 -0
  10. package/assets/open-connector/catalog/apps/fireflies.json +103 -0
  11. package/assets/open-connector/catalog/apps/fundable.json +7926 -0
  12. package/assets/open-connector/catalog/apps/intercom.json +110 -0
  13. package/assets/open-connector/catalog/apps/jira.json +110 -0
  14. package/assets/open-connector/catalog/apps/keenable.json +235 -0
  15. package/assets/open-connector/catalog/apps/kolsprite_mcp.json +1227 -0
  16. package/assets/open-connector/catalog/apps/litescrape.json +52514 -0
  17. package/assets/open-connector/catalog/apps/magichour.json +5926 -0
  18. package/assets/open-connector/catalog/apps/minimax.json +24 -14
  19. package/assets/open-connector/catalog/apps/notion.json +731 -76
  20. package/assets/open-connector/catalog/apps/octen.json +5248 -0
  21. package/assets/open-connector/catalog/apps/openrouter.json +10 -0
  22. package/assets/open-connector/catalog/apps/orbit.json +3574 -0
  23. package/assets/open-connector/catalog/apps/pandadoc.json +68 -0
  24. package/assets/open-connector/catalog/apps/pipedrive.json +86 -0
  25. package/assets/open-connector/catalog/apps/ploid.json +9802 -0
  26. package/assets/open-connector/catalog/apps/resend.json +100 -0
  27. package/assets/open-connector/catalog/apps/salesforce.json +2487 -119
  28. package/assets/open-connector/catalog/apps/saperly.json +7056 -0
  29. package/assets/open-connector/catalog/apps/search1api.json +2382 -0
  30. package/assets/open-connector/catalog/apps/sentry.json +129 -0
  31. package/assets/open-connector/catalog/apps/slackbot.json +230 -1
  32. package/assets/open-connector/catalog/apps/surf.json +11378 -0
  33. package/assets/open-connector/catalog/apps/tally.json +113 -0
  34. package/assets/open-connector/catalog/apps/tinyfish.json +6154 -0
  35. package/assets/open-connector/catalog/apps/typeform.json +90 -1
  36. package/assets/open-connector/catalog/apps/vaquill.json +5944 -0
  37. package/assets/open-connector/catalog/apps/vercel.json +110 -0
  38. package/assets/open-connector/catalog/apps/weixin_store.json +1256 -7
  39. package/assets/open-connector/catalog/apps/zoom.json +112 -0
  40. package/assets/open-connector/catalog/apps-index.json +1 -1
  41. package/package.json +1 -1
  42. package/src/core/json-schema.d.ts +11 -3
  43. package/src/core/json-schema.js +13 -3
  44. package/src/providers/action-contracts.generated.d.ts +23 -6
  45. package/src/providers/aisa/executors.js +238 -6
  46. package/src/providers/aisa/firecrawl-actions.d.ts +9 -0
  47. package/src/providers/aisa/firecrawl-actions.js +115 -0
  48. package/src/providers/akta/actions.d.ts +9 -0
  49. package/src/providers/akta/actions.js +420 -0
  50. package/src/providers/akta/executors.d.ts +4 -0
  51. package/src/providers/akta/executors.js +103 -0
  52. package/src/providers/asana/executors.d.ts +2 -0
  53. package/src/providers/asana/executors.js +2 -0
  54. package/src/providers/asana/trigger-on-task-event.d.ts +2 -0
  55. package/src/providers/asana/trigger-on-task-event.definition.d.ts +4 -0
  56. package/src/providers/asana/trigger-on-task-event.definition.js +42 -0
  57. package/src/providers/asana/trigger-on-task-event.js +160 -0
  58. package/src/providers/calendly/executors.d.ts +2 -0
  59. package/src/providers/calendly/executors.js +2 -0
  60. package/src/providers/calendly/trigger-on-booking-event.d.ts +2 -0
  61. package/src/providers/calendly/trigger-on-booking-event.definition.d.ts +5 -0
  62. package/src/providers/calendly/trigger-on-booking-event.definition.js +42 -0
  63. package/src/providers/calendly/trigger-on-booking-event.js +144 -0
  64. package/src/providers/clickup/executors.d.ts +2 -0
  65. package/src/providers/clickup/executors.js +2 -0
  66. package/src/providers/clickup/trigger-on-task-event.d.ts +2 -0
  67. package/src/providers/clickup/trigger-on-task-event.definition.d.ts +4 -0
  68. package/src/providers/clickup/trigger-on-task-event.definition.js +41 -0
  69. package/src/providers/clickup/trigger-on-task-event.js +94 -0
  70. package/src/providers/cloro/actions.d.ts +12 -0
  71. package/src/providers/cloro/actions.js +155 -0
  72. package/src/providers/cloro/executors.d.ts +4 -0
  73. package/src/providers/cloro/executors.js +67 -0
  74. package/src/providers/cloro/inputs.d.ts +10 -0
  75. package/src/providers/cloro/inputs.js +680 -0
  76. package/src/providers/contextdev/actions.d.ts +14 -0
  77. package/src/providers/contextdev/actions.js +647 -0
  78. package/src/providers/contextdev/executors.d.ts +4 -0
  79. package/src/providers/contextdev/executors.js +109 -0
  80. package/src/providers/contextdev/files.d.ts +3 -0
  81. package/src/providers/contextdev/files.js +49 -0
  82. package/src/providers/contextdev/input-schemas.d.ts +49 -0
  83. package/src/providers/contextdev/input-schemas.js +3082 -0
  84. package/src/providers/contextdev/output-schemas.d.ts +49 -0
  85. package/src/providers/contextdev/output-schemas.js +1599 -0
  86. package/src/providers/deepseek/executors.d.ts +0 -5
  87. package/src/providers/deepseek/executors.js +38 -25
  88. package/src/providers/defillama/actions.d.ts +24 -0
  89. package/src/providers/defillama/actions.js +24 -0
  90. package/src/providers/defillama/dimensions-definitions.d.ts +2 -0
  91. package/src/providers/defillama/dimensions-definitions.js +1387 -0
  92. package/src/providers/defillama/ecosystem-definitions.d.ts +2 -0
  93. package/src/providers/defillama/ecosystem-definitions.js +758 -0
  94. package/src/providers/defillama/equities-definitions.d.ts +2 -0
  95. package/src/providers/defillama/equities-definitions.js +733 -0
  96. package/src/providers/defillama/executors.d.ts +4 -0
  97. package/src/providers/defillama/executors.js +196 -0
  98. package/src/providers/defillama/markets-definitions.d.ts +2 -0
  99. package/src/providers/defillama/markets-definitions.js +624 -0
  100. package/src/providers/defillama/shared-schemas.d.ts +71 -0
  101. package/src/providers/defillama/shared-schemas.js +157 -0
  102. package/src/providers/defillama/tvl-definitions.d.ts +2 -0
  103. package/src/providers/defillama/tvl-definitions.js +546 -0
  104. package/src/providers/defillama/yields-definitions.d.ts +2 -0
  105. package/src/providers/defillama/yields-definitions.js +766 -0
  106. package/src/providers/feishu_app_bot/trigger-on-event.js +2 -0
  107. package/src/providers/fireflies/executors.d.ts +2 -0
  108. package/src/providers/fireflies/executors.js +2 -0
  109. package/src/providers/fireflies/trigger-on-meeting-ready.d.ts +2 -0
  110. package/src/providers/fireflies/trigger-on-meeting-ready.definition.d.ts +4 -0
  111. package/src/providers/fireflies/trigger-on-meeting-ready.definition.js +44 -0
  112. package/src/providers/fireflies/trigger-on-meeting-ready.js +60 -0
  113. package/src/providers/fundable/actions.d.ts +8 -0
  114. package/src/providers/fundable/actions.js +1515 -0
  115. package/src/providers/fundable/executors.d.ts +4 -0
  116. package/src/providers/fundable/executors.js +74 -0
  117. package/src/providers/gmail/message.d.ts +1 -6
  118. package/src/providers/gmail/message.js +1 -1
  119. package/src/providers/intercom/executors.d.ts +2 -0
  120. package/src/providers/intercom/executors.js +2 -0
  121. package/src/providers/intercom/trigger-on-conversation-event.d.ts +2 -0
  122. package/src/providers/intercom/trigger-on-conversation-event.definition.d.ts +4 -0
  123. package/src/providers/intercom/trigger-on-conversation-event.definition.js +42 -0
  124. package/src/providers/intercom/trigger-on-conversation-event.js +23 -0
  125. package/src/providers/jira/executors.d.ts +2 -0
  126. package/src/providers/jira/executors.js +2 -0
  127. package/src/providers/jira/trigger-on-issue-event.d.ts +2 -0
  128. package/src/providers/jira/trigger-on-issue-event.definition.d.ts +4 -0
  129. package/src/providers/jira/trigger-on-issue-event.definition.js +44 -0
  130. package/src/providers/jira/trigger-on-issue-event.js +116 -0
  131. package/src/providers/jira/trigger-resource.d.ts +4 -0
  132. package/src/providers/jira/trigger-resource.js +141 -0
  133. package/src/providers/keenable/executors.d.ts +4 -0
  134. package/src/providers/keenable/executors.js +20 -0
  135. package/src/providers/keenable/runtime.d.ts +26 -0
  136. package/src/providers/keenable/runtime.js +89 -0
  137. package/src/providers/kolsprite_mcp/actions.d.ts +2 -0
  138. package/src/providers/kolsprite_mcp/actions.js +519 -0
  139. package/src/providers/kolsprite_mcp/executors.d.ts +4 -0
  140. package/src/providers/kolsprite_mcp/executors.js +89 -0
  141. package/src/providers/litescrape/actions.d.ts +12 -0
  142. package/src/providers/litescrape/actions.js +124 -0
  143. package/src/providers/litescrape/airbnb-schemas.d.ts +2 -0
  144. package/src/providers/litescrape/airbnb-schemas.js +72 -0
  145. package/src/providers/litescrape/aliexpress-schemas.d.ts +2 -0
  146. package/src/providers/litescrape/aliexpress-schemas.js +52 -0
  147. package/src/providers/litescrape/amazon-schemas.d.ts +2 -0
  148. package/src/providers/litescrape/amazon-schemas.js +358 -0
  149. package/src/providers/litescrape/apartments-schemas.d.ts +2 -0
  150. package/src/providers/litescrape/apartments-schemas.js +45 -0
  151. package/src/providers/litescrape/apple-schemas.d.ts +2 -0
  152. package/src/providers/litescrape/apple-schemas.js +215 -0
  153. package/src/providers/litescrape/ashby-schemas.d.ts +2 -0
  154. package/src/providers/litescrape/ashby-schemas.js +82 -0
  155. package/src/providers/litescrape/baidu-schemas.d.ts +2 -0
  156. package/src/providers/litescrape/baidu-schemas.js +31 -0
  157. package/src/providers/litescrape/bestbuy-schemas.d.ts +2 -0
  158. package/src/providers/litescrape/bestbuy-schemas.js +56 -0
  159. package/src/providers/litescrape/bing-schemas.d.ts +2 -0
  160. package/src/providers/litescrape/bing-schemas.js +315 -0
  161. package/src/providers/litescrape/brave-schemas.d.ts +2 -0
  162. package/src/providers/litescrape/brave-schemas.js +101 -0
  163. package/src/providers/litescrape/copilot-schemas.d.ts +2 -0
  164. package/src/providers/litescrape/copilot-schemas.js +590 -0
  165. package/src/providers/litescrape/duckduckgo-schemas.d.ts +2 -0
  166. package/src/providers/litescrape/duckduckgo-schemas.js +64 -0
  167. package/src/providers/litescrape/ebay-schemas.d.ts +2 -0
  168. package/src/providers/litescrape/ebay-schemas.js +300 -0
  169. package/src/providers/litescrape/etsy-schemas.d.ts +2 -0
  170. package/src/providers/litescrape/etsy-schemas.js +52 -0
  171. package/src/providers/litescrape/eventbrite-schemas.d.ts +2 -0
  172. package/src/providers/litescrape/eventbrite-schemas.js +43 -0
  173. package/src/providers/litescrape/executors.d.ts +4 -0
  174. package/src/providers/litescrape/executors.js +138 -0
  175. package/src/providers/litescrape/facebook-schemas.d.ts +2 -0
  176. package/src/providers/litescrape/facebook-schemas.js +283 -0
  177. package/src/providers/litescrape/glassdoor-schemas.d.ts +2 -0
  178. package/src/providers/litescrape/glassdoor-schemas.js +147 -0
  179. package/src/providers/litescrape/google-schemas.d.ts +2 -0
  180. package/src/providers/litescrape/google-schemas.js +1686 -0
  181. package/src/providers/litescrape/homedepot-schemas.d.ts +2 -0
  182. package/src/providers/litescrape/homedepot-schemas.js +58 -0
  183. package/src/providers/litescrape/homes-schemas.d.ts +2 -0
  184. package/src/providers/litescrape/homes-schemas.js +45 -0
  185. package/src/providers/litescrape/ikea-schemas.d.ts +2 -0
  186. package/src/providers/litescrape/ikea-schemas.js +56 -0
  187. package/src/providers/litescrape/indeed-schemas.d.ts +2 -0
  188. package/src/providers/litescrape/indeed-schemas.js +141 -0
  189. package/src/providers/litescrape/instagram-schemas.d.ts +2 -0
  190. package/src/providers/litescrape/instagram-schemas.js +234 -0
  191. package/src/providers/litescrape/kroger-schemas.d.ts +2 -0
  192. package/src/providers/litescrape/kroger-schemas.js +62 -0
  193. package/src/providers/litescrape/levels-schemas.d.ts +2 -0
  194. package/src/providers/litescrape/levels-schemas.js +153 -0
  195. package/src/providers/litescrape/naver-schemas.d.ts +2 -0
  196. package/src/providers/litescrape/naver-schemas.js +107 -0
  197. package/src/providers/litescrape/realtor-schemas.d.ts +2 -0
  198. package/src/providers/litescrape/realtor-schemas.js +47 -0
  199. package/src/providers/litescrape/redfin-schemas.d.ts +2 -0
  200. package/src/providers/litescrape/redfin-schemas.js +112 -0
  201. package/src/providers/litescrape/shared.d.ts +9 -0
  202. package/src/providers/litescrape/shared.js +1 -0
  203. package/src/providers/litescrape/sprouts-schemas.d.ts +2 -0
  204. package/src/providers/litescrape/sprouts-schemas.js +72 -0
  205. package/src/providers/litescrape/target-schemas.d.ts +2 -0
  206. package/src/providers/litescrape/target-schemas.js +56 -0
  207. package/src/providers/litescrape/tiktok-schemas.d.ts +2 -0
  208. package/src/providers/litescrape/tiktok-schemas.js +625 -0
  209. package/src/providers/litescrape/tools.d.ts +2 -0
  210. package/src/providers/litescrape/tools.js +88 -0
  211. package/src/providers/litescrape/tripadvisor-schemas.d.ts +2 -0
  212. package/src/providers/litescrape/tripadvisor-schemas.js +119 -0
  213. package/src/providers/litescrape/walmart-schemas.d.ts +2 -0
  214. package/src/providers/litescrape/walmart-schemas.js +52 -0
  215. package/src/providers/litescrape/wayfair-schemas.d.ts +2 -0
  216. package/src/providers/litescrape/wayfair-schemas.js +52 -0
  217. package/src/providers/litescrape/web-schemas.d.ts +2 -0
  218. package/src/providers/litescrape/web-schemas.js +463 -0
  219. package/src/providers/litescrape/wholefoods-schemas.d.ts +2 -0
  220. package/src/providers/litescrape/wholefoods-schemas.js +56 -0
  221. package/src/providers/litescrape/x-schemas.d.ts +2 -0
  222. package/src/providers/litescrape/x-schemas.js +128 -0
  223. package/src/providers/litescrape/yahoo-schemas.d.ts +2 -0
  224. package/src/providers/litescrape/yahoo-schemas.js +234 -0
  225. package/src/providers/litescrape/yandex-schemas.d.ts +2 -0
  226. package/src/providers/litescrape/yandex-schemas.js +179 -0
  227. package/src/providers/litescrape/yelp-schemas.d.ts +2 -0
  228. package/src/providers/litescrape/yelp-schemas.js +130 -0
  229. package/src/providers/litescrape/youtube-schemas.d.ts +2 -0
  230. package/src/providers/litescrape/youtube-schemas.js +128 -0
  231. package/src/providers/litescrape/zillow-schemas.d.ts +2 -0
  232. package/src/providers/litescrape/zillow-schemas.js +128 -0
  233. package/src/providers/litescrape/ziprecruiter-schemas.d.ts +2 -0
  234. package/src/providers/litescrape/ziprecruiter-schemas.js +96 -0
  235. package/src/providers/magichour/actions.d.ts +22 -0
  236. package/src/providers/magichour/actions.js +308 -0
  237. package/src/providers/magichour/audio-schemas.d.ts +2 -0
  238. package/src/providers/magichour/audio-schemas.js +54 -0
  239. package/src/providers/magichour/executors.d.ts +4 -0
  240. package/src/providers/magichour/executors.js +115 -0
  241. package/src/providers/magichour/image-schemas.d.ts +2 -0
  242. package/src/providers/magichour/image-schemas.js +443 -0
  243. package/src/providers/magichour/project-schemas.d.ts +8 -0
  244. package/src/providers/magichour/project-schemas.js +65 -0
  245. package/src/providers/magichour/shared-schemas.d.ts +8 -0
  246. package/src/providers/magichour/shared-schemas.js +18 -0
  247. package/src/providers/magichour/utility-schemas.d.ts +11 -0
  248. package/src/providers/magichour/utility-schemas.js +150 -0
  249. package/src/providers/magichour/video-schemas.d.ts +2 -0
  250. package/src/providers/magichour/video-schemas.js +629 -0
  251. package/src/providers/magichour/voices.d.ts +1 -0
  252. package/src/providers/magichour/voices.js +1268 -0
  253. package/src/providers/minimax/executors.js +19 -4
  254. package/src/providers/minimax/text-models.d.ts +2 -0
  255. package/src/providers/minimax/text-models.js +34 -0
  256. package/src/providers/moneyforward_mcp/manifest.d.ts +0 -2
  257. package/src/providers/moneyforward_mcp/manifest.js +1 -1
  258. package/src/providers/notion/executors.js +36 -3
  259. package/src/providers/octen/actions.d.ts +6 -0
  260. package/src/providers/octen/actions.js +919 -0
  261. package/src/providers/octen/executors.d.ts +4 -0
  262. package/src/providers/octen/executors.js +125 -0
  263. package/src/providers/octen/inputs.d.ts +2 -0
  264. package/src/providers/octen/inputs.js +2434 -0
  265. package/src/providers/octen/research.d.ts +1 -0
  266. package/src/providers/octen/research.js +86 -0
  267. package/src/providers/openrouter/executors.js +7 -4
  268. package/src/providers/orbit/actions.d.ts +2 -0
  269. package/src/providers/orbit/actions.js +3030 -0
  270. package/src/providers/orbit/executors.d.ts +4 -0
  271. package/src/providers/orbit/executors.js +106 -0
  272. package/src/providers/orbit/routes.d.ts +9 -0
  273. package/src/providers/orbit/routes.js +170 -0
  274. package/src/providers/pandadoc/executors.d.ts +2 -0
  275. package/src/providers/pandadoc/executors.js +2 -0
  276. package/src/providers/pandadoc/trigger-on-document-event.d.ts +2 -0
  277. package/src/providers/pandadoc/trigger-on-document-event.definition.d.ts +4 -0
  278. package/src/providers/pandadoc/trigger-on-document-event.definition.js +33 -0
  279. package/src/providers/pandadoc/trigger-on-document-event.js +96 -0
  280. package/src/providers/pipedrive/executors.d.ts +2 -0
  281. package/src/providers/pipedrive/executors.js +2 -0
  282. package/src/providers/pipedrive/trigger-on-crm-event.d.ts +2 -0
  283. package/src/providers/pipedrive/trigger-on-crm-event.definition.d.ts +4 -0
  284. package/src/providers/pipedrive/trigger-on-crm-event.definition.js +30 -0
  285. package/src/providers/pipedrive/trigger-on-crm-event.js +101 -0
  286. package/src/providers/ploid/actions.d.ts +16 -0
  287. package/src/providers/ploid/actions.js +23 -0
  288. package/src/providers/ploid/endpoints.json +8440 -0
  289. package/src/providers/ploid/executors.d.ts +4 -0
  290. package/src/providers/ploid/executors.js +119 -0
  291. package/src/providers/provider-runtime.d.ts +13 -0
  292. package/src/providers/provider-runtime.js +37 -4
  293. package/src/providers/registry.generated.js +17 -0
  294. package/src/providers/resend/executors.d.ts +2 -0
  295. package/src/providers/resend/executors.js +2 -0
  296. package/src/providers/resend/trigger-on-email-event.d.ts +2 -0
  297. package/src/providers/resend/trigger-on-email-event.definition.d.ts +4 -0
  298. package/src/providers/resend/trigger-on-email-event.definition.js +37 -0
  299. package/src/providers/resend/trigger-on-email-event.js +125 -0
  300. package/src/providers/salesforce/chatter-routes.d.ts +107 -0
  301. package/src/providers/salesforce/chatter-routes.js +140 -0
  302. package/src/providers/salesforce/context.d.ts +2 -2
  303. package/src/providers/salesforce/context.js +7 -4
  304. package/src/providers/salesforce/executors.js +10 -0
  305. package/src/providers/salesforce/runtime-approvals.d.ts +2 -0
  306. package/src/providers/salesforce/runtime-approvals.js +52 -0
  307. package/src/providers/salesforce/runtime-base.js +14 -3
  308. package/src/providers/salesforce/runtime-chatter.d.ts +2 -0
  309. package/src/providers/salesforce/runtime-chatter.js +78 -0
  310. package/src/providers/salesforce/runtime-knowledge.d.ts +2 -0
  311. package/src/providers/salesforce/runtime-knowledge.js +34 -0
  312. package/src/providers/salesforce/runtime-leads.d.ts +2 -0
  313. package/src/providers/salesforce/runtime-leads.js +117 -0
  314. package/src/providers/salesforce/runtime-platform.d.ts +2 -0
  315. package/src/providers/salesforce/runtime-platform.js +67 -0
  316. package/src/providers/saperly/actions.d.ts +17 -0
  317. package/src/providers/saperly/actions.js +869 -0
  318. package/src/providers/saperly/executors.d.ts +4 -0
  319. package/src/providers/saperly/executors.js +113 -0
  320. package/src/providers/saperly/schemas.d.ts +33 -0
  321. package/src/providers/saperly/schemas.js +601 -0
  322. package/src/providers/search1api/actions.d.ts +2 -0
  323. package/src/providers/search1api/actions.js +39 -0
  324. package/src/providers/search1api/executors.d.ts +4 -0
  325. package/src/providers/search1api/executors.js +72 -0
  326. package/src/providers/search1api/runtime.d.ts +3 -0
  327. package/src/providers/search1api/runtime.js +44 -0
  328. package/src/providers/search1api/schemas.d.ts +3 -0
  329. package/src/providers/search1api/schemas.js +1834 -0
  330. package/src/providers/sentry/executors.d.ts +2 -0
  331. package/src/providers/sentry/executors.js +2 -0
  332. package/src/providers/sentry/trigger-on-issue-alert.d.ts +2 -0
  333. package/src/providers/sentry/trigger-on-issue-alert.definition.d.ts +4 -0
  334. package/src/providers/sentry/trigger-on-issue-alert.definition.js +64 -0
  335. package/src/providers/sentry/trigger-on-issue-alert.js +80 -0
  336. package/src/providers/sf_express/runtime.d.ts +0 -16
  337. package/src/providers/sf_express/runtime.js +2 -2
  338. package/src/providers/slack/runtime.d.ts +6 -1
  339. package/src/providers/slack/runtime.js +21 -0
  340. package/src/providers/slackbot/actions.js +17 -1
  341. package/src/providers/slackbot/executors.d.ts +2 -0
  342. package/src/providers/slackbot/executors.js +5 -1
  343. package/src/providers/slackbot/trigger-on-event.d.ts +2 -0
  344. package/src/providers/slackbot/trigger-on-event.definition.d.ts +4 -0
  345. package/src/providers/slackbot/trigger-on-event.definition.js +57 -0
  346. package/src/providers/slackbot/trigger-on-event.js +23 -0
  347. package/src/providers/surf/actions.d.ts +21 -0
  348. package/src/providers/surf/actions.js +26 -0
  349. package/src/providers/surf/discovery-definitions.d.ts +2 -0
  350. package/src/providers/surf/discovery-definitions.js +871 -0
  351. package/src/providers/surf/equity-definitions.d.ts +2 -0
  352. package/src/providers/surf/equity-definitions.js +322 -0
  353. package/src/providers/surf/executors.d.ts +4 -0
  354. package/src/providers/surf/executors.js +131 -0
  355. package/src/providers/surf/market-definitions.d.ts +2 -0
  356. package/src/providers/surf/market-definitions.js +885 -0
  357. package/src/providers/surf/onchain-definitions.d.ts +2 -0
  358. package/src/providers/surf/onchain-definitions.js +901 -0
  359. package/src/providers/surf/prediction-definitions.d.ts +2 -0
  360. package/src/providers/surf/prediction-definitions.js +683 -0
  361. package/src/providers/surf/shared-schemas.d.ts +18 -0
  362. package/src/providers/surf/shared-schemas.js +37 -0
  363. package/src/providers/tally/executors.d.ts +2 -0
  364. package/src/providers/tally/executors.js +2 -0
  365. package/src/providers/tally/trigger-on-form-response.d.ts +2 -0
  366. package/src/providers/tally/trigger-on-form-response.definition.d.ts +4 -0
  367. package/src/providers/tally/trigger-on-form-response.definition.js +54 -0
  368. package/src/providers/tally/trigger-on-form-response.js +166 -0
  369. package/src/providers/tinyfish/actions.d.ts +6 -0
  370. package/src/providers/tinyfish/actions.js +19 -0
  371. package/src/providers/tinyfish/agent-actions.d.ts +2 -0
  372. package/src/providers/tinyfish/agent-actions.js +268 -0
  373. package/src/providers/tinyfish/data-actions.d.ts +2 -0
  374. package/src/providers/tinyfish/data-actions.js +186 -0
  375. package/src/providers/tinyfish/data-schemas.d.ts +7 -0
  376. package/src/providers/tinyfish/data-schemas.js +103 -0
  377. package/src/providers/tinyfish/endpoints.d.ts +14 -0
  378. package/src/providers/tinyfish/endpoints.js +1 -0
  379. package/src/providers/tinyfish/executors.d.ts +4 -0
  380. package/src/providers/tinyfish/executors.js +133 -0
  381. package/src/providers/tinyfish/management-actions.d.ts +2 -0
  382. package/src/providers/tinyfish/management-actions.js +524 -0
  383. package/src/providers/tinyfish/monitor-schemas.d.ts +5 -0
  384. package/src/providers/tinyfish/monitor-schemas.js +65 -0
  385. package/src/providers/tinyfish/research-schemas.d.ts +6 -0
  386. package/src/providers/tinyfish/research-schemas.js +71 -0
  387. package/src/providers/trello/executors.js +5 -2
  388. package/src/providers/typeform/executors.d.ts +2 -0
  389. package/src/providers/typeform/executors.js +2 -0
  390. package/src/providers/typeform/trigger-on-form-response.d.ts +2 -0
  391. package/src/providers/typeform/trigger-on-form-response.definition.d.ts +4 -0
  392. package/src/providers/typeform/trigger-on-form-response.definition.js +40 -0
  393. package/src/providers/typeform/trigger-on-form-response.js +68 -0
  394. package/src/providers/vaquill/actions.d.ts +13 -0
  395. package/src/providers/vaquill/actions.js +529 -0
  396. package/src/providers/vaquill/executors.d.ts +4 -0
  397. package/src/providers/vaquill/executors.js +141 -0
  398. package/src/providers/vaquill/schemas.d.ts +67 -0
  399. package/src/providers/vaquill/schemas.js +4953 -0
  400. package/src/providers/vercel/executors.d.ts +2 -0
  401. package/src/providers/vercel/executors.js +2 -0
  402. package/src/providers/vercel/trigger-on-deployment-event.d.ts +2 -0
  403. package/src/providers/vercel/trigger-on-deployment-event.definition.d.ts +5 -0
  404. package/src/providers/vercel/trigger-on-deployment-event.definition.js +41 -0
  405. package/src/providers/vercel/trigger-on-deployment-event.js +102 -0
  406. package/src/providers/weixin_bot/runtime.d.ts +0 -1
  407. package/src/providers/weixin_bot/runtime.js +1 -1
  408. package/src/providers/weixin_store/access-token.d.ts +3 -3
  409. package/src/providers/weixin_store/access-token.js +15 -7
  410. package/src/providers/weixin_store/executors.js +214 -1
  411. package/src/providers/zoom/executors.d.ts +2 -0
  412. package/src/providers/zoom/executors.js +2 -0
  413. package/src/providers/zoom/trigger-on-recording-ready.d.ts +2 -0
  414. package/src/providers/zoom/trigger-on-recording-ready.definition.d.ts +4 -0
  415. package/src/providers/zoom/trigger-on-recording-ready.definition.js +44 -0
  416. package/src/providers/zoom/trigger-on-recording-ready.js +39 -0
  417. package/src/server/api/action-example.js +12 -1
  418. package/src/server/api/pattern-example.js +35 -1
  419. package/src/server/api/trigger-routes.js +1 -1
  420. package/src/server/connect-app.js +1 -0
  421. package/src/triggers/common/integration.d.ts +15 -3
  422. package/src/triggers/common/integration.js +5 -0
  423. package/src/triggers/common/proxy.d.ts +7 -0
  424. package/src/triggers/managed-webhook.d.ts +13 -0
  425. package/src/triggers/managed-webhook.js +48 -0
  426. package/src/triggers/request.d.ts +5 -1
  427. package/src/triggers/request.js +2 -0
  428. package/src/triggers/resources.d.ts +8 -2
  429. package/src/triggers/resources.js +31 -0
  430. package/src/triggers/signature.d.ts +3 -3
  431. package/src/triggers/signature.js +4 -6
  432. package/src/triggers/sources/configuration-schema.d.ts +5 -0
  433. package/src/triggers/sources/configuration-schema.js +118 -0
  434. package/src/triggers/sources/configuration.d.ts +115 -0
  435. package/src/triggers/sources/configuration.js +1 -0
  436. package/src/triggers/sources/definition.d.ts +61 -0
  437. package/src/triggers/sources/definition.js +3 -0
  438. package/src/triggers/sources/feishu-demands.d.ts +6 -0
  439. package/src/triggers/sources/feishu-demands.js +24 -0
  440. package/src/triggers/sources/feishu-events.d.ts +19 -0
  441. package/src/triggers/sources/feishu-events.js +108 -0
  442. package/src/triggers/sources/feishu.d.ts +3 -0
  443. package/src/triggers/sources/feishu.js +85 -0
  444. package/src/triggers/sources/fireflies.d.ts +3 -0
  445. package/src/triggers/sources/fireflies.js +100 -0
  446. package/src/triggers/sources/intercom.d.ts +3 -0
  447. package/src/triggers/sources/intercom.js +86 -0
  448. package/src/triggers/sources/jira.d.ts +3 -0
  449. package/src/triggers/sources/jira.js +120 -0
  450. package/src/triggers/sources/operation.d.ts +42 -0
  451. package/src/triggers/sources/operation.js +146 -0
  452. package/src/triggers/sources/sentry.d.ts +3 -0
  453. package/src/triggers/sources/sentry.js +125 -0
  454. package/src/triggers/sources/signature.d.ts +1 -0
  455. package/src/triggers/sources/signature.js +10 -0
  456. package/src/triggers/sources/slack.d.ts +3 -0
  457. package/src/triggers/sources/slack.js +127 -0
  458. package/src/triggers/sources/zoom.d.ts +3 -0
  459. package/src/triggers/sources/zoom.js +113 -0
  460. package/src/triggers/trigger-runner.d.ts +2 -0
  461. package/src/triggers/trigger-runner.js +52 -16
@@ -1,4 +1,6 @@
1
1
  import type { CredentialValidators, ProviderExecutors, ProviderProxyExecutor } from "../../core/types.ts";
2
+ import type { IntegrationDefinition } from "../../triggers/common/integration.ts";
2
3
  export declare const executors: ProviderExecutors;
3
4
  export declare const proxy: ProviderProxyExecutor;
4
5
  export declare const credentialValidators: CredentialValidators;
6
+ export declare const triggers: readonly IntegrationDefinition[];
@@ -1,5 +1,6 @@
1
1
  import { defineProviderExecutors, defineProviderProxy, requireApiKeyCredential } from "../provider-runtime.js";
2
2
  import { readVercelTeamScope, validateVercelCredential, vercelActionHandlers, vercelApiBaseUrl } from "./runtime.js";
3
+ import { vercelDeploymentEvent } from "./trigger-on-deployment-event.js";
3
4
  const service = "vercel";
4
5
  const vercelProxyUserAgent = "oomol-connector/1.0 (+https://oomol.com)";
5
6
  export const executors = defineProviderExecutors({
@@ -29,3 +30,4 @@ export const credentialValidators = {
29
30
  return validateVercelCredential(input, fetcher);
30
31
  },
31
32
  };
33
+ export const triggers = [vercelDeploymentEvent];
@@ -0,0 +1,2 @@
1
+ import type { IntegrationDefinition } from "../../triggers/common/integration.ts";
2
+ export declare const vercelDeploymentEvent: IntegrationDefinition;
@@ -0,0 +1,5 @@
1
+ import type { TriggerKeySnapshot } from "../../triggers/common/types.ts";
2
+ export declare const events: readonly ["deployment.ready", "deployment.error"];
3
+ export declare const snapshot: TriggerKeySnapshot & {
4
+ readonly type: "integration";
5
+ };
@@ -0,0 +1,41 @@
1
+ import { jsonSchema as s } from "../../core/json-schema.js";
2
+ export const events = ["deployment.ready", "deployment.error"];
3
+ export const snapshot = {
4
+ key: "vercel.on_deployment_event",
5
+ provider: "vercel",
6
+ name: "on_deployment_event",
7
+ displayName: "Deployment Ready or Failed",
8
+ description: "Receives successful and failed deployments for a Vercel project.",
9
+ definitionVersion: 2,
10
+ type: "integration",
11
+ endpoint: {
12
+ methods: ["POST"],
13
+ body: { formats: ["json"], allowArray: false, allowEmpty: false },
14
+ successStatus: 200,
15
+ },
16
+ configInputs: [
17
+ {
18
+ handle: "teamId",
19
+ jsonSchema: { type: "string", minLength: 1, maxLength: 256, title: "Team ID" },
20
+ nullable: false,
21
+ },
22
+ {
23
+ handle: "projectId",
24
+ jsonSchema: { type: "string", minLength: 1, maxLength: 256, title: "Project ID" },
25
+ nullable: false,
26
+ },
27
+ {
28
+ handle: "environment",
29
+ jsonSchema: { type: "string", enum: ["all", "production", "preview"], title: "Environment" },
30
+ nullable: false,
31
+ value: "all",
32
+ },
33
+ ],
34
+ outputs: [
35
+ { handle: "event", jsonSchema: { type: "string", enum: events }, nullable: false },
36
+ { handle: "deliveryId", jsonSchema: s.string(), nullable: false },
37
+ { handle: "deploymentId", jsonSchema: s.string(), nullable: false },
38
+ { handle: "projectId", jsonSchema: s.string(), nullable: false },
39
+ { handle: "body", jsonSchema: { type: "object" }, nullable: false },
40
+ ],
41
+ };
@@ -0,0 +1,102 @@
1
+ import { PermanentIntegrationError, TransientIntegrationError } from "../../triggers/common/integration.js";
2
+ import { isJsonObject } from "../../triggers/common/json.js";
3
+ import { reconcileManagedWebhook, webhookRequest } from "../../triggers/managed-webhook.js";
4
+ import { verifyHexHmac } from "../../triggers/signature.js";
5
+ import { snapshot, events } from "./trigger-on-deployment-event.definition.js";
6
+ export const vercelDeploymentEvent = {
7
+ snapshot,
8
+ initialState: { checkpoint: null, subscription: {} },
9
+ async reconcile(context) {
10
+ const query = { teamId: String(context.config.teamId) };
11
+ const remove = async (id) => {
12
+ await webhookRequest(context, { endpoint: `/v1/webhooks/${encodeURIComponent(id)}`, method: "DELETE", query });
13
+ };
14
+ return reconcileManagedWebhook(context, {
15
+ async find() {
16
+ const result = await webhookRequest(context, { endpoint: "/v1/webhooks", method: "GET", query });
17
+ if (!Array.isArray(result.data) ||
18
+ result.data.some((item) => !isJsonObject(item) || typeof item.url != "string" || typeof item.id != "string"))
19
+ throw new TransientIntegrationError("Vercel returned an invalid webhook list.");
20
+ const matches = result.data.filter((item) => isJsonObject(item) && item.url == context.endpointUrl);
21
+ if (matches.length > 1)
22
+ throw new PermanentIntegrationError("Multiple Vercel webhooks match this subscription. Remove duplicates before retrying.");
23
+ const found = [];
24
+ for (const item of matches) {
25
+ const id = item.id;
26
+ if (item.ownerId != context.config.teamId ||
27
+ !Array.isArray(item.projectIds) ||
28
+ item.projectIds.length != 1 ||
29
+ item.projectIds[0] != context.config.projectId ||
30
+ !Array.isArray(item.events) ||
31
+ item.events.length != events.length ||
32
+ !events.every((event) => item.events.includes(event)))
33
+ throw new PermanentIntegrationError("The Vercel webhook scope differs from this subscription. Restore its project and event settings.");
34
+ const state = context.state;
35
+ if (state.subscription.hookId == id && typeof state.subscription.secret == "string") {
36
+ found.push({ id, secret: state.subscription.secret });
37
+ }
38
+ else {
39
+ // Vercel only returns the secret on creation. Remove the owned orphan before recreating it.
40
+ await remove(id);
41
+ await state.saveSubscription({}, context.now);
42
+ }
43
+ }
44
+ return found;
45
+ },
46
+ async create() {
47
+ const result = await webhookRequest(context, {
48
+ endpoint: "/v1/webhooks",
49
+ method: "POST",
50
+ query,
51
+ body: { url: context.endpointUrl, events: [...events], projectIds: [context.config.projectId] },
52
+ });
53
+ const data = result.data;
54
+ if (!isJsonObject(data) ||
55
+ typeof data.id != "string" ||
56
+ !data.id ||
57
+ typeof data.secret != "string" ||
58
+ !data.secret)
59
+ throw new TransientIntegrationError("Vercel webhook creation returned no identity or secret.");
60
+ return { id: data.id, secret: data.secret };
61
+ },
62
+ remove,
63
+ });
64
+ },
65
+ async receive(context) {
66
+ const secret = context.state?.subscription.secret;
67
+ if (typeof secret != "string")
68
+ return { outcome: "respond", status: 503, body: "", contentType: "text/plain" };
69
+ if (!(await verifyHexHmac(secret, [context.rawBody], context.header("x-vercel-signature"), "SHA-1")))
70
+ return { outcome: "respond", status: 401, body: "", contentType: "text/plain" };
71
+ const body = context.payload;
72
+ if (!isJsonObject(body) || typeof body.type != "string" || !events.includes(body.type))
73
+ return { outcome: "ignored", reason: "Vercel event does not match." };
74
+ const payload = body.payload;
75
+ if (!isJsonObject(payload) ||
76
+ !isJsonObject(payload.team) ||
77
+ payload.team.id != context.config.teamId ||
78
+ !isJsonObject(payload.project) ||
79
+ payload.project.id != context.config.projectId)
80
+ return { outcome: "ignored", reason: "Vercel project or Team does not match." };
81
+ if ((context.config.environment == "production" && payload.target != "production") ||
82
+ (context.config.environment == "preview" && payload.target !== null))
83
+ return { outcome: "ignored", reason: "Vercel environment does not match." };
84
+ if (typeof body.id != "string" ||
85
+ !body.id ||
86
+ !isJsonObject(payload.deployment) ||
87
+ typeof payload.deployment.id != "string" ||
88
+ !payload.deployment.id)
89
+ return { outcome: "respond", status: 400, body: "", contentType: "text/plain" };
90
+ return {
91
+ outcome: "event",
92
+ dedupeKey: body.id,
93
+ outputs: {
94
+ event: body.type,
95
+ deliveryId: body.id,
96
+ deploymentId: payload.deployment.id,
97
+ projectId: payload.project.id,
98
+ body: payload,
99
+ },
100
+ };
101
+ },
102
+ };
@@ -17,5 +17,4 @@ export interface WeixinRequestOptions {
17
17
  type WeixinBotActionHandler = (input: Record<string, unknown>, context: WeixinBotContext) => Promise<Record<string, unknown>>;
18
18
  export declare const weixinBotActionHandlers: ProviderActionHandlers<"weixin_bot", WeixinBotActionHandler>;
19
19
  export declare function requestWeixin(options: WeixinRequestOptions): Promise<Record<string, unknown>>;
20
- export declare function parseWeixinJson(text: string): unknown;
21
20
  export {};
@@ -137,7 +137,7 @@ function readTypingStatus(value) {
137
137
  return status;
138
138
  throw new ProviderRequestError(400, "status must be typing or cancel");
139
139
  }
140
- export function parseWeixinJson(text) {
140
+ function parseWeixinJson(text) {
141
141
  const losslessIds = new Set(["message_id", "msg_id", "svr_id"]);
142
142
  let output = "";
143
143
  let position = 0;
@@ -44,9 +44,9 @@ export declare function readWechatErrcode(record: Record<string, unknown> | unde
44
44
  export declare function isWechatTokenError(errcode: number | null): boolean;
45
45
  /**
46
46
  * Map a failed WeChat API call to the shared provider error. Rate limits
47
- * (45009/45011) become 429, the missing-permission 48001 becomes 403, the
48
- * 4xxxx client errcodes and the documented invalid-input store errcodes become
49
- * 400, and everything else becomes a 502.
47
+ * and invitation quotas become 429; missing permissions and policy bans become
48
+ * 403; duplicate/cooperation-capacity conflicts become 409; absent promotion
49
+ * products become 404. Documented input errors become 400; other failures 502.
50
50
  */
51
51
  export declare function normalizeWechatApiError(result: WechatApiResult): ProviderRequestError;
52
52
  export {};
@@ -12,7 +12,9 @@ const accessTokenRefreshSkewMs = 120_000;
12
12
  * input, so they map to 400 instead of an upstream failure.
13
13
  */
14
14
  const wechatInvalidInputErrcodes = new Set([
15
- 9401020, 9700234, 10020017, 10020059, 10020060, 10020062, 10020063, 10020087, 10020094, 10020127, 10020504,
15
+ 9401020, 9700234, 10020017, 10020059, 10020060, 10020062, 10020063, 10020087, 10020094, 10020127, 10020504, 10021069,
16
+ 10023000, 10023001, 10024003, 10023100, 10023102, 10023104, 10023105, 10023106, 10023107, 10023108, 10023109,
17
+ 10023110, 10023111, 10023112, 10023113, 10023116, 10023117, 10023121,
16
18
  ]);
17
19
  const accessTokenCache = new Map();
18
20
  const accessTokenInFlight = new Map();
@@ -133,9 +135,9 @@ export function isWechatTokenError(errcode) {
133
135
  }
134
136
  /**
135
137
  * Map a failed WeChat API call to the shared provider error. Rate limits
136
- * (45009/45011) become 429, the missing-permission 48001 becomes 403, the
137
- * 4xxxx client errcodes and the documented invalid-input store errcodes become
138
- * 400, and everything else becomes a 502.
138
+ * and invitation quotas become 429; missing permissions and policy bans become
139
+ * 403; duplicate/cooperation-capacity conflicts become 409; absent promotion
140
+ * products become 404. Documented input errors become 400; other failures 502.
139
141
  */
140
142
  export function normalizeWechatApiError(result) {
141
143
  const errcode = readWechatErrcode(result.record);
@@ -147,11 +149,17 @@ export function normalizeWechatApiError(result) {
147
149
  // A bare HTTP 403 with no errcode envelope is the store's optional IP whitelist rejecting the caller.
148
150
  message = `${message}. If the store has an IP whitelist configured (微信小店后台 → 服务市场 → 经营工具 → 自研 → IP 白名单), add this runtime's public egress IP to it and try again.`;
149
151
  }
150
- if (result.status === 429 || errcode === 45009 || errcode === 45011) {
152
+ if (result.status === 429 || errcode === 45009 || errcode === 45011 || errcode === 10020510 || errcode === 10023002) {
151
153
  return new ProviderRequestError(429, message, result.record);
152
154
  }
153
- if (errcode === 48001) {
154
- return new ProviderRequestError(403, message, result.record);
155
+ if (errcode === 48001 || errcode === 10023007 || errcode === 10023114 || errcode === 10023115) {
156
+ return new ProviderRequestError(403, message, result.record, "provider_error");
157
+ }
158
+ if (errcode === 10023003 || errcode === 10023004 || errcode === 10023006) {
159
+ return new ProviderRequestError(409, message, result.record);
160
+ }
161
+ if (errcode === 10023103) {
162
+ return new ProviderRequestError(404, message, result.record);
155
163
  }
156
164
  if (errcode !== null && ((errcode >= 40000 && errcode < 50000) || wechatInvalidInputErrcodes.has(errcode))) {
157
165
  return new ProviderRequestError(400, message, result.record);
@@ -1,4 +1,4 @@
1
- import { compactObject, objectArray, optionalBoolean, optionalInteger, optionalRecord, optionalString, positiveInteger, } from "../../core/cast.js";
1
+ import { compactObject, objectArray, optionalBoolean, optionalInteger, optionalNumber, optionalRecord, optionalString, positiveInteger, } from "../../core/cast.js";
2
2
  import { createProviderFetch, defineProviderExecutors, providerInputError, providerUserAgent, readTransitFileInput, requireCustomCredential, requiredInputString, runProviderRequest, } from "../provider-runtime.js";
3
3
  import { getWechatAccessToken, isWechatTokenError, normalizeWechatApiError, parseWechatJson, readWechatErrcode, readWeixinStoreCredential, } from "./access-token.js";
4
4
  const service = "weixin_store";
@@ -35,6 +35,219 @@ const deliveryProductFieldMap = {
35
35
  productCnt: "product_cnt",
36
36
  };
37
37
  const weixinStoreActionHandlers = {
38
+ async list_league_promoter_products(input, context) {
39
+ const talentAppid = requiredInputString(input.talentAppid, "talentAppid");
40
+ const dataType = positiveInteger(input.dataType, "dataType", providerInputError);
41
+ const pageIndex = positiveInteger(input.pageIndex ?? 1, "pageIndex", providerInputError);
42
+ const pageSize = positiveInteger(input.pageSize ?? 20, "pageSize", providerInputError);
43
+ if (![1, 2].includes(dataType) || !Number.isSafeInteger(pageIndex) || pageSize > 20) {
44
+ throw providerInputError("dataType must be 1 or 2, pageIndex a safe positive integer, and pageSize at most 20");
45
+ }
46
+ return callWechatApi(context, {
47
+ method: "POST",
48
+ path: "/channels/ec/league/talent/getproductdatalist",
49
+ body: { talent_appid: talentAppid, get_data_type: dataType, page_index: pageIndex, page_size: pageSize },
50
+ });
51
+ },
52
+ async list_product_promotion_talents(input, context) {
53
+ const productId = positiveInteger(input.productId, "productId", providerInputError);
54
+ const promotionPlanId = positiveInteger(input.promotionPlanId, "promotionPlanId", providerInputError);
55
+ const pageIndex = positiveInteger(input.pageIndex ?? 1, "pageIndex", providerInputError);
56
+ const pageSize = positiveInteger(input.pageSize ?? 10, "pageSize", providerInputError);
57
+ if (![productId, promotionPlanId, pageIndex].every(Number.isSafeInteger) || pageSize > 10) {
58
+ throw providerInputError("Ids and pageIndex must be safe positive integers; pageSize must be at most 10");
59
+ }
60
+ return callWechatApi(context, {
61
+ method: "POST",
62
+ path: "/channels/ec/league/promotion/talent/list",
63
+ body: compactObject({
64
+ product_id: productId,
65
+ promotion_plan_id: promotionPlanId,
66
+ page_index: pageIndex,
67
+ page_size: pageSize,
68
+ talent_appid: input.talentAppid === undefined ? undefined : requiredInputString(input.talentAppid, "talentAppid"),
69
+ }),
70
+ });
71
+ },
72
+ get_product_audit_strategy(_input, context) {
73
+ return callWechatApi(context, { method: "POST", path: "/channels/ec/product/auditstrategy/get", body: {} });
74
+ },
75
+ async list_product_promotion_plans(input, context) {
76
+ const productId = positiveInteger(input.productId, "productId", providerInputError);
77
+ const pageIndex = positiveInteger(input.pageIndex ?? 1, "pageIndex", providerInputError);
78
+ const pageSize = positiveInteger(input.pageSize ?? 20, "pageSize", providerInputError);
79
+ const type = input.promotionPlanType === undefined
80
+ ? undefined
81
+ : positiveInteger(input.promotionPlanType, "promotionPlanType", providerInputError);
82
+ if (![productId, pageIndex].every(Number.isSafeInteger) ||
83
+ pageSize > 20 ||
84
+ (type !== undefined && ![100, 200, 300].includes(type))) {
85
+ throw providerInputError("Ids and pageIndex must be safe positive integers, pageSize at most 20, and promotionPlanType 100, 200 or 300");
86
+ }
87
+ return callWechatApi(context, {
88
+ method: "POST",
89
+ path: "/channels/ec/league/promotion/plan/list",
90
+ body: compactObject({
91
+ product_id: productId,
92
+ page_index: pageIndex,
93
+ page_size: pageSize,
94
+ promotion_plan_type: type,
95
+ }),
96
+ });
97
+ },
98
+ async list_league_products(input, context) {
99
+ const pageIndex = positiveInteger(input.pageIndex ?? 1, "pageIndex", providerInputError);
100
+ const pageSize = positiveInteger(input.pageSize ?? 20, "pageSize", providerInputError);
101
+ const productId = input.productId === undefined ? undefined : positiveInteger(input.productId, "productId", providerInputError);
102
+ if (!Number.isSafeInteger(pageIndex) ||
103
+ pageSize > 100 ||
104
+ pageSize * pageIndex > 5000 ||
105
+ (productId !== undefined && !Number.isSafeInteger(productId))) {
106
+ throw providerInputError("Product id must be safe, pageSize at most 100, and pageSize multiplied by pageIndex at most 5000");
107
+ }
108
+ if (input.needTotalNum !== undefined && typeof input.needTotalNum !== "boolean") {
109
+ throw providerInputError("needTotalNum must be a boolean");
110
+ }
111
+ return callWechatApi(context, {
112
+ method: "POST",
113
+ path: "/channels/ec/league/item/list/get",
114
+ body: compactObject({
115
+ page_index: pageIndex,
116
+ page_size: pageSize,
117
+ product_id: productId,
118
+ need_total_num: input.needTotalNum,
119
+ }),
120
+ });
121
+ },
122
+ async get_league_plan(input, context) {
123
+ const type = positiveInteger(input.type, "type", providerInputError);
124
+ const productId = positiveInteger(input.productId, "productId", providerInputError);
125
+ const promotionPlanId = input.promotionPlanId === undefined
126
+ ? undefined
127
+ : positiveInteger(input.promotionPlanId, "promotionPlanId", providerInputError);
128
+ if (![100, 300].includes(type) ||
129
+ !Number.isSafeInteger(productId) ||
130
+ (promotionPlanId !== undefined && !Number.isSafeInteger(promotionPlanId))) {
131
+ throw providerInputError("type must be 100 or 300 and ids must be safe positive integers");
132
+ }
133
+ return callWechatApi(context, {
134
+ method: "POST",
135
+ path: "/channels/ec/league/item/get",
136
+ body: compactObject({ type, product_id: productId, promotion_plan_id: promotionPlanId }),
137
+ });
138
+ },
139
+ async invite_league_promoter(input, context) {
140
+ if ((input.promoterId !== undefined) === (input.finderId !== undefined)) {
141
+ throw providerInputError("Supply exactly one of promoterId or finderId");
142
+ }
143
+ return callWechatApi(context, {
144
+ method: "POST",
145
+ path: "/channels/ec/league/promoter/add",
146
+ body: input.promoterId !== undefined
147
+ ? { promoter_id: requiredInputString(input.promoterId, "promoterId") }
148
+ : { finder_id: requiredInputString(input.finderId, "finderId") },
149
+ });
150
+ },
151
+ async update_league_plan(input, context) {
152
+ const type = positiveInteger(input.type, "type", providerInputError);
153
+ const productId = positiveInteger(input.productId, "productId", providerInputError);
154
+ const promotionPlanId = positiveInteger(input.promotionPlanId, "promotionPlanId", providerInputError);
155
+ const operateType = positiveInteger(input.operateType, "operateType", providerInputError);
156
+ if (![100, 300].includes(type) ||
157
+ ![productId, promotionPlanId].every(Number.isSafeInteger) ||
158
+ ![1, 2, 4].includes(operateType)) {
159
+ throw providerInputError("type must be 100 or 300, ids safe positive integers, and operateType 1, 2 or 4");
160
+ }
161
+ const ratio = optionalNumber(input.ratio);
162
+ if (operateType === 1
163
+ ? ratio === undefined || !Number.isFinite(ratio) || ratio < 0 || ratio > 90
164
+ : input.ratio !== undefined) {
165
+ throw providerInputError("ratio must be between 0 and 90 for operateType 1 and omitted for operateType 2 or 4");
166
+ }
167
+ if (input.exclusiveInfo !== undefined || input.exclusive_info !== undefined) {
168
+ throw providerInputError("Audience and timing edits are not supported by this action");
169
+ }
170
+ return callWechatApi(context, {
171
+ method: "POST",
172
+ path: "/channels/ec/league/item/upd",
173
+ body: compactObject({
174
+ type,
175
+ product_id: productId,
176
+ promotion_plan_id: promotionPlanId,
177
+ operate_type: operateType,
178
+ ratio,
179
+ }),
180
+ });
181
+ },
182
+ async list_league_promoters(input, context) {
183
+ const pageIndex = positiveInteger(input.pageIndex ?? 1, "pageIndex", providerInputError);
184
+ const pageSize = positiveInteger(input.pageSize ?? 20, "pageSize", providerInputError);
185
+ if (!Number.isSafeInteger(pageIndex) || pageSize > 20) {
186
+ throw providerInputError("pageIndex must be a safe positive integer and pageSize must be at most 20");
187
+ }
188
+ return callWechatApi(context, {
189
+ method: "POST",
190
+ path: "/channels/ec/league/promoter/list/get",
191
+ body: { page_index: pageIndex, page_size: pageSize },
192
+ });
193
+ },
194
+ async get_league_promoter(input, context) {
195
+ if ((input.talentAppid !== undefined) === (input.talentSearchKey !== undefined)) {
196
+ throw providerInputError("Supply exactly one of talentAppid or talentSearchKey");
197
+ }
198
+ return callWechatApi(context, {
199
+ method: "POST",
200
+ path: "/channels/ec/league/promoter/get",
201
+ body: input.talentAppid !== undefined
202
+ ? { talent_appid: requiredInputString(input.talentAppid, "talentAppid") }
203
+ : { talent_search_key: requiredInputString(input.talentSearchKey, "talentSearchKey") },
204
+ });
205
+ },
206
+ async get_compass_product_data(input, context) {
207
+ const date = requiredInputString(input.date, "date");
208
+ const parsed = /^\d{8}$/.test(date)
209
+ ? new Date(`${date.slice(0, 4)}-${date.slice(4, 6)}-${date.slice(6, 8)}T00:00:00Z`)
210
+ : new Date(Number.NaN);
211
+ const today = new Intl.DateTimeFormat("en-CA", {
212
+ timeZone: "Asia/Shanghai",
213
+ year: "numeric",
214
+ month: "2-digit",
215
+ day: "2-digit",
216
+ })
217
+ .format(new Date())
218
+ .replaceAll("-", "");
219
+ if (!Number.isFinite(parsed.getTime()) ||
220
+ parsed.toISOString().slice(0, 10).replaceAll("-", "") !== date ||
221
+ date >= today) {
222
+ throw providerInputError("date must be a valid YYYYMMDD date, yesterday or earlier in Asia/Shanghai");
223
+ }
224
+ const productId = positiveInteger(input.productId, "productId", providerInputError);
225
+ if (!Number.isSafeInteger(productId)) {
226
+ throw providerInputError("productId must be a safe positive integer");
227
+ }
228
+ return callWechatApi(context, {
229
+ method: "POST",
230
+ path: "/channels/ec/compass/shop/product/data/get",
231
+ body: { ds: date, product_id: productId },
232
+ });
233
+ },
234
+ async get_product_restricted_info(input, context) {
235
+ if (!Array.isArray(input.productIds) || input.productIds.length < 1 || input.productIds.length > 50) {
236
+ throw providerInputError("productIds must contain 1 to 50 product ids");
237
+ }
238
+ const productIds = input.productIds.map((value) => {
239
+ const id = positiveInteger(value, "productIds", providerInputError);
240
+ if (!Number.isSafeInteger(id)) {
241
+ throw providerInputError("productIds must contain only safe positive integers");
242
+ }
243
+ return id;
244
+ });
245
+ return callWechatApi(context, {
246
+ method: "POST",
247
+ path: "/channels/ec/product/getproductrestrictedinfo",
248
+ body: { product_ids: productIds },
249
+ });
250
+ },
38
251
  async upload_qualification_image(input, context) {
39
252
  const file = await readTransitFileInput(input.file, context);
40
253
  if (file.sizeBytes > 2 * 1024 * 1024) {
@@ -1,4 +1,6 @@
1
1
  import type { CredentialValidators, ProviderExecutors, ProviderProxyExecutor } from "../../core/types.ts";
2
+ import type { IntegrationDefinition } from "../../triggers/common/integration.ts";
2
3
  export declare const executors: ProviderExecutors;
3
4
  export declare const proxy: ProviderProxyExecutor;
4
5
  export declare const credentialValidators: CredentialValidators;
6
+ export declare const triggers: readonly IntegrationDefinition[];
@@ -1,5 +1,6 @@
1
1
  import { defineOAuthProviderExecutors, defineProviderProxy } from "../provider-runtime.js";
2
2
  import { fetchZoomCurrentAccount, zoomActionHandlers, zoomApiBaseUrl } from "./runtime.js";
3
+ import { zoomRecordingReady } from "./trigger-on-recording-ready.js";
3
4
  const service = "zoom";
4
5
  export const executors = defineOAuthProviderExecutors(service, zoomActionHandlers);
5
6
  export const proxy = defineProviderProxy({
@@ -13,3 +14,4 @@ export const credentialValidators = {
13
14
  return fetchZoomCurrentAccount(input.accessToken, input.metadata, fetcher, signal);
14
15
  },
15
16
  };
17
+ export const triggers = [zoomRecordingReady];
@@ -0,0 +1,2 @@
1
+ import type { IntegrationDefinition } from "../../triggers/common/integration.ts";
2
+ export declare const zoomRecordingReady: IntegrationDefinition;
@@ -0,0 +1,4 @@
1
+ import type { TriggerKeySnapshot } from "../../triggers/common/types.ts";
2
+ export declare const snapshot: TriggerKeySnapshot & {
3
+ readonly type: "integration";
4
+ };
@@ -0,0 +1,44 @@
1
+ export const snapshot = {
2
+ key: "zoom.on_recording_ready",
3
+ provider: "zoom",
4
+ name: "on_recording_ready",
5
+ displayName: "Cloud Recording Ready",
6
+ description: "Receives completed cloud recordings hosted by the connected Zoom user through a verified application event source.",
7
+ definitionVersion: 2,
8
+ type: "integration",
9
+ endpoint: {
10
+ methods: ["POST"],
11
+ body: { formats: ["json"], allowArray: false, allowEmpty: false },
12
+ successStatus: 200,
13
+ },
14
+ configInputs: [
15
+ {
16
+ handle: "sourceId",
17
+ jsonSchema: { type: "string", pattern: "^source_[0-9a-f]{32}$", title: "Event source" },
18
+ nullable: false,
19
+ },
20
+ {
21
+ handle: "eventTypes",
22
+ jsonSchema: {
23
+ type: "array",
24
+ items: {
25
+ type: "string",
26
+ enum: ["recording.completed"],
27
+ },
28
+ minItems: 1,
29
+ maxItems: 1,
30
+ uniqueItems: true,
31
+ title: "Events",
32
+ },
33
+ nullable: false,
34
+ value: ["recording.completed"],
35
+ },
36
+ ],
37
+ outputs: [
38
+ { handle: "event", jsonSchema: { type: "string" }, nullable: false },
39
+ { handle: "deliveryId", jsonSchema: { type: "string" }, nullable: false },
40
+ { handle: "accountId", jsonSchema: { type: "string" }, nullable: false },
41
+ { handle: "meetingUuid", jsonSchema: { type: "string" }, nullable: false },
42
+ { handle: "body", jsonSchema: { type: "object" }, nullable: false },
43
+ ],
44
+ };
@@ -0,0 +1,39 @@
1
+ import { PermanentIntegrationError } from "../../triggers/common/integration.js";
2
+ import { isJsonObject } from "../../triggers/common/json.js";
3
+ import { webhookRequest } from "../../triggers/managed-webhook.js";
4
+ import { zoomApplication } from "../../triggers/sources/zoom.js";
5
+ import { snapshot } from "./trigger-on-recording-ready.definition.js";
6
+ export const zoomRecordingReady = {
7
+ snapshot,
8
+ eventSource: "zoom",
9
+ source: zoomApplication,
10
+ async sourceIdentity(context) {
11
+ const result = await webhookRequest(context, { method: "GET", endpoint: "/users/me" });
12
+ if (!context.connector.providerAccountId ||
13
+ !isJsonObject(result.data) ||
14
+ typeof result.data.id !== "string" ||
15
+ !result.data.id ||
16
+ typeof result.data.account_id !== "string" ||
17
+ !result.data.account_id)
18
+ throw new PermanentIntegrationError("Zoom did not return a verified user and account identity.");
19
+ return {
20
+ accountId: context.connector.providerAccountId,
21
+ userId: result.data.id,
22
+ zoomAccountId: result.data.account_id,
23
+ };
24
+ },
25
+ receive(context) {
26
+ if (context.eventSourceId !== context.config.sourceId)
27
+ return { outcome: "respond", status: 404, body: "", contentType: "text/plain" };
28
+ const payload = context.payload;
29
+ if (!isJsonObject(payload) ||
30
+ typeof payload.deliveryId !== "string" ||
31
+ !payload.deliveryId ||
32
+ !isJsonObject(payload.body))
33
+ throw new PermanentIntegrationError("Invalid shared Zoom event.");
34
+ return { outcome: "event", dedupeKey: payload.deliveryId, outputs: payload };
35
+ },
36
+ async reconcile() {
37
+ throw new PermanentIntegrationError("This deployment does not support shared Zoom event sources.");
38
+ },
39
+ };
@@ -33,6 +33,14 @@ export function buildExampleInput(schema) {
33
33
  }
34
34
  }
35
35
  }
36
+ // De Morgan's law exposes positive choices encoded as not(allOf(not(...))).
37
+ if (isSchemaObject(seedSchema.not) && Array.isArray(seedSchema.not.allOf)) {
38
+ const members = seedSchema.not.allOf;
39
+ if (members.length > 0 && members.every((member) => isSchemaObject(member) && isSchemaObject(member.not))) {
40
+ const choices = members.map((member) => member.not);
41
+ seedRequirementBranches({ ...seedSchema, not: undefined, anyOf: choices }, properties, input);
42
+ }
43
+ }
36
44
  applyConditionalRequirements(seedSchema, seedSchema, input);
37
45
  return input;
38
46
  }
@@ -293,7 +301,10 @@ function stringExample(schema) {
293
301
  const minLength = typeof schema.minLength === "number" && schema.minLength > 0 ? schema.minLength : 0;
294
302
  const maxLength = typeof schema.maxLength === "number" ? schema.maxLength : undefined;
295
303
  if (typeof schema.format === "string") {
296
- return formatStringExample(schema.format, minLength, maxLength);
304
+ const formatted = formatStringExample(schema.format, minLength, maxLength);
305
+ if (new Validator(schema, "2020-12").validate(formatted).valid) {
306
+ return formatted;
307
+ }
297
308
  }
298
309
  if (typeof schema.pattern === "string") {
299
310
  const sample = samplePattern(schema.pattern, { minLength });