@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,88 @@
|
|
|
1
|
+
import { Hono } from "hono";
|
|
2
|
+
import { ConnectionError } from "../../connection-service.js";
|
|
3
|
+
import { searchActions } from "../../core/action-search.js";
|
|
4
|
+
import { renderActionMarkdown } from "./action-markdown.js";
|
|
5
|
+
import { jsonError, notFound, readConnectionName as defaultReadConnectionName } from "./http-utils.js";
|
|
6
|
+
import { mapConnectionErrorStatus } from "./runtime-api.js";
|
|
7
|
+
import { readSearchQuery, serializeActionSearchResult } from "./runtime-catalog-routes.js";
|
|
8
|
+
function stripWeakPrefix(etag) {
|
|
9
|
+
return etag.startsWith("W/") ? etag.slice(2) : etag;
|
|
10
|
+
}
|
|
11
|
+
function requestMatchesEtag(ifNoneMatch, etag) {
|
|
12
|
+
if (!ifNoneMatch)
|
|
13
|
+
return false;
|
|
14
|
+
if (ifNoneMatch.trim() === "*")
|
|
15
|
+
return true;
|
|
16
|
+
const target = stripWeakPrefix(etag);
|
|
17
|
+
return ifNoneMatch.split(",").some((candidate) => stripWeakPrefix(candidate.trim()) === target);
|
|
18
|
+
}
|
|
19
|
+
/** Console catalog, providers, actions and documentation routes. */
|
|
20
|
+
export function createConsoleCatalogRoutes({ catalog, connections, actionSearch, publicOrigin, getPolicySnapshot, readConnectionName = defaultReadConnectionName, serializeSearchResults: injectedSerializeSearchResults, }) {
|
|
21
|
+
const app = new Hono();
|
|
22
|
+
const serializeSearchResults = injectedSerializeSearchResults ??
|
|
23
|
+
(async (results) => {
|
|
24
|
+
const authenticated = new Set(await connections.listAuthenticatedServices([...new Set(results.map((result) => result.service))]));
|
|
25
|
+
return results.flatMap((result) => {
|
|
26
|
+
const action = catalog.actionsById.get(result.id);
|
|
27
|
+
if (!action)
|
|
28
|
+
return [];
|
|
29
|
+
return [serializeActionSearchResult(result, action, authenticated.has(action.service))];
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
app.get("/providers", (context) => {
|
|
33
|
+
const { providerSummariesJson, providerSummariesEtag } = catalog;
|
|
34
|
+
context.header("ETag", providerSummariesEtag);
|
|
35
|
+
if (requestMatchesEtag(context.req.header("If-None-Match"), providerSummariesEtag)) {
|
|
36
|
+
return context.body(null, 304);
|
|
37
|
+
}
|
|
38
|
+
return context.body(providerSummariesJson, 200, { "Content-Type": "application/json" });
|
|
39
|
+
});
|
|
40
|
+
app.get("/providers/:service", (context) => {
|
|
41
|
+
const provider = catalog.providers.find((p) => p.service === context.req.param("service"));
|
|
42
|
+
if (!provider)
|
|
43
|
+
return notFound(context);
|
|
44
|
+
return context.json(provider);
|
|
45
|
+
});
|
|
46
|
+
app.get("/actions", (context) => context.json(catalog.actions));
|
|
47
|
+
app.get("/actions/search", async (context) => {
|
|
48
|
+
const query = readSearchQuery(context);
|
|
49
|
+
if (!query.ok) {
|
|
50
|
+
return jsonError(context, 400, "invalid_input", query.message);
|
|
51
|
+
}
|
|
52
|
+
const index = await actionSearch.get();
|
|
53
|
+
return context.json(await serializeSearchResults(searchActions(index, query.q, {
|
|
54
|
+
service: query.service,
|
|
55
|
+
limit: query.limit,
|
|
56
|
+
})));
|
|
57
|
+
});
|
|
58
|
+
app.get("/actions/:actionId/agent.md", async (context) => {
|
|
59
|
+
const actionId = context.req.param("actionId");
|
|
60
|
+
const action = catalog.actionsById.get(actionId);
|
|
61
|
+
if (!action)
|
|
62
|
+
return notFound(context);
|
|
63
|
+
try {
|
|
64
|
+
const policy = (await getPolicySnapshot(context)).evaluate(action);
|
|
65
|
+
return context.text(renderActionMarkdown(action, {
|
|
66
|
+
transport: { kind: "http", origin: publicOrigin },
|
|
67
|
+
connection: await connections.getConnectionSummary(action.service, readConnectionName(context)),
|
|
68
|
+
policy,
|
|
69
|
+
}), 200, {
|
|
70
|
+
"content-type": "text/markdown; charset=utf-8",
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
if (error instanceof ConnectionError) {
|
|
75
|
+
const status = mapConnectionErrorStatus(error);
|
|
76
|
+
return jsonError(context, status, error.code, error.message);
|
|
77
|
+
}
|
|
78
|
+
throw error;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
app.get("/actions/:actionId", (context) => {
|
|
82
|
+
const action = catalog.actionsById.get(context.req.param("actionId"));
|
|
83
|
+
if (!action)
|
|
84
|
+
return notFound(context);
|
|
85
|
+
return context.json(action);
|
|
86
|
+
});
|
|
87
|
+
return app;
|
|
88
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ConnectionService } from "../../connection-service.ts";
|
|
2
|
+
import type { RuntimeLogger } from "../../core/types.ts";
|
|
3
|
+
import type { OAuthClientConfigService } from "../../oauth/oauth-client-config-service.ts";
|
|
4
|
+
import type { OAuthFlowService } from "../../oauth/oauth-flow-service.ts";
|
|
5
|
+
import type { SaasProjectService } from "../../saas/saas-project-service.ts";
|
|
6
|
+
import type { Context } from "hono";
|
|
7
|
+
import { Hono } from "hono";
|
|
8
|
+
export interface ConsoleOAuthRoutesOptions {
|
|
9
|
+
connections: ConnectionService;
|
|
10
|
+
oauthFlow: OAuthFlowService;
|
|
11
|
+
oauthClientConfigs: OAuthClientConfigService;
|
|
12
|
+
saasProject?: SaasProjectService;
|
|
13
|
+
logger?: RuntimeLogger;
|
|
14
|
+
oauthCloseDelaySeconds?: number;
|
|
15
|
+
readConnectionName?: (context: Context, body?: Record<string, unknown>) => string | undefined;
|
|
16
|
+
}
|
|
17
|
+
/** Console connection management and OAuth client configuration / authorization routes. */
|
|
18
|
+
export declare function createConsoleOAuthRoutes({ connections, oauthFlow, oauthClientConfigs, saasProject, logger, oauthCloseDelaySeconds, readConnectionName, }: ConsoleOAuthRoutesOptions): Hono;
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
import { Hono } from "hono";
|
|
2
|
+
import { ConnectionError } from "../../connection-service.js";
|
|
3
|
+
import { optionalBoolean, optionalRecord, optionalString, requiredRawString, requiredString, requiredStringArray, } from "../../core/cast.js";
|
|
4
|
+
import { OAuthClientConfigError } from "../../oauth/oauth-client-config-service.js";
|
|
5
|
+
import { OAuthCallbackError, OAuthFlowError } from "../../oauth/oauth-flow-service.js";
|
|
6
|
+
import { HttpRequestError, jsonError, readConnectionName as defaultReadConnectionName, readJsonBody, } from "./http-utils.js";
|
|
7
|
+
import { renderOAuthCompletionPage } from "./oauth-completion-page.js";
|
|
8
|
+
function readOAuthClientConfigInput(body) {
|
|
9
|
+
const keys = ["clientId", "clientSecret", "requestedScopes", "redirectUri", "extra", "secretExtra"];
|
|
10
|
+
if (!keys.some((key) => key in body)) {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
clientId: optionalString(body.clientId) ?? "",
|
|
15
|
+
clientSecret: optionalString(body.clientSecret) ?? "",
|
|
16
|
+
requestedScopes: readOptionalStringArray(body, "requestedScopes"),
|
|
17
|
+
redirectUri: readOptionalRawString(body, "redirectUri"),
|
|
18
|
+
extra: optionalRecord(body.extra),
|
|
19
|
+
secretExtra: optionalRecord(body.secretExtra),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/** An absent field is undefined; a present one, null included, must be a string (blank is kept for the caller to read as unset). */
|
|
23
|
+
function readOptionalRawString(body, fieldName) {
|
|
24
|
+
if (!(fieldName in body))
|
|
25
|
+
return undefined;
|
|
26
|
+
return requiredRawString(body[fieldName], fieldName, (message) => new HttpRequestError("invalid_input", `${message}.`));
|
|
27
|
+
}
|
|
28
|
+
function readOptionalStringArray(body, fieldName) {
|
|
29
|
+
if (!(fieldName in body))
|
|
30
|
+
return undefined;
|
|
31
|
+
return requiredStringArray(body[fieldName], fieldName, (message) => new HttpRequestError("invalid_input", `${message}.`));
|
|
32
|
+
}
|
|
33
|
+
/** Console connection management and OAuth client configuration / authorization routes. */
|
|
34
|
+
export function createConsoleOAuthRoutes({ connections, oauthFlow, oauthClientConfigs, saasProject, logger, oauthCloseDelaySeconds, readConnectionName = defaultReadConnectionName, }) {
|
|
35
|
+
const app = new Hono();
|
|
36
|
+
const writeConnectionResult = async (context, operation, logContext) => {
|
|
37
|
+
try {
|
|
38
|
+
const result = await operation;
|
|
39
|
+
if (logContext) {
|
|
40
|
+
logger?.info(logContext, logContext.operation === "disconnect" ? "connection disconnect completed" : "connection completed");
|
|
41
|
+
}
|
|
42
|
+
return context.json(result);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
if (error instanceof ConnectionError) {
|
|
46
|
+
if (logContext) {
|
|
47
|
+
const cancelled = error.code === "connection_cancelled";
|
|
48
|
+
logger?.[cancelled ? "info" : "warn"]({
|
|
49
|
+
...logContext,
|
|
50
|
+
errorCode: error.code,
|
|
51
|
+
}, cancelled
|
|
52
|
+
? "connection cancelled"
|
|
53
|
+
: logContext.operation === "disconnect"
|
|
54
|
+
? "connection disconnect failed"
|
|
55
|
+
: "connection failed");
|
|
56
|
+
}
|
|
57
|
+
return jsonError(context, error.code === "unknown_service" ? 404 : 400, error.code, error.message);
|
|
58
|
+
}
|
|
59
|
+
throw error;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
const writeOAuthResult = async (context, operation) => {
|
|
63
|
+
try {
|
|
64
|
+
return context.json(await operation);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
if (error instanceof OAuthClientConfigError || error instanceof OAuthFlowError) {
|
|
68
|
+
return jsonError(context, error.code === "unknown_service" ? 404 : 400, error.code, error.message);
|
|
69
|
+
}
|
|
70
|
+
if (error instanceof HttpRequestError) {
|
|
71
|
+
return jsonError(context, 400, error.code, error.message);
|
|
72
|
+
}
|
|
73
|
+
throw error;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
app.get("/api/connections", async (context) => context.json(await connections.listConnections()));
|
|
77
|
+
app.put("/api/connections/:service", async (context) => {
|
|
78
|
+
const service = context.req.param("service");
|
|
79
|
+
const body = await readJsonBody(context);
|
|
80
|
+
const authType = optionalString(body.authType);
|
|
81
|
+
if (!authType) {
|
|
82
|
+
logger?.warn({
|
|
83
|
+
errorCode: "invalid_input",
|
|
84
|
+
path: context.req.path,
|
|
85
|
+
service,
|
|
86
|
+
}, "connection rejected");
|
|
87
|
+
return jsonError(context, 400, "invalid_input", "authType is required.");
|
|
88
|
+
}
|
|
89
|
+
const values = body.values ?? body;
|
|
90
|
+
const connectionName = readConnectionName(context, body);
|
|
91
|
+
const logContext = {
|
|
92
|
+
operation: "connect",
|
|
93
|
+
path: context.req.path,
|
|
94
|
+
service,
|
|
95
|
+
authType,
|
|
96
|
+
connectionName,
|
|
97
|
+
};
|
|
98
|
+
if (authType === "no_auth") {
|
|
99
|
+
logger?.info(logContext, "connection started");
|
|
100
|
+
return writeConnectionResult(context, connections.connectWithoutAuth(service, { connectionName }), logContext);
|
|
101
|
+
}
|
|
102
|
+
if (authType === "api_key") {
|
|
103
|
+
logger?.info(logContext, "connection started");
|
|
104
|
+
return writeConnectionResult(context, connections.connectWithApiKey(service, {
|
|
105
|
+
values,
|
|
106
|
+
connectionName,
|
|
107
|
+
signal: context.req.raw.signal,
|
|
108
|
+
}), logContext);
|
|
109
|
+
}
|
|
110
|
+
if (authType === "custom_credential") {
|
|
111
|
+
logger?.info(logContext, "connection started");
|
|
112
|
+
return writeConnectionResult(context, connections.connectWithCustomCredential(service, {
|
|
113
|
+
values,
|
|
114
|
+
connectionName,
|
|
115
|
+
signal: context.req.raw.signal,
|
|
116
|
+
}), logContext);
|
|
117
|
+
}
|
|
118
|
+
logger?.warn({
|
|
119
|
+
...logContext,
|
|
120
|
+
errorCode: "unsupported_auth_type",
|
|
121
|
+
}, "connection rejected");
|
|
122
|
+
return jsonError(context, 400, "unsupported_auth_type", `${service} does not support ${authType}.`);
|
|
123
|
+
});
|
|
124
|
+
app.delete("/api/connections/:service", async (context) => {
|
|
125
|
+
const service = context.req.param("service");
|
|
126
|
+
const body = await readJsonBody(context);
|
|
127
|
+
const connectionName = readConnectionName(context, body);
|
|
128
|
+
const logContext = {
|
|
129
|
+
operation: "disconnect",
|
|
130
|
+
path: context.req.path,
|
|
131
|
+
service,
|
|
132
|
+
connectionName,
|
|
133
|
+
};
|
|
134
|
+
logger?.info(logContext, "connection disconnect started");
|
|
135
|
+
return writeConnectionResult(context, connections.disconnect(service, connectionName, { revoke: optionalBoolean(body.revoke) }), logContext);
|
|
136
|
+
});
|
|
137
|
+
app.get("/api/oauth/configs", async (context) => {
|
|
138
|
+
const configs = await oauthClientConfigs.listConfigs();
|
|
139
|
+
const sources = await saasProject?.listSources();
|
|
140
|
+
return context.json(configs.map((config) => ({
|
|
141
|
+
...config,
|
|
142
|
+
oauthSource: sources?.get(config.service) ?? { mode: "local" },
|
|
143
|
+
customClientAvailable: sources?.has(config.service) ? false : config.customClientAvailable,
|
|
144
|
+
})));
|
|
145
|
+
});
|
|
146
|
+
app.put("/api/oauth/configs/:service", async (context) => {
|
|
147
|
+
const service = context.req.param("service");
|
|
148
|
+
const body = await readJsonBody(context);
|
|
149
|
+
return writeOAuthResult(context, oauthClientConfigs.upsertConfig({
|
|
150
|
+
service,
|
|
151
|
+
clientId: optionalString(body.clientId) ?? "",
|
|
152
|
+
clientSecret: optionalString(body.clientSecret) ?? "",
|
|
153
|
+
requestedScopes: readOptionalStringArray(body, "requestedScopes"),
|
|
154
|
+
redirectUri: readOptionalRawString(body, "redirectUri"),
|
|
155
|
+
extra: optionalRecord(body.extra),
|
|
156
|
+
secretExtra: optionalRecord(body.secretExtra),
|
|
157
|
+
}));
|
|
158
|
+
});
|
|
159
|
+
app.delete("/api/oauth/configs/:service", async (context) => {
|
|
160
|
+
const service = context.req.param("service");
|
|
161
|
+
return writeOAuthResult(context, oauthClientConfigs.deleteConfig(service));
|
|
162
|
+
});
|
|
163
|
+
app.post("/api/oauth/connection-requests", async (context) => {
|
|
164
|
+
try {
|
|
165
|
+
const { consoleOAuthConnectionInput } = await import("./connection-input.js");
|
|
166
|
+
const parsed = consoleOAuthConnectionInput.safeParse(await readJsonBody(context));
|
|
167
|
+
if (!parsed.success)
|
|
168
|
+
return jsonError(context, 400, "invalid_input", "Invalid OAuth connection request.");
|
|
169
|
+
const { appId, ...input } = parsed.data;
|
|
170
|
+
const target = appId ? await connections.getStoredConnection(appId) : undefined;
|
|
171
|
+
if (target && (target.service !== input.service || target.connectionName !== input.connectionName))
|
|
172
|
+
return jsonError(context, 400, "invalid_input", "The selected connection no longer matches.");
|
|
173
|
+
return context.json(await oauthFlow.startConnectionRequest({
|
|
174
|
+
...input,
|
|
175
|
+
target,
|
|
176
|
+
owner: "local-admin",
|
|
177
|
+
signal: context.req.raw.signal,
|
|
178
|
+
}));
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
if (error instanceof OAuthClientConfigError ||
|
|
182
|
+
error instanceof OAuthFlowError ||
|
|
183
|
+
error instanceof ConnectionError)
|
|
184
|
+
return jsonError(context, error.code === "unknown_service" || error.code === "app_not_found" ? 404 : 400, error.code, error.message);
|
|
185
|
+
throw error;
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
app.post("/api/oauth/authorizations", async (context) => {
|
|
189
|
+
const body = await readJsonBody(context);
|
|
190
|
+
const requestedService = optionalString(body.service);
|
|
191
|
+
const connectionName = readConnectionName(context, body);
|
|
192
|
+
try {
|
|
193
|
+
const service = requiredString(body.service, "service", (message) => new OAuthFlowError("invalid_input", message));
|
|
194
|
+
const logContext = {
|
|
195
|
+
path: context.req.path,
|
|
196
|
+
service,
|
|
197
|
+
connectionName,
|
|
198
|
+
};
|
|
199
|
+
logger?.info(logContext, "oauth authorization started");
|
|
200
|
+
const authorization = await oauthFlow.startAuthorization({
|
|
201
|
+
service,
|
|
202
|
+
connectionName,
|
|
203
|
+
clientConfig: readOAuthClientConfigInput(body),
|
|
204
|
+
authorizationOptionIds: readOptionalStringArray(body, "authorizationOptionIds"),
|
|
205
|
+
});
|
|
206
|
+
const authorizationUrl = new URL(authorization.authorizationUrl);
|
|
207
|
+
logger?.info({
|
|
208
|
+
...logContext,
|
|
209
|
+
authorizationHost: authorizationUrl.host,
|
|
210
|
+
redirectUri: authorizationUrl.searchParams.get("redirect_uri") ?? undefined,
|
|
211
|
+
}, "oauth authorization created");
|
|
212
|
+
return context.json(authorization);
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
if (error instanceof OAuthClientConfigError ||
|
|
216
|
+
error instanceof OAuthFlowError ||
|
|
217
|
+
error instanceof ConnectionError) {
|
|
218
|
+
logger?.warn({
|
|
219
|
+
errorCode: error.code,
|
|
220
|
+
path: context.req.path,
|
|
221
|
+
service: requestedService,
|
|
222
|
+
connectionName,
|
|
223
|
+
}, "oauth authorization failed");
|
|
224
|
+
const status = error.code === "unknown_service" ? 404 : 400;
|
|
225
|
+
return jsonError(context, status, error.code, error.message);
|
|
226
|
+
}
|
|
227
|
+
throw error;
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
app.get("/oauth/callback", async (context) => {
|
|
231
|
+
const state = context.req.query("state");
|
|
232
|
+
const code = context.req.query("code");
|
|
233
|
+
const logContext = {
|
|
234
|
+
path: context.req.path,
|
|
235
|
+
hasState: Boolean(state),
|
|
236
|
+
hasCode: Boolean(code),
|
|
237
|
+
};
|
|
238
|
+
logger?.info(logContext, "oauth callback received");
|
|
239
|
+
const providerError = context.req.query("error");
|
|
240
|
+
if (providerError) {
|
|
241
|
+
const returnUri = state
|
|
242
|
+
? await oauthFlow.rejectAuthorization(state, providerError === "access_denied")
|
|
243
|
+
: undefined;
|
|
244
|
+
if (returnUri)
|
|
245
|
+
return context.redirect(returnUri);
|
|
246
|
+
const providerErrorDescription = context.req.query("error_description");
|
|
247
|
+
logger?.warn({
|
|
248
|
+
...logContext,
|
|
249
|
+
errorCode: "oauth_provider_error",
|
|
250
|
+
providerError,
|
|
251
|
+
providerErrorDescription,
|
|
252
|
+
}, "oauth callback failed");
|
|
253
|
+
return jsonError(context, 400, "oauth_provider_error", `OAuth provider returned error "${providerError}"${providerErrorDescription ? `: ${providerErrorDescription}` : "."}`);
|
|
254
|
+
}
|
|
255
|
+
if (!state || !code) {
|
|
256
|
+
if (state)
|
|
257
|
+
await oauthFlow.rejectAuthorization(state, false);
|
|
258
|
+
logger?.warn({
|
|
259
|
+
...logContext,
|
|
260
|
+
errorCode: "invalid_oauth_callback",
|
|
261
|
+
}, "oauth callback failed");
|
|
262
|
+
return jsonError(context, 400, "invalid_oauth_callback", "OAuth callback requires state and code.");
|
|
263
|
+
}
|
|
264
|
+
let service;
|
|
265
|
+
try {
|
|
266
|
+
const callbackUrl = new URL(context.req.url);
|
|
267
|
+
const completed = await oauthFlow.completeAuthorization({
|
|
268
|
+
state,
|
|
269
|
+
code,
|
|
270
|
+
callbackParameters: Object.fromEntries(callbackUrl.searchParams),
|
|
271
|
+
callbackQuery: callbackUrl.search,
|
|
272
|
+
signal: context.req.raw.signal,
|
|
273
|
+
});
|
|
274
|
+
service = completed.service;
|
|
275
|
+
if (completed.returnUri)
|
|
276
|
+
return context.redirect(completed.returnUri);
|
|
277
|
+
logger?.info({
|
|
278
|
+
...logContext,
|
|
279
|
+
service,
|
|
280
|
+
}, "oauth callback completed");
|
|
281
|
+
}
|
|
282
|
+
catch (error) {
|
|
283
|
+
if (error instanceof OAuthCallbackError && error.returnUri)
|
|
284
|
+
return context.redirect(error.returnUri);
|
|
285
|
+
if (error instanceof OAuthFlowError || error instanceof ConnectionError) {
|
|
286
|
+
const cancelled = error instanceof ConnectionError && error.code === "connection_cancelled";
|
|
287
|
+
logger?.[cancelled ? "info" : "warn"]({
|
|
288
|
+
...logContext,
|
|
289
|
+
errorCode: error.code,
|
|
290
|
+
}, cancelled ? "oauth callback cancelled" : "oauth callback failed");
|
|
291
|
+
return jsonError(context, error.code === "unknown_service" ? 404 : 400, error.code, error.message);
|
|
292
|
+
}
|
|
293
|
+
throw error;
|
|
294
|
+
}
|
|
295
|
+
return context.html(renderOAuthCompletionPage(service, oauthCloseDelaySeconds));
|
|
296
|
+
});
|
|
297
|
+
return app;
|
|
298
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ProviderDefinition } from "../../core/types.ts";
|
|
2
|
+
import type { MiddlewareHandler } from "hono";
|
|
3
|
+
import { Hono } from "hono";
|
|
4
|
+
/** The Scalar API reference is only rendered for /docs, so its package is loaded on demand. */
|
|
5
|
+
export declare function loadDocsHandler(openapiUrl?: string): Promise<MiddlewareHandler>;
|
|
6
|
+
export interface DocsRoutesOptions {
|
|
7
|
+
providers: ProviderDefinition[];
|
|
8
|
+
publicOrigin: string;
|
|
9
|
+
serveDocumentation?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/** OpenAPI 3.1 schema and interactive documentation routes. */
|
|
12
|
+
export declare function createDocsRoutes({ providers, publicOrigin, serveDocumentation }: DocsRoutesOptions): Hono;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Hono } from "hono";
|
|
2
|
+
import { optionalString } from "../../core/cast.js";
|
|
3
|
+
import { PromiseCache } from "../../core/promise-cache.js";
|
|
4
|
+
const docsHandler = new PromiseCache();
|
|
5
|
+
/** The Scalar API reference is only rendered for /docs, so its package is loaded on demand. */
|
|
6
|
+
export function loadDocsHandler(openapiUrl = "/openapi.json") {
|
|
7
|
+
return docsHandler.get(openapiUrl, async () => {
|
|
8
|
+
const { Scalar } = await import("@scalar/hono-api-reference");
|
|
9
|
+
return Scalar({
|
|
10
|
+
pageTitle: "OOMOL Connect API Reference",
|
|
11
|
+
url: openapiUrl,
|
|
12
|
+
theme: "default",
|
|
13
|
+
darkMode: false,
|
|
14
|
+
forceDarkModeState: "light",
|
|
15
|
+
customCss: `
|
|
16
|
+
:root {
|
|
17
|
+
--scalar-color-accent: rgb(59, 99, 251);
|
|
18
|
+
--scalar-background-accent: rgba(59, 99, 251, 0.12);
|
|
19
|
+
}
|
|
20
|
+
`,
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
/** OpenAPI 3.1 schema and interactive documentation routes. */
|
|
25
|
+
export function createDocsRoutes({ providers, publicOrigin, serveDocumentation }) {
|
|
26
|
+
const app = new Hono();
|
|
27
|
+
app.get("/openapi.json", async (context) => {
|
|
28
|
+
const { createOpenApiDocument } = await import("./openapi.js");
|
|
29
|
+
return context.json(createOpenApiDocument(providers, {
|
|
30
|
+
actionId: optionalString(context.req.query("actionId")),
|
|
31
|
+
}));
|
|
32
|
+
});
|
|
33
|
+
if (serveDocumentation !== false) {
|
|
34
|
+
const openapiUrl = `${new URL(publicOrigin).pathname.replace(/\/+$/, "")}/openapi.json`;
|
|
35
|
+
app.get("/docs", async (context, next) => (await loadDocsHandler(openapiUrl))(context, next));
|
|
36
|
+
}
|
|
37
|
+
return app;
|
|
38
|
+
}
|
|
@@ -37,3 +37,4 @@ export declare class HttpRequestError extends Error {
|
|
|
37
37
|
readonly status: RuntimeStatus;
|
|
38
38
|
constructor(code: string, message: string, status?: RuntimeStatus);
|
|
39
39
|
}
|
|
40
|
+
export declare function readConnectionName(context: Context, body?: Record<string, unknown>): string | undefined;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { optionalString } from "../../core/cast.js";
|
|
1
2
|
/**
|
|
2
3
|
* Read an optional JSON object request body.
|
|
3
4
|
*
|
|
@@ -91,3 +92,10 @@ export class HttpRequestError extends Error {
|
|
|
91
92
|
this.status = status;
|
|
92
93
|
}
|
|
93
94
|
}
|
|
95
|
+
export function readConnectionName(context, body) {
|
|
96
|
+
return (optionalString(body?.connectionName) ??
|
|
97
|
+
optionalString(body?.alias) ??
|
|
98
|
+
optionalString(context.req.header("x-oo-connector-alias")) ??
|
|
99
|
+
optionalString(context.req.query("connectionName")) ??
|
|
100
|
+
optionalString(context.req.query("alias")));
|
|
101
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { MarketplaceService } from "../../marketplace/marketplace-service.ts";
|
|
2
|
+
import { Hono } from "hono";
|
|
3
|
+
export interface MarketplaceRoutesOptions {
|
|
4
|
+
marketplace: MarketplaceService;
|
|
5
|
+
}
|
|
6
|
+
/** Marketplace configuration and provider preference routes. */
|
|
7
|
+
export declare function createMarketplaceRoutes({ marketplace }: MarketplaceRoutesOptions): Hono;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Hono } from "hono";
|
|
2
|
+
import { optionalString } from "../../core/cast.js";
|
|
3
|
+
import { MarketplaceError } from "../../marketplace/marketplace-service.js";
|
|
4
|
+
import { jsonError, readJsonBody } from "./http-utils.js";
|
|
5
|
+
function writeMarketplaceError(context, error) {
|
|
6
|
+
const status = error.status;
|
|
7
|
+
return jsonError(context, status === 401 || status === 403 || status === 404 || status === 502 || status === 504 ? status : 400, error.code, error.message);
|
|
8
|
+
}
|
|
9
|
+
/** Marketplace configuration and provider preference routes. */
|
|
10
|
+
export function createMarketplaceRoutes({ marketplace }) {
|
|
11
|
+
const app = new Hono();
|
|
12
|
+
app.get("/marketplace", (context) => context.json(marketplace.getState()));
|
|
13
|
+
app.get("/marketplace/discovery", async (context) => {
|
|
14
|
+
try {
|
|
15
|
+
return context.json(await marketplace.getDefaultDiscovery(context.req.raw.signal));
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
if (error instanceof MarketplaceError)
|
|
19
|
+
return writeMarketplaceError(context, error);
|
|
20
|
+
throw error;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
const configureMarketplace = async (context) => {
|
|
24
|
+
const body = await readJsonBody(context);
|
|
25
|
+
const input = {
|
|
26
|
+
discoveryUrl: optionalString(body.discoveryUrl),
|
|
27
|
+
apiKey: optionalString(body.apiKey),
|
|
28
|
+
enabled: typeof body.enabled === "boolean" ? body.enabled : undefined,
|
|
29
|
+
};
|
|
30
|
+
try {
|
|
31
|
+
return context.json(await marketplace.configure(input));
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
if (error instanceof MarketplaceError)
|
|
35
|
+
return writeMarketplaceError(context, error);
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
app.put("/marketplace", configureMarketplace);
|
|
40
|
+
app.patch("/marketplace", configureMarketplace);
|
|
41
|
+
app.delete("/marketplace", async (context) => {
|
|
42
|
+
await marketplace.remove();
|
|
43
|
+
return context.json(marketplace.getState());
|
|
44
|
+
});
|
|
45
|
+
app.get("/provider-preferences", async (context) => context.json(await marketplace.listProviderPreferences()));
|
|
46
|
+
app.patch("/provider-preferences/:service", async (context) => {
|
|
47
|
+
const service = context.req.param("service");
|
|
48
|
+
const body = await readJsonBody(context);
|
|
49
|
+
if (typeof body.enabled !== "boolean") {
|
|
50
|
+
return jsonError(context, 400, "invalid_input", "enabled must be a boolean.");
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
return context.json(await marketplace.setProviderEnabled(service, body.enabled));
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
if (error instanceof MarketplaceError)
|
|
57
|
+
return jsonError(context, 404, error.code, error.message);
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
return app;
|
|
62
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CatalogStore } from "../../catalog-store.ts";
|
|
2
|
+
import type { ConnectionService } from "../../connection-service.ts";
|
|
3
|
+
import type { ActionPolicySnapshot } from "../../core/action-policy.ts";
|
|
4
|
+
import type { ActionSearchIndexProvider } from "../../core/action-search.ts";
|
|
5
|
+
import type { ActionRunner } from "../actions/action-runner.ts";
|
|
6
|
+
import type { Context } from "hono";
|
|
7
|
+
import { Hono } from "hono";
|
|
8
|
+
export type McpModule = typeof import("../../mcp.ts");
|
|
9
|
+
export declare function loadMcpModule(): Promise<McpModule>;
|
|
10
|
+
export interface McpRoutesOptions {
|
|
11
|
+
catalog: CatalogStore;
|
|
12
|
+
connections: ConnectionService;
|
|
13
|
+
actions: ActionRunner;
|
|
14
|
+
actionSearch: ActionSearchIndexProvider;
|
|
15
|
+
getPolicySnapshot: (context: Context) => Promise<ActionPolicySnapshot>;
|
|
16
|
+
}
|
|
17
|
+
/** MCP transport and tool discovery routes. */
|
|
18
|
+
export declare function createMcpRoutes({ catalog, connections, actions, actionSearch, getPolicySnapshot, }: McpRoutesOptions): Hono;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Hono } from "hono";
|
|
2
|
+
import { PromiseCache } from "../../core/promise-cache.js";
|
|
3
|
+
import { readRuntimeGrant } from "./auth.js";
|
|
4
|
+
const mcpModule = new PromiseCache();
|
|
5
|
+
export function loadMcpModule() {
|
|
6
|
+
return mcpModule.get("", () => import("../../mcp.js"));
|
|
7
|
+
}
|
|
8
|
+
function rejectMcpMethod(context) {
|
|
9
|
+
return context.json({
|
|
10
|
+
jsonrpc: "2.0",
|
|
11
|
+
error: {
|
|
12
|
+
code: -32000,
|
|
13
|
+
message: "Method not allowed.",
|
|
14
|
+
},
|
|
15
|
+
id: null,
|
|
16
|
+
}, 405);
|
|
17
|
+
}
|
|
18
|
+
/** MCP transport and tool discovery routes. */
|
|
19
|
+
export function createMcpRoutes({ catalog, connections, actions, actionSearch, getPolicySnapshot, }) {
|
|
20
|
+
const app = new Hono();
|
|
21
|
+
app.post("/mcp", async (context) => {
|
|
22
|
+
const { handleMcpRequest } = await loadMcpModule();
|
|
23
|
+
return await handleMcpRequest(context.req.raw, {
|
|
24
|
+
catalog,
|
|
25
|
+
connections,
|
|
26
|
+
actions,
|
|
27
|
+
actionSearch,
|
|
28
|
+
getPolicySnapshot: () => getPolicySnapshot(context),
|
|
29
|
+
runtimeGrant: readRuntimeGrant(context),
|
|
30
|
+
signal: context.req.raw.signal,
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
app.get("/mcp", (context) => rejectMcpMethod(context));
|
|
34
|
+
app.delete("/mcp", (context) => rejectMcpMethod(context));
|
|
35
|
+
app.get("/mcp/tools", async (context) => context.json({ tools: (await loadMcpModule()).listMcpToolSummaries() }));
|
|
36
|
+
return app;
|
|
37
|
+
}
|
|
@@ -51,12 +51,46 @@ export function samplePattern(pattern, options = {}) {
|
|
|
51
51
|
if (sample.length > maximumSampleLength) {
|
|
52
52
|
return undefined;
|
|
53
53
|
}
|
|
54
|
-
|
|
54
|
+
if (matchesPattern(pattern, sample)) {
|
|
55
|
+
return sample;
|
|
56
|
+
}
|
|
57
|
+
// Try explicit alternatives when an assertion rejects the shortest branch.
|
|
58
|
+
// Bound the work; this is a sampler, not a general regex constraint solver.
|
|
59
|
+
for (const candidate of alternativeRoots(root)) {
|
|
60
|
+
const value = generateSample(candidate, minLength, growth, { remaining: maximumSampleLength });
|
|
61
|
+
if (value.length >= minLength && matchesPattern(pattern, value)) {
|
|
62
|
+
return value;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return undefined;
|
|
55
66
|
}
|
|
56
67
|
catch {
|
|
57
68
|
return undefined;
|
|
58
69
|
}
|
|
59
70
|
}
|
|
71
|
+
function alternativeRoots(root) {
|
|
72
|
+
switch (root.kind) {
|
|
73
|
+
case "literal":
|
|
74
|
+
return [];
|
|
75
|
+
case "alternation":
|
|
76
|
+
return root.branches.slice(0, 32);
|
|
77
|
+
case "repeat":
|
|
78
|
+
return alternativeRoots(root.node).map((node) => ({ ...root, node }));
|
|
79
|
+
case "sequence": {
|
|
80
|
+
const variants = [];
|
|
81
|
+
for (let index = 0; index < root.nodes.length && variants.length < 32; index += 1) {
|
|
82
|
+
for (const node of alternativeRoots(root.nodes[index])) {
|
|
83
|
+
const nodes = root.nodes.slice();
|
|
84
|
+
nodes[index] = node;
|
|
85
|
+
variants.push({ kind: "sequence", nodes });
|
|
86
|
+
if (variants.length === 32)
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return variants;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
60
94
|
function matchesPattern(pattern, sample) {
|
|
61
95
|
try {
|
|
62
96
|
// The runtime validator compiles patterns with the `u` flag (@cfworker/json-schema).
|