@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
@@ -0,0 +1,140 @@
1
+ export const chatterFeedRoutes = {
2
+ favorites: {
3
+ path: "/chatter/feeds/favorites/{userId}/{favoriteId}/feed-elements",
4
+ communityRequired: false,
5
+ parameters: ["elementsPerBundle", "page", "pageSize", "recentCommentCount", "sort"],
6
+ },
7
+ filter: {
8
+ path: "/chatter/feeds/filter/{userId}/{keyPrefix}/feed-elements",
9
+ communityRequired: false,
10
+ parameters: ["density", "elementsPerBundle", "page", "pageSize", "q", "recentCommentCount", "sort", "updatedSince"],
11
+ },
12
+ bookmarks: {
13
+ path: "/chatter/feeds/bookmarks/{userId}/feed-elements",
14
+ communityRequired: false,
15
+ parameters: ["density", "elementsPerBundle", "page", "pageSize", "q", "recentCommentCount", "sort"],
16
+ },
17
+ company: {
18
+ path: "/chatter/feeds/company/feed-elements",
19
+ communityRequired: false,
20
+ parameters: ["density", "elementsPerBundle", "page", "pageSize", "q", "recentCommentCount", "sort", "updatedSince"],
21
+ },
22
+ "direct-messages": {
23
+ path: "/chatter/feeds/direct-messages/feed-elements",
24
+ communityRequired: false,
25
+ parameters: ["page", "pageSize", "recentCommentCount", "sort"],
26
+ },
27
+ draft: {
28
+ path: "/chatter/feeds/draft/{userId}/feed-elements",
29
+ communityRequired: false,
30
+ parameters: ["density", "elementsPerBundle", "page", "pageSize", "q", "recentCommentCount", "sort"],
31
+ },
32
+ files: {
33
+ path: "/chatter/feeds/files/{userId}/feed-elements",
34
+ communityRequired: false,
35
+ parameters: ["density", "elementsPerBundle", "page", "pageSize", "q", "recentCommentCount", "sort", "updatedSince"],
36
+ },
37
+ groups: {
38
+ path: "/chatter/feeds/groups/{userId}/feed-elements",
39
+ communityRequired: false,
40
+ parameters: ["density", "elementsPerBundle", "page", "pageSize", "q", "recentCommentCount", "sort", "updatedSince"],
41
+ },
42
+ isolated: {
43
+ path: "/chatter/feeds/isolated/feed-elements",
44
+ communityRequired: false,
45
+ parameters: ["page", "pageSize", "q", "sort"],
46
+ },
47
+ mute: {
48
+ path: "/chatter/feeds/mute/{userId}/feed-elements",
49
+ communityRequired: false,
50
+ parameters: ["density", "elementsPerBundle", "page", "pageSize", "q", "recentCommentCount", "sort"],
51
+ },
52
+ news: {
53
+ path: "/chatter/feeds/news/{userId}/feed-elements",
54
+ communityRequired: false,
55
+ parameters: [
56
+ "density",
57
+ "elementsPerBundle",
58
+ "filter",
59
+ "page",
60
+ "pageSize",
61
+ "q",
62
+ "recentCommentCount",
63
+ "sort",
64
+ "updatedSince",
65
+ ],
66
+ },
67
+ "pending-review": {
68
+ path: "/chatter/feeds/pending-review/feed-elements",
69
+ communityRequired: false,
70
+ parameters: ["page", "pageSize", "q", "sort"],
71
+ },
72
+ people: {
73
+ path: "/chatter/feeds/people/{userId}/feed-elements",
74
+ communityRequired: false,
75
+ parameters: ["density", "elementsPerBundle", "page", "pageSize", "q", "recentCommentCount", "sort", "updatedSince"],
76
+ },
77
+ record: {
78
+ path: "/chatter/feeds/record/{recordId}/feed-elements",
79
+ communityRequired: false,
80
+ parameters: [
81
+ "customFilter",
82
+ "density",
83
+ "elementsPerBundle",
84
+ "filter",
85
+ "page",
86
+ "pageSize",
87
+ "q",
88
+ "recentCommentCount",
89
+ "showInternalOnly",
90
+ "sort",
91
+ "threadedCommentsCollapsed",
92
+ "updatedSince",
93
+ ],
94
+ },
95
+ streams: {
96
+ path: "/chatter/feeds/streams/{streamId}/feed-elements",
97
+ communityRequired: false,
98
+ parameters: ["density", "elementsPerBundle", "page", "pageSize", "recentCommentCount", "sort", "updatedSince"],
99
+ },
100
+ to: {
101
+ path: "/chatter/feeds/to/{userId}/feed-elements",
102
+ communityRequired: false,
103
+ parameters: ["density", "elementsPerBundle", "page", "pageSize", "q", "recentCommentCount", "sort"],
104
+ },
105
+ topics: {
106
+ path: "/chatter/feeds/topics/{topicId}/feed-elements",
107
+ communityRequired: false,
108
+ parameters: ["filter", "page", "pageSize", "sort"],
109
+ },
110
+ "user-profile": {
111
+ path: "/chatter/feeds/user-profile/{userId}/feed-elements",
112
+ communityRequired: false,
113
+ parameters: [
114
+ "density",
115
+ "elementsPerBundle",
116
+ "filter",
117
+ "page",
118
+ "pageSize",
119
+ "q",
120
+ "recentCommentCount",
121
+ "sort",
122
+ "threadedCommentsCollapsed",
123
+ ],
124
+ },
125
+ "direct-message-moderation": {
126
+ path: "/chatter/feeds/direct-message-moderation/feed-elements",
127
+ communityRequired: true,
128
+ parameters: ["page", "pageSize", "q", "sort"],
129
+ },
130
+ home: {
131
+ path: "/chatter/feeds/home/feed-elements",
132
+ communityRequired: true,
133
+ parameters: ["filter", "page", "pageSize", "q", "sort", "threadedCommentsCollapsed"],
134
+ },
135
+ moderation: {
136
+ path: "/chatter/feeds/moderation/feed-elements",
137
+ communityRequired: true,
138
+ parameters: ["page", "pageSize", "q", "sort"],
139
+ },
140
+ };
@@ -3,8 +3,8 @@ export interface SalesforceContext extends OAuthProviderContext {
3
3
  base: string;
4
4
  version: string;
5
5
  origin: string;
6
- request(path: string, method?: string, body?: unknown): Promise<unknown>;
7
- object(path: string, method?: string, body?: unknown): Promise<Record<string, unknown>>;
6
+ request(path: string, method?: string, body?: unknown, extraHeaders?: HeadersInit): Promise<unknown>;
7
+ object(path: string, method?: string, body?: unknown, extraHeaders?: HeadersInit): Promise<Record<string, unknown>>;
8
8
  items(path: string, method?: string, body?: unknown): Promise<{
9
9
  results: unknown[];
10
10
  }>;
@@ -16,10 +16,13 @@ export function createSalesforceContext(context, data) {
16
16
  headers.set("authorization", `Bearer ${context.accessToken}`);
17
17
  return { ...init, headers };
18
18
  }
19
- async function request(path, method = "GET", body) {
19
+ async function request(path, method = "GET", body, extraHeaders) {
20
+ const headers = new Headers(extraHeaders);
21
+ if (body !== undefined)
22
+ headers.set("content-type", "application/json");
20
23
  return (await salesforceRequest(url(path), initWithAuth({
21
24
  method,
22
- headers: body === undefined ? undefined : { "content-type": "application/json" },
25
+ headers,
23
26
  body: body === undefined ? undefined : JSON.stringify(body),
24
27
  }), context.fetcher, context.signal)).body;
25
28
  }
@@ -29,8 +32,8 @@ export function createSalesforceContext(context, data) {
29
32
  version,
30
33
  origin,
31
34
  request,
32
- async object(path, method = "GET", body) {
33
- return requiredResponseRecord(await request(path, method, body), "Salesforce response");
35
+ async object(path, method = "GET", body, extraHeaders) {
36
+ return requiredResponseRecord(await request(path, method, body, extraHeaders), "Salesforce response");
34
37
  },
35
38
  async items(path, method = "GET", body) {
36
39
  const results = await request(path, method, body);
@@ -2,15 +2,25 @@ import { optionalString } from "../../core/cast.js";
2
2
  import { defineOAuthProviderExecutors, defineProviderProxy, providerInputError, providerResponseError, requiredInputString, requiredResponseRecord, } from "../provider-runtime.js";
3
3
  import { createSalesforceContext } from "./context.js";
4
4
  import { salesforceAnalyticsHandlers } from "./runtime-analytics.js";
5
+ import { salesforceApprovalHandlers } from "./runtime-approvals.js";
5
6
  import { salesforceAutomationHandlers } from "./runtime-automation.js";
6
7
  import { salesforceBaseHandlers } from "./runtime-base.js";
7
8
  import { salesforceBulkHandlers } from "./runtime-bulk.js";
9
+ import { salesforceChatterHandlers } from "./runtime-chatter.js";
8
10
  import { salesforceDataHandlers } from "./runtime-data.js";
9
11
  import { salesforceFileHandlers } from "./runtime-files.js";
12
+ import { salesforceKnowledgeHandlers } from "./runtime-knowledge.js";
13
+ import { salesforceLeadHandlers } from "./runtime-leads.js";
14
+ import { salesforcePlatformHandlers } from "./runtime-platform.js";
10
15
  import { readSalesforceError, salesforceOrigin, salesforceRequest } from "./transport.js";
11
16
  export { oauth } from "./oauth.js";
12
17
  const handlers = {};
13
18
  for (const [name, handler] of Object.entries({
19
+ ...salesforceApprovalHandlers,
20
+ ...salesforceChatterHandlers,
21
+ ...salesforceKnowledgeHandlers,
22
+ ...salesforceLeadHandlers,
23
+ ...salesforcePlatformHandlers,
14
24
  ...salesforceBaseHandlers,
15
25
  ...salesforceDataHandlers,
16
26
  ...salesforceAnalyticsHandlers,
@@ -0,0 +1,2 @@
1
+ import type { SalesforceHandler } from "./context.ts";
2
+ export declare const salesforceApprovalHandlers: Record<string, SalesforceHandler>;
@@ -0,0 +1,52 @@
1
+ import { providerInputError, providerResponseError, requiredResponseRecord, requiredInputString, } from "../provider-runtime.js";
2
+ import { queryPath } from "./context.js";
3
+ export const salesforceApprovalHandlers = {
4
+ async list_approval_processes(d, c) {
5
+ const response = await c.object(`${c.base}/process/approvals/`);
6
+ const processes = requiredResponseRecord(response.approvals, "Salesforce approval processes");
7
+ return {
8
+ processes: d.objectName === undefined
9
+ ? processes
10
+ : Object.fromEntries(Object.entries(processes).filter(([name]) => name === d.objectName)),
11
+ };
12
+ },
13
+ async submit_for_approval(d, c) {
14
+ return c.items(`${c.base}/process/approvals/`, "POST", {
15
+ requests: d.requests.map(({ recordId, submitterId, ...rest }) => ({
16
+ ...rest,
17
+ actionType: "Submit",
18
+ contextId: recordId,
19
+ contextActorId: submitterId,
20
+ })),
21
+ });
22
+ },
23
+ async review_approval_requests(d, c) {
24
+ return c.items(`${c.base}/process/approvals/`, "POST", {
25
+ requests: d.requests.map(({ workItemId, decision, ...rest }) => ({
26
+ ...rest,
27
+ actionType: decision === "approve" ? "Approve" : "Reject",
28
+ contextId: workItemId,
29
+ })),
30
+ });
31
+ },
32
+ async list_pending_approvals(d, c) {
33
+ if ((d.scope === "actor") !== (d.actorId !== undefined))
34
+ throw providerInputError("actorId is required only for actor scope");
35
+ let actorId = d.actorId;
36
+ if (d.scope === "mine") {
37
+ actorId = requiredInputString(c.providerSecret?.userId, "Salesforce user ID");
38
+ if (!/^[A-Za-z0-9]{15}([A-Za-z0-9]{3})?$/.test(String(actorId)))
39
+ throw providerResponseError("Salesforce returned an invalid user ID");
40
+ }
41
+ const filters = [];
42
+ if (actorId)
43
+ filters.push(`ActorId = '${actorId}'`);
44
+ if (d.recordId)
45
+ filters.push(`ProcessInstance.TargetObjectId = '${d.recordId}'`);
46
+ const soql = "SELECT Id, ProcessInstanceId, ProcessInstance.TargetObjectId, ActorId, OriginalActorId, CreatedDate FROM ProcessInstanceWorkitem" +
47
+ (d.scope === "mineAndGroups" ? " USING SCOPE mine_and_my_groups" : "") +
48
+ (filters.length ? ` WHERE ${filters.join(" AND ")}` : "") +
49
+ " ORDER BY CreatedDate DESC, Id DESC";
50
+ return c.object(queryPath(`${c.base}/query`, { q: soql }));
51
+ },
52
+ };
@@ -26,10 +26,10 @@ export const salesforceBaseHandlers = {
26
26
  };
27
27
  },
28
28
  async create_record(d, c) {
29
- return c.object(`${c.base}/sobjects/${segment(d.objectName)}`, "POST", d.fields);
29
+ return c.object(`${c.base}/sobjects/${segment(d.objectName)}`, "POST", d.fields, writeHeaders(d));
30
30
  },
31
31
  async update_record(d, c) {
32
- const result = await c.request(`${c.base}/sobjects/${segment(d.objectName)}/${segment(d.recordId)}`, "PATCH", d.fields);
32
+ const result = await c.request(`${c.base}/sobjects/${segment(d.objectName)}/${segment(d.recordId)}`, "PATCH", d.fields, writeHeaders(d));
33
33
  return result === undefined
34
34
  ? { success: true, id: d.recordId }
35
35
  : requiredResponseRecord(result, "Salesforce response");
@@ -43,9 +43,20 @@ export const salesforceBaseHandlers = {
43
43
  async upsert_record(d, c) {
44
44
  const result = await c.request(queryPath(`${c.base}/sobjects/${segment(d.objectName)}/${segment(d.externalIdField)}/${segment(d.externalId)}`, {
45
45
  updateOnly: d.updateOnly,
46
- }), "PATCH", d.fields);
46
+ }), "PATCH", d.fields, writeHeaders(d));
47
47
  return result === undefined
48
48
  ? { success: true, created: false }
49
49
  : requiredResponseRecord(result, "Salesforce response");
50
50
  },
51
51
  };
52
+ function writeHeaders(input) {
53
+ const headers = new Headers();
54
+ if (input.assignmentRule !== undefined)
55
+ headers.set("Sforce-Auto-Assign", String(input.assignmentRule));
56
+ if (input.duplicateRule !== undefined) {
57
+ const options = Object.entries(input.duplicateRule);
58
+ if (options.length)
59
+ headers.set("Sforce-Duplicate-Rule-Header", options.map(([name, value]) => `${name}=${value}`).join("; "));
60
+ }
61
+ return headers;
62
+ }
@@ -0,0 +1,2 @@
1
+ import type { SalesforceHandler } from "./context.ts";
2
+ export declare const salesforceChatterHandlers: Record<string, SalesforceHandler>;
@@ -0,0 +1,78 @@
1
+ import { recordOrEmpty } from "../../core/cast.js";
2
+ import { providerInputError } from "../provider-runtime.js";
3
+ import { chatterFeedRoutes } from "./chatter-routes.js";
4
+ import { queryPath, segment } from "./context.js";
5
+ function chatterBase(d, c) {
6
+ return c.base + (d.communityId === undefined ? "" : `/connect/communities/${segment(d.communityId)}`);
7
+ }
8
+ function elementPath(d, c) {
9
+ return `${chatterBase(d, c)}/chatter/feed-elements/${segment(d.feedElementId)}`;
10
+ }
11
+ export const salesforceChatterHandlers = {
12
+ async list_chatter_feed_elements(d, c) {
13
+ const route = chatterFeedRoutes[d.feedType];
14
+ if (route.communityRequired && d.communityId === undefined)
15
+ throw providerInputError("communityId is required for this feed");
16
+ let path = route.path;
17
+ for (const name of ["userId", "recordId", "topicId", "streamId", "favoriteId", "keyPrefix"]) {
18
+ const inputName = ["favoriteId", "keyPrefix"].includes(name) ? name : "subjectId";
19
+ if (path.includes(`{${name}}`)) {
20
+ if (d[inputName] === undefined)
21
+ throw providerInputError(`${inputName} is required for ${d.feedType}`);
22
+ path = path.replace(`{${name}}`, segment(d[inputName]));
23
+ }
24
+ }
25
+ if (!route.path.includes("{") && d.subjectId !== undefined)
26
+ throw providerInputError("This feed does not accept subjectId");
27
+ if (d.favoriteId !== undefined && d.feedType !== "favorites")
28
+ throw providerInputError("favoriteId requires favorites feed");
29
+ if (d.keyPrefix !== undefined && d.feedType !== "filter")
30
+ throw providerInputError("keyPrefix requires filter feed");
31
+ const { apiVersion: _version, feedType: _type, subjectId: _subject, communityId: _community, favoriteId: _favorite, keyPrefix: _prefix, ...params } = d;
32
+ for (const name of Object.keys(params))
33
+ if (!route.parameters.includes(name))
34
+ throw providerInputError(`${name} is not supported by ${d.feedType} feed`);
35
+ return c.object(queryPath(chatterBase(d, c) + path, params));
36
+ },
37
+ async get_chatter_feed_element(d, c) {
38
+ return {
39
+ element: await c.object(queryPath(elementPath(d, c), {
40
+ commentSort: d.commentSort,
41
+ elementsPerBundle: d.elementsPerBundle,
42
+ recentCommentCount: d.recentCommentCount,
43
+ threadedCommentsCollapsed: d.threadedCommentsCollapsed,
44
+ })),
45
+ };
46
+ },
47
+ async list_chatter_comments(d, c) {
48
+ return c.object(queryPath(`${elementPath(d, c)}/capabilities/comments/items`, {
49
+ page: d.page,
50
+ pageSize: d.pageSize,
51
+ sort: d.sort,
52
+ threadedCommentsCollapsed: d.threadedCommentsCollapsed,
53
+ }));
54
+ },
55
+ async create_chatter_comment(d, c) {
56
+ return {
57
+ comment: await c.object(`${elementPath(d, c)}/capabilities/comments/items`, "POST", {
58
+ body: d.body,
59
+ capabilities: d.capabilities,
60
+ threadParentId: d.threadParentId,
61
+ }),
62
+ };
63
+ },
64
+ async create_chatter_feed_element(d, c) {
65
+ const capabilities = recordOrEmpty(d.capabilities);
66
+ if (d.body === undefined && !capabilities.files && !capabilities.link && !capabilities.feedEntityShare)
67
+ throw providerInputError("Provide body or a file, link or feed sharing capability");
68
+ return {
69
+ element: await c.object(`${chatterBase(d, c)}/chatter/feed-elements`, "POST", {
70
+ feedElementType: "FeedItem",
71
+ subjectId: d.subjectId,
72
+ body: d.body,
73
+ capabilities: d.capabilities,
74
+ visibility: d.visibility,
75
+ }),
76
+ };
77
+ },
78
+ };
@@ -0,0 +1,2 @@
1
+ import type { SalesforceHandler } from "./context.ts";
2
+ export declare const salesforceKnowledgeHandlers: Record<string, SalesforceHandler>;
@@ -0,0 +1,34 @@
1
+ import { recordOrEmpty } from "../../core/cast.js";
2
+ import { providerInputError } from "../provider-runtime.js";
3
+ import { queryPath, segment } from "./context.js";
4
+ export const salesforceKnowledgeHandlers = {
5
+ async list_knowledge_articles(d, c) {
6
+ if (d.queryMethod && !Object.keys(recordOrEmpty(d.categories)).length)
7
+ throw providerInputError("queryMethod requires categories");
8
+ if (d.order && !d.sort)
9
+ throw providerInputError("order requires sort");
10
+ if (d.sort === "ViewScore" && (d.searchText || d.pageNumber !== undefined))
11
+ throw providerInputError("ViewScore does not support searchText or pageNumber");
12
+ return c.object(queryPath(`${c.base}/support/knowledgeArticles`, {
13
+ q: d.searchText,
14
+ channel: d.channel,
15
+ categories: d.categories === undefined ? undefined : JSON.stringify(d.categories),
16
+ queryMethod: d.queryMethod,
17
+ sort: d.sort,
18
+ order: d.order,
19
+ pageSize: d.pageSize,
20
+ pageNumber: d.pageNumber,
21
+ }), "GET", undefined, { "Accept-Language": String(d.language) });
22
+ },
23
+ async get_knowledge_article(d, c) {
24
+ if ((d.articleId !== undefined) === (d.urlName !== undefined))
25
+ throw providerInputError("Provide exactly one of articleId or urlName");
26
+ return {
27
+ article: await c.object(queryPath(`${c.base}/support/knowledgeArticles/${segment(d.articleId ?? d.urlName)}`, {
28
+ channel: d.channel,
29
+ isUrlName: d.urlName === undefined ? undefined : true,
30
+ updateViewStat: d.updateViewStat ?? false,
31
+ }), "GET", undefined, { "Accept-Language": String(d.language) }),
32
+ };
33
+ },
34
+ };
@@ -0,0 +1,2 @@
1
+ import type { SalesforceHandler } from "./context.ts";
2
+ export declare const salesforceLeadHandlers: Record<string, SalesforceHandler>;
@@ -0,0 +1,117 @@
1
+ import XMLBuilder from "fast-xml-builder";
2
+ import { XMLParser, XMLValidator } from "fast-xml-parser";
3
+ import { optionalString, recordOrEmpty } from "../../core/cast.js";
4
+ import { ProviderRequestError, providerInputError, providerResponseError, requiredResponseRecord, runProviderRequest, } from "../provider-runtime.js";
5
+ const builder = new XMLBuilder({ ignoreAttributes: false });
6
+ const parser = new XMLParser({
7
+ ignoreAttributes: false,
8
+ removeNSPrefix: true,
9
+ parseTagValue: false,
10
+ processEntities: true,
11
+ });
12
+ const conversionFields = [
13
+ "accountId",
14
+ "contactId",
15
+ "convertedStatus",
16
+ "doNotCreateOpportunity",
17
+ "leadId",
18
+ "opportunityId",
19
+ "opportunityName",
20
+ "overwriteLeadSource",
21
+ "ownerId",
22
+ "relatedPersonAccountId",
23
+ "relatedPersonAccountRecord",
24
+ "sendNotificationEmail",
25
+ ];
26
+ export const salesforceLeadHandlers = {
27
+ async convert_leads(d, c) {
28
+ const conversions = d.conversions;
29
+ const leadConverts = conversions.map((entry) => {
30
+ if ((entry.opportunityId !== undefined && entry.opportunityName !== undefined) ||
31
+ (entry.doNotCreateOpportunity === true &&
32
+ (entry.opportunityId !== undefined || entry.opportunityName !== undefined)))
33
+ throw providerInputError("Opportunity ID, name and doNotCreateOpportunity conflict");
34
+ if ((entry.contactId !== undefined || entry.overwriteLeadSource === true) && entry.accountId === undefined)
35
+ throw providerInputError("An existing contact requires accountId");
36
+ if (entry.overwriteLeadSource === true && entry.contactId === undefined)
37
+ throw providerInputError("overwriteLeadSource requires contactId");
38
+ if (entry.relatedPersonAccountId !== undefined && entry.relatedPersonAccountRecord !== undefined)
39
+ throw providerInputError("Choose an existing or new related Person Account");
40
+ const result = {};
41
+ for (const key of conversionFields) {
42
+ if (entry[key] === undefined &&
43
+ !["doNotCreateOpportunity", "overwriteLeadSource", "sendNotificationEmail"].includes(key))
44
+ continue;
45
+ if (key === "relatedPersonAccountRecord") {
46
+ const fields = recordOrEmpty(recordOrEmpty(entry[key]).fields);
47
+ const entity = {
48
+ "obj:type": "Account",
49
+ "obj:fieldsToNull": Object.entries(fields)
50
+ .filter(([, value]) => value === null)
51
+ .map(([name]) => name),
52
+ };
53
+ for (const [name, value] of Object.entries(fields)) {
54
+ if (!/^[A-Za-z][A-Za-z0-9_]*$/.test(name) || name === "type" || name === "fieldsToNull")
55
+ throw providerInputError("Invalid Person Account field API name");
56
+ if (value !== null)
57
+ entity[`obj:${name}`] = value;
58
+ }
59
+ result[key] = entity;
60
+ }
61
+ else
62
+ result[key] = entry[key] ?? false;
63
+ }
64
+ return result;
65
+ });
66
+ const xml = builder.build({
67
+ "env:Envelope": {
68
+ "@_xmlns:env": "http://schemas.xmlsoap.org/soap/envelope/",
69
+ "@_xmlns": "urn:partner.soap.sforce.com",
70
+ "@_xmlns:obj": "urn:sobject.partner.soap.sforce.com",
71
+ "env:Header": { SessionHeader: { sessionId: c.accessToken } },
72
+ "env:Body": { convertLead: { leadConverts } },
73
+ },
74
+ });
75
+ return runProviderRequest({ label: "Salesforce", signal: c.signal }, async (signal) => {
76
+ const response = await c.fetcher(new URL(`/services/Soap/u/${c.version}`, c.origin), {
77
+ method: "POST",
78
+ headers: {
79
+ "content-type": "text/xml; charset=UTF-8",
80
+ accept: "text/xml",
81
+ SOAPAction: "convertLead",
82
+ },
83
+ body: xml,
84
+ signal,
85
+ redirect: "manual",
86
+ });
87
+ const text = await response.text();
88
+ if (text.includes("<!DOCTYPE") || text.includes("<!ENTITY") || XMLValidator.validate(text) !== true)
89
+ throw new ProviderRequestError(response.ok ? 502 : response.status, "Salesforce returned invalid SOAP XML", undefined, "provider_error");
90
+ const body = recordOrEmpty(recordOrEmpty(parser.parse(text)).Envelope).Body;
91
+ const envelope = requiredResponseRecord(body, "Salesforce SOAP body");
92
+ const fault = recordOrEmpty(envelope.Fault);
93
+ if (envelope.Fault || !response.ok) {
94
+ const message = [optionalString(fault.faultcode), optionalString(fault.faultstring)].filter(Boolean).join(": ");
95
+ throw new ProviderRequestError(response.ok ? 502 : response.status, `Salesforce: ${message || `HTTP ${response.status}`}`.split(c.accessToken).join("[REDACTED]"), undefined, "provider_error");
96
+ }
97
+ const raw = recordOrEmpty(envelope.convertLeadResponse).result;
98
+ if (raw === undefined)
99
+ throw providerResponseError("Salesforce SOAP response is missing conversion results");
100
+ const results = (Array.isArray(raw) ? raw : [raw]).map((value) => {
101
+ const result = requiredResponseRecord(value, "Salesforce conversion result");
102
+ if (!["true", "false", "1", "0"].includes(String(result.success)))
103
+ throw providerResponseError("Salesforce conversion result is missing success");
104
+ return {
105
+ ...result,
106
+ success: result.success === "true" || result.success === "1",
107
+ leadId: optionalString(result.leadId) ?? null,
108
+ accountId: optionalString(result.accountId) ?? null,
109
+ contactId: optionalString(result.contactId) ?? null,
110
+ opportunityId: optionalString(result.opportunityId) ?? null,
111
+ errors: result.errors === undefined ? [] : Array.isArray(result.errors) ? result.errors : [result.errors],
112
+ };
113
+ });
114
+ return { results };
115
+ });
116
+ },
117
+ };
@@ -0,0 +1,2 @@
1
+ import type { SalesforceHandler } from "./context.ts";
2
+ export declare const salesforcePlatformHandlers: Record<string, SalesforceHandler>;
@@ -0,0 +1,67 @@
1
+ import { providerInputError } from "../provider-runtime.js";
2
+ import { queryPath, segment } from "./context.js";
3
+ export const salesforcePlatformHandlers = {
4
+ async get_record_create_defaults(d, c) {
5
+ return c.object(queryPath(`${c.base}/ui-api/record-defaults/create/${segment(d.objectName)}`, {
6
+ recordTypeId: d.recordTypeId,
7
+ formFactor: d.formFactor,
8
+ optionalFields: d.optionalFields,
9
+ }));
10
+ },
11
+ async get_record_layout(d, c) {
12
+ return {
13
+ layout: await c.object(queryPath(`${c.base}/ui-api/layout/${segment(d.objectName)}`, {
14
+ recordTypeId: d.recordTypeId,
15
+ formFactor: d.formFactor,
16
+ layoutType: d.layoutType,
17
+ mode: d.mode,
18
+ })),
19
+ };
20
+ },
21
+ async get_lookup_suggestions(d, c) {
22
+ const q = String(d.q ?? "");
23
+ if ((d.searchType === "Search" && q.length < 2) ||
24
+ (d.searchType === "TypeAhead" && (q.length < 3 || q.includes("?"))))
25
+ throw providerInputError("Lookup search text does not meet the selected searchType requirements");
26
+ if (Number(c.version) < 60 || (d.orderBy !== undefined && Number(c.version) < 63))
27
+ throw providerInputError("Lookup POST requires API 60.0; orderBy requires API 63.0");
28
+ return {
29
+ result: await c.object(queryPath(`${c.base}/ui-api/lookups/${segment(d.objectName)}/${segment(d.fieldName)}`, {
30
+ searchType: d.searchType,
31
+ q: d.q,
32
+ page: d.page,
33
+ pageSize: d.pageSize,
34
+ targetApiName: d.targetApiName,
35
+ }), "POST", { sourceRecord: { fields: d.sourceFields }, orderBy: d.orderBy }),
36
+ };
37
+ },
38
+ async create_report(d, c) {
39
+ return c.object(`${c.base}/analytics/reports`, "POST", { reportMetadata: d.reportMetadata });
40
+ },
41
+ async clone_report(d, c) {
42
+ return c.object(queryPath(`${c.base}/analytics/reports`, { cloneId: d.reportId }), "POST", {
43
+ reportMetadata: d.reportMetadata ?? {},
44
+ });
45
+ },
46
+ async save_report(d, c) {
47
+ return c.object(`${c.base}/analytics/reports/${segment(d.reportId)}`, "PATCH", {
48
+ reportMetadata: d.reportMetadata,
49
+ });
50
+ },
51
+ async tooling_query(d, c) {
52
+ return c.object(queryPath(`${c.base}/tooling/query`, { q: d.soql }));
53
+ },
54
+ async tooling_query_more(d, c) {
55
+ return c.object(String(d.nextRecordsUrl));
56
+ },
57
+ async get_tooling_record(d, c) {
58
+ return {
59
+ record: await c.object(queryPath(`${c.base}/tooling/sobjects/${segment(d.objectName)}/${segment(d.recordId)}`, {
60
+ fields: d.fields,
61
+ })),
62
+ };
63
+ },
64
+ async get_apex_log(d, c) {
65
+ return c.response(`${c.base}/tooling/sobjects/ApexLog/${segment(d.logId)}/Body`, { headers: { accept: "text/plain" } }, async (response) => ({ body: await response.text() }));
66
+ },
67
+ };
@@ -0,0 +1,17 @@
1
+ import type { ActionDefinition, JsonSchema } from "../../core/types.ts";
2
+ export interface SaperlyEndpoint {
3
+ name: string;
4
+ method: "GET" | "POST" | "PATCH" | "DELETE";
5
+ path: string;
6
+ pathKeys: string[];
7
+ queryKeys: string[];
8
+ outputKind: "object" | "list" | "recording" | "transcript";
9
+ operationType: ActionDefinition["operationType"];
10
+ description: string;
11
+ inputSchema: JsonSchema;
12
+ outputSchema: JsonSchema;
13
+ }
14
+ declare const saperlyEndpoints: SaperlyEndpoint[];
15
+ export declare const saperlyActions: ActionDefinition[];
16
+ export declare const saperlyEndpointByName: Map<string, (typeof saperlyEndpoints)[number]>;
17
+ export {};