@oomol-lab/open-connector 1.9.0 → 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.
- package/assets/open-connector/catalog/apps/agentearth.json +441 -0
- package/assets/open-connector/catalog/apps/aisa.json +1946 -56
- package/assets/open-connector/catalog/apps/akta.json +1181 -0
- package/assets/open-connector/catalog/apps/appgrowing_mcp.json +863 -0
- package/assets/open-connector/catalog/apps/arcmira.json +610 -0
- package/assets/open-connector/catalog/apps/asana.json +110 -0
- package/assets/open-connector/catalog/apps/bainiu.json +654 -0
- package/assets/open-connector/catalog/apps/calendly.json +103 -0
- package/assets/open-connector/catalog/apps/chaport.json +331 -0
- package/assets/open-connector/catalog/apps/clickup.json +104 -0
- package/assets/open-connector/catalog/apps/cloro.json +9289 -0
- package/assets/open-connector/catalog/apps/cnb.json +1408 -0
- package/assets/open-connector/catalog/apps/contextdev.json +20670 -0
- package/assets/open-connector/catalog/apps/crtsh.json +123 -0
- package/assets/open-connector/catalog/apps/deepseek.json +177 -0
- package/assets/open-connector/catalog/apps/defillama.json +23747 -0
- package/assets/open-connector/catalog/apps/eastmoney_miaoxiang.json +406 -0
- package/assets/open-connector/catalog/apps/fastmoss_mcp.json +876 -876
- package/assets/open-connector/catalog/apps/fireflies.json +103 -0
- package/assets/open-connector/catalog/apps/ftshare.json +1162 -0
- package/assets/open-connector/catalog/apps/fundable.json +7926 -0
- package/assets/open-connector/catalog/apps/fusion-api.json +143 -0
- package/assets/open-connector/catalog/apps/fxbaogao.json +308 -0
- package/assets/open-connector/catalog/apps/github.json +38 -3
- package/assets/open-connector/catalog/apps/hrmos_kintai.json +7519 -0
- package/assets/open-connector/catalog/apps/humor_api.json +351 -0
- package/assets/open-connector/catalog/apps/intercom.json +110 -0
- package/assets/open-connector/catalog/apps/jira.json +110 -0
- package/assets/open-connector/catalog/apps/kaonavi.json +1723 -0
- package/assets/open-connector/catalog/apps/keenable.json +235 -0
- package/assets/open-connector/catalog/apps/kolsprite_mcp.json +1227 -0
- package/assets/open-connector/catalog/apps/linear_mcp.json +882 -22
- package/assets/open-connector/catalog/apps/listinggood.json +362 -0
- package/assets/open-connector/catalog/apps/litescrape.json +52514 -0
- package/assets/open-connector/catalog/apps/magichour.json +5926 -0
- package/assets/open-connector/catalog/apps/minimax.json +24 -14
- package/assets/open-connector/catalog/apps/notion.json +731 -76
- package/assets/open-connector/catalog/apps/notion_mcp.json +338 -1
- package/assets/open-connector/catalog/apps/octen.json +5248 -0
- package/assets/open-connector/catalog/apps/openrouter.json +10 -0
- package/assets/open-connector/catalog/apps/orbit.json +3574 -0
- package/assets/open-connector/catalog/apps/outlook.json +414 -0
- package/assets/open-connector/catalog/apps/pandadoc.json +68 -0
- package/assets/open-connector/catalog/apps/pipedrive.json +86 -0
- package/assets/open-connector/catalog/apps/ploid.json +9802 -0
- package/assets/open-connector/catalog/apps/porteden.json +1258 -0
- package/assets/open-connector/catalog/apps/qiuxiaoce.json +915 -0
- package/assets/open-connector/catalog/apps/qqmusic.json +1834 -0
- package/assets/open-connector/catalog/apps/rakuraku_seisan.json +217 -0
- package/assets/open-connector/catalog/apps/redfox.json +9661 -897
- package/assets/open-connector/catalog/apps/resend.json +100 -0
- package/assets/open-connector/catalog/apps/salesforce.json +7275 -0
- package/assets/open-connector/catalog/apps/sansan.json +4594 -0
- package/assets/open-connector/catalog/apps/saperly.json +7056 -0
- package/assets/open-connector/catalog/apps/search1api.json +2382 -0
- package/assets/open-connector/catalog/apps/sentry.json +129 -0
- package/assets/open-connector/catalog/apps/slackbot.json +230 -1
- package/assets/open-connector/catalog/apps/smarthr.json +8071 -0
- package/assets/open-connector/catalog/apps/smooth.json +914 -0
- package/assets/open-connector/catalog/apps/surf.json +11378 -0
- package/assets/open-connector/catalog/apps/tally.json +113 -0
- package/assets/open-connector/catalog/apps/tapd.json +727 -0
- package/assets/open-connector/catalog/apps/tencent_meeting_mcp.json +1301 -0
- package/assets/open-connector/catalog/apps/threatfox.json +203 -0
- package/assets/open-connector/catalog/apps/tinyfish.json +6154 -0
- package/assets/open-connector/catalog/apps/tradebee.json +915 -0
- package/assets/open-connector/catalog/apps/twittrapi.json +4914 -0
- package/assets/open-connector/catalog/apps/typeform.json +90 -1
- package/assets/open-connector/catalog/apps/urlhaus.json +246 -0
- package/assets/open-connector/catalog/apps/vaquill.json +5944 -0
- package/assets/open-connector/catalog/apps/vercel.json +110 -0
- package/assets/open-connector/catalog/apps/weixin_store.json +1256 -7
- package/assets/open-connector/catalog/apps/weread.json +1514 -0
- package/assets/open-connector/catalog/apps/whatsapp.json +12 -0
- package/assets/open-connector/catalog/apps/zhiliaobiaoxun.json +812 -0
- package/assets/open-connector/catalog/apps/zoom.json +112 -0
- package/assets/open-connector/catalog/apps-index.json +1 -1
- package/package.json +2 -1
- package/src/connection-service.js +55 -11
- package/src/core/json-schema.d.ts +11 -3
- package/src/core/json-schema.js +13 -3
- package/src/core/provider-error-codes.d.ts +9 -0
- package/src/core/provider-error-codes.js +13 -0
- package/src/core/request.d.ts +2 -0
- package/src/core/request.js +11 -2
- package/src/mail/imap-smtp/protocol.js +4 -3
- package/src/oauth/oauth-flow-service.js +1 -0
- package/src/oauth/oauth-token.d.ts +2 -0
- package/src/providers/17track/runtime.js +17 -20
- package/src/providers/action-contracts.generated.d.ts +58 -11
- package/src/providers/agentearth/actions.d.ts +2 -0
- package/src/providers/agentearth/actions.js +100 -0
- package/src/providers/agentearth/executors.d.ts +4 -0
- package/src/providers/agentearth/executors.js +109 -0
- package/src/providers/aisa/executors.js +238 -6
- package/src/providers/aisa/firecrawl-actions.d.ts +9 -0
- package/src/providers/aisa/firecrawl-actions.js +115 -0
- package/src/providers/akta/actions.d.ts +9 -0
- package/src/providers/akta/actions.js +420 -0
- package/src/providers/akta/executors.d.ts +4 -0
- package/src/providers/akta/executors.js +103 -0
- package/src/providers/appgrowing_mcp/actions.d.ts +2 -0
- package/src/providers/appgrowing_mcp/actions.js +175 -0
- package/src/providers/appgrowing_mcp/executors.d.ts +4 -0
- package/src/providers/appgrowing_mcp/executors.js +66 -0
- package/src/providers/arcmira/executors.d.ts +3 -0
- package/src/providers/arcmira/executors.js +8 -0
- package/src/providers/arcmira/runtime.d.ts +6 -0
- package/src/providers/arcmira/runtime.js +41 -0
- package/src/providers/asana/executors.d.ts +2 -0
- package/src/providers/asana/executors.js +2 -0
- package/src/providers/asana/trigger-on-task-event.d.ts +2 -0
- package/src/providers/asana/trigger-on-task-event.definition.d.ts +4 -0
- package/src/providers/asana/trigger-on-task-event.definition.js +42 -0
- package/src/providers/asana/trigger-on-task-event.js +160 -0
- package/src/providers/bainiu/actions.d.ts +2 -0
- package/src/providers/bainiu/actions.js +108 -0
- package/src/providers/bainiu/executors.d.ts +4 -0
- package/src/providers/bainiu/executors.js +113 -0
- package/src/providers/baixiao/executors.js +1 -1
- package/src/providers/bing_webmaster/executors.js +1 -1
- package/src/providers/calendly/executors.d.ts +2 -0
- package/src/providers/calendly/executors.js +2 -0
- package/src/providers/calendly/trigger-on-booking-event.d.ts +2 -0
- package/src/providers/calendly/trigger-on-booking-event.definition.d.ts +5 -0
- package/src/providers/calendly/trigger-on-booking-event.definition.js +42 -0
- package/src/providers/calendly/trigger-on-booking-event.js +144 -0
- package/src/providers/chaport/actions.d.ts +2 -0
- package/src/providers/chaport/actions.js +70 -0
- package/src/providers/chaport/executors.d.ts +4 -0
- package/src/providers/chaport/executors.js +128 -0
- package/src/providers/clickup/executors.d.ts +2 -0
- package/src/providers/clickup/executors.js +2 -0
- package/src/providers/clickup/runtime.js +49 -52
- package/src/providers/clickup/trigger-on-task-event.d.ts +2 -0
- package/src/providers/clickup/trigger-on-task-event.definition.d.ts +4 -0
- package/src/providers/clickup/trigger-on-task-event.definition.js +41 -0
- package/src/providers/clickup/trigger-on-task-event.js +94 -0
- package/src/providers/cloro/actions.d.ts +12 -0
- package/src/providers/cloro/actions.js +155 -0
- package/src/providers/cloro/executors.d.ts +4 -0
- package/src/providers/cloro/executors.js +67 -0
- package/src/providers/cloro/inputs.d.ts +10 -0
- package/src/providers/cloro/inputs.js +680 -0
- package/src/providers/cnb/actions.d.ts +2 -0
- package/src/providers/cnb/actions.js +341 -0
- package/src/providers/cnb/executors.d.ts +4 -0
- package/src/providers/cnb/executors.js +135 -0
- package/src/providers/contextdev/actions.d.ts +14 -0
- package/src/providers/contextdev/actions.js +647 -0
- package/src/providers/contextdev/executors.d.ts +4 -0
- package/src/providers/contextdev/executors.js +109 -0
- package/src/providers/contextdev/files.d.ts +3 -0
- package/src/providers/contextdev/files.js +49 -0
- package/src/providers/contextdev/input-schemas.d.ts +49 -0
- package/src/providers/contextdev/input-schemas.js +3082 -0
- package/src/providers/contextdev/output-schemas.d.ts +49 -0
- package/src/providers/contextdev/output-schemas.js +1599 -0
- package/src/providers/coupontools/runtime.js +11 -14
- package/src/providers/crtsh/executors.d.ts +3 -0
- package/src/providers/crtsh/executors.js +19 -0
- package/src/providers/crtsh/runtime.d.ts +17 -0
- package/src/providers/crtsh/runtime.js +84 -0
- package/src/providers/deepseek/executors.d.ts +0 -5
- package/src/providers/deepseek/executors.js +38 -25
- package/src/providers/defillama/actions.d.ts +24 -0
- package/src/providers/defillama/actions.js +24 -0
- package/src/providers/defillama/dimensions-definitions.d.ts +2 -0
- package/src/providers/defillama/dimensions-definitions.js +1387 -0
- package/src/providers/defillama/ecosystem-definitions.d.ts +2 -0
- package/src/providers/defillama/ecosystem-definitions.js +758 -0
- package/src/providers/defillama/equities-definitions.d.ts +2 -0
- package/src/providers/defillama/equities-definitions.js +733 -0
- package/src/providers/defillama/executors.d.ts +4 -0
- package/src/providers/defillama/executors.js +196 -0
- package/src/providers/defillama/markets-definitions.d.ts +2 -0
- package/src/providers/defillama/markets-definitions.js +624 -0
- package/src/providers/defillama/shared-schemas.d.ts +71 -0
- package/src/providers/defillama/shared-schemas.js +157 -0
- package/src/providers/defillama/tvl-definitions.d.ts +2 -0
- package/src/providers/defillama/tvl-definitions.js +546 -0
- package/src/providers/defillama/yields-definitions.d.ts +2 -0
- package/src/providers/defillama/yields-definitions.js +766 -0
- package/src/providers/eastmoney_miaoxiang/actions.d.ts +2 -0
- package/src/providers/eastmoney_miaoxiang/actions.js +95 -0
- package/src/providers/eastmoney_miaoxiang/executors.d.ts +4 -0
- package/src/providers/eastmoney_miaoxiang/executors.js +81 -0
- package/src/providers/fastmoss_mcp/actions-content.d.ts +2 -0
- package/src/providers/fastmoss_mcp/actions-content.js +140 -0
- package/src/providers/fastmoss_mcp/actions-creator.d.ts +2 -0
- package/src/providers/fastmoss_mcp/actions-creator.js +154 -0
- package/src/providers/fastmoss_mcp/actions-product.d.ts +2 -0
- package/src/providers/fastmoss_mcp/actions-product.js +167 -0
- package/src/providers/fastmoss_mcp/actions-research.d.ts +2 -0
- package/src/providers/fastmoss_mcp/actions-research.js +174 -0
- package/src/providers/fastmoss_mcp/actions-shop.d.ts +2 -0
- package/src/providers/fastmoss_mcp/actions-shop.js +142 -0
- package/src/providers/fastmoss_mcp/actions.js +11 -12
- package/src/providers/fastmoss_mcp/schemas.d.ts +51 -0
- package/src/providers/fastmoss_mcp/schemas.js +52 -0
- package/src/providers/feishu_app_bot/trigger-on-event.js +2 -0
- package/src/providers/fireflies/executors.d.ts +2 -0
- package/src/providers/fireflies/executors.js +2 -0
- package/src/providers/fireflies/trigger-on-meeting-ready.d.ts +2 -0
- package/src/providers/fireflies/trigger-on-meeting-ready.definition.d.ts +4 -0
- package/src/providers/fireflies/trigger-on-meeting-ready.definition.js +44 -0
- package/src/providers/fireflies/trigger-on-meeting-ready.js +60 -0
- package/src/providers/ftshare/actions.d.ts +2 -0
- package/src/providers/ftshare/actions.js +124 -0
- package/src/providers/ftshare/executors.d.ts +4 -0
- package/src/providers/ftshare/executors.js +102 -0
- package/src/providers/fundable/actions.d.ts +8 -0
- package/src/providers/fundable/actions.js +1515 -0
- package/src/providers/fundable/executors.d.ts +4 -0
- package/src/providers/fundable/executors.js +74 -0
- package/src/providers/fusion-api/operations.js +37 -0
- package/src/providers/fxbaogao/actions.d.ts +2 -0
- package/src/providers/fxbaogao/actions.js +74 -0
- package/src/providers/fxbaogao/executors.d.ts +4 -0
- package/src/providers/fxbaogao/executors.js +155 -0
- package/src/providers/github/app-installation.d.ts +37 -0
- package/src/providers/github/app-installation.js +233 -0
- package/src/providers/github/executors.js +93 -15
- package/src/providers/github/runtime-repository.js +21 -1
- package/src/providers/github/runtime-shared.d.ts +2 -0
- package/src/providers/github/runtime-shared.js +1 -0
- package/src/providers/gmail/message.d.ts +1 -6
- package/src/providers/gmail/message.js +1 -1
- package/src/providers/googledrive/runtime-request.js +3 -3
- package/src/providers/hrmos_kintai/actions.d.ts +2 -0
- package/src/providers/hrmos_kintai/actions.js +139 -0
- package/src/providers/hrmos_kintai/attendance-actions.d.ts +2 -0
- package/src/providers/hrmos_kintai/attendance-actions.js +276 -0
- package/src/providers/hrmos_kintai/business-actions.d.ts +2 -0
- package/src/providers/hrmos_kintai/business-actions.js +143 -0
- package/src/providers/hrmos_kintai/business-schemas.d.ts +4 -0
- package/src/providers/hrmos_kintai/business-schemas.js +320 -0
- package/src/providers/hrmos_kintai/executors.d.ts +4 -0
- package/src/providers/hrmos_kintai/executors.js +61 -0
- package/src/providers/hrmos_kintai/export-actions.d.ts +2 -0
- package/src/providers/hrmos_kintai/export-actions.js +58 -0
- package/src/providers/hrmos_kintai/operations.d.ts +9 -0
- package/src/providers/hrmos_kintai/operations.js +278 -0
- package/src/providers/hrmos_kintai/runtime.d.ts +10 -0
- package/src/providers/hrmos_kintai/runtime.js +217 -0
- package/src/providers/hrmos_kintai/schemas.d.ts +10 -0
- package/src/providers/hrmos_kintai/schemas.js +70 -0
- package/src/providers/humor_api/actions.d.ts +2 -0
- package/src/providers/humor_api/actions.js +96 -0
- package/src/providers/humor_api/executors.d.ts +4 -0
- package/src/providers/humor_api/executors.js +76 -0
- package/src/providers/intercom/executors.d.ts +2 -0
- package/src/providers/intercom/executors.js +2 -0
- package/src/providers/intercom/trigger-on-conversation-event.d.ts +2 -0
- package/src/providers/intercom/trigger-on-conversation-event.definition.d.ts +4 -0
- package/src/providers/intercom/trigger-on-conversation-event.definition.js +42 -0
- package/src/providers/intercom/trigger-on-conversation-event.js +23 -0
- package/src/providers/jira/executors.d.ts +2 -0
- package/src/providers/jira/executors.js +2 -0
- package/src/providers/jira/trigger-on-issue-event.d.ts +2 -0
- package/src/providers/jira/trigger-on-issue-event.definition.d.ts +4 -0
- package/src/providers/jira/trigger-on-issue-event.definition.js +44 -0
- package/src/providers/jira/trigger-on-issue-event.js +116 -0
- package/src/providers/jira/trigger-resource.d.ts +4 -0
- package/src/providers/jira/trigger-resource.js +141 -0
- package/src/providers/kaonavi/actions.d.ts +4 -0
- package/src/providers/kaonavi/actions.js +144 -0
- package/src/providers/kaonavi/additional-actions.d.ts +10 -0
- package/src/providers/kaonavi/additional-actions.js +203 -0
- package/src/providers/kaonavi/executors.d.ts +4 -0
- package/src/providers/kaonavi/executors.js +69 -0
- package/src/providers/kaonavi/runtime.d.ts +4 -0
- package/src/providers/kaonavi/runtime.js +69 -0
- package/src/providers/keenable/executors.d.ts +4 -0
- package/src/providers/keenable/executors.js +20 -0
- package/src/providers/keenable/runtime.d.ts +26 -0
- package/src/providers/keenable/runtime.js +89 -0
- package/src/providers/kolsprite_mcp/actions.d.ts +2 -0
- package/src/providers/kolsprite_mcp/actions.js +519 -0
- package/src/providers/kolsprite_mcp/executors.d.ts +4 -0
- package/src/providers/kolsprite_mcp/executors.js +89 -0
- package/src/providers/linear_mcp/actions.d.ts +14 -0
- package/src/providers/linear_mcp/actions.js +134 -0
- package/src/providers/linear_mcp/runtime-mcp.d.ts +7 -1
- package/src/providers/linear_mcp/runtime-mcp.js +140 -28
- package/src/providers/linkfox/runtime.js +48 -51
- package/src/providers/listinggood/actions.d.ts +2 -0
- package/src/providers/listinggood/actions.js +95 -0
- package/src/providers/listinggood/executors.d.ts +4 -0
- package/src/providers/listinggood/executors.js +99 -0
- package/src/providers/litescrape/actions.d.ts +12 -0
- package/src/providers/litescrape/actions.js +124 -0
- package/src/providers/litescrape/airbnb-schemas.d.ts +2 -0
- package/src/providers/litescrape/airbnb-schemas.js +72 -0
- package/src/providers/litescrape/aliexpress-schemas.d.ts +2 -0
- package/src/providers/litescrape/aliexpress-schemas.js +52 -0
- package/src/providers/litescrape/amazon-schemas.d.ts +2 -0
- package/src/providers/litescrape/amazon-schemas.js +358 -0
- package/src/providers/litescrape/apartments-schemas.d.ts +2 -0
- package/src/providers/litescrape/apartments-schemas.js +45 -0
- package/src/providers/litescrape/apple-schemas.d.ts +2 -0
- package/src/providers/litescrape/apple-schemas.js +215 -0
- package/src/providers/litescrape/ashby-schemas.d.ts +2 -0
- package/src/providers/litescrape/ashby-schemas.js +82 -0
- package/src/providers/litescrape/baidu-schemas.d.ts +2 -0
- package/src/providers/litescrape/baidu-schemas.js +31 -0
- package/src/providers/litescrape/bestbuy-schemas.d.ts +2 -0
- package/src/providers/litescrape/bestbuy-schemas.js +56 -0
- package/src/providers/litescrape/bing-schemas.d.ts +2 -0
- package/src/providers/litescrape/bing-schemas.js +315 -0
- package/src/providers/litescrape/brave-schemas.d.ts +2 -0
- package/src/providers/litescrape/brave-schemas.js +101 -0
- package/src/providers/litescrape/copilot-schemas.d.ts +2 -0
- package/src/providers/litescrape/copilot-schemas.js +590 -0
- package/src/providers/litescrape/duckduckgo-schemas.d.ts +2 -0
- package/src/providers/litescrape/duckduckgo-schemas.js +64 -0
- package/src/providers/litescrape/ebay-schemas.d.ts +2 -0
- package/src/providers/litescrape/ebay-schemas.js +300 -0
- package/src/providers/litescrape/etsy-schemas.d.ts +2 -0
- package/src/providers/litescrape/etsy-schemas.js +52 -0
- package/src/providers/litescrape/eventbrite-schemas.d.ts +2 -0
- package/src/providers/litescrape/eventbrite-schemas.js +43 -0
- package/src/providers/litescrape/executors.d.ts +4 -0
- package/src/providers/litescrape/executors.js +138 -0
- package/src/providers/litescrape/facebook-schemas.d.ts +2 -0
- package/src/providers/litescrape/facebook-schemas.js +283 -0
- package/src/providers/litescrape/glassdoor-schemas.d.ts +2 -0
- package/src/providers/litescrape/glassdoor-schemas.js +147 -0
- package/src/providers/litescrape/google-schemas.d.ts +2 -0
- package/src/providers/litescrape/google-schemas.js +1686 -0
- package/src/providers/litescrape/homedepot-schemas.d.ts +2 -0
- package/src/providers/litescrape/homedepot-schemas.js +58 -0
- package/src/providers/litescrape/homes-schemas.d.ts +2 -0
- package/src/providers/litescrape/homes-schemas.js +45 -0
- package/src/providers/litescrape/ikea-schemas.d.ts +2 -0
- package/src/providers/litescrape/ikea-schemas.js +56 -0
- package/src/providers/litescrape/indeed-schemas.d.ts +2 -0
- package/src/providers/litescrape/indeed-schemas.js +141 -0
- package/src/providers/litescrape/instagram-schemas.d.ts +2 -0
- package/src/providers/litescrape/instagram-schemas.js +234 -0
- package/src/providers/litescrape/kroger-schemas.d.ts +2 -0
- package/src/providers/litescrape/kroger-schemas.js +62 -0
- package/src/providers/litescrape/levels-schemas.d.ts +2 -0
- package/src/providers/litescrape/levels-schemas.js +153 -0
- package/src/providers/litescrape/naver-schemas.d.ts +2 -0
- package/src/providers/litescrape/naver-schemas.js +107 -0
- package/src/providers/litescrape/realtor-schemas.d.ts +2 -0
- package/src/providers/litescrape/realtor-schemas.js +47 -0
- package/src/providers/litescrape/redfin-schemas.d.ts +2 -0
- package/src/providers/litescrape/redfin-schemas.js +112 -0
- package/src/providers/litescrape/shared.d.ts +9 -0
- package/src/providers/litescrape/shared.js +1 -0
- package/src/providers/litescrape/sprouts-schemas.d.ts +2 -0
- package/src/providers/litescrape/sprouts-schemas.js +72 -0
- package/src/providers/litescrape/target-schemas.d.ts +2 -0
- package/src/providers/litescrape/target-schemas.js +56 -0
- package/src/providers/litescrape/tiktok-schemas.d.ts +2 -0
- package/src/providers/litescrape/tiktok-schemas.js +625 -0
- package/src/providers/litescrape/tools.d.ts +2 -0
- package/src/providers/litescrape/tools.js +88 -0
- package/src/providers/litescrape/tripadvisor-schemas.d.ts +2 -0
- package/src/providers/litescrape/tripadvisor-schemas.js +119 -0
- package/src/providers/litescrape/walmart-schemas.d.ts +2 -0
- package/src/providers/litescrape/walmart-schemas.js +52 -0
- package/src/providers/litescrape/wayfair-schemas.d.ts +2 -0
- package/src/providers/litescrape/wayfair-schemas.js +52 -0
- package/src/providers/litescrape/web-schemas.d.ts +2 -0
- package/src/providers/litescrape/web-schemas.js +463 -0
- package/src/providers/litescrape/wholefoods-schemas.d.ts +2 -0
- package/src/providers/litescrape/wholefoods-schemas.js +56 -0
- package/src/providers/litescrape/x-schemas.d.ts +2 -0
- package/src/providers/litescrape/x-schemas.js +128 -0
- package/src/providers/litescrape/yahoo-schemas.d.ts +2 -0
- package/src/providers/litescrape/yahoo-schemas.js +234 -0
- package/src/providers/litescrape/yandex-schemas.d.ts +2 -0
- package/src/providers/litescrape/yandex-schemas.js +179 -0
- package/src/providers/litescrape/yelp-schemas.d.ts +2 -0
- package/src/providers/litescrape/yelp-schemas.js +130 -0
- package/src/providers/litescrape/youtube-schemas.d.ts +2 -0
- package/src/providers/litescrape/youtube-schemas.js +128 -0
- package/src/providers/litescrape/zillow-schemas.d.ts +2 -0
- package/src/providers/litescrape/zillow-schemas.js +128 -0
- package/src/providers/litescrape/ziprecruiter-schemas.d.ts +2 -0
- package/src/providers/litescrape/ziprecruiter-schemas.js +96 -0
- package/src/providers/magichour/actions.d.ts +22 -0
- package/src/providers/magichour/actions.js +308 -0
- package/src/providers/magichour/audio-schemas.d.ts +2 -0
- package/src/providers/magichour/audio-schemas.js +54 -0
- package/src/providers/magichour/executors.d.ts +4 -0
- package/src/providers/magichour/executors.js +115 -0
- package/src/providers/magichour/image-schemas.d.ts +2 -0
- package/src/providers/magichour/image-schemas.js +443 -0
- package/src/providers/magichour/project-schemas.d.ts +8 -0
- package/src/providers/magichour/project-schemas.js +65 -0
- package/src/providers/magichour/shared-schemas.d.ts +8 -0
- package/src/providers/magichour/shared-schemas.js +18 -0
- package/src/providers/magichour/utility-schemas.d.ts +11 -0
- package/src/providers/magichour/utility-schemas.js +150 -0
- package/src/providers/magichour/video-schemas.d.ts +2 -0
- package/src/providers/magichour/video-schemas.js +629 -0
- package/src/providers/magichour/voices.d.ts +1 -0
- package/src/providers/magichour/voices.js +1268 -0
- package/src/providers/mcp-tools.d.ts +3 -0
- package/src/providers/mcp-tools.js +5 -4
- package/src/providers/minimax/executors.js +19 -4
- package/src/providers/minimax/text-models.d.ts +2 -0
- package/src/providers/minimax/text-models.js +34 -0
- package/src/providers/moneyforward_mcp/manifest.d.ts +0 -2
- package/src/providers/moneyforward_mcp/manifest.js +1 -1
- package/src/providers/notion/executors.js +36 -3
- package/src/providers/notion_mcp/executors.js +53 -24
- package/src/providers/notion_mcp/mcp-response.d.ts +26 -0
- package/src/providers/notion_mcp/mcp-response.js +95 -0
- package/src/providers/octen/actions.d.ts +6 -0
- package/src/providers/octen/actions.js +919 -0
- package/src/providers/octen/executors.d.ts +4 -0
- package/src/providers/octen/executors.js +125 -0
- package/src/providers/octen/inputs.d.ts +2 -0
- package/src/providers/octen/inputs.js +2434 -0
- package/src/providers/octen/research.d.ts +1 -0
- package/src/providers/octen/research.js +86 -0
- package/src/providers/omise/executors.js +1 -1
- package/src/providers/openrouter/executors.js +7 -4
- package/src/providers/orbit/actions.d.ts +2 -0
- package/src/providers/orbit/actions.js +3030 -0
- package/src/providers/orbit/executors.d.ts +4 -0
- package/src/providers/orbit/executors.js +106 -0
- package/src/providers/orbit/routes.d.ts +9 -0
- package/src/providers/orbit/routes.js +170 -0
- package/src/providers/outlook/executors.js +35 -2
- package/src/providers/pandadoc/executors.d.ts +2 -0
- package/src/providers/pandadoc/executors.js +2 -0
- package/src/providers/pandadoc/trigger-on-document-event.d.ts +2 -0
- package/src/providers/pandadoc/trigger-on-document-event.definition.d.ts +4 -0
- package/src/providers/pandadoc/trigger-on-document-event.definition.js +33 -0
- package/src/providers/pandadoc/trigger-on-document-event.js +96 -0
- package/src/providers/pipedrive/executors.d.ts +2 -0
- package/src/providers/pipedrive/executors.js +2 -0
- package/src/providers/pipedrive/trigger-on-crm-event.d.ts +2 -0
- package/src/providers/pipedrive/trigger-on-crm-event.definition.d.ts +4 -0
- package/src/providers/pipedrive/trigger-on-crm-event.definition.js +30 -0
- package/src/providers/pipedrive/trigger-on-crm-event.js +101 -0
- package/src/providers/ploid/actions.d.ts +16 -0
- package/src/providers/ploid/actions.js +23 -0
- package/src/providers/ploid/endpoints.json +8440 -0
- package/src/providers/ploid/executors.d.ts +4 -0
- package/src/providers/ploid/executors.js +119 -0
- package/src/providers/porteden/actions.d.ts +2 -0
- package/src/providers/porteden/actions.js +162 -0
- package/src/providers/porteden/executors.d.ts +4 -0
- package/src/providers/porteden/executors.js +140 -0
- package/src/providers/provider-runtime.d.ts +16 -2
- package/src/providers/provider-runtime.js +37 -4
- package/src/providers/pushover/runtime.js +28 -31
- package/src/providers/qianfan/runtime.js +16 -19
- package/src/providers/qiuxiaoce/actions.d.ts +2 -0
- package/src/providers/qiuxiaoce/actions.js +248 -0
- package/src/providers/qiuxiaoce/executors.d.ts +4 -0
- package/src/providers/qiuxiaoce/executors.js +76 -0
- package/src/providers/qiuxiaoce/routes.d.ts +1 -0
- package/src/providers/qiuxiaoce/routes.js +20 -0
- package/src/providers/qqmusic/actions.d.ts +2 -0
- package/src/providers/qqmusic/actions.js +229 -0
- package/src/providers/qqmusic/executors.d.ts +4 -0
- package/src/providers/qqmusic/executors.js +92 -0
- package/src/providers/qqmusic/report-schema.d.ts +4 -0
- package/src/providers/qqmusic/report-schema.js +119 -0
- package/src/providers/rakuraku_seisan/actions.d.ts +2 -0
- package/src/providers/rakuraku_seisan/actions.js +50 -0
- package/src/providers/rakuraku_seisan/executors.d.ts +4 -0
- package/src/providers/rakuraku_seisan/executors.js +40 -0
- package/src/providers/rakuraku_seisan/runtime.d.ts +8 -0
- package/src/providers/rakuraku_seisan/runtime.js +251 -0
- package/src/providers/redfox/actions-account.d.ts +2 -0
- package/src/providers/redfox/actions-account.js +24 -0
- package/src/providers/redfox/actions-autohome.d.ts +2 -0
- package/src/providers/redfox/actions-autohome.js +51 -0
- package/src/providers/redfox/actions-baijiahao.d.ts +2 -0
- package/src/providers/redfox/actions-baijiahao.js +58 -0
- package/src/providers/redfox/actions-bilibili.d.ts +2 -0
- package/src/providers/redfox/actions-bilibili.js +67 -0
- package/src/providers/redfox/actions-dongchedi.d.ts +2 -0
- package/src/providers/redfox/actions-dongchedi.js +49 -0
- package/src/providers/redfox/actions-douyin.d.ts +2 -0
- package/src/providers/redfox/actions-douyin.js +297 -0
- package/src/providers/redfox/actions-generation.d.ts +2 -0
- package/src/providers/redfox/actions-generation.js +293 -0
- package/src/providers/redfox/actions-instagram.d.ts +2 -0
- package/src/providers/redfox/actions-instagram.js +49 -0
- package/src/providers/redfox/actions-kuaishou.d.ts +2 -0
- package/src/providers/redfox/actions-kuaishou.js +53 -0
- package/src/providers/redfox/actions-search.d.ts +2 -0
- package/src/providers/redfox/actions-search.js +125 -0
- package/src/providers/redfox/actions-tiktok.d.ts +2 -0
- package/src/providers/redfox/actions-tiktok.js +136 -0
- package/src/providers/redfox/actions-tools.d.ts +2 -0
- package/src/providers/redfox/actions-tools.js +151 -0
- package/src/providers/redfox/actions-toutiao.d.ts +2 -0
- package/src/providers/redfox/actions-toutiao.js +68 -0
- package/src/providers/redfox/actions-transcription.d.ts +2 -0
- package/src/providers/redfox/actions-transcription.js +165 -0
- package/src/providers/redfox/actions-wechat-channel.d.ts +2 -0
- package/src/providers/redfox/actions-wechat-channel.js +63 -0
- package/src/providers/redfox/actions-wechat.d.ts +2 -0
- package/src/providers/redfox/actions-wechat.js +302 -0
- package/src/providers/redfox/actions-weibo.d.ts +2 -0
- package/src/providers/redfox/actions-weibo.js +61 -0
- package/src/providers/redfox/actions-x.d.ts +2 -0
- package/src/providers/redfox/actions-x.js +126 -0
- package/src/providers/redfox/actions-xiaohongshu.d.ts +2 -0
- package/src/providers/redfox/actions-xiaohongshu.js +244 -0
- package/src/providers/redfox/actions-yiche.d.ts +2 -0
- package/src/providers/redfox/actions-yiche.js +59 -0
- package/src/providers/redfox/actions-youtube.d.ts +2 -0
- package/src/providers/redfox/actions-youtube.js +64 -0
- package/src/providers/redfox/actions-zhihu.d.ts +2 -0
- package/src/providers/redfox/actions-zhihu.js +26 -0
- package/src/providers/redfox/actions.d.ts +2 -0
- package/src/providers/redfox/actions.js +49 -0
- package/src/providers/redfox/executors.d.ts +2 -14
- package/src/providers/redfox/executors.js +28 -551
- package/src/providers/redfox/routes.d.ts +11 -0
- package/src/providers/redfox/routes.js +329 -0
- package/src/providers/redfox/runtime.d.ts +6 -0
- package/src/providers/redfox/runtime.js +151 -0
- package/src/providers/redfox/schemas.d.ts +9 -0
- package/src/providers/redfox/schemas.js +40 -0
- package/src/providers/registry.generated.js +47 -0
- package/src/providers/resend/executors.d.ts +2 -0
- package/src/providers/resend/executors.js +2 -0
- package/src/providers/resend/trigger-on-email-event.d.ts +2 -0
- package/src/providers/resend/trigger-on-email-event.definition.d.ts +4 -0
- package/src/providers/resend/trigger-on-email-event.definition.js +37 -0
- package/src/providers/resend/trigger-on-email-event.js +125 -0
- package/src/providers/salesforce/chatter-routes.d.ts +107 -0
- package/src/providers/salesforce/chatter-routes.js +140 -0
- package/src/providers/salesforce/context.d.ts +16 -0
- package/src/providers/salesforce/context.js +61 -0
- package/src/providers/salesforce/executors.d.ts +5 -0
- package/src/providers/salesforce/executors.js +64 -0
- package/src/providers/salesforce/media.d.ts +9 -0
- package/src/providers/salesforce/media.js +66 -0
- package/src/providers/salesforce/oauth.d.ts +2 -0
- package/src/providers/salesforce/oauth.js +89 -0
- package/src/providers/salesforce/runtime-analytics.d.ts +2 -0
- package/src/providers/salesforce/runtime-analytics.js +60 -0
- package/src/providers/salesforce/runtime-approvals.d.ts +2 -0
- package/src/providers/salesforce/runtime-approvals.js +52 -0
- package/src/providers/salesforce/runtime-automation.d.ts +2 -0
- package/src/providers/salesforce/runtime-automation.js +64 -0
- package/src/providers/salesforce/runtime-base.d.ts +2 -0
- package/src/providers/salesforce/runtime-base.js +62 -0
- package/src/providers/salesforce/runtime-bulk.d.ts +2 -0
- package/src/providers/salesforce/runtime-bulk.js +98 -0
- package/src/providers/salesforce/runtime-chatter.d.ts +2 -0
- package/src/providers/salesforce/runtime-chatter.js +78 -0
- package/src/providers/salesforce/runtime-data.d.ts +2 -0
- package/src/providers/salesforce/runtime-data.js +207 -0
- package/src/providers/salesforce/runtime-files.d.ts +2 -0
- package/src/providers/salesforce/runtime-files.js +108 -0
- package/src/providers/salesforce/runtime-knowledge.d.ts +2 -0
- package/src/providers/salesforce/runtime-knowledge.js +34 -0
- package/src/providers/salesforce/runtime-leads.d.ts +2 -0
- package/src/providers/salesforce/runtime-leads.js +117 -0
- package/src/providers/salesforce/runtime-platform.d.ts +2 -0
- package/src/providers/salesforce/runtime-platform.js +67 -0
- package/src/providers/salesforce/transport.d.ts +9 -0
- package/src/providers/salesforce/transport.js +65 -0
- package/src/providers/sansan/actions.d.ts +2 -0
- package/src/providers/sansan/actions.js +165 -0
- package/src/providers/sansan/admin-actions.d.ts +2 -0
- package/src/providers/sansan/admin-actions.js +181 -0
- package/src/providers/sansan/admin.d.ts +2 -0
- package/src/providers/sansan/admin.js +42 -0
- package/src/providers/sansan/business-actions.d.ts +2 -0
- package/src/providers/sansan/business-actions.js +160 -0
- package/src/providers/sansan/business.d.ts +2 -0
- package/src/providers/sansan/business.js +51 -0
- package/src/providers/sansan/executors.d.ts +4 -0
- package/src/providers/sansan/executors.js +59 -0
- package/src/providers/sansan/file-schema.d.ts +2 -0
- package/src/providers/sansan/file-schema.js +8 -0
- package/src/providers/sansan/files.d.ts +11 -0
- package/src/providers/sansan/files.js +49 -0
- package/src/providers/sansan/organization-actions.d.ts +2 -0
- package/src/providers/sansan/organization-actions.js +198 -0
- package/src/providers/sansan/organization-columns.d.ts +2 -0
- package/src/providers/sansan/organization-columns.js +33 -0
- package/src/providers/sansan/organization.d.ts +2 -0
- package/src/providers/sansan/organization.js +88 -0
- package/src/providers/sansan/read.d.ts +2 -0
- package/src/providers/sansan/read.js +25 -0
- package/src/providers/sansan/request.d.ts +22 -0
- package/src/providers/sansan/request.js +94 -0
- package/src/providers/sansan/schemas.d.ts +7 -0
- package/src/providers/sansan/schemas.js +72 -0
- package/src/providers/saperly/actions.d.ts +17 -0
- package/src/providers/saperly/actions.js +869 -0
- package/src/providers/saperly/executors.d.ts +4 -0
- package/src/providers/saperly/executors.js +113 -0
- package/src/providers/saperly/schemas.d.ts +33 -0
- package/src/providers/saperly/schemas.js +601 -0
- package/src/providers/search1api/actions.d.ts +2 -0
- package/src/providers/search1api/actions.js +39 -0
- package/src/providers/search1api/executors.d.ts +4 -0
- package/src/providers/search1api/executors.js +72 -0
- package/src/providers/search1api/runtime.d.ts +3 -0
- package/src/providers/search1api/runtime.js +44 -0
- package/src/providers/search1api/schemas.d.ts +3 -0
- package/src/providers/search1api/schemas.js +1834 -0
- package/src/providers/sentry/executors.d.ts +2 -0
- package/src/providers/sentry/executors.js +2 -0
- package/src/providers/sentry/trigger-on-issue-alert.d.ts +2 -0
- package/src/providers/sentry/trigger-on-issue-alert.definition.d.ts +4 -0
- package/src/providers/sentry/trigger-on-issue-alert.definition.js +64 -0
- package/src/providers/sentry/trigger-on-issue-alert.js +80 -0
- package/src/providers/sf_express/runtime.d.ts +0 -16
- package/src/providers/sf_express/runtime.js +2 -2
- package/src/providers/shopee/runtime.d.ts +33 -29
- package/src/providers/shopee/runtime.js +166 -169
- package/src/providers/slack/runtime.d.ts +6 -1
- package/src/providers/slack/runtime.js +21 -0
- package/src/providers/slackbot/actions.js +17 -1
- package/src/providers/slackbot/executors.d.ts +2 -0
- package/src/providers/slackbot/executors.js +5 -1
- package/src/providers/slackbot/trigger-on-event.d.ts +2 -0
- package/src/providers/slackbot/trigger-on-event.definition.d.ts +4 -0
- package/src/providers/slackbot/trigger-on-event.definition.js +57 -0
- package/src/providers/slackbot/trigger-on-event.js +23 -0
- package/src/providers/smarthr/actions.d.ts +2 -0
- package/src/providers/smarthr/actions.js +286 -0
- package/src/providers/smarthr/employee-runtime.d.ts +1 -0
- package/src/providers/smarthr/employee-runtime.js +63 -0
- package/src/providers/smarthr/employee-schema.d.ts +3 -0
- package/src/providers/smarthr/employee-schema.js +222 -0
- package/src/providers/smarthr/executors.d.ts +4 -0
- package/src/providers/smarthr/executors.js +35 -0
- package/src/providers/smarthr/pagination.d.ts +1 -0
- package/src/providers/smarthr/pagination.js +84 -0
- package/src/providers/smarthr/resource-routes.d.ts +16 -0
- package/src/providers/smarthr/resource-routes.js +163 -0
- package/src/providers/smarthr/runtime.d.ts +13 -0
- package/src/providers/smarthr/runtime.js +242 -0
- package/src/providers/smarthr/supplemental-actions.d.ts +2 -0
- package/src/providers/smarthr/supplemental-actions.js +541 -0
- package/src/providers/smooth/actions.d.ts +2 -0
- package/src/providers/smooth/actions.js +138 -0
- package/src/providers/smooth/executors.d.ts +4 -0
- package/src/providers/smooth/executors.js +102 -0
- package/src/providers/surf/actions.d.ts +21 -0
- package/src/providers/surf/actions.js +26 -0
- package/src/providers/surf/discovery-definitions.d.ts +2 -0
- package/src/providers/surf/discovery-definitions.js +871 -0
- package/src/providers/surf/equity-definitions.d.ts +2 -0
- package/src/providers/surf/equity-definitions.js +322 -0
- package/src/providers/surf/executors.d.ts +4 -0
- package/src/providers/surf/executors.js +131 -0
- package/src/providers/surf/market-definitions.d.ts +2 -0
- package/src/providers/surf/market-definitions.js +885 -0
- package/src/providers/surf/onchain-definitions.d.ts +2 -0
- package/src/providers/surf/onchain-definitions.js +901 -0
- package/src/providers/surf/prediction-definitions.d.ts +2 -0
- package/src/providers/surf/prediction-definitions.js +683 -0
- package/src/providers/surf/shared-schemas.d.ts +18 -0
- package/src/providers/surf/shared-schemas.js +37 -0
- package/src/providers/tally/executors.d.ts +2 -0
- package/src/providers/tally/executors.js +2 -0
- package/src/providers/tally/trigger-on-form-response.d.ts +2 -0
- package/src/providers/tally/trigger-on-form-response.definition.d.ts +4 -0
- package/src/providers/tally/trigger-on-form-response.definition.js +54 -0
- package/src/providers/tally/trigger-on-form-response.js +166 -0
- package/src/providers/tapd/actions.d.ts +8 -0
- package/src/providers/tapd/actions.js +89 -0
- package/src/providers/tapd/executors.d.ts +4 -0
- package/src/providers/tapd/executors.js +137 -0
- package/src/providers/teable/runtime.js +12 -15
- package/src/providers/tencent_meeting_mcp/actions.d.ts +2 -0
- package/src/providers/tencent_meeting_mcp/actions.js +420 -0
- package/src/providers/tencent_meeting_mcp/executors.d.ts +4 -0
- package/src/providers/tencent_meeting_mcp/executors.js +117 -0
- package/src/providers/threatfox/executors.d.ts +4 -0
- package/src/providers/threatfox/executors.js +40 -0
- package/src/providers/threatfox/runtime.d.ts +15 -0
- package/src/providers/threatfox/runtime.js +128 -0
- package/src/providers/ticket_tailor/runtime.js +1 -1
- package/src/providers/ticketmaster/runtime.js +3 -6
- package/src/providers/timelinesai/runtime.js +13 -16
- package/src/providers/tinyfish/actions.d.ts +6 -0
- package/src/providers/tinyfish/actions.js +19 -0
- package/src/providers/tinyfish/agent-actions.d.ts +2 -0
- package/src/providers/tinyfish/agent-actions.js +268 -0
- package/src/providers/tinyfish/data-actions.d.ts +2 -0
- package/src/providers/tinyfish/data-actions.js +186 -0
- package/src/providers/tinyfish/data-schemas.d.ts +7 -0
- package/src/providers/tinyfish/data-schemas.js +103 -0
- package/src/providers/tinyfish/endpoints.d.ts +14 -0
- package/src/providers/tinyfish/endpoints.js +1 -0
- package/src/providers/tinyfish/executors.d.ts +4 -0
- package/src/providers/tinyfish/executors.js +133 -0
- package/src/providers/tinyfish/management-actions.d.ts +2 -0
- package/src/providers/tinyfish/management-actions.js +524 -0
- package/src/providers/tinyfish/monitor-schemas.d.ts +5 -0
- package/src/providers/tinyfish/monitor-schemas.js +65 -0
- package/src/providers/tinyfish/research-schemas.d.ts +6 -0
- package/src/providers/tinyfish/research-schemas.js +71 -0
- package/src/providers/tradebee/actions.d.ts +2 -0
- package/src/providers/tradebee/actions.js +176 -0
- package/src/providers/tradebee/executors.d.ts +4 -0
- package/src/providers/tradebee/executors.js +83 -0
- package/src/providers/trello/executors.js +5 -2
- package/src/providers/twittrapi/executors.d.ts +4 -0
- package/src/providers/twittrapi/executors.js +17 -0
- package/src/providers/twittrapi/runtime.d.ts +12 -0
- package/src/providers/twittrapi/runtime.js +203 -0
- package/src/providers/typeform/executors.d.ts +2 -0
- package/src/providers/typeform/executors.js +2 -0
- package/src/providers/typeform/trigger-on-form-response.d.ts +2 -0
- package/src/providers/typeform/trigger-on-form-response.definition.d.ts +4 -0
- package/src/providers/typeform/trigger-on-form-response.definition.js +40 -0
- package/src/providers/typeform/trigger-on-form-response.js +68 -0
- package/src/providers/urlhaus/executors.d.ts +4 -0
- package/src/providers/urlhaus/executors.js +40 -0
- package/src/providers/urlhaus/runtime.d.ts +15 -0
- package/src/providers/urlhaus/runtime.js +142 -0
- package/src/providers/vaquill/actions.d.ts +13 -0
- package/src/providers/vaquill/actions.js +529 -0
- package/src/providers/vaquill/executors.d.ts +4 -0
- package/src/providers/vaquill/executors.js +141 -0
- package/src/providers/vaquill/schemas.d.ts +67 -0
- package/src/providers/vaquill/schemas.js +4953 -0
- package/src/providers/vercel/executors.d.ts +2 -0
- package/src/providers/vercel/executors.js +2 -0
- package/src/providers/vercel/trigger-on-deployment-event.d.ts +2 -0
- package/src/providers/vercel/trigger-on-deployment-event.definition.d.ts +5 -0
- package/src/providers/vercel/trigger-on-deployment-event.definition.js +41 -0
- package/src/providers/vercel/trigger-on-deployment-event.js +102 -0
- package/src/providers/wangdian/runtime.js +16 -19
- package/src/providers/weixin_bot/runtime.d.ts +0 -1
- package/src/providers/weixin_bot/runtime.js +1 -1
- package/src/providers/weixin_store/access-token.d.ts +3 -3
- package/src/providers/weixin_store/access-token.js +15 -7
- package/src/providers/weixin_store/executors.js +214 -1
- package/src/providers/weread/actions.d.ts +2 -0
- package/src/providers/weread/actions.js +424 -0
- package/src/providers/weread/executors.d.ts +4 -0
- package/src/providers/weread/executors.js +98 -0
- package/src/providers/whatsapp/runtime.js +6 -1
- package/src/providers/workast/runtime.js +12 -17
- package/src/providers/youzan/runtime.js +21 -24
- package/src/providers/zenkit/runtime.js +13 -19
- package/src/providers/zhiliaobiaoxun/actions.d.ts +2 -0
- package/src/providers/zhiliaobiaoxun/actions.js +138 -0
- package/src/providers/zhiliaobiaoxun/executors.d.ts +4 -0
- package/src/providers/zhiliaobiaoxun/executors.js +78 -0
- package/src/providers/zoom/executors.d.ts +2 -0
- package/src/providers/zoom/executors.js +2 -0
- package/src/providers/zoom/trigger-on-recording-ready.d.ts +2 -0
- package/src/providers/zoom/trigger-on-recording-ready.definition.d.ts +4 -0
- package/src/providers/zoom/trigger-on-recording-ready.definition.js +44 -0
- package/src/providers/zoom/trigger-on-recording-ready.js +39 -0
- package/src/server/api/action-example.js +12 -1
- package/src/server/api/auth.d.ts +2 -0
- package/src/server/api/auth.js +2 -1
- package/src/server/api/console-catalog-routes.d.ts +17 -0
- package/src/server/api/console-catalog-routes.js +88 -0
- package/src/server/api/console-oauth-routes.d.ts +18 -0
- package/src/server/api/console-oauth-routes.js +298 -0
- package/src/server/api/docs-routes.d.ts +12 -0
- package/src/server/api/docs-routes.js +38 -0
- package/src/server/api/http-utils.d.ts +1 -0
- package/src/server/api/http-utils.js +8 -0
- package/src/server/api/marketplace-routes.d.ts +7 -0
- package/src/server/api/marketplace-routes.js +62 -0
- package/src/server/api/mcp-routes.d.ts +18 -0
- package/src/server/api/mcp-routes.js +37 -0
- package/src/server/api/pattern-example.js +35 -1
- package/src/server/api/policy-routes.d.ts +13 -0
- package/src/server/api/policy-routes.js +50 -0
- package/src/server/api/policy-snapshot.d.ts +14 -0
- package/src/server/api/policy-snapshot.js +30 -0
- package/src/server/api/run-log-routes.d.ts +7 -0
- package/src/server/api/run-log-routes.js +70 -0
- package/src/server/api/runtime-api.d.ts +0 -7
- package/src/server/api/runtime-api.js +0 -13
- package/src/server/api/runtime-app-routes.d.ts +10 -0
- package/src/server/api/runtime-app-routes.js +72 -0
- package/src/server/api/runtime-catalog-routes.d.ts +37 -0
- package/src/server/api/runtime-catalog-routes.js +133 -0
- package/src/server/api/runtime-execution-routes.d.ts +16 -0
- package/src/server/api/runtime-execution-routes.js +198 -0
- package/src/server/api/saas-oauth-routes.d.ts +9 -0
- package/src/server/api/saas-oauth-routes.js +27 -0
- package/src/server/api/saas-project-routes.d.ts +7 -0
- package/src/server/api/saas-project-routes.js +16 -0
- package/src/server/api/transit-file-routes.d.ts +9 -0
- package/src/server/api/transit-file-routes.js +49 -0
- package/src/server/api/trigger-routes.d.ts +15 -0
- package/src/server/api/trigger-routes.js +48 -0
- package/src/server/connect-app.d.ts +1 -0
- package/src/server/connect-app.js +4 -1
- package/src/server/connect-server.d.ts +3 -54
- package/src/server/connect-server.js +95 -1148
- package/src/triggers/common/integration.d.ts +15 -3
- package/src/triggers/common/integration.js +5 -0
- package/src/triggers/common/proxy.d.ts +7 -0
- package/src/triggers/managed-webhook.d.ts +13 -0
- package/src/triggers/managed-webhook.js +48 -0
- package/src/triggers/request.d.ts +5 -1
- package/src/triggers/request.js +2 -0
- package/src/triggers/resources.d.ts +8 -2
- package/src/triggers/resources.js +31 -0
- package/src/triggers/signature.d.ts +3 -3
- package/src/triggers/signature.js +4 -6
- package/src/triggers/sources/configuration-schema.d.ts +5 -0
- package/src/triggers/sources/configuration-schema.js +118 -0
- package/src/triggers/sources/configuration.d.ts +115 -0
- package/src/triggers/sources/configuration.js +1 -0
- package/src/triggers/sources/definition.d.ts +61 -0
- package/src/triggers/sources/definition.js +3 -0
- package/src/triggers/sources/feishu-demands.d.ts +6 -0
- package/src/triggers/sources/feishu-demands.js +24 -0
- package/src/triggers/sources/feishu-events.d.ts +19 -0
- package/src/triggers/sources/feishu-events.js +108 -0
- package/src/triggers/sources/feishu.d.ts +3 -0
- package/src/triggers/sources/feishu.js +85 -0
- package/src/triggers/sources/fireflies.d.ts +3 -0
- package/src/triggers/sources/fireflies.js +100 -0
- package/src/triggers/sources/intercom.d.ts +3 -0
- package/src/triggers/sources/intercom.js +86 -0
- package/src/triggers/sources/jira.d.ts +3 -0
- package/src/triggers/sources/jira.js +120 -0
- package/src/triggers/sources/operation.d.ts +42 -0
- package/src/triggers/sources/operation.js +146 -0
- package/src/triggers/sources/sentry.d.ts +3 -0
- package/src/triggers/sources/sentry.js +125 -0
- package/src/triggers/sources/signature.d.ts +1 -0
- package/src/triggers/sources/signature.js +10 -0
- package/src/triggers/sources/slack.d.ts +3 -0
- package/src/triggers/sources/slack.js +127 -0
- package/src/triggers/sources/zoom.d.ts +3 -0
- package/src/triggers/sources/zoom.js +113 -0
- package/src/triggers/trigger-runner.d.ts +2 -0
- package/src/triggers/trigger-runner.js +52 -16
- package/src/providers/fastmoss_mcp/official-tools.json +0 -2922
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { requiredResponseRecord } from "../provider-runtime.js";
|
|
2
|
+
import { queryPath, segment } from "./context.js";
|
|
3
|
+
import { salesforceRequest } from "./transport.js";
|
|
4
|
+
export const salesforceBaseHandlers = {
|
|
5
|
+
async list_objects(_d, c) {
|
|
6
|
+
return c.object(`${c.base}/sobjects/`);
|
|
7
|
+
},
|
|
8
|
+
async describe_object(d, c) {
|
|
9
|
+
return c.object(`${c.base}/sobjects/${segment(d.objectName)}/describe`);
|
|
10
|
+
},
|
|
11
|
+
async query(d, c) {
|
|
12
|
+
const headers = new Headers({ authorization: `Bearer ${c.accessToken}` });
|
|
13
|
+
if (d.batchSize !== undefined)
|
|
14
|
+
headers.set("Sforce-Query-Options", `batchSize=${d.batchSize}`);
|
|
15
|
+
return requiredResponseRecord((await salesforceRequest(new URL(queryPath(`${c.base}/${d.includeDeleted ? "queryAll" : "query"}`, { q: d.soql }), c.origin), { headers }, c.fetcher, c.signal)).body, "Salesforce query");
|
|
16
|
+
},
|
|
17
|
+
async query_more(d, c) {
|
|
18
|
+
const headers = new Headers({ authorization: `Bearer ${c.accessToken}` });
|
|
19
|
+
if (d.batchSize !== undefined)
|
|
20
|
+
headers.set("Sforce-Query-Options", `batchSize=${d.batchSize}`);
|
|
21
|
+
return requiredResponseRecord((await salesforceRequest(new URL(String(d.nextRecordsUrl), c.origin), { headers }, c.fetcher, c.signal)).body, "Salesforce query");
|
|
22
|
+
},
|
|
23
|
+
async get_record(d, c) {
|
|
24
|
+
return {
|
|
25
|
+
record: await c.object(queryPath(`${c.base}/sobjects/${segment(d.objectName)}/${segment(d.recordId)}`, { fields: d.fields })),
|
|
26
|
+
};
|
|
27
|
+
},
|
|
28
|
+
async create_record(d, c) {
|
|
29
|
+
return c.object(`${c.base}/sobjects/${segment(d.objectName)}`, "POST", d.fields, writeHeaders(d));
|
|
30
|
+
},
|
|
31
|
+
async update_record(d, c) {
|
|
32
|
+
const result = await c.request(`${c.base}/sobjects/${segment(d.objectName)}/${segment(d.recordId)}`, "PATCH", d.fields, writeHeaders(d));
|
|
33
|
+
return result === undefined
|
|
34
|
+
? { success: true, id: d.recordId }
|
|
35
|
+
: requiredResponseRecord(result, "Salesforce response");
|
|
36
|
+
},
|
|
37
|
+
async delete_record(d, c) {
|
|
38
|
+
const result = await c.request(`${c.base}/sobjects/${segment(d.objectName)}/${segment(d.recordId)}`, "DELETE");
|
|
39
|
+
return result === undefined
|
|
40
|
+
? { success: true, id: d.recordId }
|
|
41
|
+
: requiredResponseRecord(result, "Salesforce response");
|
|
42
|
+
},
|
|
43
|
+
async upsert_record(d, c) {
|
|
44
|
+
const result = await c.request(queryPath(`${c.base}/sobjects/${segment(d.objectName)}/${segment(d.externalIdField)}/${segment(d.externalId)}`, {
|
|
45
|
+
updateOnly: d.updateOnly,
|
|
46
|
+
}), "PATCH", d.fields, writeHeaders(d));
|
|
47
|
+
return result === undefined
|
|
48
|
+
? { success: true, created: false }
|
|
49
|
+
: requiredResponseRecord(result, "Salesforce response");
|
|
50
|
+
},
|
|
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,98 @@
|
|
|
1
|
+
import { recordOrEmpty, requiredString } from "../../core/cast.js";
|
|
2
|
+
import { providerInputError, providerResponseError, ProviderRequestError } from "../provider-runtime.js";
|
|
3
|
+
import { queryPath, segment } from "./context.js";
|
|
4
|
+
import { downloadSalesforceSource, requireSalesforceTransit, saveSalesforceDownload } from "./media.js";
|
|
5
|
+
function jobResult(job, kind, version) {
|
|
6
|
+
return {
|
|
7
|
+
handle: { jobId: requiredString(job.id, "Bulk job ID", providerResponseError), kind, apiVersion: version },
|
|
8
|
+
state: requiredString(job.state, "Bulk job state", providerResponseError),
|
|
9
|
+
job,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function jobPath(handle) {
|
|
13
|
+
return `/services/data/v${segment(handle.apiVersion)}/jobs/${segment(handle.kind)}/${segment(handle.jobId)}`;
|
|
14
|
+
}
|
|
15
|
+
async function readJob(d, c) {
|
|
16
|
+
const handle = recordOrEmpty(d.handle);
|
|
17
|
+
const job = await c.object(jobPath(handle));
|
|
18
|
+
return { ...jobResult(job, String(handle.kind), String(handle.apiVersion)), path: jobPath(handle) };
|
|
19
|
+
}
|
|
20
|
+
export const salesforceBulkHandlers = {
|
|
21
|
+
async submit_bulk_query(d, c) {
|
|
22
|
+
return jobResult(await c.object(`${c.base}/jobs/query`, "POST", {
|
|
23
|
+
operation: d.includeDeleted ? "queryAll" : "query",
|
|
24
|
+
query: d.soql,
|
|
25
|
+
contentType: "CSV",
|
|
26
|
+
columnDelimiter: d.columnDelimiter,
|
|
27
|
+
lineEnding: d.lineEnding,
|
|
28
|
+
}), "query", c.version);
|
|
29
|
+
},
|
|
30
|
+
async get_bulk_query_result(d, c) {
|
|
31
|
+
const { path, ...output } = await readJob(d, c);
|
|
32
|
+
if (output.state !== "JobComplete" || d.download === false)
|
|
33
|
+
return output;
|
|
34
|
+
requireSalesforceTransit(c);
|
|
35
|
+
const downloaded = await c.response(queryPath(`${path}/results`, { locator: d.locator, maxRecords: d.maxRecords }), { headers: { accept: "text/csv" } }, async (response, signal) => {
|
|
36
|
+
const locator = response.headers.get("Sforce-Locator");
|
|
37
|
+
if (!locator) {
|
|
38
|
+
await response.body?.cancel();
|
|
39
|
+
throw providerResponseError("Salesforce query results are missing Sforce-Locator; pagination completeness is unknown");
|
|
40
|
+
}
|
|
41
|
+
const count = response.headers.get("Sforce-NumberOfRecords");
|
|
42
|
+
const result = await saveSalesforceDownload(c, response, `${output.handle.jobId}.csv`, "text/csv", signal);
|
|
43
|
+
return {
|
|
44
|
+
result,
|
|
45
|
+
nextLocator: locator === "null" ? null : locator,
|
|
46
|
+
numberOfRecords: count !== null && Number.isFinite(Number(count)) ? Number(count) : undefined,
|
|
47
|
+
};
|
|
48
|
+
});
|
|
49
|
+
return { ...output, ...downloaded };
|
|
50
|
+
},
|
|
51
|
+
async submit_bulk_ingest(d, c) {
|
|
52
|
+
if (d.operation === "upsert" && !d.externalIdField)
|
|
53
|
+
throw providerInputError("Bulk upsert requires externalIdField");
|
|
54
|
+
const source = await downloadSalesforceSource(String(d.csvUrl), 100_000_000, c);
|
|
55
|
+
let created;
|
|
56
|
+
try {
|
|
57
|
+
created = await c.object(`${c.base}/jobs/ingest`, "POST", {
|
|
58
|
+
object: d.objectName,
|
|
59
|
+
operation: d.operation,
|
|
60
|
+
contentType: "CSV",
|
|
61
|
+
externalIdFieldName: d.externalIdField,
|
|
62
|
+
assignmentRuleId: d.assignmentRuleId,
|
|
63
|
+
columnDelimiter: d.columnDelimiter,
|
|
64
|
+
lineEnding: d.lineEnding,
|
|
65
|
+
});
|
|
66
|
+
const id = requiredString(created.id, "Bulk job ID", providerResponseError);
|
|
67
|
+
await c.response(`${c.base}/jobs/ingest/${segment(id)}/batches`, {
|
|
68
|
+
method: "PUT",
|
|
69
|
+
headers: { "content-type": "text/csv", "content-length": String(source.sizeBytes) },
|
|
70
|
+
body: source.body,
|
|
71
|
+
}, async (response) => {
|
|
72
|
+
await response.body?.cancel();
|
|
73
|
+
});
|
|
74
|
+
return jobResult(await c.object(`${c.base}/jobs/ingest/${segment(id)}`, "PATCH", { state: "UploadComplete" }), "ingest", c.version);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
if (!created)
|
|
78
|
+
throw error;
|
|
79
|
+
throw new ProviderRequestError(error instanceof ProviderRequestError ? error.status : 502, `Salesforce ingest job ${String(created.id)} was created but submission failed. Inspect or cancel this ingest job with API ${c.version} before resubmitting. ${error instanceof Error ? error.message : "Unknown failure"}`, undefined, error instanceof ProviderRequestError ? error.code : "provider_error");
|
|
80
|
+
}
|
|
81
|
+
finally {
|
|
82
|
+
await source.cleanup();
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
async get_bulk_ingest_result(d, c) {
|
|
86
|
+
const { path, ...output } = await readJob(d, c);
|
|
87
|
+
if (!["JobComplete", "Failed", "Aborted"].includes(output.state) || d.download === false)
|
|
88
|
+
return output;
|
|
89
|
+
requireSalesforceTransit(c);
|
|
90
|
+
const type = String(d.resultType ?? (output.state === "JobComplete" ? "failedResults" : "unprocessedrecords"));
|
|
91
|
+
const result = await c.response(`${path}/${type}`, { headers: { accept: "text/csv" } }, (response, signal) => saveSalesforceDownload(c, response, `${output.handle.jobId}-${type}.csv`, "text/csv", signal));
|
|
92
|
+
return { ...output, result };
|
|
93
|
+
},
|
|
94
|
+
async cancel_bulk_job(d, c) {
|
|
95
|
+
const handle = recordOrEmpty(d.handle);
|
|
96
|
+
return jobResult(await c.object(jobPath(handle), "PATCH", { state: "Aborted" }), String(handle.kind), String(handle.apiVersion));
|
|
97
|
+
},
|
|
98
|
+
};
|
|
@@ -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,207 @@
|
|
|
1
|
+
import { recordOrEmpty } from "../../core/cast.js";
|
|
2
|
+
import { providerInputError } from "../provider-runtime.js";
|
|
3
|
+
import { requiredResponseRecord } from "../provider-runtime.js";
|
|
4
|
+
import { queryPath, segment } from "./context.js";
|
|
5
|
+
import { salesforceRequest, salesforceOrigin } from "./transport.js";
|
|
6
|
+
function rejectReservedFields(fields) {
|
|
7
|
+
if (Object.keys(fields).some((key) => ["attributes", "id"].includes(key.toLowerCase())))
|
|
8
|
+
throw providerInputError("Use recordId and objectName instead of fields.Id or fields.attributes");
|
|
9
|
+
}
|
|
10
|
+
function validateComposite(requests, graph) {
|
|
11
|
+
const references = new Set();
|
|
12
|
+
let collectionQueries = 0;
|
|
13
|
+
for (const request of requests) {
|
|
14
|
+
if (Object.keys(recordOrEmpty(request.httpHeaders)).some((header) => ["accept", "authorization", "content-type"].includes(header.toLowerCase())))
|
|
15
|
+
throw providerInputError("Composite subrequests inherit Accept, Authorization and Content-Type; do not override them");
|
|
16
|
+
const ref = String(request.referenceId);
|
|
17
|
+
if (references.has(ref))
|
|
18
|
+
throw providerInputError("Composite reference IDs must be unique");
|
|
19
|
+
references.add(ref);
|
|
20
|
+
const path = String(request.url);
|
|
21
|
+
const resourcePath = path.split("?")[0];
|
|
22
|
+
const parts = resourcePath.split("/");
|
|
23
|
+
if (!path.startsWith("/services/data/v") ||
|
|
24
|
+
parts.length < 5 ||
|
|
25
|
+
path.includes("\\") ||
|
|
26
|
+
path.includes("#") ||
|
|
27
|
+
parts.slice(4).some((part) => {
|
|
28
|
+
try {
|
|
29
|
+
const decoded = decodeURIComponent(part);
|
|
30
|
+
return decoded === "." || decoded === "..";
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
}))
|
|
36
|
+
throw providerInputError("Invalid composite resource URL");
|
|
37
|
+
const resource = parts[4]?.split("?")[0];
|
|
38
|
+
const collection = resource === "composite" && parts[5]?.split("?")[0] === "sobjects";
|
|
39
|
+
if (resource !== "sobjects" && (graph || (!collection && resource !== "query" && resource !== "queryAll")))
|
|
40
|
+
throw providerInputError("Resource is not supported by Salesforce Composite");
|
|
41
|
+
if (collection || resource === "query" || resource === "queryAll")
|
|
42
|
+
collectionQueries++;
|
|
43
|
+
}
|
|
44
|
+
if (!graph && collectionQueries > 5)
|
|
45
|
+
throw providerInputError("Composite allows at most five queries or collections");
|
|
46
|
+
}
|
|
47
|
+
function validateTree(records, rootType) {
|
|
48
|
+
let count = 0;
|
|
49
|
+
const types = new Set();
|
|
50
|
+
const refs = new Set();
|
|
51
|
+
function visit(nodes, depth, root) {
|
|
52
|
+
if (depth > 5)
|
|
53
|
+
throw providerInputError("Record trees support at most five levels");
|
|
54
|
+
for (const node of nodes) {
|
|
55
|
+
const record = recordOrEmpty(node);
|
|
56
|
+
const attrs = recordOrEmpty(record.attributes);
|
|
57
|
+
if (typeof attrs.type !== "string" ||
|
|
58
|
+
typeof attrs.referenceId !== "string" ||
|
|
59
|
+
!attrs.referenceId ||
|
|
60
|
+
(root && attrs.type !== rootType))
|
|
61
|
+
throw providerInputError("Tree records require attributes.type and referenceId; root type must match objectName");
|
|
62
|
+
if (refs.has(attrs.referenceId))
|
|
63
|
+
throw providerInputError("Tree reference IDs must be unique");
|
|
64
|
+
refs.add(attrs.referenceId);
|
|
65
|
+
types.add(attrs.type);
|
|
66
|
+
count++;
|
|
67
|
+
if (count > 200 || types.size > 5)
|
|
68
|
+
throw providerInputError("Record trees allow 200 records and five object types");
|
|
69
|
+
for (const value of Object.values(record)) {
|
|
70
|
+
const nested = recordOrEmpty(value);
|
|
71
|
+
if (Array.isArray(nested.records))
|
|
72
|
+
visit(nested.records, depth + 1, false);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
visit(records, 1, true);
|
|
77
|
+
}
|
|
78
|
+
export const salesforceDataHandlers = {
|
|
79
|
+
async search_records(d, c) {
|
|
80
|
+
return c.object(queryPath(`${c.base}/search`, { q: d.sosl }));
|
|
81
|
+
},
|
|
82
|
+
async parameterized_search(d, c) {
|
|
83
|
+
return c.object(`${c.base}/parameterizedSearch`, "POST", d.request);
|
|
84
|
+
},
|
|
85
|
+
async get_record_by_external_id(d, c) {
|
|
86
|
+
return {
|
|
87
|
+
record: await c.object(queryPath(`${c.base}/sobjects/${segment(d.objectName)}/${segment(d.externalIdField)}/${segment(d.externalId)}`, { fields: d.fields })),
|
|
88
|
+
};
|
|
89
|
+
},
|
|
90
|
+
async get_related_records(d, c) {
|
|
91
|
+
return {
|
|
92
|
+
result: await c.request(queryPath(`${c.base}/sobjects/${segment(d.objectName)}/${segment(d.recordId)}/${d.relationships.map(segment).join("/")}`, { fields: d.fields })),
|
|
93
|
+
};
|
|
94
|
+
},
|
|
95
|
+
async list_updated_records(d, c) {
|
|
96
|
+
validateWindow(d);
|
|
97
|
+
return c.object(queryPath(`${c.base}/sobjects/${segment(d.objectName)}/updated/`, {
|
|
98
|
+
start: d.start,
|
|
99
|
+
end: d.end,
|
|
100
|
+
}));
|
|
101
|
+
},
|
|
102
|
+
async list_deleted_records(d, c) {
|
|
103
|
+
validateWindow(d);
|
|
104
|
+
return c.object(queryPath(`${c.base}/sobjects/${segment(d.objectName)}/deleted/`, {
|
|
105
|
+
start: d.start,
|
|
106
|
+
end: d.end,
|
|
107
|
+
}));
|
|
108
|
+
},
|
|
109
|
+
async get_record_counts(d, c) {
|
|
110
|
+
return c.object(queryPath(`${c.base}/limits/recordCount`, { sObjects: d.objectNames }));
|
|
111
|
+
},
|
|
112
|
+
async get_records(d, c) {
|
|
113
|
+
return c.items(`${c.base}/composite/sobjects/${segment(d.objectName)}`, "POST", {
|
|
114
|
+
recordIds: d.recordIds,
|
|
115
|
+
fieldNames: d.fields,
|
|
116
|
+
});
|
|
117
|
+
},
|
|
118
|
+
async create_records(d, c) {
|
|
119
|
+
return collectionWrite(d, c, false);
|
|
120
|
+
},
|
|
121
|
+
async update_records(d, c) {
|
|
122
|
+
return collectionWrite(d, c, true);
|
|
123
|
+
},
|
|
124
|
+
async upsert_records(d, c) {
|
|
125
|
+
const records = d.records.map((fields) => {
|
|
126
|
+
rejectReservedFields(fields);
|
|
127
|
+
if (!Object.hasOwn(fields, String(d.externalIdField)))
|
|
128
|
+
throw providerInputError("Each upsert record must contain the external ID field");
|
|
129
|
+
return { ...fields, attributes: { type: d.objectName } };
|
|
130
|
+
});
|
|
131
|
+
return c.items(`${c.base}/composite/sobjects/${segment(d.objectName)}/${segment(d.externalIdField)}`, "PATCH", {
|
|
132
|
+
records,
|
|
133
|
+
allOrNone: d.allOrNone,
|
|
134
|
+
});
|
|
135
|
+
},
|
|
136
|
+
async delete_records(d, c) {
|
|
137
|
+
return c.items(queryPath(`${c.base}/composite/sobjects`, { ids: d.recordIds, allOrNone: d.allOrNone }), "DELETE");
|
|
138
|
+
},
|
|
139
|
+
async create_record_tree(d, c) {
|
|
140
|
+
validateTree(d.records, String(d.objectName));
|
|
141
|
+
return c.object(`${c.base}/composite/tree/${segment(d.objectName)}`, "POST", {
|
|
142
|
+
records: d.records,
|
|
143
|
+
});
|
|
144
|
+
},
|
|
145
|
+
async execute_composite(d, c) {
|
|
146
|
+
validateComposite(d.requests, false);
|
|
147
|
+
return c.object(`${c.base}/composite`, "POST", {
|
|
148
|
+
compositeRequest: d.requests,
|
|
149
|
+
allOrNone: d.allOrNone,
|
|
150
|
+
collateSubrequests: d.collateSubrequests,
|
|
151
|
+
});
|
|
152
|
+
},
|
|
153
|
+
async execute_composite_graph(d, c) {
|
|
154
|
+
const graphs = d.graphs;
|
|
155
|
+
if (new Set(graphs.map((g) => g.graphId)).size !== graphs.length ||
|
|
156
|
+
graphs.reduce((sum, g) => sum + g.compositeRequest.length, 0) > 500)
|
|
157
|
+
throw providerInputError("Graphs require unique IDs and at most 500 total subrequests");
|
|
158
|
+
for (const graph of graphs)
|
|
159
|
+
validateComposite(graph.compositeRequest, true);
|
|
160
|
+
return c.object(`${c.base}/composite/graph`, "POST", { graphs });
|
|
161
|
+
},
|
|
162
|
+
async list_list_views(d, c) {
|
|
163
|
+
return c.object(`${c.base}/sobjects/${segment(d.objectName)}/listviews`);
|
|
164
|
+
},
|
|
165
|
+
async describe_list_view(d, c) {
|
|
166
|
+
return c.object(`${c.base}/sobjects/${segment(d.objectName)}/listviews/${segment(d.listViewId)}/describe`);
|
|
167
|
+
},
|
|
168
|
+
async get_list_view_records(d, c) {
|
|
169
|
+
return c.object(queryPath(`${c.base}/sobjects/${segment(d.objectName)}/listviews/${segment(d.listViewId)}/results`, {
|
|
170
|
+
limit: d.limit,
|
|
171
|
+
offset: d.offset,
|
|
172
|
+
}));
|
|
173
|
+
},
|
|
174
|
+
async get_picklist_values(d, c) {
|
|
175
|
+
return c.object(`${c.base}/ui-api/object-info/${segment(d.objectName)}/picklist-values/${segment(d.recordTypeId)}`);
|
|
176
|
+
},
|
|
177
|
+
async get_current_user(_d, c) {
|
|
178
|
+
const url = new URL(String(c.providerSecret?.identityUrl));
|
|
179
|
+
salesforceOrigin(url.origin, "identityUrl");
|
|
180
|
+
return {
|
|
181
|
+
user: requiredResponseRecord((await salesforceRequest(url, { headers: { authorization: `Bearer ${c.accessToken}` } }, c.fetcher, c.signal))
|
|
182
|
+
.body, "Salesforce identity"),
|
|
183
|
+
};
|
|
184
|
+
},
|
|
185
|
+
async get_org_limits(_d, c) {
|
|
186
|
+
return { limits: await c.object(`${c.base}/limits`) };
|
|
187
|
+
},
|
|
188
|
+
};
|
|
189
|
+
function validateWindow(d) {
|
|
190
|
+
if (Date.parse(String(d.start)) >= Date.parse(String(d.end)))
|
|
191
|
+
throw providerInputError("start must precede end");
|
|
192
|
+
}
|
|
193
|
+
async function collectionWrite(d, c, update) {
|
|
194
|
+
const records = d.records.map((entry) => {
|
|
195
|
+
const fields = recordOrEmpty(entry.fields);
|
|
196
|
+
rejectReservedFields(fields);
|
|
197
|
+
return {
|
|
198
|
+
...fields,
|
|
199
|
+
attributes: { type: entry.objectName },
|
|
200
|
+
Id: update ? entry.recordId : undefined,
|
|
201
|
+
};
|
|
202
|
+
});
|
|
203
|
+
return c.items(`${c.base}/composite/sobjects`, update ? "PATCH" : "POST", {
|
|
204
|
+
records,
|
|
205
|
+
allOrNone: d.allOrNone,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { recordOrEmpty, optionalString, requiredString } from "../../core/cast.js";
|
|
2
|
+
import { providerInputError, providerResponseError, requiredResponseRecord } from "../provider-runtime.js";
|
|
3
|
+
import { queryPath, segment } from "./context.js";
|
|
4
|
+
import { downloadSalesforceSource, requireSalesforceTransit, saveSalesforceDownload } from "./media.js";
|
|
5
|
+
export const salesforceFileHandlers = {
|
|
6
|
+
async upload_file(d, c) {
|
|
7
|
+
const filename = String(d.filename);
|
|
8
|
+
if (["\r", "\n", "\0", '"', "\\", "/"].some((char) => filename.includes(char)) ||
|
|
9
|
+
filename === "." ||
|
|
10
|
+
filename === "..")
|
|
11
|
+
throw providerInputError("filename must be a plain file name without header control characters");
|
|
12
|
+
const metadata = recordOrEmpty(d.metadata);
|
|
13
|
+
if (Object.keys(metadata).some((key) => ["versiondata", "id", "attributes"].includes(key.toLowerCase())))
|
|
14
|
+
throw providerInputError("metadata cannot include VersionData, Id or attributes");
|
|
15
|
+
const source = await downloadSalesforceSource(String(d.fileUrl), 2 * 1024 ** 3, c);
|
|
16
|
+
const boundary = `salesforce-${Array.from(crypto.getRandomValues(new Uint8Array(16)), (byte) => byte.toString(16).padStart(2, "0")).join("")}`;
|
|
17
|
+
const encoder = new TextEncoder();
|
|
18
|
+
const prefix = encoder.encode(`--${boundary}\r\nContent-Disposition: form-data; name="entity_content"\r\nContent-Type: application/json\r\n\r\n${JSON.stringify({ Title: filename, PathOnClient: filename, ...metadata })}\r\n--${boundary}\r\nContent-Disposition: form-data; name="VersionData"; filename="${filename}"\r\nContent-Type: application/octet-stream\r\n\r\n`);
|
|
19
|
+
const suffix = encoder.encode(`\r\n--${boundary}--\r\n`);
|
|
20
|
+
const reader = source.body.getReader();
|
|
21
|
+
let started = false;
|
|
22
|
+
const body = new ReadableStream({
|
|
23
|
+
async pull(controller) {
|
|
24
|
+
if (!started) {
|
|
25
|
+
started = true;
|
|
26
|
+
controller.enqueue(prefix);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const chunk = await reader.read();
|
|
30
|
+
if (chunk.done) {
|
|
31
|
+
controller.enqueue(suffix);
|
|
32
|
+
controller.close();
|
|
33
|
+
reader.releaseLock();
|
|
34
|
+
}
|
|
35
|
+
else
|
|
36
|
+
controller.enqueue(chunk.value);
|
|
37
|
+
},
|
|
38
|
+
async cancel(reason) {
|
|
39
|
+
await reader.cancel(reason);
|
|
40
|
+
reader.releaseLock();
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
try {
|
|
44
|
+
return await c.response(`${c.base}/sobjects/ContentVersion`, {
|
|
45
|
+
method: "POST",
|
|
46
|
+
headers: {
|
|
47
|
+
"content-type": `multipart/form-data; boundary=${boundary}`,
|
|
48
|
+
"content-length": String(prefix.byteLength + source.sizeBytes + suffix.byteLength),
|
|
49
|
+
},
|
|
50
|
+
body,
|
|
51
|
+
}, async (response) => requiredResponseRecord(await response.json(), "ContentVersion result"));
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
await reader.cancel().catch(() => undefined);
|
|
55
|
+
reader.releaseLock();
|
|
56
|
+
await source.cleanup();
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
async get_file(d, c) {
|
|
60
|
+
return { record: await c.object(`${c.base}/sobjects/ContentDocument/${segment(d.fileId)}`) };
|
|
61
|
+
},
|
|
62
|
+
async download_file(d, c) {
|
|
63
|
+
requireSalesforceTransit(c);
|
|
64
|
+
const document = await c.object(queryPath(`${c.base}/sobjects/ContentDocument/${segment(d.fileId)}`, {
|
|
65
|
+
fields: "Id,Title,LatestPublishedVersionId,FileExtension",
|
|
66
|
+
}));
|
|
67
|
+
const versionId = d.versionId ?? requiredString(document.LatestPublishedVersionId, "latest file version ID", providerResponseError);
|
|
68
|
+
if (d.versionId) {
|
|
69
|
+
const version = await c.object(queryPath(`${c.base}/sobjects/ContentVersion/${segment(versionId)}`, { fields: "ContentDocumentId" }));
|
|
70
|
+
if (!sameSalesforceId(String(version.ContentDocumentId), String(d.fileId)))
|
|
71
|
+
throw providerInputError("versionId does not belong to fileId");
|
|
72
|
+
}
|
|
73
|
+
const extension = optionalString(document.FileExtension);
|
|
74
|
+
const name = `${optionalString(document.Title) ?? String(d.fileId)}${extension ? `.${extension}` : ""}`;
|
|
75
|
+
return c.response(`${c.base}/sobjects/ContentVersion/${segment(versionId)}/VersionData`, { method: "GET", headers: { accept: "application/octet-stream" } }, (response, signal) => saveSalesforceDownload(c, response, name, response.headers.get("content-type") ?? "application/octet-stream", signal));
|
|
76
|
+
},
|
|
77
|
+
async list_record_files(d, c) {
|
|
78
|
+
return c.object(queryPath(`${c.base}/query`, {
|
|
79
|
+
q: `SELECT Id, ContentDocumentId, LinkedEntityId, ShareType, Visibility, ContentDocument.Title, ContentDocument.LatestPublishedVersionId FROM ContentDocumentLink WHERE LinkedEntityId = '${d.recordId}'`,
|
|
80
|
+
}));
|
|
81
|
+
},
|
|
82
|
+
async list_file_shares(d, c) {
|
|
83
|
+
return c.object(queryPath(`${c.base}/query`, {
|
|
84
|
+
q: `SELECT Id, ContentDocumentId, LinkedEntityId, ShareType, Visibility FROM ContentDocumentLink WHERE ContentDocumentId = '${d.fileId}'`,
|
|
85
|
+
}));
|
|
86
|
+
},
|
|
87
|
+
async link_file(d, c) {
|
|
88
|
+
return c.object(`${c.base}/sobjects/ContentDocumentLink`, "POST", {
|
|
89
|
+
ContentDocumentId: d.fileId,
|
|
90
|
+
LinkedEntityId: d.recordId,
|
|
91
|
+
ShareType: d.shareType ?? "V",
|
|
92
|
+
Visibility: d.visibility,
|
|
93
|
+
});
|
|
94
|
+
},
|
|
95
|
+
async unlink_file(d, c) {
|
|
96
|
+
await c.request(`${c.base}/sobjects/ContentDocumentLink/${segment(d.linkId)}`, "DELETE");
|
|
97
|
+
return { success: true };
|
|
98
|
+
},
|
|
99
|
+
async delete_file(d, c) {
|
|
100
|
+
await c.request(`${c.base}/sobjects/ContentDocument/${segment(d.fileId)}`, "DELETE");
|
|
101
|
+
return { success: true };
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
function sameSalesforceId(left, right) {
|
|
105
|
+
return left.length === 18 && right.length === 18
|
|
106
|
+
? left.toLowerCase() === right.toLowerCase()
|
|
107
|
+
: left.slice(0, 15) === right.slice(0, 15);
|
|
108
|
+
}
|
|
@@ -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
|
+
};
|