@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,4 @@
|
|
|
1
|
+
import type { CredentialValidators, ProviderExecutors, ProviderProxyExecutor } from "../../core/types.ts";
|
|
2
|
+
export declare const credentialValidators: CredentialValidators;
|
|
3
|
+
export declare const executors: ProviderExecutors;
|
|
4
|
+
export declare const proxy: ProviderProxyExecutor;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { optionalRecord, optionalString } from "../../core/cast.js";
|
|
2
|
+
import { requiredResponseRecord, runProviderRequest, ProviderRequestError, providerInputError, defineApiKeyProviderExecutors, defineProviderProxy, } from "../provider-runtime.js";
|
|
3
|
+
import { fundableActions } from "./actions.js";
|
|
4
|
+
import { fundableRoutes } from "./actions.js";
|
|
5
|
+
const fundableApiBaseUrl = "https://www.tryfundable.ai/api/v1";
|
|
6
|
+
async function requestFundable(path, method, parameters, apiKey, fetcher, validating = false, parentSignal) {
|
|
7
|
+
const url = new URL(`${fundableApiBaseUrl}${path}`);
|
|
8
|
+
if (method === "GET") {
|
|
9
|
+
for (const [key, value] of Object.entries(parameters)) {
|
|
10
|
+
if (value !== undefined)
|
|
11
|
+
url.searchParams.set(key, String(value));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return runProviderRequest({ label: "fundable", signal: parentSignal }, async (signal) => {
|
|
15
|
+
const headers = new Headers({ accept: "application/json", authorization: `Bearer ${apiKey}` });
|
|
16
|
+
if (method === "POST")
|
|
17
|
+
headers.set("content-type", "application/json");
|
|
18
|
+
const response = await fetcher(url.toString(), {
|
|
19
|
+
method,
|
|
20
|
+
headers,
|
|
21
|
+
body: method === "POST" ? JSON.stringify(parameters) : undefined,
|
|
22
|
+
signal,
|
|
23
|
+
});
|
|
24
|
+
const text = await response.text();
|
|
25
|
+
let payload;
|
|
26
|
+
try {
|
|
27
|
+
payload = JSON.parse(text);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
throw new ProviderRequestError(response.ok ? 502 : response.status, response.ok ? "fundable returned malformed JSON" : `fundable request failed (${response.status})`, undefined, "provider_error");
|
|
31
|
+
}
|
|
32
|
+
const object = optionalRecord(payload);
|
|
33
|
+
if (!response.ok || object?.success === false || object?.error != null) {
|
|
34
|
+
const error = optionalRecord(object?.error);
|
|
35
|
+
const code = optionalString(error?.code);
|
|
36
|
+
const message = optionalString(error?.message) ??
|
|
37
|
+
optionalString(object?.error) ??
|
|
38
|
+
optionalString(object?.message) ??
|
|
39
|
+
`fundable request failed (${response.status})`;
|
|
40
|
+
const detail = code ? `${code}: ${message}` : message;
|
|
41
|
+
if (code === "INVALID_API_KEY" || code === "INACTIVE_API_KEY") {
|
|
42
|
+
throw new ProviderRequestError(validating ? 400 : 409, detail, undefined, validating ? "invalid_input" : "authorization_failed");
|
|
43
|
+
}
|
|
44
|
+
throw new ProviderRequestError(response.ok ? 502 : response.status, detail, undefined, "provider_error");
|
|
45
|
+
}
|
|
46
|
+
return requiredResponseRecord(payload, "Fundable response");
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
async function execute(actionName, values, context) {
|
|
50
|
+
const { apiKey, fetcher } = context;
|
|
51
|
+
const route = fundableRoutes[actionName];
|
|
52
|
+
if (!route)
|
|
53
|
+
throw providerInputError("Unknown action route");
|
|
54
|
+
const path = route.path.replace("{id}", encodeURIComponent(String(values.id)));
|
|
55
|
+
const parameters = { ...values };
|
|
56
|
+
if (route.path.includes("{id}"))
|
|
57
|
+
delete parameters.id;
|
|
58
|
+
return requestFundable(path, route.method, parameters, apiKey, fetcher, undefined, context.signal);
|
|
59
|
+
}
|
|
60
|
+
export const credentialValidators = {
|
|
61
|
+
async apiKey(input, { fetcher, signal }) {
|
|
62
|
+
await requestFundable("/industry/search", "GET", { name: "software" }, input.apiKey, fetcher, true, signal);
|
|
63
|
+
return { profile: { displayName: "Fundable API Key" }, grantedScopes: [], metadata: {} };
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
export const executors = defineApiKeyProviderExecutors("fundable", Object.fromEntries(fundableActions.map((action) => [action.name, (values, context) => execute(action.name, values, context)])));
|
|
67
|
+
export const proxy = defineProviderProxy({
|
|
68
|
+
service: "fundable",
|
|
69
|
+
baseUrl: fundableApiBaseUrl,
|
|
70
|
+
auth: { type: "api_key_authorization", prefix: "Bearer " },
|
|
71
|
+
customizeRequest({ headers }) {
|
|
72
|
+
headers.set("accept", "application/json");
|
|
73
|
+
},
|
|
74
|
+
});
|
|
@@ -1,4 +1,41 @@
|
|
|
1
1
|
export const fusionApiOperations = [
|
|
2
|
+
{
|
|
3
|
+
actionName: "oomol_ocr_submit",
|
|
4
|
+
operationType: "write",
|
|
5
|
+
method: "POST",
|
|
6
|
+
path: "/v1/oomol-ocr/submit",
|
|
7
|
+
tag: "oomol-ocr",
|
|
8
|
+
description: "Recognize image text and suggest corrections for Chinese typos",
|
|
9
|
+
successStatuses: [200],
|
|
10
|
+
pathParams: [],
|
|
11
|
+
inputFields: [
|
|
12
|
+
{
|
|
13
|
+
name: "imageURL",
|
|
14
|
+
kind: "string",
|
|
15
|
+
required: true,
|
|
16
|
+
description: "Publicly accessible image URL.",
|
|
17
|
+
format: "uri",
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: "correct",
|
|
21
|
+
kind: "boolean",
|
|
22
|
+
required: false,
|
|
23
|
+
description: "Generate Chinese typo correction suggestions after text recognition.",
|
|
24
|
+
defaultValue: true,
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
actionName: "oomol_ocr_result",
|
|
30
|
+
operationType: "read",
|
|
31
|
+
method: "GET",
|
|
32
|
+
path: "/v1/oomol-ocr/result/{sessionID}",
|
|
33
|
+
tag: "oomol-ocr",
|
|
34
|
+
description: "Get image text recognition and Chinese typo correction results",
|
|
35
|
+
successStatuses: [200, 202, 404],
|
|
36
|
+
pathParams: ["sessionID"],
|
|
37
|
+
inputFields: [{ name: "sessionID", kind: "string", required: true, description: "Session ID" }],
|
|
38
|
+
},
|
|
2
39
|
{
|
|
3
40
|
actionName: "cphone_nano_banana_result",
|
|
4
41
|
operationType: "read",
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { jsonSchema as s } from "../../core/json-schema.js";
|
|
2
|
+
import { defineProviderAction } from "../../core/provider-definition.js";
|
|
3
|
+
const reportId = s.integer("Report ID returned by search_reports.");
|
|
4
|
+
const raw = s.looseObject("Original upstream response, including additional fields.", {});
|
|
5
|
+
const paragraph = s.looseObject("A matching report paragraph.", {
|
|
6
|
+
content: s.string("Paragraph text, possibly containing highlight markup."),
|
|
7
|
+
pageNum: s.integer("Page number within the report."),
|
|
8
|
+
});
|
|
9
|
+
export const fxbaogaoActions = [
|
|
10
|
+
defineProviderAction("fxbaogao", {
|
|
11
|
+
name: "search_reports",
|
|
12
|
+
description: "Search research reports by keywords, institutions, and publication time. Provide keywords or at least one institution; pages range from 1 to 10.",
|
|
13
|
+
operationType: "read",
|
|
14
|
+
requiredScopes: [],
|
|
15
|
+
inputSchema: {
|
|
16
|
+
...s.object("Report search filters.", {
|
|
17
|
+
keywords: s.nonEmptyString("Search keywords; required unless orgNames contains an institution."),
|
|
18
|
+
orgNames: s.array("Institution names; required unless keywords is provided.", s.nonEmptyString("Institution name.")),
|
|
19
|
+
startTime: s.string("Start time as a millisecond timestamp string or last3day, last7day, last1mon, last3mon, last1year."),
|
|
20
|
+
endTime: s.string("End time as a millisecond timestamp string."),
|
|
21
|
+
pageNum: s.integer("Result page from 1 to 10; defaults to 1.", { minimum: 1, maximum: 10 }),
|
|
22
|
+
}, { required: [] }),
|
|
23
|
+
anyOf: [{ required: ["keywords"] }, { required: ["orgNames"], properties: { orgNames: { minItems: 1 } } }],
|
|
24
|
+
},
|
|
25
|
+
outputSchema: s.requiredObject("Search results with the original response retained.", {
|
|
26
|
+
reports: s.array("Matching research reports.", s.looseObject("Report metadata with upstream extension fields preserved.", {
|
|
27
|
+
reportId,
|
|
28
|
+
title: s.string("Report title, possibly containing highlight markup."),
|
|
29
|
+
orgName: s.string("Publishing institution, possibly containing highlight markup."),
|
|
30
|
+
pubTime: s.unknown("Publication timestamp as returned by the provider."),
|
|
31
|
+
pubTimeStr: s.string("Formatted publication date."),
|
|
32
|
+
industryName: s.string("Industry name."),
|
|
33
|
+
pageNum: s.integer("Number of pages in the report."),
|
|
34
|
+
paragraphs: s.array("Matching text excerpts.", paragraph),
|
|
35
|
+
reportUrl: s.string("Official report reading URL."),
|
|
36
|
+
})),
|
|
37
|
+
raw,
|
|
38
|
+
}),
|
|
39
|
+
}),
|
|
40
|
+
defineProviderAction("fxbaogao", {
|
|
41
|
+
name: "get_paragraphs",
|
|
42
|
+
description: "Read a report's summary and matching paragraphs. Use the PDF for full reading and original-source citations.",
|
|
43
|
+
operationType: "read",
|
|
44
|
+
requiredScopes: [],
|
|
45
|
+
inputSchema: s.object("Report and optional context keyword.", {
|
|
46
|
+
reportId,
|
|
47
|
+
keyword: s.string("Keyword used to locate relevant context within the report."),
|
|
48
|
+
}, { optional: ["keyword"] }),
|
|
49
|
+
outputSchema: s.object("Original report paragraph response.", {
|
|
50
|
+
code: s.integer("Upstream result code; zero indicates success."),
|
|
51
|
+
msg: s.string("Upstream message."),
|
|
52
|
+
data: s.looseObject("Report summary and matching passages.", {
|
|
53
|
+
title: s.string("Report title."),
|
|
54
|
+
summary: s.string("Report summary."),
|
|
55
|
+
paragraphs: s.array("Matching report paragraphs.", paragraph),
|
|
56
|
+
}),
|
|
57
|
+
}, { required: ["code", "data"], additionalProperties: true }),
|
|
58
|
+
}),
|
|
59
|
+
defineProviderAction("fxbaogao", {
|
|
60
|
+
name: "get_pdf_url",
|
|
61
|
+
description: "Get downloadable PDF URLs for a report without transferring binary content through the action response.",
|
|
62
|
+
operationType: "read",
|
|
63
|
+
requiredScopes: [],
|
|
64
|
+
inputSchema: s.requiredObject("Report to download.", { reportId }),
|
|
65
|
+
outputSchema: s.requiredObject("PDF resources and original upstream response.", {
|
|
66
|
+
reportId,
|
|
67
|
+
resources: s.array("Available PDF resources; empty when upstream returns no download URL.", s.requiredObject("A PDF resource.", {
|
|
68
|
+
field: s.string("Upstream field containing this resource."),
|
|
69
|
+
url: s.string("Absolute PDF download URL; it may expire."),
|
|
70
|
+
})),
|
|
71
|
+
raw,
|
|
72
|
+
}),
|
|
73
|
+
}),
|
|
74
|
+
];
|
|
@@ -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,155 @@
|
|
|
1
|
+
import { optionalRecord, optionalRawString, optionalNumber } from "../../core/cast.js";
|
|
2
|
+
import { requiredInputString, requiredResponseRecord, ProviderRequestError, runProviderRequest, defineApiKeyProviderExecutors, defineProviderProxy, mapProviderActionHandlers, readProviderProxyErrorMessage, withRetryAfterSeconds, } from "../provider-runtime.js";
|
|
3
|
+
import { fxbaogaoActions } from "./actions.js";
|
|
4
|
+
const baseUrl = "https://api.fxbaogao.com";
|
|
5
|
+
const defaultHeaders = { accept: "application/json", "content-type": "application/json" };
|
|
6
|
+
const routes = {
|
|
7
|
+
search_reports: "/mofoun/agent/search",
|
|
8
|
+
get_paragraphs: "/mofoun/agent/paragraph",
|
|
9
|
+
get_pdf_url: "/mofoun/agent/download",
|
|
10
|
+
};
|
|
11
|
+
async function request({ route, input, apiKey, fetcher, parentSignal }) {
|
|
12
|
+
try {
|
|
13
|
+
return await runProviderRequest({ signal: parentSignal, label: "Fxbaogao" }, async (signal) => {
|
|
14
|
+
const download = route === routes.get_pdf_url;
|
|
15
|
+
const url = new URL(`${baseUrl}${route}`);
|
|
16
|
+
if (download)
|
|
17
|
+
url.searchParams.set("reportId", String(input.reportId));
|
|
18
|
+
const response = await fetcher(url.toString(), {
|
|
19
|
+
method: download ? "GET" : "POST",
|
|
20
|
+
headers: { ...defaultHeaders, authorization: `Bearer ${apiKey}` },
|
|
21
|
+
body: download ? undefined : JSON.stringify(input),
|
|
22
|
+
signal,
|
|
23
|
+
});
|
|
24
|
+
const text = await response.text();
|
|
25
|
+
let payload;
|
|
26
|
+
try {
|
|
27
|
+
payload = JSON.parse(text);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
payload = undefined;
|
|
31
|
+
}
|
|
32
|
+
const body = optionalRecord(payload);
|
|
33
|
+
if (!response.ok || (body?.code != null && body.code !== 0)) {
|
|
34
|
+
const detail = [
|
|
35
|
+
optionalRawString(body?.code) ?? optionalNumber(body?.code),
|
|
36
|
+
optionalRawString(body?.msg) ?? optionalRawString(body?.message),
|
|
37
|
+
]
|
|
38
|
+
.filter((value) => value != null && value !== "")
|
|
39
|
+
.join(": ") || `HTTP ${response.status}`;
|
|
40
|
+
throw new ProviderRequestError(response.ok ? 502 : response.status, `Fxbaogao request failed: ${detail}`, undefined, response.status === 429 ? "rate_limited" : "provider_error");
|
|
41
|
+
}
|
|
42
|
+
return requiredResponseRecord(payload, "Fxbaogao response");
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
if (error instanceof ProviderRequestError)
|
|
47
|
+
error.message = error.message.split(apiKey).join("[REDACTED]");
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function extractPdfResources(payload) {
|
|
52
|
+
const resources = [];
|
|
53
|
+
const seen = new Set();
|
|
54
|
+
const urlKeys = new Set(["pdfurl", "url", "fileurl", "downloadurl"]);
|
|
55
|
+
function walk(value) {
|
|
56
|
+
if (Array.isArray(value)) {
|
|
57
|
+
for (const item of value)
|
|
58
|
+
walk(item);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const object = optionalRecord(value);
|
|
62
|
+
if (!object)
|
|
63
|
+
return;
|
|
64
|
+
for (const [field, child] of Object.entries(object)) {
|
|
65
|
+
if (typeof child !== "string") {
|
|
66
|
+
walk(child);
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
const key = field.toLowerCase();
|
|
70
|
+
const reference = child.trim();
|
|
71
|
+
if (!reference ||
|
|
72
|
+
!(urlKeys.has(key) ||
|
|
73
|
+
(key === "data" &&
|
|
74
|
+
(reference.startsWith("http://") ||
|
|
75
|
+
reference.startsWith("https://") ||
|
|
76
|
+
reference.startsWith("/") ||
|
|
77
|
+
reference.toLowerCase().includes(".pdf")))))
|
|
78
|
+
continue;
|
|
79
|
+
try {
|
|
80
|
+
const url = new URL(reference, "https://dr.fxbaogao.com/");
|
|
81
|
+
if ((url.protocol === "https:" || url.protocol === "http:") && !seen.has(url.href)) {
|
|
82
|
+
seen.add(url.href);
|
|
83
|
+
resources.push({ field, url: url.href });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
/* 忽略上游不可解析的下载地址。 */
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
walk(payload);
|
|
92
|
+
return resources;
|
|
93
|
+
}
|
|
94
|
+
const handlers = mapProviderActionHandlers("fxbaogao", fxbaogaoActions, (action) => async (dataInput, context) => {
|
|
95
|
+
const route = routes[action.name];
|
|
96
|
+
const query = dataInput;
|
|
97
|
+
const body = action.name === "search_reports"
|
|
98
|
+
? {
|
|
99
|
+
...query,
|
|
100
|
+
keywords: query.keywords ?? "",
|
|
101
|
+
orgNames: query.orgNames ?? [],
|
|
102
|
+
pageNum: query.pageNum ?? 1,
|
|
103
|
+
}
|
|
104
|
+
: query;
|
|
105
|
+
const raw = await request({
|
|
106
|
+
route: route,
|
|
107
|
+
input: body,
|
|
108
|
+
apiKey: context.apiKey,
|
|
109
|
+
fetcher: context.fetcher,
|
|
110
|
+
parentSignal: context.signal,
|
|
111
|
+
});
|
|
112
|
+
if (action.name === "search_reports") {
|
|
113
|
+
const reports = Array.isArray(raw.data) ? raw.data : optionalRecord(raw.data)?.dataList;
|
|
114
|
+
if (!Array.isArray(reports))
|
|
115
|
+
throw new ProviderRequestError(502, "Fxbaogao search response is missing its report list", undefined, "provider_error");
|
|
116
|
+
return {
|
|
117
|
+
reports: reports.map((value) => {
|
|
118
|
+
const report = optionalRecord(value);
|
|
119
|
+
if (!report || report.reportId == null)
|
|
120
|
+
return value;
|
|
121
|
+
return {
|
|
122
|
+
...report,
|
|
123
|
+
reportUrl: `https://www.fxbaogao.com/view?id=${encodeURIComponent(String(report.reportId))}`,
|
|
124
|
+
};
|
|
125
|
+
}),
|
|
126
|
+
raw,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
if (action.name === "get_pdf_url")
|
|
130
|
+
return { reportId: query.reportId, resources: extractPdfResources(raw), raw };
|
|
131
|
+
return raw;
|
|
132
|
+
});
|
|
133
|
+
export const executors = defineApiKeyProviderExecutors("fxbaogao", handlers, {
|
|
134
|
+
skipDnsValidation: true,
|
|
135
|
+
});
|
|
136
|
+
export const credentialValidators = {
|
|
137
|
+
async apiKey(input) {
|
|
138
|
+
requiredInputString(input.apiKey, "API Key");
|
|
139
|
+
return { profile: { displayName: "Fxbaogao API Key" }, grantedScopes: [], metadata: { apiBaseUrl: baseUrl } };
|
|
140
|
+
},
|
|
141
|
+
};
|
|
142
|
+
export const proxy = defineProviderProxy({
|
|
143
|
+
service: "fxbaogao",
|
|
144
|
+
baseUrl,
|
|
145
|
+
auth: { type: "api_key_authorization", prefix: "Bearer " },
|
|
146
|
+
skipDnsValidation: true,
|
|
147
|
+
customizeRequest({ headers }) {
|
|
148
|
+
for (const [name, value] of Object.entries({ accept: "application/json", "content-type": "application/json" }))
|
|
149
|
+
if (!headers.has(name))
|
|
150
|
+
headers.set(name, value);
|
|
151
|
+
},
|
|
152
|
+
async readError(response) {
|
|
153
|
+
return new ProviderRequestError(response.status, await readProviderProxyErrorMessage(response, "Provider request failed"), withRetryAfterSeconds(response), response.status === 429 ? "rate_limited" : "provider_error");
|
|
154
|
+
},
|
|
155
|
+
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface GitHubAppInstallationCredential {
|
|
2
|
+
appId: string;
|
|
3
|
+
installationId: string;
|
|
4
|
+
/** PKCS#8 PEM, converted from the PKCS#1 PEM GitHub downloads when needed. */
|
|
5
|
+
privateKey: string;
|
|
6
|
+
}
|
|
7
|
+
interface GitHubInstallationToken {
|
|
8
|
+
token: string;
|
|
9
|
+
/** ISO timestamp from GitHub; tokens live one hour. */
|
|
10
|
+
expiresAt: string;
|
|
11
|
+
permissions: Record<string, string>;
|
|
12
|
+
repositorySelection: string | undefined;
|
|
13
|
+
}
|
|
14
|
+
interface GitHubAppInstallation {
|
|
15
|
+
id: number;
|
|
16
|
+
account: Record<string, unknown>;
|
|
17
|
+
permissions: Record<string, string>;
|
|
18
|
+
repository_selection: string;
|
|
19
|
+
[key: string]: unknown;
|
|
20
|
+
}
|
|
21
|
+
export declare function readGitHubAppInstallationCredential(values: Record<string, string>): GitHubAppInstallationCredential;
|
|
22
|
+
/**
|
|
23
|
+
* Wrap a PKCS#1 RSAPrivateKey in the PKCS#8 PrivateKeyInfo structure WebCrypto
|
|
24
|
+
* imports. The wrapper is fixed for RSA: version 0, the rsaEncryption algorithm
|
|
25
|
+
* identifier with a NULL parameter, then the PKCS#1 DER as an OCTET STRING.
|
|
26
|
+
*/
|
|
27
|
+
export declare function pkcs1ToPkcs8Pem(pkcs1Pem: string): string;
|
|
28
|
+
/** Sign the App JWT GitHub's App endpoints and the token mint take as bearer. */
|
|
29
|
+
export declare function signGitHubAppJwt(credential: GitHubAppInstallationCredential): Promise<string>;
|
|
30
|
+
/** Describe the installation the credential names, authenticated as the App. */
|
|
31
|
+
export declare function fetchGitHubAppInstallation(credential: GitHubAppInstallationCredential, fetcher: typeof fetch, signal?: AbortSignal): Promise<GitHubAppInstallation>;
|
|
32
|
+
/** Mint an installation access token with the App's full granted permissions. */
|
|
33
|
+
export declare function mintGitHubInstallationToken(credential: GitHubAppInstallationCredential, fetcher: typeof fetch, signal?: AbortSignal): Promise<GitHubInstallationToken>;
|
|
34
|
+
export declare function clearGitHubInstallationTokenCache(): void;
|
|
35
|
+
/** Resolve installation tokens without letting one caller cancel a shared mint. */
|
|
36
|
+
export declare function createGitHubInstallationTokenResolver(values: Record<string, string>, fetcher: typeof fetch): (signal?: AbortSignal) => Promise<string>;
|
|
37
|
+
export {};
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { importPKCS8, SignJWT } from "jose";
|
|
2
|
+
import { sha256Hex } from "../../core/aws-sigv4.js";
|
|
3
|
+
import { base64Bytes, optionalRecord, optionalString, stringRecord } from "../../core/cast.js";
|
|
4
|
+
import { ProviderRequestError, requiredInputString, runProviderRequest } from "../provider-runtime.js";
|
|
5
|
+
import { githubRequestJson } from "./runtime-shared.js";
|
|
6
|
+
/**
|
|
7
|
+
* GitHub App installation credentials.
|
|
8
|
+
*
|
|
9
|
+
* A GitHub App authenticates in two steps: the App's private key signs a short
|
|
10
|
+
* RS256 JWT that identifies the App, and that JWT is exchanged for an
|
|
11
|
+
* installation access token scoped to one installation (an account that
|
|
12
|
+
* installed the App and the repositories it selected). Installation tokens are
|
|
13
|
+
* what the REST API accepts on repository endpoints; they expire after one hour
|
|
14
|
+
* and cannot be refreshed, only minted again.
|
|
15
|
+
*
|
|
16
|
+
* The stored credential therefore holds the three inputs of that exchange —
|
|
17
|
+
* `appId`, `installationId`, `privateKey` — and the runtime mints tokens on
|
|
18
|
+
* demand, reusing one across calls until shortly before it expires.
|
|
19
|
+
*/
|
|
20
|
+
/** GitHub refuses an App JWT older than ten minutes; nine leaves room for clock skew. */
|
|
21
|
+
const appJwtLifetimeSeconds = 9 * 60;
|
|
22
|
+
/** Issued-at is backdated so a runtime clock slightly ahead of GitHub's still validates. */
|
|
23
|
+
const appJwtClockSkewSeconds = 60;
|
|
24
|
+
/** A cached installation token is replaced this long before GitHub expires it. */
|
|
25
|
+
const installationTokenRenewalMarginMs = 5 * 60 * 1000;
|
|
26
|
+
const pkcs8Marker = "-----BEGIN PRIVATE KEY-----";
|
|
27
|
+
const pkcs1Marker = "-----BEGIN RSA PRIVATE KEY-----";
|
|
28
|
+
export function readGitHubAppInstallationCredential(values) {
|
|
29
|
+
const appId = requiredInputString(values.appId, "appId").trim();
|
|
30
|
+
if (!/^\d+$/u.test(appId)) {
|
|
31
|
+
throw new ProviderRequestError(400, "appId must be the numeric App ID shown on the GitHub App's settings page");
|
|
32
|
+
}
|
|
33
|
+
const installationId = requiredInputString(values.installationId, "installationId").trim();
|
|
34
|
+
if (!/^\d+$/u.test(installationId)) {
|
|
35
|
+
throw new ProviderRequestError(400, "installationId must be the numeric installation id from the installation's settings URL or the post-install redirect");
|
|
36
|
+
}
|
|
37
|
+
return { appId, installationId, privateKey: normalizePrivateKey(values.privateKey) };
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Accept the key as GitHub downloads it (PKCS#1, `BEGIN RSA PRIVATE KEY`) or
|
|
41
|
+
* already converted to PKCS#8, with literal or escaped line breaks.
|
|
42
|
+
*/
|
|
43
|
+
function normalizePrivateKey(value) {
|
|
44
|
+
const pem = requiredInputString(value, "privateKey").replaceAll("\\n", "\n").trim();
|
|
45
|
+
if (pem.includes(pkcs8Marker)) {
|
|
46
|
+
return pem;
|
|
47
|
+
}
|
|
48
|
+
if (pem.includes(pkcs1Marker)) {
|
|
49
|
+
return pkcs1ToPkcs8Pem(pem);
|
|
50
|
+
}
|
|
51
|
+
throw new ProviderRequestError(400, "privateKey must be the PEM contents of the GitHub App private key (.pem) file, starting with -----BEGIN RSA PRIVATE KEY-----");
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Wrap a PKCS#1 RSAPrivateKey in the PKCS#8 PrivateKeyInfo structure WebCrypto
|
|
55
|
+
* imports. The wrapper is fixed for RSA: version 0, the rsaEncryption algorithm
|
|
56
|
+
* identifier with a NULL parameter, then the PKCS#1 DER as an OCTET STRING.
|
|
57
|
+
*/
|
|
58
|
+
export function pkcs1ToPkcs8Pem(pkcs1Pem) {
|
|
59
|
+
const base64 = pkcs1Pem.replace(pkcs1Marker, "").replace("-----END RSA PRIVATE KEY-----", "").replace(/\s+/gu, "");
|
|
60
|
+
const pkcs1 = base64ToBytes(base64);
|
|
61
|
+
const algorithm = Uint8Array.from([
|
|
62
|
+
0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00,
|
|
63
|
+
]);
|
|
64
|
+
const version = Uint8Array.from([0x02, 0x01, 0x00]);
|
|
65
|
+
const keyOctets = derTlv(0x04, pkcs1);
|
|
66
|
+
const body = concatBytes(version, algorithm, keyOctets);
|
|
67
|
+
const pkcs8 = derTlv(0x30, body);
|
|
68
|
+
const lines = bytesToBase64(pkcs8).match(/.{1,64}/gu) ?? [];
|
|
69
|
+
return `${pkcs8Marker}\n${lines.join("\n")}\n-----END PRIVATE KEY-----`;
|
|
70
|
+
}
|
|
71
|
+
function derTlv(tag, value) {
|
|
72
|
+
return concatBytes(Uint8Array.from([tag]), derLength(value.byteLength), value);
|
|
73
|
+
}
|
|
74
|
+
function derLength(length) {
|
|
75
|
+
if (length < 0x80) {
|
|
76
|
+
return Uint8Array.from([length]);
|
|
77
|
+
}
|
|
78
|
+
const bytes = [];
|
|
79
|
+
for (let remaining = length; remaining > 0; remaining = Math.floor(remaining / 0x100)) {
|
|
80
|
+
bytes.unshift(remaining % 0x100);
|
|
81
|
+
}
|
|
82
|
+
return Uint8Array.from([0x80 | bytes.length, ...bytes]);
|
|
83
|
+
}
|
|
84
|
+
function concatBytes(...parts) {
|
|
85
|
+
const out = new Uint8Array(parts.reduce((total, part) => total + part.byteLength, 0));
|
|
86
|
+
let offset = 0;
|
|
87
|
+
for (const part of parts) {
|
|
88
|
+
out.set(part, offset);
|
|
89
|
+
offset += part.byteLength;
|
|
90
|
+
}
|
|
91
|
+
return out;
|
|
92
|
+
}
|
|
93
|
+
function base64ToBytes(base64) {
|
|
94
|
+
return base64Bytes(base64, "privateKey", () => new ProviderRequestError(400, "privateKey is not a valid PEM: its body is not base64"));
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Encode DER bytes for a PEM body. These are key bytes assembled one at a
|
|
98
|
+
* time, so the binary string is Latin-1 by construction; the `btoa` fallback
|
|
99
|
+
* is the same shape the provider source guard allowlists for gitea and
|
|
100
|
+
* pi_hole, and it never sees a credential string.
|
|
101
|
+
*/
|
|
102
|
+
function bytesToBase64(bytes) {
|
|
103
|
+
if (typeof Buffer !== "undefined") {
|
|
104
|
+
return Buffer.from(bytes).toString("base64");
|
|
105
|
+
}
|
|
106
|
+
let binary = "";
|
|
107
|
+
for (const byte of bytes) {
|
|
108
|
+
binary += String.fromCharCode(byte);
|
|
109
|
+
}
|
|
110
|
+
return btoa(binary);
|
|
111
|
+
}
|
|
112
|
+
/** Sign the App JWT GitHub's App endpoints and the token mint take as bearer. */
|
|
113
|
+
export async function signGitHubAppJwt(credential) {
|
|
114
|
+
let signingKey;
|
|
115
|
+
try {
|
|
116
|
+
signingKey = await importPKCS8(credential.privateKey, "RS256");
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
throw new ProviderRequestError(400, "privateKey must be an RSA private key in PEM format, as downloaded from the GitHub App's settings page");
|
|
120
|
+
}
|
|
121
|
+
const now = Math.floor(Date.now() / 1000);
|
|
122
|
+
return new SignJWT({})
|
|
123
|
+
.setProtectedHeader({ alg: "RS256", typ: "JWT" })
|
|
124
|
+
.setIssuer(credential.appId)
|
|
125
|
+
.setIssuedAt(now - appJwtClockSkewSeconds)
|
|
126
|
+
.setExpirationTime(now - appJwtClockSkewSeconds + appJwtLifetimeSeconds)
|
|
127
|
+
.sign(signingKey);
|
|
128
|
+
}
|
|
129
|
+
/** Describe the installation the credential names, authenticated as the App. */
|
|
130
|
+
export async function fetchGitHubAppInstallation(credential, fetcher, signal) {
|
|
131
|
+
return runProviderRequest({ label: "GitHub installation", signal }, async (signal) => githubRequestJson({
|
|
132
|
+
path: `/app/installations/${encodeURIComponent(credential.installationId)}`,
|
|
133
|
+
accessToken: await signGitHubAppJwt(credential),
|
|
134
|
+
fetcher,
|
|
135
|
+
signal,
|
|
136
|
+
}));
|
|
137
|
+
}
|
|
138
|
+
/** Mint an installation access token with the App's full granted permissions. */
|
|
139
|
+
export async function mintGitHubInstallationToken(credential, fetcher, signal) {
|
|
140
|
+
return runProviderRequest({ label: "GitHub installation token", signal }, async (signal) => {
|
|
141
|
+
const minted = await githubRequestJson({
|
|
142
|
+
method: "POST",
|
|
143
|
+
path: `/app/installations/${encodeURIComponent(credential.installationId)}/access_tokens`,
|
|
144
|
+
body: {},
|
|
145
|
+
accessToken: await signGitHubAppJwt(credential),
|
|
146
|
+
fetcher,
|
|
147
|
+
signal,
|
|
148
|
+
});
|
|
149
|
+
const token = optionalString(minted.token);
|
|
150
|
+
const expiresAt = optionalString(minted.expires_at);
|
|
151
|
+
if (!token || !expiresAt) {
|
|
152
|
+
throw new ProviderRequestError(500, "GitHub returned an installation token without a token or expiry", 502);
|
|
153
|
+
}
|
|
154
|
+
return {
|
|
155
|
+
token,
|
|
156
|
+
expiresAt,
|
|
157
|
+
permissions: stringRecord(optionalRecord(minted.permissions) ?? {}),
|
|
158
|
+
repositorySelection: optionalString(minted.repository_selection),
|
|
159
|
+
};
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Installation tokens shared across action runs in this process, keyed by App,
|
|
164
|
+
* installation and private-key digest. A token is reused until five minutes before GitHub expires
|
|
165
|
+
* it; a failed mint evicts itself so the next run retries instead of inheriting
|
|
166
|
+
* the rejection.
|
|
167
|
+
*/
|
|
168
|
+
const installationTokens = new Map();
|
|
169
|
+
export function clearGitHubInstallationTokenCache() {
|
|
170
|
+
installationTokens.clear();
|
|
171
|
+
}
|
|
172
|
+
function cachedInstallationToken(credential, fetcher) {
|
|
173
|
+
const key = `${credential.appId}:${credential.installationId}:${sha256Hex(credential.privateKey)}`;
|
|
174
|
+
const cached = installationTokens.get(key);
|
|
175
|
+
if (!cached) {
|
|
176
|
+
return refreshInstallationToken(key, credential, fetcher);
|
|
177
|
+
}
|
|
178
|
+
// No rejection handler, deliberately. A caller that joined an in-flight mint
|
|
179
|
+
// is told that the mint failed; the eviction in `refreshInstallationToken`
|
|
180
|
+
// has already made the NEXT call start over, so retrying here would turn one
|
|
181
|
+
// failure into a burst of one retry per waiting caller.
|
|
182
|
+
return cached.then((token) => {
|
|
183
|
+
if (isFresh(token)) {
|
|
184
|
+
return token;
|
|
185
|
+
}
|
|
186
|
+
// Stale. Another caller may already have started the replacement while
|
|
187
|
+
// this one was waiting on the old promise; join it rather than minting a
|
|
188
|
+
// second token for the same installation.
|
|
189
|
+
const latest = installationTokens.get(key);
|
|
190
|
+
return latest && latest !== cached ? latest : refreshInstallationToken(key, credential, fetcher);
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
function refreshInstallationToken(key, credential, fetcher) {
|
|
194
|
+
const current = installationTokens.get(key);
|
|
195
|
+
const minting = mintGitHubInstallationToken(credential, fetcher);
|
|
196
|
+
installationTokens.set(key, minting);
|
|
197
|
+
void minting.catch(() => {
|
|
198
|
+
if (installationTokens.get(key) === minting) {
|
|
199
|
+
if (current) {
|
|
200
|
+
installationTokens.set(key, current);
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
installationTokens.delete(key);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
return minting;
|
|
208
|
+
}
|
|
209
|
+
function isFresh(token) {
|
|
210
|
+
const expiresAt = Date.parse(token.expiresAt);
|
|
211
|
+
return Number.isFinite(expiresAt) && expiresAt - Date.now() > installationTokenRenewalMarginMs;
|
|
212
|
+
}
|
|
213
|
+
/** Resolve installation tokens without letting one caller cancel a shared mint. */
|
|
214
|
+
export function createGitHubInstallationTokenResolver(values, fetcher) {
|
|
215
|
+
const credential = readGitHubAppInstallationCredential(values);
|
|
216
|
+
return async (signal) => {
|
|
217
|
+
signal?.throwIfAborted();
|
|
218
|
+
const pending = cachedInstallationToken(credential, fetcher);
|
|
219
|
+
if (!signal)
|
|
220
|
+
return (await pending).token;
|
|
221
|
+
return new Promise((resolve, reject) => {
|
|
222
|
+
const abort = () => reject(signal.reason);
|
|
223
|
+
signal.addEventListener("abort", abort, { once: true });
|
|
224
|
+
void pending.then((token) => {
|
|
225
|
+
signal.removeEventListener("abort", abort);
|
|
226
|
+
resolve(token.token);
|
|
227
|
+
}, (error) => {
|
|
228
|
+
signal.removeEventListener("abort", abort);
|
|
229
|
+
reject(error);
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
};
|
|
233
|
+
}
|