@oomol-lab/open-connector 1.9.0 → 1.9.1
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/appgrowing_mcp.json +863 -0
- package/assets/open-connector/catalog/apps/arcmira.json +610 -0
- package/assets/open-connector/catalog/apps/bainiu.json +654 -0
- package/assets/open-connector/catalog/apps/chaport.json +331 -0
- package/assets/open-connector/catalog/apps/cnb.json +1408 -0
- package/assets/open-connector/catalog/apps/crtsh.json +123 -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/ftshare.json +1162 -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/kaonavi.json +1723 -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/notion_mcp.json +338 -1
- package/assets/open-connector/catalog/apps/outlook.json +414 -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/salesforce.json +4907 -0
- package/assets/open-connector/catalog/apps/sansan.json +4594 -0
- 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/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/tradebee.json +915 -0
- package/assets/open-connector/catalog/apps/twittrapi.json +4914 -0
- package/assets/open-connector/catalog/apps/urlhaus.json +246 -0
- 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-index.json +1 -1
- package/package.json +2 -1
- package/src/connection-service.js +55 -11
- 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 +36 -6
- 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/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/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/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/runtime.js +49 -52
- 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/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/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/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/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/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/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/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/mcp-tools.d.ts +3 -0
- package/src/providers/mcp-tools.js +5 -4
- 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/omise/executors.js +1 -1
- package/src/providers/outlook/executors.js +35 -2
- 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 +3 -2
- 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 +30 -0
- package/src/providers/salesforce/context.d.ts +16 -0
- package/src/providers/salesforce/context.js +58 -0
- package/src/providers/salesforce/executors.d.ts +5 -0
- package/src/providers/salesforce/executors.js +54 -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-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 +51 -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-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/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/shopee/runtime.d.ts +33 -29
- package/src/providers/shopee/runtime.js +166 -169
- 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/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/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/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/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/wangdian/runtime.js +16 -19
- 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/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/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 +3 -1
- package/src/server/connect-server.d.ts +3 -54
- package/src/server/connect-server.js +95 -1148
- package/src/providers/fastmoss_mcp/official-tools.json +0 -2922
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ProviderErrorCode } from "../core/provider-error-codes.ts";
|
|
1
2
|
import type { ProviderDispatchContext, ProviderHttpDispatchOptions } from "../core/provider-http-dispatch.ts";
|
|
2
3
|
import type { ActionExecutor, ExecutionContext, ExecutionResult, ProviderExecutors, ProviderProxyExecutor, ProxyExecutionResult, ProxyResponse, ResolvedCredential, TransitFileWriter } from "../core/types.ts";
|
|
3
4
|
import type { ProviderActionNames } from "./action-contracts.generated.ts";
|
|
@@ -149,8 +150,8 @@ export interface ProviderInputFile {
|
|
|
149
150
|
export declare class ProviderRequestError extends Error {
|
|
150
151
|
readonly status: number;
|
|
151
152
|
readonly details?: unknown;
|
|
152
|
-
readonly code?:
|
|
153
|
-
constructor(status: number, message: string, details?: unknown, code?:
|
|
153
|
+
readonly code?: ProviderErrorCode;
|
|
154
|
+
constructor(status: number, message: string, details?: unknown, code?: ProviderErrorCode);
|
|
154
155
|
}
|
|
155
156
|
/** A dispatch denial is retryable and must not be wrapped as a bad provider credential. */
|
|
156
157
|
export declare class ProviderDispatchRequestError extends ProviderRequestError {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Buffer } from "node:buffer";
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
3
|
import { compactObject, optionalString, requiredString } from "../../core/cast.js";
|
|
4
|
-
import { defineApiKeyProviderExecutors, mapProviderActionSources, ProviderRequestError, providerUserAgent, readTransitFileInput, } from "../provider-runtime.js";
|
|
4
|
+
import { defineApiKeyProviderExecutors, mapProviderActionSources, ProviderRequestError, providerUserAgent, readTransitFileInput, providerInputError, providerResponseError, } from "../provider-runtime.js";
|
|
5
5
|
const pushoverApiBaseUrl = "https://api.pushover.net";
|
|
6
6
|
export const pushoverVersionedApiBaseUrl = `${pushoverApiBaseUrl}/1`;
|
|
7
7
|
const pushoverIconBaseUrl = `${pushoverApiBaseUrl}/icons`;
|
|
@@ -12,9 +12,6 @@ const pushoverDefaultRealtimeTimeoutSeconds = 60;
|
|
|
12
12
|
const pushoverMaxRealtimeTimeoutSeconds = 300;
|
|
13
13
|
const pushoverMaxAttachmentBytes = 5 * 1024 * 1024;
|
|
14
14
|
const pushoverOpenClientOsCode = "O";
|
|
15
|
-
function pushoverError(_code, message, status = 500, details) {
|
|
16
|
-
return new ProviderRequestError(status, message, details);
|
|
17
|
-
}
|
|
18
15
|
function createTimeoutSignal(input) {
|
|
19
16
|
const controller = new AbortController();
|
|
20
17
|
let didTimeout = false;
|
|
@@ -123,7 +120,7 @@ export const pushoverActionHandlers = {
|
|
|
123
120
|
};
|
|
124
121
|
const pushoverExecutorHandlers = mapProviderActionSources("pushover", pushoverActionHandlers, (_name, handler) => (input, context) => handler({ apiKey: context.apiKey, values: {}, input, transitFiles: context.transitFiles }, context.fetcher));
|
|
125
122
|
export async function validatePushoverCredential(input, fetcher) {
|
|
126
|
-
const apiKey = requiredString(input.apiKey, "apiKey",
|
|
123
|
+
const apiKey = requiredString(input.apiKey, "apiKey", providerInputError);
|
|
127
124
|
const appLimits = await requestPushoverJson({
|
|
128
125
|
path: "/apps/limits.json",
|
|
129
126
|
query: {
|
|
@@ -301,9 +298,9 @@ async function getPushoverAppIconImage(input, fetcher) {
|
|
|
301
298
|
signal: timeout.signal,
|
|
302
299
|
});
|
|
303
300
|
if (!response.ok) {
|
|
304
|
-
throw
|
|
301
|
+
throw new ProviderRequestError(response.status === 404 ? 400 : 502, response.status === 404
|
|
305
302
|
? `unknown pushover icon: ${parsed.icon}`
|
|
306
|
-
: `pushover icon request failed with ${response.status} ${response.statusText}`.trim()
|
|
303
|
+
: `pushover icon request failed with ${response.status} ${response.statusText}`.trim());
|
|
307
304
|
}
|
|
308
305
|
const bytes = Buffer.from(await response.arrayBuffer());
|
|
309
306
|
return {
|
|
@@ -562,7 +559,7 @@ async function renamePushoverGroup(input, fetcher) {
|
|
|
562
559
|
async function assignPushoverLicense(input, fetcher) {
|
|
563
560
|
const parsed = input.input;
|
|
564
561
|
if (!parsed.user && !parsed.email) {
|
|
565
|
-
throw
|
|
562
|
+
throw providerInputError("user or email is required");
|
|
566
563
|
}
|
|
567
564
|
const appToken = resolveAppToken(input, parsed.token);
|
|
568
565
|
const payload = await requestPushoverJson({
|
|
@@ -728,7 +725,7 @@ async function acknowledgePushoverClientMessages(input, fetcher) {
|
|
|
728
725
|
async function listenPushoverClientWebsocket(input) {
|
|
729
726
|
const parsed = input.input;
|
|
730
727
|
if (typeof globalThis.WebSocket !== "function") {
|
|
731
|
-
throw
|
|
728
|
+
throw new ProviderRequestError(500, "WebSocket is unavailable in this runtime");
|
|
732
729
|
}
|
|
733
730
|
const timeoutSeconds = Math.min(Math.max(parsed.timeout ?? pushoverDefaultRealtimeTimeoutSeconds, 1), pushoverMaxRealtimeTimeoutSeconds);
|
|
734
731
|
return new Promise((resolve, reject) => {
|
|
@@ -780,7 +777,7 @@ async function listenPushoverClientWebsocket(input) {
|
|
|
780
777
|
}
|
|
781
778
|
});
|
|
782
779
|
socket.addEventListener("error", () => {
|
|
783
|
-
settleReject(
|
|
780
|
+
settleReject(providerResponseError("pushover realtime websocket connection failed"));
|
|
784
781
|
});
|
|
785
782
|
socket.addEventListener("close", () => {
|
|
786
783
|
settleResolve();
|
|
@@ -806,7 +803,7 @@ async function requestPushoverJson(input) {
|
|
|
806
803
|
const text = await response.text();
|
|
807
804
|
const payload = parseJsonObject(text);
|
|
808
805
|
if (!payload) {
|
|
809
|
-
throw
|
|
806
|
+
throw providerResponseError(`pushover request returned a non-JSON response from ${input.path}`);
|
|
810
807
|
}
|
|
811
808
|
const status = readOptionalInteger(payload.status);
|
|
812
809
|
if (response.ok && status === 1) {
|
|
@@ -826,9 +823,9 @@ async function requestPushoverJson(input) {
|
|
|
826
823
|
throw error;
|
|
827
824
|
}
|
|
828
825
|
if (timeout.didTimeout) {
|
|
829
|
-
throw
|
|
826
|
+
throw new ProviderRequestError(504, `pushover request timed out after ${(input.timeoutMs ?? pushoverDefaultTimeoutMs) / 1000} seconds`);
|
|
830
827
|
}
|
|
831
|
-
throw
|
|
828
|
+
throw providerResponseError(error instanceof Error ? error.message : "pushover request failed");
|
|
832
829
|
}
|
|
833
830
|
finally {
|
|
834
831
|
timeout.cleanup();
|
|
@@ -850,24 +847,24 @@ function normalizePushoverRequestError(input) {
|
|
|
850
847
|
? "two-factor authentication code required"
|
|
851
848
|
: `pushover request failed with ${input.response.status}`);
|
|
852
849
|
if (input.response.status === 429) {
|
|
853
|
-
return
|
|
850
|
+
return new ProviderRequestError(429, message);
|
|
854
851
|
}
|
|
855
852
|
if (input.phase === "validate") {
|
|
856
|
-
return
|
|
853
|
+
return providerInputError(message);
|
|
857
854
|
}
|
|
858
855
|
if (isCredentialProblem(input.payload, input.response.status, input.credentialKind)) {
|
|
859
856
|
if (input.credentialKind === "client_secret" || input.credentialKind === "public") {
|
|
860
|
-
return
|
|
857
|
+
return providerInputError(message);
|
|
861
858
|
}
|
|
862
859
|
if (input.tokenSource === "connection") {
|
|
863
|
-
return
|
|
860
|
+
return new ProviderRequestError(500, message);
|
|
864
861
|
}
|
|
865
|
-
return
|
|
862
|
+
return providerInputError(message);
|
|
866
863
|
}
|
|
867
864
|
if (input.response.status >= 400 && input.response.status < 500) {
|
|
868
|
-
return
|
|
865
|
+
return providerInputError(message);
|
|
869
866
|
}
|
|
870
|
-
return
|
|
867
|
+
return new ProviderRequestError(input.response.status >= 500 ? 502 : 500, errors[0] ?? input.rawBody ?? message);
|
|
871
868
|
}
|
|
872
869
|
function isCredentialProblem(payload, status, credentialKind) {
|
|
873
870
|
if (status === 401 || status === 403) {
|
|
@@ -897,7 +894,7 @@ function resolveAppToken(input, override) {
|
|
|
897
894
|
};
|
|
898
895
|
}
|
|
899
896
|
return {
|
|
900
|
-
token: requiredString(input.apiKey, "apiKey",
|
|
897
|
+
token: requiredString(input.apiKey, "apiKey", providerInputError),
|
|
901
898
|
source: "connection",
|
|
902
899
|
};
|
|
903
900
|
}
|
|
@@ -911,7 +908,7 @@ function resolveTeamToken(input, override) {
|
|
|
911
908
|
}
|
|
912
909
|
const connectedToken = readOptionalString(input.values?.teamToken);
|
|
913
910
|
if (!connectedToken) {
|
|
914
|
-
throw
|
|
911
|
+
throw providerInputError("team token is required; provide input.token or configure Team API Token in the provider connection");
|
|
915
912
|
}
|
|
916
913
|
return {
|
|
917
914
|
token: connectedToken,
|
|
@@ -922,7 +919,7 @@ async function resolvePushoverAttachment(input) {
|
|
|
922
919
|
const hasTransitAttachment = input.attachment != null;
|
|
923
920
|
const hasInlineAttachment = Boolean(input.attachmentBase64 || input.attachmentType);
|
|
924
921
|
if (hasTransitAttachment && hasInlineAttachment) {
|
|
925
|
-
throw
|
|
922
|
+
throw providerInputError("provide either attachment or attachment_base64/attachment_type, not both");
|
|
926
923
|
}
|
|
927
924
|
if (input.attachment) {
|
|
928
925
|
const transitFile = await readTransitFileInput(input.attachment, input);
|
|
@@ -935,7 +932,7 @@ async function resolvePushoverAttachment(input) {
|
|
|
935
932
|
return undefined;
|
|
936
933
|
}
|
|
937
934
|
if (!input.attachmentBase64 || !input.attachmentType) {
|
|
938
|
-
throw
|
|
935
|
+
throw providerInputError("attachment_base64 and attachment_type are required together");
|
|
939
936
|
}
|
|
940
937
|
const bytes = decodeBase64Attachment(input.attachmentBase64);
|
|
941
938
|
ensureAttachmentSize(bytes, "attachment");
|
|
@@ -947,7 +944,7 @@ async function resolvePushoverAttachment(input) {
|
|
|
947
944
|
}
|
|
948
945
|
function ensureAttachmentSize(bytes, name) {
|
|
949
946
|
if (bytes.byteLength > pushoverMaxAttachmentBytes) {
|
|
950
|
-
throw
|
|
947
|
+
throw providerInputError(`${name} exceeds the 5MB Pushover attachment limit`);
|
|
951
948
|
}
|
|
952
949
|
}
|
|
953
950
|
function decodeBase64Attachment(value) {
|
|
@@ -957,10 +954,10 @@ function decodeBase64Attachment(value) {
|
|
|
957
954
|
bytes = Buffer.from(normalized, "base64");
|
|
958
955
|
}
|
|
959
956
|
catch {
|
|
960
|
-
throw
|
|
957
|
+
throw providerInputError("attachment_base64 must be valid base64");
|
|
961
958
|
}
|
|
962
959
|
if (bytes.byteLength === 0 || bytes.toString("base64") !== normalized.replace(/\s+/g, "")) {
|
|
963
|
-
throw
|
|
960
|
+
throw providerInputError("attachment_base64 must be valid base64");
|
|
964
961
|
}
|
|
965
962
|
return Uint8Array.from(bytes);
|
|
966
963
|
}
|
|
@@ -1107,7 +1104,7 @@ function readIdentifierString(preferred, fallback) {
|
|
|
1107
1104
|
}
|
|
1108
1105
|
const fallbackString = normalizeUnknownString(fallback);
|
|
1109
1106
|
if (!fallbackString) {
|
|
1110
|
-
throw
|
|
1107
|
+
throw providerResponseError("pushover response is missing an identifier");
|
|
1111
1108
|
}
|
|
1112
1109
|
return fallbackString;
|
|
1113
1110
|
}
|
|
@@ -1134,7 +1131,7 @@ function normalizeUnknownString(value) {
|
|
|
1134
1131
|
function readRequiredString(payload, key) {
|
|
1135
1132
|
const value = normalizeUnknownString(payload[key]);
|
|
1136
1133
|
if (!value) {
|
|
1137
|
-
throw
|
|
1134
|
+
throw providerResponseError(`pushover response is missing ${key}`);
|
|
1138
1135
|
}
|
|
1139
1136
|
return value;
|
|
1140
1137
|
}
|
|
@@ -1148,7 +1145,7 @@ function readNullableString(value) {
|
|
|
1148
1145
|
function readRequiredInteger(payload, key) {
|
|
1149
1146
|
const value = readOptionalInteger(payload[key]);
|
|
1150
1147
|
if (value == null) {
|
|
1151
|
-
throw
|
|
1148
|
+
throw providerResponseError(`pushover response is missing ${key}`);
|
|
1152
1149
|
}
|
|
1153
1150
|
return value;
|
|
1154
1151
|
}
|
|
@@ -1190,7 +1187,7 @@ function readBooleanLike(value) {
|
|
|
1190
1187
|
return false;
|
|
1191
1188
|
}
|
|
1192
1189
|
}
|
|
1193
|
-
throw
|
|
1190
|
+
throw providerResponseError("pushover response is missing a boolean value");
|
|
1194
1191
|
}
|
|
1195
1192
|
function readStringArray(value) {
|
|
1196
1193
|
return readOptionalArray(value)
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { compactObject, requiredString } from "../../core/cast.js";
|
|
2
2
|
import { encodePathSegment } from "../../core/request.js";
|
|
3
|
-
import { defineApiKeyProviderExecutors, mapProviderActionSources, providerUserAgent, ProviderRequestError, readTransitFileInput, } from "../provider-runtime.js";
|
|
3
|
+
import { defineApiKeyProviderExecutors, mapProviderActionSources, providerUserAgent, ProviderRequestError, readTransitFileInput, providerInputError, providerResponseError, } from "../provider-runtime.js";
|
|
4
4
|
export const qianfanApiOrigin = "https://qianfan.baidubce.com";
|
|
5
5
|
export const qianfanApiBaseUrl = `${qianfanApiOrigin}/v2`;
|
|
6
6
|
const qianfanUserAgent = providerUserAgent;
|
|
7
|
-
function qianfanError(_code, message, status = 502) {
|
|
8
|
-
return new ProviderRequestError(status, message);
|
|
9
|
-
}
|
|
10
7
|
function requireApiKey(input) {
|
|
11
8
|
return requiredString(input.apiKey, "apiKey", (message) => new ProviderRequestError(401, message));
|
|
12
9
|
}
|
|
@@ -311,7 +308,7 @@ async function qianfanRequest(apiKey, input, fetcher) {
|
|
|
311
308
|
}
|
|
312
309
|
catch (error) {
|
|
313
310
|
const message = error instanceof Error ? error.message : "unknown network error";
|
|
314
|
-
throw
|
|
311
|
+
throw providerResponseError(`qianfan ${method} ${input.path} failed before receiving response: ${message}`);
|
|
315
312
|
}
|
|
316
313
|
await assertQianfanResponse(response, input.mode ?? "execute");
|
|
317
314
|
return readQianfanJson(response);
|
|
@@ -328,7 +325,7 @@ async function qianfanMultipartRequest(apiKey, input, body, fetcher) {
|
|
|
328
325
|
}
|
|
329
326
|
catch (error) {
|
|
330
327
|
const message = error instanceof Error ? error.message : "unknown network error";
|
|
331
|
-
throw
|
|
328
|
+
throw providerResponseError(`qianfan ${method} ${input.path} failed before receiving response: ${message}`);
|
|
332
329
|
}
|
|
333
330
|
await assertQianfanResponse(response, input.mode ?? "execute");
|
|
334
331
|
return readQianfanJson(response);
|
|
@@ -344,7 +341,7 @@ async function qianfanTextRequest(apiKey, input, fetcher) {
|
|
|
344
341
|
}
|
|
345
342
|
catch (error) {
|
|
346
343
|
const message = error instanceof Error ? error.message : "unknown network error";
|
|
347
|
-
throw
|
|
344
|
+
throw providerResponseError(`qianfan ${method} ${input.path} failed before receiving response: ${message}`);
|
|
348
345
|
}
|
|
349
346
|
await assertQianfanResponse(response, input.mode ?? "execute");
|
|
350
347
|
let text;
|
|
@@ -352,9 +349,9 @@ async function qianfanTextRequest(apiKey, input, fetcher) {
|
|
|
352
349
|
text = await response.text();
|
|
353
350
|
}
|
|
354
351
|
catch (error) {
|
|
355
|
-
throw
|
|
352
|
+
throw new ProviderRequestError(response.status, error instanceof Error
|
|
356
353
|
? `failed to read qianfan response body: ${error.message}`
|
|
357
|
-
: "failed to read qianfan response body"
|
|
354
|
+
: "failed to read qianfan response body");
|
|
358
355
|
}
|
|
359
356
|
return {
|
|
360
357
|
content: text,
|
|
@@ -371,7 +368,7 @@ function qianfanHeaders(apiKey, includeJsonContentType = true) {
|
|
|
371
368
|
}
|
|
372
369
|
function assertStreamingDisabled(input) {
|
|
373
370
|
if (input.stream === true) {
|
|
374
|
-
throw
|
|
371
|
+
throw providerInputError("stream=true is not supported by connector actions");
|
|
375
372
|
}
|
|
376
373
|
}
|
|
377
374
|
function withoutStreamOptions(input) {
|
|
@@ -383,7 +380,7 @@ function requireStringField(input, field) {
|
|
|
383
380
|
if (typeof value === "string" && value.length > 0) {
|
|
384
381
|
return value;
|
|
385
382
|
}
|
|
386
|
-
throw
|
|
383
|
+
throw providerInputError(`${field} must be a non-empty string`);
|
|
387
384
|
}
|
|
388
385
|
function withQianfanQuery(path, query) {
|
|
389
386
|
const params = new URLSearchParams();
|
|
@@ -409,18 +406,18 @@ async function assertQianfanResponse(response, mode) {
|
|
|
409
406
|
}
|
|
410
407
|
const error = await readQianfanError(response);
|
|
411
408
|
if (response.status === 429) {
|
|
412
|
-
throw
|
|
409
|
+
throw new ProviderRequestError(429, error.message);
|
|
413
410
|
}
|
|
414
411
|
if (mode === "validate" && (response.status === 401 || response.status === 403)) {
|
|
415
|
-
throw
|
|
412
|
+
throw providerInputError(error.message);
|
|
416
413
|
}
|
|
417
414
|
if (mode === "execute" && response.status === 401) {
|
|
418
|
-
throw
|
|
415
|
+
throw providerResponseError(error.message);
|
|
419
416
|
}
|
|
420
417
|
if (response.status === 400 || response.status === 422) {
|
|
421
|
-
throw
|
|
418
|
+
throw providerInputError(error.message);
|
|
422
419
|
}
|
|
423
|
-
throw
|
|
420
|
+
throw new ProviderRequestError(response.status, error.message);
|
|
424
421
|
}
|
|
425
422
|
async function readQianfanJson(response) {
|
|
426
423
|
let text;
|
|
@@ -428,9 +425,9 @@ async function readQianfanJson(response) {
|
|
|
428
425
|
text = await response.text();
|
|
429
426
|
}
|
|
430
427
|
catch (error) {
|
|
431
|
-
throw
|
|
428
|
+
throw new ProviderRequestError(response.status, error instanceof Error
|
|
432
429
|
? `failed to read qianfan response body: ${error.message}`
|
|
433
|
-
: "failed to read qianfan response body"
|
|
430
|
+
: "failed to read qianfan response body");
|
|
434
431
|
}
|
|
435
432
|
if (response.status === 204 || text.trim() === "") {
|
|
436
433
|
return {};
|
|
@@ -439,7 +436,7 @@ async function readQianfanJson(response) {
|
|
|
439
436
|
return JSON.parse(text);
|
|
440
437
|
}
|
|
441
438
|
catch {
|
|
442
|
-
throw
|
|
439
|
+
throw new ProviderRequestError(response.status, `qianfan returned invalid JSON with ${response.status}: ${text.slice(0, 200)}`);
|
|
443
440
|
}
|
|
444
441
|
}
|
|
445
442
|
async function readQianfanError(response) {
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { jsonSchema as s } from "../../core/json-schema.js";
|
|
2
|
+
import { defineProviderAction } from "../../core/provider-definition.js";
|
|
3
|
+
export const qiuxiaoceActions = [
|
|
4
|
+
defineProviderAction("qiuxiaoce", {
|
|
5
|
+
name: "get_quota",
|
|
6
|
+
description: "Read remaining credits, expiration and today's usage without consuming credits.",
|
|
7
|
+
operationType: "read",
|
|
8
|
+
requiredScopes: [],
|
|
9
|
+
inputSchema: s.object("Parameters for get_quota.", {}, { required: [] }),
|
|
10
|
+
outputSchema: s.looseObject("The get_quota response from QiuXiaoCe.", {
|
|
11
|
+
success: s.boolean("Whether the provider reports success."),
|
|
12
|
+
data: s.looseObject("Credit balance and usage.", {
|
|
13
|
+
credits_remaining: s.integer("Remaining API credits."),
|
|
14
|
+
expires_at: s.nullable(s.string("Credit expiration reported by the provider.")),
|
|
15
|
+
today_used: s.integer("Credits consumed today."),
|
|
16
|
+
}),
|
|
17
|
+
}),
|
|
18
|
+
}),
|
|
19
|
+
defineProviderAction("qiuxiaoce", {
|
|
20
|
+
name: "get_daily_digest",
|
|
21
|
+
description: "List matches for a sales date, including fixture IDs and report availability. Omit date for the current sales day.",
|
|
22
|
+
operationType: "read",
|
|
23
|
+
requiredScopes: [],
|
|
24
|
+
inputSchema: s.object("Parameters for get_daily_digest.", { date: s.string("Calendar date in YYYY-MM-DD format.", { format: "date" }) }, { required: [] }),
|
|
25
|
+
outputSchema: s.looseObject("The get_daily_digest response from QiuXiaoCe.", {
|
|
26
|
+
success: s.boolean("Whether the provider reports success."),
|
|
27
|
+
date: s.string("Calendar date in YYYY-MM-DD format.", { format: "date" }),
|
|
28
|
+
total: s.integer("Total matches."),
|
|
29
|
+
summary: s.looseObject("Report and data readiness counts."),
|
|
30
|
+
matches: s.array("Matches on the selected sales day.", s.looseObject("One upstream record, including provider-specific fields.")),
|
|
31
|
+
}),
|
|
32
|
+
}),
|
|
33
|
+
defineProviderAction("qiuxiaoce", {
|
|
34
|
+
name: "list_fixtures",
|
|
35
|
+
description: "Find fixtures by date, date range, league, team, round, status or fixture ID. Use either date or from/to.",
|
|
36
|
+
operationType: "read",
|
|
37
|
+
requiredScopes: [],
|
|
38
|
+
inputSchema: {
|
|
39
|
+
...s.object("Parameters for list_fixtures.", {
|
|
40
|
+
date: s.string("Calendar date in YYYY-MM-DD format.", { format: "date" }),
|
|
41
|
+
from: s.string("Calendar date in YYYY-MM-DD format.", { format: "date" }),
|
|
42
|
+
to: s.string("Calendar date in YYYY-MM-DD format.", { format: "date" }),
|
|
43
|
+
league: s.integer("The provider entity ID returned by a discovery action."),
|
|
44
|
+
season: s.integer("Season starting year. Omit to use the provider default season."),
|
|
45
|
+
team: s.integer("The provider entity ID returned by a discovery action."),
|
|
46
|
+
round: s.string("Round name; requires league and season."),
|
|
47
|
+
status: s.stringEnum("Fixture status: not started, finished, or live.", ["NS", "FT", "LIVE"]),
|
|
48
|
+
last: s.integer("Most recent number of matches; requires team."),
|
|
49
|
+
next: s.integer("Upcoming number of matches; requires team."),
|
|
50
|
+
id: s.integer("The provider entity ID returned by a discovery action."),
|
|
51
|
+
}, { required: [] }),
|
|
52
|
+
dependentRequired: {
|
|
53
|
+
from: ["to"],
|
|
54
|
+
to: ["from"],
|
|
55
|
+
round: ["league", "season"],
|
|
56
|
+
last: ["team"],
|
|
57
|
+
next: ["team"],
|
|
58
|
+
},
|
|
59
|
+
not: { required: ["date"], anyOf: [{ required: ["from"] }, { required: ["to"] }] },
|
|
60
|
+
},
|
|
61
|
+
outputSchema: s.looseObject("The list_fixtures response from QiuXiaoCe.", {
|
|
62
|
+
success: s.boolean("Whether the provider reports success."),
|
|
63
|
+
count: s.integer("Number of returned fixtures."),
|
|
64
|
+
fixtures: s.array("Matching fixtures.", s.looseObject("One upstream record, including provider-specific fields.")),
|
|
65
|
+
}),
|
|
66
|
+
}),
|
|
67
|
+
defineProviderAction("qiuxiaoce", {
|
|
68
|
+
name: "get_fixture",
|
|
69
|
+
description: "Read a fixture's kickoff, score, status and teams.",
|
|
70
|
+
operationType: "read",
|
|
71
|
+
requiredScopes: [],
|
|
72
|
+
inputSchema: s.object("Parameters for get_fixture.", { id: s.integer("The provider entity ID returned by a discovery action.") }, { required: ["id"] }),
|
|
73
|
+
outputSchema: s.looseObject("The get_fixture response from QiuXiaoCe.", {
|
|
74
|
+
success: s.boolean("Whether the provider reports success."),
|
|
75
|
+
data: s.looseObject("Upstream detail fields, preserved without filtering."),
|
|
76
|
+
}),
|
|
77
|
+
}),
|
|
78
|
+
defineProviderAction("qiuxiaoce", {
|
|
79
|
+
name: "get_fixture_stats",
|
|
80
|
+
description: "Read post-match technical statistics for a fixture.",
|
|
81
|
+
operationType: "read",
|
|
82
|
+
requiredScopes: [],
|
|
83
|
+
inputSchema: s.object("Parameters for get_fixture_stats.", { id: s.integer("The provider entity ID returned by a discovery action.") }, { required: ["id"] }),
|
|
84
|
+
outputSchema: s.looseObject("The get_fixture_stats response from QiuXiaoCe.", {
|
|
85
|
+
success: s.boolean("Whether the provider reports success."),
|
|
86
|
+
data: s.looseObject("Upstream detail fields, preserved without filtering."),
|
|
87
|
+
}),
|
|
88
|
+
}),
|
|
89
|
+
defineProviderAction("qiuxiaoce", {
|
|
90
|
+
name: "get_fixture_events",
|
|
91
|
+
description: "Read goals, cards and substitutions for a fixture.",
|
|
92
|
+
operationType: "read",
|
|
93
|
+
requiredScopes: [],
|
|
94
|
+
inputSchema: s.object("Parameters for get_fixture_events.", { id: s.integer("The provider entity ID returned by a discovery action.") }, { required: ["id"] }),
|
|
95
|
+
outputSchema: s.looseObject("The get_fixture_events response from QiuXiaoCe.", {
|
|
96
|
+
success: s.boolean("Whether the provider reports success."),
|
|
97
|
+
events: s.array("Fixture events.", s.looseObject("One upstream record, including provider-specific fields.")),
|
|
98
|
+
}),
|
|
99
|
+
}),
|
|
100
|
+
defineProviderAction("qiuxiaoce", {
|
|
101
|
+
name: "get_fixture_lineups",
|
|
102
|
+
description: "Read announced starting lineups and substitutes for a fixture.",
|
|
103
|
+
operationType: "read",
|
|
104
|
+
requiredScopes: [],
|
|
105
|
+
inputSchema: s.object("Parameters for get_fixture_lineups.", { id: s.integer("The provider entity ID returned by a discovery action.") }, { required: ["id"] }),
|
|
106
|
+
outputSchema: s.looseObject("The get_fixture_lineups response from QiuXiaoCe.", {
|
|
107
|
+
success: s.boolean("Whether the provider reports success."),
|
|
108
|
+
data: s.looseObject("Upstream detail fields, preserved without filtering."),
|
|
109
|
+
}),
|
|
110
|
+
}),
|
|
111
|
+
defineProviderAction("qiuxiaoce", {
|
|
112
|
+
name: "get_fixture_players",
|
|
113
|
+
description: "Read player-by-player post-match statistics for a fixture.",
|
|
114
|
+
operationType: "read",
|
|
115
|
+
requiredScopes: [],
|
|
116
|
+
inputSchema: s.object("Parameters for get_fixture_players.", { id: s.integer("The provider entity ID returned by a discovery action.") }, { required: ["id"] }),
|
|
117
|
+
outputSchema: s.looseObject("The get_fixture_players response from QiuXiaoCe.", {
|
|
118
|
+
success: s.boolean("Whether the provider reports success."),
|
|
119
|
+
data: s.looseObject("Upstream detail fields, preserved without filtering."),
|
|
120
|
+
}),
|
|
121
|
+
}),
|
|
122
|
+
defineProviderAction("qiuxiaoce", {
|
|
123
|
+
name: "search_teams",
|
|
124
|
+
description: "Search teams by name, including Chinese aliases. Verify the returned identity before selecting an ID.",
|
|
125
|
+
operationType: "read",
|
|
126
|
+
requiredScopes: [],
|
|
127
|
+
inputSchema: s.object("Parameters for search_teams.", { search: s.nonEmptyString("Team name keyword, including Chinese aliases.") }, { required: ["search"] }),
|
|
128
|
+
outputSchema: s.looseObject("The search_teams response from QiuXiaoCe.", {
|
|
129
|
+
success: s.boolean("Whether the provider reports success."),
|
|
130
|
+
teams: s.array("Matching teams.", s.looseObject("One upstream record, including provider-specific fields.")),
|
|
131
|
+
}),
|
|
132
|
+
}),
|
|
133
|
+
defineProviderAction("qiuxiaoce", {
|
|
134
|
+
name: "get_team",
|
|
135
|
+
description: "Read a team's names, country, venue and founding information.",
|
|
136
|
+
operationType: "read",
|
|
137
|
+
requiredScopes: [],
|
|
138
|
+
inputSchema: s.object("Parameters for get_team.", { id: s.integer("The provider entity ID returned by a discovery action.") }, { required: ["id"] }),
|
|
139
|
+
outputSchema: s.looseObject("The get_team response from QiuXiaoCe.", {
|
|
140
|
+
success: s.boolean("Whether the provider reports success."),
|
|
141
|
+
data: s.looseObject("Upstream detail fields, preserved without filtering."),
|
|
142
|
+
}),
|
|
143
|
+
}),
|
|
144
|
+
defineProviderAction("qiuxiaoce", {
|
|
145
|
+
name: "list_leagues",
|
|
146
|
+
description: "List supported leagues, optionally searching by name or Chinese alias.",
|
|
147
|
+
operationType: "read",
|
|
148
|
+
requiredScopes: [],
|
|
149
|
+
inputSchema: s.object("Parameters for list_leagues.", { q: s.string("Optional league name keyword.") }, { required: [] }),
|
|
150
|
+
outputSchema: s.looseObject("The list_leagues response from QiuXiaoCe.", {
|
|
151
|
+
success: s.boolean("Whether the provider reports success."),
|
|
152
|
+
leagues: s.array("Matching leagues.", s.looseObject("One upstream record, including provider-specific fields.")),
|
|
153
|
+
}),
|
|
154
|
+
}),
|
|
155
|
+
defineProviderAction("qiuxiaoce", {
|
|
156
|
+
name: "get_league",
|
|
157
|
+
description: "Read league details and current standings.",
|
|
158
|
+
operationType: "read",
|
|
159
|
+
requiredScopes: [],
|
|
160
|
+
inputSchema: s.object("Parameters for get_league.", { id: s.integer("The provider entity ID returned by a discovery action.") }, { required: ["id"] }),
|
|
161
|
+
outputSchema: s.looseObject("The get_league response from QiuXiaoCe.", {
|
|
162
|
+
success: s.boolean("Whether the provider reports success."),
|
|
163
|
+
data: s.looseObject("Upstream detail fields, preserved without filtering."),
|
|
164
|
+
}),
|
|
165
|
+
}),
|
|
166
|
+
defineProviderAction("qiuxiaoce", {
|
|
167
|
+
name: "get_standings",
|
|
168
|
+
description: "Read league standings for a season, defaulting to the latest available season.",
|
|
169
|
+
operationType: "read",
|
|
170
|
+
requiredScopes: [],
|
|
171
|
+
inputSchema: s.object("Parameters for get_standings.", {
|
|
172
|
+
league: s.integer("The provider entity ID returned by a discovery action."),
|
|
173
|
+
season: s.integer("Season starting year. Omit to use the provider default season."),
|
|
174
|
+
}, { required: ["league"] }),
|
|
175
|
+
outputSchema: s.looseObject("The get_standings response from QiuXiaoCe.", {
|
|
176
|
+
success: s.boolean("Whether the provider reports success."),
|
|
177
|
+
season: s.integer("Season starting year. Omit to use the provider default season."),
|
|
178
|
+
data: s.array("League standings.", s.looseObject("One upstream record, including provider-specific fields.")),
|
|
179
|
+
}),
|
|
180
|
+
}),
|
|
181
|
+
defineProviderAction("qiuxiaoce", {
|
|
182
|
+
name: "list_league_fixtures",
|
|
183
|
+
description: "List all league fixtures and scores for a season.",
|
|
184
|
+
operationType: "read",
|
|
185
|
+
requiredScopes: [],
|
|
186
|
+
inputSchema: s.object("Parameters for list_league_fixtures.", {
|
|
187
|
+
id: s.integer("The provider entity ID returned by a discovery action."),
|
|
188
|
+
season: s.integer("Season starting year. Omit to use the provider default season."),
|
|
189
|
+
}, { required: ["id"] }),
|
|
190
|
+
outputSchema: s.looseObject("The list_league_fixtures response from QiuXiaoCe.", {
|
|
191
|
+
success: s.boolean("Whether the provider reports success."),
|
|
192
|
+
data: s.array("Season records returned by the provider.", s.looseObject("One upstream record, including provider-specific fields.")),
|
|
193
|
+
}),
|
|
194
|
+
}),
|
|
195
|
+
defineProviderAction("qiuxiaoce", {
|
|
196
|
+
name: "list_league_teams",
|
|
197
|
+
description: "List participating teams for a league season.",
|
|
198
|
+
operationType: "read",
|
|
199
|
+
requiredScopes: [],
|
|
200
|
+
inputSchema: s.object("Parameters for list_league_teams.", {
|
|
201
|
+
id: s.integer("The provider entity ID returned by a discovery action."),
|
|
202
|
+
season: s.integer("Season starting year. Omit to use the provider default season."),
|
|
203
|
+
}, { required: ["id"] }),
|
|
204
|
+
outputSchema: s.looseObject("The list_league_teams response from QiuXiaoCe.", {
|
|
205
|
+
success: s.boolean("Whether the provider reports success."),
|
|
206
|
+
data: s.array("Season records returned by the provider.", s.looseObject("One upstream record, including provider-specific fields.")),
|
|
207
|
+
}),
|
|
208
|
+
}),
|
|
209
|
+
defineProviderAction("qiuxiaoce", {
|
|
210
|
+
name: "list_league_top_scorers",
|
|
211
|
+
description: "Read a league season's top scorers.",
|
|
212
|
+
operationType: "read",
|
|
213
|
+
requiredScopes: [],
|
|
214
|
+
inputSchema: s.object("Parameters for list_league_top_scorers.", {
|
|
215
|
+
id: s.integer("The provider entity ID returned by a discovery action."),
|
|
216
|
+
season: s.integer("Season starting year. Omit to use the provider default season."),
|
|
217
|
+
}, { required: ["id"] }),
|
|
218
|
+
outputSchema: s.looseObject("The list_league_top_scorers response from QiuXiaoCe.", {
|
|
219
|
+
success: s.boolean("Whether the provider reports success."),
|
|
220
|
+
data: s.array("Season records returned by the provider.", s.looseObject("One upstream record, including provider-specific fields.")),
|
|
221
|
+
}),
|
|
222
|
+
}),
|
|
223
|
+
defineProviderAction("qiuxiaoce", {
|
|
224
|
+
name: "list_league_top_assists",
|
|
225
|
+
description: "Read a league season's assist leaders.",
|
|
226
|
+
operationType: "read",
|
|
227
|
+
requiredScopes: [],
|
|
228
|
+
inputSchema: s.object("Parameters for list_league_top_assists.", {
|
|
229
|
+
id: s.integer("The provider entity ID returned by a discovery action."),
|
|
230
|
+
season: s.integer("Season starting year. Omit to use the provider default season."),
|
|
231
|
+
}, { required: ["id"] }),
|
|
232
|
+
outputSchema: s.looseObject("The list_league_top_assists response from QiuXiaoCe.", {
|
|
233
|
+
success: s.boolean("Whether the provider reports success."),
|
|
234
|
+
data: s.array("Season records returned by the provider.", s.looseObject("One upstream record, including provider-specific fields.")),
|
|
235
|
+
}),
|
|
236
|
+
}),
|
|
237
|
+
defineProviderAction("qiuxiaoce", {
|
|
238
|
+
name: "list_league_seasons",
|
|
239
|
+
description: "List available season years before querying historical league data.",
|
|
240
|
+
operationType: "read",
|
|
241
|
+
requiredScopes: [],
|
|
242
|
+
inputSchema: s.object("Parameters for list_league_seasons.", { id: s.integer("The provider entity ID returned by a discovery action.") }, { required: ["id"] }),
|
|
243
|
+
outputSchema: s.looseObject("The list_league_seasons response from QiuXiaoCe.", {
|
|
244
|
+
success: s.boolean("Whether the provider reports success."),
|
|
245
|
+
data: s.array("Available season starting years.", s.integer("Season starting year. Omit to use the provider default season.")),
|
|
246
|
+
}),
|
|
247
|
+
}),
|
|
248
|
+
];
|
|
@@ -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;
|