@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,96 @@
|
|
|
1
|
+
import { jsonSchema as s } from "../../core/json-schema.js";
|
|
2
|
+
import { defineProviderAction } from "../../core/provider-definition.js";
|
|
3
|
+
const rating = s.number("Minimum content rating from 0 to 10.", { minimum: 0, maximum: 10 });
|
|
4
|
+
const pagination = {
|
|
5
|
+
offset: s.integer("Number of results to skip, from 0 to 1000.", { minimum: 0, maximum: 1000 }),
|
|
6
|
+
number: s.integer("Number of results to return, from 0 to 10.", { minimum: 0, maximum: 10 }),
|
|
7
|
+
};
|
|
8
|
+
const jokeFilters = {
|
|
9
|
+
"include-tags": s.string("Comma-separated tags that jokes should have."),
|
|
10
|
+
"exclude-tags": s.string("Comma-separated tags that jokes must not have."),
|
|
11
|
+
"min-rating": rating,
|
|
12
|
+
"max-length": s.integer("Maximum joke length in letters."),
|
|
13
|
+
};
|
|
14
|
+
const memeFilters = {
|
|
15
|
+
keywords: s.string("Comma-separated words that must occur in the meme."),
|
|
16
|
+
"keywords-in-image": s.boolean("Whether keywords must occur in the image."),
|
|
17
|
+
"media-type": s.string("Media type such as image, video, jpg, png, or gif."),
|
|
18
|
+
"min-rating": rating,
|
|
19
|
+
"max-age-days": s.integer("Maximum meme age in days."),
|
|
20
|
+
};
|
|
21
|
+
const joke = s.looseObject("A joke returned by Humor API.", {
|
|
22
|
+
id: s.integer("Joke identifier."),
|
|
23
|
+
joke: s.string("Joke text."),
|
|
24
|
+
});
|
|
25
|
+
const meme = s.looseObject("A meme returned by Humor API.", {
|
|
26
|
+
id: s.integer("Meme identifier."),
|
|
27
|
+
url: s.string("URL of the meme media."),
|
|
28
|
+
type: s.string("Media MIME type."),
|
|
29
|
+
});
|
|
30
|
+
export const humorApiActions = [
|
|
31
|
+
defineProviderAction("humor_api", {
|
|
32
|
+
name: "search_jokes",
|
|
33
|
+
description: "Search jokes by keywords, tags, rating, and length with offset pagination.",
|
|
34
|
+
operationType: "read",
|
|
35
|
+
requiredScopes: [],
|
|
36
|
+
inputSchema: s.object("Joke search parameters.", {
|
|
37
|
+
keywords: s.string("Comma-separated words that must occur in the joke."),
|
|
38
|
+
...jokeFilters,
|
|
39
|
+
...pagination,
|
|
40
|
+
}, { optional: ["keywords", ...Object.keys(jokeFilters), ...Object.keys(pagination)] }),
|
|
41
|
+
outputSchema: s.looseObject("Joke search results.", {
|
|
42
|
+
jokes: s.array("Matching jokes.", joke),
|
|
43
|
+
available: s.integer("Total matching jokes available."),
|
|
44
|
+
}),
|
|
45
|
+
}),
|
|
46
|
+
defineProviderAction("humor_api", {
|
|
47
|
+
name: "random_joke",
|
|
48
|
+
description: "Get a random joke filtered by tags, minimum rating, and maximum length.",
|
|
49
|
+
operationType: "read",
|
|
50
|
+
requiredScopes: [],
|
|
51
|
+
inputSchema: s.object("Random joke filters.", jokeFilters, {
|
|
52
|
+
optional: Object.keys(jokeFilters),
|
|
53
|
+
}),
|
|
54
|
+
outputSchema: joke,
|
|
55
|
+
}),
|
|
56
|
+
defineProviderAction("humor_api", {
|
|
57
|
+
name: "search_memes",
|
|
58
|
+
description: "Search memes by keywords, media type, rating, and age with offset pagination.",
|
|
59
|
+
operationType: "read",
|
|
60
|
+
requiredScopes: [],
|
|
61
|
+
inputSchema: s.object("Meme search parameters.", { ...memeFilters, ...pagination }, {
|
|
62
|
+
optional: [...Object.keys(memeFilters), ...Object.keys(pagination)],
|
|
63
|
+
}),
|
|
64
|
+
outputSchema: s.looseObject("Meme search results.", {
|
|
65
|
+
memes: s.array("Matching memes.", meme),
|
|
66
|
+
available: s.integer("Total matching memes available."),
|
|
67
|
+
}),
|
|
68
|
+
}),
|
|
69
|
+
defineProviderAction("humor_api", {
|
|
70
|
+
name: "random_meme",
|
|
71
|
+
description: "Get a random meme filtered by keywords, media type, rating, and age.",
|
|
72
|
+
operationType: "read",
|
|
73
|
+
requiredScopes: [],
|
|
74
|
+
inputSchema: s.object("Random meme filters.", memeFilters, {
|
|
75
|
+
optional: Object.keys(memeFilters),
|
|
76
|
+
}),
|
|
77
|
+
outputSchema: meme,
|
|
78
|
+
}),
|
|
79
|
+
defineProviderAction("humor_api", {
|
|
80
|
+
name: "search_gifs",
|
|
81
|
+
description: "Search reaction GIFs and return their URLs and dimensions.",
|
|
82
|
+
operationType: "read",
|
|
83
|
+
requiredScopes: [],
|
|
84
|
+
inputSchema: s.object("GIF search parameters.", {
|
|
85
|
+
query: s.nonEmptyString("Search query."),
|
|
86
|
+
number: pagination.number,
|
|
87
|
+
}, { optional: ["number"] }),
|
|
88
|
+
outputSchema: s.looseObject("GIF search results.", {
|
|
89
|
+
images: s.array("Matching GIF images.", s.looseObject("A GIF search result.", {
|
|
90
|
+
url: s.string("GIF image URL."),
|
|
91
|
+
width: s.integer("Image width in pixels."),
|
|
92
|
+
height: s.integer("Image height in pixels."),
|
|
93
|
+
})),
|
|
94
|
+
}),
|
|
95
|
+
}),
|
|
96
|
+
];
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CredentialValidators, ProviderExecutors, ProviderProxyExecutor } from "../../core/types.ts";
|
|
2
|
+
export declare const executors: ProviderExecutors;
|
|
3
|
+
export declare const credentialValidators: CredentialValidators;
|
|
4
|
+
export declare const proxy: ProviderProxyExecutor;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { optionalRecord, optionalRawString } from "../../core/cast.js";
|
|
2
|
+
import { requiredInputString, requiredResponseRecord, providerUserAgent, ProviderRequestError, runProviderRequest, defineApiKeyProviderExecutors, defineProviderProxy, mapProviderActionHandlers, readProviderProxyErrorMessage, withRetryAfterSeconds, } from "../provider-runtime.js";
|
|
3
|
+
import { humorApiActions } from "./actions.js";
|
|
4
|
+
const baseUrl = "https://api.humorapi.com";
|
|
5
|
+
const actionPaths = {
|
|
6
|
+
search_jokes: "/jokes/search",
|
|
7
|
+
random_joke: "/jokes/random",
|
|
8
|
+
search_memes: "/memes/search",
|
|
9
|
+
random_meme: "/memes/random",
|
|
10
|
+
search_gifs: "/gif/search",
|
|
11
|
+
};
|
|
12
|
+
const handlers = mapProviderActionHandlers("humor_api", humorApiActions, (action) => async (dataInput, context) => {
|
|
13
|
+
const url = new URL(actionPaths[action.name], baseUrl);
|
|
14
|
+
for (const [name, value] of Object.entries(dataInput)) {
|
|
15
|
+
if (value != null)
|
|
16
|
+
url.searchParams.set(name, String(value));
|
|
17
|
+
}
|
|
18
|
+
const apiKey = context.apiKey;
|
|
19
|
+
return runProviderRequest({ signal: context.signal, label: "Humor API" }, async (signal) => {
|
|
20
|
+
const response = await context.fetcher(url, {
|
|
21
|
+
headers: {
|
|
22
|
+
"x-api-key": apiKey,
|
|
23
|
+
accept: "application/json",
|
|
24
|
+
"user-agent": providerUserAgent,
|
|
25
|
+
},
|
|
26
|
+
signal,
|
|
27
|
+
});
|
|
28
|
+
const text = await response.text();
|
|
29
|
+
let payload;
|
|
30
|
+
try {
|
|
31
|
+
payload = JSON.parse(text);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
if (response.ok)
|
|
35
|
+
throw new ProviderRequestError(502, "Humor API returned invalid JSON", undefined, "provider_error");
|
|
36
|
+
}
|
|
37
|
+
if (!response.ok) {
|
|
38
|
+
const body = optionalRecord(payload);
|
|
39
|
+
const message = optionalRawString(body?.message) ??
|
|
40
|
+
optionalRawString(body?.error) ??
|
|
41
|
+
`Humor API request failed (HTTP ${response.status})`;
|
|
42
|
+
throw new ProviderRequestError(response.status, message, undefined, response.status === 429 ? "rate_limited" : "provider_error");
|
|
43
|
+
}
|
|
44
|
+
return requiredResponseRecord(payload, "Humor API response");
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
export const executors = defineApiKeyProviderExecutors("humor_api", handlers, {
|
|
48
|
+
skipDnsValidation: true,
|
|
49
|
+
});
|
|
50
|
+
export const credentialValidators = {
|
|
51
|
+
async apiKey(input) {
|
|
52
|
+
requiredInputString(input.apiKey, "API Key");
|
|
53
|
+
return {
|
|
54
|
+
profile: { displayName: "Humor API Key" },
|
|
55
|
+
grantedScopes: [],
|
|
56
|
+
metadata: { apiBaseUrl: baseUrl, validationMode: "local_non_empty_key" },
|
|
57
|
+
};
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
export const proxy = defineProviderProxy({
|
|
61
|
+
service: "humor_api",
|
|
62
|
+
baseUrl,
|
|
63
|
+
auth: { type: "api_key_header", name: "x-api-key" },
|
|
64
|
+
skipDnsValidation: true,
|
|
65
|
+
customizeRequest({ headers }) {
|
|
66
|
+
for (const [name, value] of Object.entries({
|
|
67
|
+
accept: "application/json",
|
|
68
|
+
"user-agent": providerUserAgent,
|
|
69
|
+
}))
|
|
70
|
+
if (!headers.has(name))
|
|
71
|
+
headers.set(name, value);
|
|
72
|
+
},
|
|
73
|
+
async readError(response) {
|
|
74
|
+
return new ProviderRequestError(response.status, await readProviderProxyErrorMessage(response, "Provider request failed"), withRetryAfterSeconds(response), response.status === 429 ? "rate_limited" : "provider_error");
|
|
75
|
+
},
|
|
76
|
+
});
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { CredentialValidators, ProviderExecutors, ProviderProxyExecutor } from "../../core/types.ts";
|
|
2
|
+
import type { IntegrationDefinition } from "../../triggers/common/integration.ts";
|
|
2
3
|
export declare const executors: ProviderExecutors;
|
|
3
4
|
export declare const proxy: ProviderProxyExecutor;
|
|
4
5
|
export declare const credentialValidators: CredentialValidators;
|
|
6
|
+
export declare const triggers: readonly IntegrationDefinition[];
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { defineProviderExecutors, defineProviderProxy, requireOAuthCredential } from "../provider-runtime.js";
|
|
2
2
|
import { intercomActionHandlers, intercomAllowedApiBaseUrls, intercomApiVersion, resolveIntercomApiBaseUrl, validateIntercomOAuthCredential, } from "./runtime.js";
|
|
3
|
+
import { intercomConversationEvents } from "./trigger-on-conversation-event.js";
|
|
3
4
|
const service = "intercom";
|
|
4
5
|
export const executors = defineProviderExecutors({
|
|
5
6
|
service,
|
|
@@ -32,3 +33,4 @@ export const credentialValidators = {
|
|
|
32
33
|
return validateIntercomOAuthCredential(input, fetcher, signal);
|
|
33
34
|
},
|
|
34
35
|
};
|
|
36
|
+
export const triggers = [intercomConversationEvents];
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { s } from "../../core/json-schema.js";
|
|
2
|
+
export const snapshot = {
|
|
3
|
+
key: "intercom.on_conversation_event",
|
|
4
|
+
provider: "intercom",
|
|
5
|
+
name: "on_conversation_event",
|
|
6
|
+
displayName: "Customer Conversation or Ticket",
|
|
7
|
+
description: "Receives customer conversations, customer replies and new tickets from a verified Intercom application event source. Administrator replies are excluded.",
|
|
8
|
+
definitionVersion: 2,
|
|
9
|
+
type: "integration",
|
|
10
|
+
endpoint: {
|
|
11
|
+
methods: ["POST"],
|
|
12
|
+
body: { formats: ["json"], allowArray: false, allowEmpty: false },
|
|
13
|
+
successStatus: 200,
|
|
14
|
+
},
|
|
15
|
+
configInputs: [
|
|
16
|
+
{
|
|
17
|
+
handle: "sourceId",
|
|
18
|
+
jsonSchema: { type: "string", pattern: "^source_[0-9a-f]{32}$", title: "Event source" },
|
|
19
|
+
nullable: false,
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
handle: "eventTypes",
|
|
23
|
+
jsonSchema: {
|
|
24
|
+
type: "array",
|
|
25
|
+
items: { type: "string", enum: ["conversation.user.created", "conversation.user.replied", "ticket.created"] },
|
|
26
|
+
minItems: 1,
|
|
27
|
+
maxItems: 3,
|
|
28
|
+
uniqueItems: true,
|
|
29
|
+
title: "Events",
|
|
30
|
+
},
|
|
31
|
+
nullable: false,
|
|
32
|
+
value: ["conversation.user.created", "conversation.user.replied", "ticket.created"],
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
outputs: [
|
|
36
|
+
{ handle: "event", jsonSchema: s.string(), nullable: false },
|
|
37
|
+
{ handle: "deliveryId", jsonSchema: s.string(), nullable: false },
|
|
38
|
+
{ handle: "workspaceId", jsonSchema: s.string(), nullable: false },
|
|
39
|
+
{ handle: "objectId", jsonSchema: s.string(), nullable: false },
|
|
40
|
+
{ handle: "body", jsonSchema: s.object({}, { additionalProperties: true }), nullable: false },
|
|
41
|
+
],
|
|
42
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { PermanentIntegrationError } from "../../triggers/common/integration.js";
|
|
2
|
+
import { isJsonObject } from "../../triggers/common/json.js";
|
|
3
|
+
import { intercomApplication } from "../../triggers/sources/intercom.js";
|
|
4
|
+
import { snapshot } from "./trigger-on-conversation-event.definition.js";
|
|
5
|
+
export const intercomConversationEvents = {
|
|
6
|
+
snapshot,
|
|
7
|
+
eventSource: "intercom",
|
|
8
|
+
source: intercomApplication,
|
|
9
|
+
receive(context) {
|
|
10
|
+
if (context.eventSourceId !== context.config.sourceId)
|
|
11
|
+
return { outcome: "respond", status: 404, body: "", contentType: "text/plain" };
|
|
12
|
+
const payload = context.payload;
|
|
13
|
+
if (!isJsonObject(payload) ||
|
|
14
|
+
typeof payload.deliveryId !== "string" ||
|
|
15
|
+
!payload.deliveryId ||
|
|
16
|
+
!isJsonObject(payload.body))
|
|
17
|
+
throw new PermanentIntegrationError("Invalid shared Intercom event.");
|
|
18
|
+
return { outcome: "event", dedupeKey: payload.deliveryId, outputs: payload };
|
|
19
|
+
},
|
|
20
|
+
async reconcile() {
|
|
21
|
+
throw new PermanentIntegrationError("This deployment does not support shared Intercom event sources.");
|
|
22
|
+
},
|
|
23
|
+
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CredentialValidators, ProviderExecutors, ProviderProxyExecutor } from "../../core/types.ts";
|
|
2
|
+
import type { IntegrationDefinition } from "../../triggers/common/integration.ts";
|
|
2
3
|
import type { ProviderActionHandlers } from "../provider-runtime.ts";
|
|
3
4
|
type JiraActionContext = {
|
|
4
5
|
accessToken: string;
|
|
@@ -22,4 +23,5 @@ export declare const credentialValidators: CredentialValidators;
|
|
|
22
23
|
* suffix this provider speaks, so a pasted API URL is not double-appended.
|
|
23
24
|
*/
|
|
24
25
|
export declare function normalizeJiraServerApiBaseUrl(value: unknown, allowPrivateNetwork?: boolean): string;
|
|
26
|
+
export declare const triggers: readonly IntegrationDefinition[];
|
|
25
27
|
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { compactObject, optionalBoolean, optionalInteger as asOptionalInteger, optionalRecord as asOptionalObject, optionalString as asOptionalString, optionalStringArray, } from "../../core/cast.js";
|
|
2
2
|
import { assertPublicHttpUrl, isPrivateNetworkAccessAllowed } from "../../core/request.js";
|
|
3
3
|
import { createProviderFetch, ProviderRequestError, defineProviderExecutors, defineProviderProxy, providerUserAgent, } from "../provider-runtime.js";
|
|
4
|
+
import { jiraIssueEvents } from "./trigger-on-issue-event.js";
|
|
4
5
|
const jiraApiOrigin = "https://api.atlassian.com";
|
|
5
6
|
const jiraAccessibleResourcesUrl = "https://api.atlassian.com/oauth/token/accessible-resources";
|
|
6
7
|
const jiraCurrentUserPath = "/myself";
|
|
@@ -944,3 +945,4 @@ function trimLeadingSlash(value) {
|
|
|
944
945
|
}
|
|
945
946
|
return value.slice(index);
|
|
946
947
|
}
|
|
948
|
+
export const triggers = [jiraIssueEvents];
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export const snapshot = {
|
|
2
|
+
key: "jira.on_issue_event",
|
|
3
|
+
provider: "jira",
|
|
4
|
+
name: "on_issue_event",
|
|
5
|
+
displayName: "Issue or Comment Event",
|
|
6
|
+
description: "Receives Jira Cloud issue creation, issue updates and new comments through a shared project webhook with automatic renewal.",
|
|
7
|
+
definitionVersion: 2,
|
|
8
|
+
type: "integration",
|
|
9
|
+
endpoint: {
|
|
10
|
+
methods: ["POST"],
|
|
11
|
+
body: { formats: ["json"], allowArray: false, allowEmpty: false },
|
|
12
|
+
successStatus: 200,
|
|
13
|
+
},
|
|
14
|
+
configInputs: [
|
|
15
|
+
{
|
|
16
|
+
handle: "sourceId",
|
|
17
|
+
jsonSchema: { type: "string", pattern: "^source_[0-9a-f]{32}$", title: "Event source" },
|
|
18
|
+
nullable: false,
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
handle: "eventTypes",
|
|
22
|
+
jsonSchema: {
|
|
23
|
+
type: "array",
|
|
24
|
+
items: {
|
|
25
|
+
type: "string",
|
|
26
|
+
enum: ["jira:issue_created", "jira:issue_updated", "comment_created"],
|
|
27
|
+
},
|
|
28
|
+
minItems: 1,
|
|
29
|
+
maxItems: 3,
|
|
30
|
+
uniqueItems: true,
|
|
31
|
+
title: "Events",
|
|
32
|
+
},
|
|
33
|
+
nullable: false,
|
|
34
|
+
value: ["jira:issue_created", "jira:issue_updated", "comment_created"],
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
outputs: [
|
|
38
|
+
{ handle: "event", jsonSchema: { type: "string" }, nullable: false },
|
|
39
|
+
{ handle: "deliveryId", jsonSchema: { type: "string" }, nullable: false },
|
|
40
|
+
{ handle: "cloudId", jsonSchema: { type: "string" }, nullable: false },
|
|
41
|
+
{ handle: "issueId", jsonSchema: { type: "string" }, nullable: false },
|
|
42
|
+
{ handle: "body", jsonSchema: { type: "object" }, nullable: false },
|
|
43
|
+
],
|
|
44
|
+
};
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { jwtVerify } from "jose";
|
|
2
|
+
import { IntegrationConnectionError } from "../../triggers/common/integration.js";
|
|
3
|
+
import { PermanentIntegrationError } from "../../triggers/common/integration.js";
|
|
4
|
+
import { isJsonObject } from "../../triggers/common/json.js";
|
|
5
|
+
import { webhookRequest } from "../../triggers/managed-webhook.js";
|
|
6
|
+
import { jiraProject } from "../../triggers/sources/jira.js";
|
|
7
|
+
import { snapshot } from "./trigger-on-issue-event.definition.js";
|
|
8
|
+
import { reconcileJiraResource, requireJiraCloud, jiraEvents } from "./trigger-resource.js";
|
|
9
|
+
export const jiraIssueEvents = {
|
|
10
|
+
snapshot,
|
|
11
|
+
eventSource: "jira",
|
|
12
|
+
source: jiraProject,
|
|
13
|
+
resources: { reconcile: reconcileJiraResource },
|
|
14
|
+
async sourceIdentity(context) {
|
|
15
|
+
const cloudId = requireJiraCloud(context.connector);
|
|
16
|
+
const project = context.config.projectId ?? context.config.project;
|
|
17
|
+
if (typeof project !== "string" || !project || project.length > 256)
|
|
18
|
+
throw new PermanentIntegrationError("Choose a Jira project.");
|
|
19
|
+
const [projectResult, userResult, siteResult] = await Promise.all([
|
|
20
|
+
webhookRequest(context, { method: "GET", endpoint: `/project/${encodeURIComponent(project)}` }),
|
|
21
|
+
webhookRequest(context, { method: "GET", endpoint: "/myself" }),
|
|
22
|
+
webhookRequest(context, { method: "GET", endpoint: "/serverInfo" }),
|
|
23
|
+
]);
|
|
24
|
+
const item = projectResult.data, user = userResult.data, site = siteResult.data;
|
|
25
|
+
if (!isJsonObject(item) ||
|
|
26
|
+
typeof item.id !== "string" ||
|
|
27
|
+
!/^\d+$/.test(item.id) ||
|
|
28
|
+
typeof item.key !== "string" ||
|
|
29
|
+
!isJsonObject(user) ||
|
|
30
|
+
typeof user.accountId !== "string" ||
|
|
31
|
+
!isJsonObject(site) ||
|
|
32
|
+
typeof site.baseUrl !== "string")
|
|
33
|
+
throw new PermanentIntegrationError("Jira did not return a verified project, user and site.");
|
|
34
|
+
const url = new URL(site.baseUrl);
|
|
35
|
+
if (url.protocol !== "https:" || url.username || url.password)
|
|
36
|
+
throw new PermanentIntegrationError("Invalid Jira Cloud site URL.");
|
|
37
|
+
return {
|
|
38
|
+
accountId: context.connector.providerAccountId,
|
|
39
|
+
cloudId,
|
|
40
|
+
userId: user.accountId,
|
|
41
|
+
projectId: item.id,
|
|
42
|
+
projectKey: item.key,
|
|
43
|
+
siteUrl: url.origin,
|
|
44
|
+
};
|
|
45
|
+
},
|
|
46
|
+
async sourceReceive(context) {
|
|
47
|
+
const cloudId = requireJiraCloud(context.connector);
|
|
48
|
+
if (context.config.cloudId !== cloudId)
|
|
49
|
+
throw new IntegrationConnectionError("The Jira connection belongs to another site.");
|
|
50
|
+
const authorization = context.headers.authorization ?? "";
|
|
51
|
+
if (!authorization.startsWith("Bearer "))
|
|
52
|
+
return { outcome: "unauthorized" };
|
|
53
|
+
try {
|
|
54
|
+
await jwtVerify(authorization.slice(7), new TextEncoder().encode(context.connector.oauthClientConfig.clientSecret), { algorithms: ["HS256"], currentDate: context.now, requiredClaims: ["exp"] });
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return { outcome: "unauthorized" };
|
|
58
|
+
}
|
|
59
|
+
let payload;
|
|
60
|
+
try {
|
|
61
|
+
payload = JSON.parse(context.rawBody);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return { outcome: "unauthorized" };
|
|
65
|
+
}
|
|
66
|
+
if (!isJsonObject(payload) ||
|
|
67
|
+
typeof payload.webhookEvent !== "string" ||
|
|
68
|
+
!jiraEvents.includes(payload.webhookEvent))
|
|
69
|
+
return { outcome: "ignored" };
|
|
70
|
+
if (!Array.isArray(payload.matchedWebhookIds) || !payload.matchedWebhookIds.includes(context.config.webhookId))
|
|
71
|
+
return { outcome: "ignored" };
|
|
72
|
+
const issue = payload.issue;
|
|
73
|
+
if (!isJsonObject(issue) ||
|
|
74
|
+
typeof issue.id !== "string" ||
|
|
75
|
+
typeof issue.self !== "string" ||
|
|
76
|
+
!isJsonObject(issue.fields) ||
|
|
77
|
+
!isJsonObject(issue.fields.project) ||
|
|
78
|
+
issue.fields.project.id !== context.config.projectId)
|
|
79
|
+
return { outcome: "ignored" };
|
|
80
|
+
let issueUrl;
|
|
81
|
+
try {
|
|
82
|
+
issueUrl = new URL(issue.self);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return { outcome: "ignored" };
|
|
86
|
+
}
|
|
87
|
+
if (issueUrl.origin !== context.config.siteUrl)
|
|
88
|
+
return { outcome: "ignored" };
|
|
89
|
+
const id = context.headers["x-atlassian-webhook-identifier"];
|
|
90
|
+
if (!id || id.length > 256)
|
|
91
|
+
return { outcome: "unauthorized" };
|
|
92
|
+
if (payload.webhookEvent === "comment_created" &&
|
|
93
|
+
(!isJsonObject(payload.comment) || typeof payload.comment.id !== "string"))
|
|
94
|
+
return { outcome: "unauthorized" };
|
|
95
|
+
return {
|
|
96
|
+
outcome: "event",
|
|
97
|
+
id,
|
|
98
|
+
type: payload.webhookEvent,
|
|
99
|
+
payload: { event: payload.webhookEvent, deliveryId: id, cloudId, issueId: issue.id, body: payload },
|
|
100
|
+
};
|
|
101
|
+
},
|
|
102
|
+
receive(context) {
|
|
103
|
+
if (context.eventSourceId !== context.config.sourceId)
|
|
104
|
+
return { outcome: "respond", status: 404, body: "", contentType: "text/plain" };
|
|
105
|
+
const payload = context.payload;
|
|
106
|
+
if (!isJsonObject(payload) ||
|
|
107
|
+
typeof payload.deliveryId !== "string" ||
|
|
108
|
+
!payload.deliveryId ||
|
|
109
|
+
!isJsonObject(payload.body))
|
|
110
|
+
throw new PermanentIntegrationError("Invalid shared Jira event.");
|
|
111
|
+
return { outcome: "event", dedupeKey: payload.deliveryId, outputs: payload };
|
|
112
|
+
},
|
|
113
|
+
async reconcile() {
|
|
114
|
+
throw new PermanentIntegrationError("This deployment does not support shared Jira event sources.");
|
|
115
|
+
},
|
|
116
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IntegrationReconcileContext, IntegrationReconcileResult } from "../../triggers/common/integration.ts";
|
|
2
|
+
export declare const jiraEvents: string[];
|
|
3
|
+
export declare function requireJiraCloud(connector: IntegrationReconcileContext["connector"]): string;
|
|
4
|
+
export declare function reconcileJiraResource(context: IntegrationReconcileContext): Promise<IntegrationReconcileResult>;
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { IntegrationConnectionError, PermanentIntegrationError, TransientIntegrationError, } from "../../triggers/common/integration.js";
|
|
2
|
+
import { isJsonObject } from "../../triggers/common/json.js";
|
|
3
|
+
import { webhookRequest } from "../../triggers/managed-webhook.js";
|
|
4
|
+
export const jiraEvents = ["jira:issue_created", "jira:issue_updated", "comment_created"];
|
|
5
|
+
const day = 86_400_000;
|
|
6
|
+
export function requireJiraCloud(connector) {
|
|
7
|
+
const cloudId = /^jira:([^:]+)(?::|$)/.exec(connector.providerAccountId ?? "")?.[1];
|
|
8
|
+
if (connector.authType !== "oauth2" || !cloudId || !connector.oauthClientConfig?.clientSecret)
|
|
9
|
+
throw new IntegrationConnectionError("Jira Cloud OAuth and the matching application client secret are required. Reconnect with webhook permissions.");
|
|
10
|
+
return cloudId;
|
|
11
|
+
}
|
|
12
|
+
async function webhooks(context) {
|
|
13
|
+
const items = [];
|
|
14
|
+
let startAt = 0;
|
|
15
|
+
for (;;) {
|
|
16
|
+
const { data } = await webhookRequest(context, {
|
|
17
|
+
method: "GET",
|
|
18
|
+
endpoint: "/webhook",
|
|
19
|
+
query: { startAt, maxResults: 100 },
|
|
20
|
+
});
|
|
21
|
+
if (!isJsonObject(data) || !Array.isArray(data.values) || typeof data.isLast !== "boolean")
|
|
22
|
+
throw new TransientIntegrationError("Invalid Jira webhook page.");
|
|
23
|
+
for (const item of data.values) {
|
|
24
|
+
if (!isJsonObject(item) ||
|
|
25
|
+
!Number.isSafeInteger(item.id) ||
|
|
26
|
+
Number(item.id) <= 0 ||
|
|
27
|
+
typeof item.url !== "string" ||
|
|
28
|
+
typeof item.jqlFilter !== "string" ||
|
|
29
|
+
!Array.isArray(item.events) ||
|
|
30
|
+
!item.events.every((event) => typeof event === "string") ||
|
|
31
|
+
typeof item.expirationDate !== "string")
|
|
32
|
+
throw new TransientIntegrationError("Invalid Jira webhook record.");
|
|
33
|
+
const expiresAt = Date.parse(item.expirationDate);
|
|
34
|
+
if (!Number.isFinite(expiresAt))
|
|
35
|
+
throw new TransientIntegrationError("Invalid Jira webhook expiration.");
|
|
36
|
+
items.push({
|
|
37
|
+
id: Number(item.id),
|
|
38
|
+
url: item.url,
|
|
39
|
+
jqlFilter: item.jqlFilter,
|
|
40
|
+
events: item.events,
|
|
41
|
+
expiresAt,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
if (data.isLast)
|
|
45
|
+
return items;
|
|
46
|
+
if (data.values.length === 0 || data.startAt !== startAt)
|
|
47
|
+
throw new TransientIntegrationError("Invalid Jira webhook pagination.");
|
|
48
|
+
startAt += data.values.length;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export async function reconcileJiraResource(context) {
|
|
52
|
+
requireJiraCloud(context.connector);
|
|
53
|
+
const { projectId } = context.config;
|
|
54
|
+
if (typeof projectId !== "string" || !/^\d+$/.test(projectId))
|
|
55
|
+
throw new PermanentIntegrationError("A verified Jira project ID is required.");
|
|
56
|
+
let endpoint;
|
|
57
|
+
try {
|
|
58
|
+
endpoint = new URL(context.endpointUrl);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
throw new PermanentIntegrationError("A public HTTPS callback URL is required.");
|
|
62
|
+
}
|
|
63
|
+
if (endpoint.protocol !== "https:" || endpoint.username || endpoint.password || endpoint.hash)
|
|
64
|
+
throw new PermanentIntegrationError("Jira requires a public HTTPS callback without credentials or a fragment.");
|
|
65
|
+
const now = context.now.getTime();
|
|
66
|
+
const state = context.state;
|
|
67
|
+
const saved = state.subscription;
|
|
68
|
+
if (context.active &&
|
|
69
|
+
typeof saved.checkedAt === "number" &&
|
|
70
|
+
typeof saved.expiresAt === "number" &&
|
|
71
|
+
saved.checkedAt + day > now &&
|
|
72
|
+
saved.expiresAt - 7 * day > now)
|
|
73
|
+
return { outcome: "ready" };
|
|
74
|
+
const save = (value) => state.saveSubscription(value, new Date(now + day));
|
|
75
|
+
let all = await webhooks(context);
|
|
76
|
+
const own = () => {
|
|
77
|
+
const matches = all.filter((item) => item.url === endpoint.href);
|
|
78
|
+
if (matches.length > 1)
|
|
79
|
+
throw new PermanentIntegrationError("Multiple Jira webhooks use this source callback. Resolve the duplicate subscriptions before retrying.");
|
|
80
|
+
return matches[0];
|
|
81
|
+
};
|
|
82
|
+
let hook = own();
|
|
83
|
+
if (!context.active) {
|
|
84
|
+
if (hook)
|
|
85
|
+
await webhookRequest(context, { method: "DELETE", endpoint: "/webhook", body: { webhookIds: [hook.id] } });
|
|
86
|
+
else if (saved.creating === true)
|
|
87
|
+
throw new PermanentIntegrationError("Jira registration is still uncertain. Confirm the remote webhook before cleanup.", "trigger_subscription_uncertain");
|
|
88
|
+
await save({});
|
|
89
|
+
return { outcome: "ready" };
|
|
90
|
+
}
|
|
91
|
+
if (!hook) {
|
|
92
|
+
if (saved.creating === true)
|
|
93
|
+
throw new PermanentIntegrationError("Jira registration is uncertain and no matching webhook is visible. Retry after checking Jira; do not create another source.", "trigger_subscription_uncertain");
|
|
94
|
+
if (all.length >= 5)
|
|
95
|
+
throw new PermanentIntegrationError("Jira OAuth webhook quota reached: five subscriptions per application, user and site. Remove an unused subscription, then retry.", "trigger_quota_exceeded");
|
|
96
|
+
await save({ creating: true });
|
|
97
|
+
const result = await context.connector.execute({
|
|
98
|
+
method: "POST",
|
|
99
|
+
endpoint: "/webhook",
|
|
100
|
+
body: { url: endpoint.href, webhooks: [{ jqlFilter: `project = ${projectId}`, events: jiraEvents }] },
|
|
101
|
+
}, context.signal);
|
|
102
|
+
context.signal?.throwIfAborted();
|
|
103
|
+
if (result.status < 200 || result.status >= 300) {
|
|
104
|
+
if (result.status >= 400 && result.status < 500)
|
|
105
|
+
await save({});
|
|
106
|
+
const message = `Jira webhook registration failed (HTTP ${result.status}). Check OAuth scopes, callback domain and webhook quota.`;
|
|
107
|
+
if (result.status === 429 || result.status >= 500)
|
|
108
|
+
throw new TransientIntegrationError(message);
|
|
109
|
+
throw new PermanentIntegrationError(message);
|
|
110
|
+
}
|
|
111
|
+
const results = isJsonObject(result.data) ? result.data.webhookRegistrationResult : undefined;
|
|
112
|
+
if (!Array.isArray(results) || results.length !== 1 || !isJsonObject(results[0]))
|
|
113
|
+
throw new TransientIntegrationError("Jira registration returned no confirmed webhook ID.");
|
|
114
|
+
const created = results[0];
|
|
115
|
+
if (Array.isArray(created.errors) && created.errors.length) {
|
|
116
|
+
await save({});
|
|
117
|
+
throw new PermanentIntegrationError(`Jira rejected the webhook: ${created.errors.filter((value) => typeof value === "string").join("; ")}`);
|
|
118
|
+
}
|
|
119
|
+
if (!Number.isSafeInteger(created.createdWebhookId) || Number(created.createdWebhookId) <= 0)
|
|
120
|
+
throw new TransientIntegrationError("Jira registration returned no confirmed webhook ID.");
|
|
121
|
+
await save({ creating: true, webhookId: Number(created.createdWebhookId) });
|
|
122
|
+
all = await webhooks(context);
|
|
123
|
+
hook = own();
|
|
124
|
+
if (!hook || hook.id !== created.createdWebhookId)
|
|
125
|
+
throw new TransientIntegrationError("The newly registered Jira webhook is not yet visible.");
|
|
126
|
+
}
|
|
127
|
+
if (hook.jqlFilter !== `project = ${projectId}` ||
|
|
128
|
+
hook.events.length !== jiraEvents.length ||
|
|
129
|
+
!jiraEvents.every((event) => hook.events.includes(event)))
|
|
130
|
+
throw new PermanentIntegrationError("The Jira webhook no longer matches this source's project and events. Remove the source subscription before recreating it.");
|
|
131
|
+
if (hook.expiresAt - 7 * day <= now) {
|
|
132
|
+
await webhookRequest(context, { method: "PUT", endpoint: "/webhook/refresh", body: { webhookIds: [hook.id] } });
|
|
133
|
+
const previousId = hook.id;
|
|
134
|
+
all = await webhooks(context);
|
|
135
|
+
hook = own();
|
|
136
|
+
if (!hook || hook.id !== previousId || hook.expiresAt - 7 * day <= now)
|
|
137
|
+
throw new TransientIntegrationError("Jira did not confirm the renewed webhook expiration.");
|
|
138
|
+
}
|
|
139
|
+
await save({ webhookId: hook.id, expiresAt: hook.expiresAt, checkedAt: now });
|
|
140
|
+
return { outcome: "ready" };
|
|
141
|
+
}
|