@oomol-lab/open-connector 1.9.1 → 1.9.3
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/README.md +4 -2
- 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/allratestoday.json +174 -0
- package/assets/open-connector/catalog/apps/asana.json +110 -0
- package/assets/open-connector/catalog/apps/calendly.json +103 -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/contextdev.json +20670 -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/fireflies.json +103 -0
- package/assets/open-connector/catalog/apps/fundable.json +7926 -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/keenable.json +235 -0
- package/assets/open-connector/catalog/apps/kolsprite_mcp.json +1227 -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/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/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/resend.json +100 -0
- package/assets/open-connector/catalog/apps/salesforce.json +2487 -119
- 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 +250 -2
- 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/tinyfish.json +6154 -0
- package/assets/open-connector/catalog/apps/typeform.json +90 -1
- 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/zoom.json +112 -0
- package/assets/open-connector/catalog/apps-index.json +1 -1
- package/package.json +1 -1
- package/src/connection-error.d.ts +7 -0
- package/src/connection-error.js +10 -0
- package/src/connection-service.d.ts +2 -50
- package/src/connection-service.js +6 -130
- package/src/connection-store.d.ts +41 -0
- package/src/connection-store.js +1 -0
- package/src/core/guarded-fetch.d.ts +3 -0
- package/src/core/guarded-fetch.js +8 -1
- package/src/core/json-schema.d.ts +11 -3
- package/src/core/json-schema.js +13 -3
- package/src/core/provider-network-policy.d.ts +15 -0
- package/src/core/provider-network-policy.js +11 -0
- package/src/core/request.d.ts +18 -14
- package/src/core/request.js +11 -35
- package/src/credential-resolver.d.ts +24 -0
- package/src/credential-resolver.js +131 -0
- package/src/mcp.js +1 -1
- package/src/oauth/oauth-client-config-service.d.ts +1 -1
- package/src/oauth/oauth-client-config-service.js +14 -2
- package/src/oauth/oauth-credential-refresh-service.js +1 -1
- package/src/oauth/oauth-flow-service.d.ts +9 -1
- package/src/oauth/oauth-flow-service.js +11 -1
- package/src/providers/abuseipdb/executors.js +3 -4
- package/src/providers/action-contracts.generated.d.ts +24 -6
- package/src/providers/addressfinder/executors.js +2 -3
- package/src/providers/aeroleads/executors.js +3 -3
- package/src/providers/affinity/runtime.js +6 -7
- package/src/providers/aftership/executors.js +2 -2
- package/src/providers/agent_mail/runtime.js +2 -2
- package/src/providers/agentql/runtime.js +2 -2
- package/src/providers/agenty/runtime.js +5 -6
- package/src/providers/agiled/runtime.d.ts +0 -1
- package/src/providers/agiled/runtime.js +2 -3
- package/src/providers/agility/runtime.js +2 -3
- package/src/providers/ahrefs/runtime.js +3 -3
- package/src/providers/aifinmarket/runtime.js +6 -7
- package/src/providers/airtable/executors.js +3 -3
- 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/alchemy/runtime.js +2 -2
- package/src/providers/algolia/runtime.js +3 -3
- package/src/providers/aliyun_oss/executors.js +7 -7
- package/src/providers/allratestoday/executors.d.ts +3 -0
- package/src/providers/allratestoday/executors.js +18 -0
- package/src/providers/allratestoday/runtime.d.ts +17 -0
- package/src/providers/allratestoday/runtime.js +104 -0
- package/src/providers/alpaca/runtime.js +2 -3
- package/src/providers/alpha_vantage/runtime.js +2 -2
- package/src/providers/alt_text_ai/runtime.js +2 -2
- package/src/providers/altiria/executors.js +3 -3
- package/src/providers/amap/runtime.js +3 -3
- package/src/providers/ambee/runtime.js +2 -2
- package/src/providers/ambivo/executors.js +3 -3
- package/src/providers/amilia/runtime.js +1 -1
- package/src/providers/amplemarket/runtime.js +2 -2
- package/src/providers/amplitude/runtime.js +3 -3
- package/src/providers/anysearch/runtime.js +4 -4
- package/src/providers/apaleo/runtime.js +2 -2
- package/src/providers/api_sports/executors.js +3 -4
- package/src/providers/apiverve/executors.js +2 -3
- package/src/providers/apollo/executors.js +2 -3
- package/src/providers/appcircle/runtime.js +5 -5
- package/src/providers/appdrag/executors.js +2 -3
- package/src/providers/arcgis_online/executors.js +2 -2
- 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/auth0_management/runtime.js +2 -3
- package/src/providers/autoblogger/executors.js +3 -3
- package/src/providers/baidu_maps/runtime.js +3 -3
- package/src/providers/baidu_netdisk/runtime-mcp.js +3 -4
- package/src/providers/bark/executors.js +5 -5
- package/src/providers/bitrise/runtime.js +3 -3
- package/src/providers/bouncer/executors.js +3 -4
- package/src/providers/browse_ai/runtime.js +3 -4
- package/src/providers/browserstack/executors.js +6 -7
- package/src/providers/buildkite/runtime.js +3 -3
- package/src/providers/bunnycdn/runtime.js +3 -3
- package/src/providers/businessmap/runtime.js +6 -7
- package/src/providers/buttondown/runtime.js +2 -2
- package/src/providers/byteforms/runtime.js +2 -2
- package/src/providers/calendly/executors.d.ts +2 -0
- package/src/providers/calendly/executors.js +2 -0
- package/src/providers/calendly/runtime.js +2 -2
- 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/captainbi/runtime.js +6 -6
- package/src/providers/castingwords/runtime.js +1 -1
- package/src/providers/chatpdf/runtime.js +4 -4
- package/src/providers/check/executors.js +3 -4
- package/src/providers/checkly/executors.js +3 -4
- package/src/providers/chengxin/runtime.js +3 -3
- package/src/providers/cincopa/executors.js +3 -4
- package/src/providers/circle/executors.js +3 -4
- package/src/providers/clearout/executors.js +1 -2
- package/src/providers/clickhelp/runtime.js +5 -5
- package/src/providers/clickhouse/runtime.js +4 -4
- package/src/providers/clickup/executors.d.ts +2 -0
- package/src/providers/clickup/executors.js +2 -0
- 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/clinicalkey/runtime.js +3 -3
- package/src/providers/clinicaltrials_gov/runtime.js +4 -5
- package/src/providers/clockify/runtime.js +4 -4
- 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/close/runtime.js +3 -3
- package/src/providers/cloudconvert/runtime.js +8 -9
- package/src/providers/cloudflare_dns/runtime.js +2 -2
- package/src/providers/cloudflare_email_routing/runtime.js +2 -2
- package/src/providers/cloudflare_r2/runtime.js +5 -5
- package/src/providers/cloudflare_worker/runtime.js +10 -10
- package/src/providers/cloudinary/runtime.js +4 -4
- package/src/providers/cloudlayer/runtime.js +5 -5
- package/src/providers/codacy/runtime.js +2 -2
- package/src/providers/codemagic/runtime.js +2 -2
- package/src/providers/confluence/executors.js +4 -4
- package/src/providers/confluence/runtime.d.ts +0 -1
- package/src/providers/confluence/runtime.js +6 -7
- package/src/providers/contactout/runtime.js +5 -5
- package/src/providers/contentful/runtime.js +2 -2
- package/src/providers/contentstack_content_delivery/runtime.js +1 -1
- 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/cronly/runtime.js +2 -2
- package/src/providers/crossref/runtime.js +3 -3
- package/src/providers/cutt_ly/runtime.js +3 -3
- package/src/providers/cyberimpact/runtime.js +3 -3
- package/src/providers/dachser/executors.js +2 -2
- package/src/providers/dailybot/runtime.js +1 -1
- package/src/providers/databox/runtime.js +2 -2
- package/src/providers/databricks/runtime.js +2 -2
- package/src/providers/datacite/runtime.js +1 -1
- package/src/providers/datadog/executors.js +3 -4
- package/src/providers/datascope/runtime.js +2 -2
- package/src/providers/daytona/executors.js +3 -3
- package/src/providers/deepgram/runtime.js +2 -2
- package/src/providers/deepl/runtime.js +4 -4
- 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/detrack/executors.js +5 -5
- package/src/providers/deutschlandgpt/runtime.js +2 -2
- package/src/providers/dialmycalls/runtime.js +4 -4
- package/src/providers/diffbot/executors.js +4 -4
- package/src/providers/digistore24/executors.js +3 -3
- package/src/providers/dingtalk_bot/executors.js +1 -1
- package/src/providers/discourse/executors.d.ts +0 -1
- package/src/providers/discourse/executors.js +6 -7
- package/src/providers/docugenerate/runtime.js +3 -3
- package/src/providers/doppler/runtime.shared.js +3 -3
- package/src/providers/doppler_marketing_automation/runtime.js +4 -4
- package/src/providers/dovetail/runtime.js +2 -2
- package/src/providers/dropcontact/runtime.js +3 -3
- package/src/providers/dub/executors.js +6 -6
- package/src/providers/dumplingai/runtime.js +2 -2
- package/src/providers/elevenlabs/executors.js +4 -4
- package/src/providers/elevenreader/runtime.js +1 -1
- package/src/providers/emailoctopus/runtime.js +4 -4
- package/src/providers/embase/runtime.js +3 -3
- package/src/providers/emelia/executors.js +2 -2
- package/src/providers/enigma/executors.js +3 -3
- package/src/providers/eodhd_apis/executors.js +2 -2
- package/src/providers/eventzilla/runtime.js +3 -4
- package/src/providers/evervault/runtime.js +1 -1
- package/src/providers/excalidraw_mcp/runtime.js +3 -4
- package/src/providers/excel/runtime.js +6 -6
- package/src/providers/expofp/runtime.js +2 -2
- package/src/providers/faktoora/runtime.js +5 -5
- package/src/providers/fast_note_sync/runtime.js +2 -2
- package/src/providers/feathery/executors.js +2 -3
- package/src/providers/feishu_app_bot/executors.js +2 -3
- package/src/providers/feishu_app_bot/trigger-on-event.js +2 -0
- package/src/providers/feishu_custom_bot/executors.js +2 -3
- package/src/providers/ffhub/executors.js +2 -3
- package/src/providers/fidel_api/executors.js +2 -3
- package/src/providers/files_com/executors.js +2 -3
- package/src/providers/fireberry/runtime.d.ts +0 -1
- package/src/providers/fireberry/runtime.js +3 -4
- 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/firehydrant/executors.js +2 -3
- package/src/providers/float/executors.js +2 -3
- package/src/providers/flomo/executors.js +5 -6
- package/src/providers/flowiseai/executors.js +2 -3
- package/src/providers/fluxguard/executors.js +2 -3
- package/src/providers/folk/executors.js +2 -3
- package/src/providers/football_data/executors.js +2 -3
- package/src/providers/forem/executors.js +2 -3
- package/src/providers/formbricks/executors.js +2 -3
- package/src/providers/formsite/executors.js +3 -4
- package/src/providers/formspree/executors.js +2 -2
- package/src/providers/freshdesk/executors.js +3 -4
- package/src/providers/freshservice/executors.js +3 -4
- package/src/providers/freshteam/runtime.js +3 -4
- package/src/providers/full_contact/executors.js +3 -3
- 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/runtime.js +2 -3
- package/src/providers/gagelist/executors.js +3 -3
- package/src/providers/gainsight_nxt/executors.js +2 -2
- package/src/providers/gamma/executors.js +4 -3
- package/src/providers/gangtise/runtime.js +3 -4
- package/src/providers/gatherup/runtime.js +1 -1
- package/src/providers/geckoboard/executors.js +2 -3
- package/src/providers/gemini/runtime.d.ts +0 -1
- package/src/providers/gemini/runtime.js +5 -6
- package/src/providers/genpage/runtime.js +2 -2
- package/src/providers/geokeo/executors.js +4 -4
- package/src/providers/getnote/runtime.js +2 -3
- package/src/providers/github/runtime-shared.js +2 -2
- package/src/providers/glyphic/runtime.js +3 -4
- package/src/providers/gmail/executors.js +125 -27
- package/src/providers/gmail/message.d.ts +1 -6
- package/src/providers/gmail/message.js +1 -1
- package/src/providers/gong/runtime.js +6 -7
- package/src/providers/googlecalendar/runtime-shared.js +3 -4
- package/src/providers/googledrive/runtime-request.js +2 -3
- package/src/providers/googlesheets/runtime-shared.js +3 -4
- package/src/providers/gorgias/runtime.js +4 -4
- package/src/providers/gotify/executors.js +7 -8
- package/src/providers/greenhouse/executors.js +3 -3
- package/src/providers/gumloop/executors.js +2 -3
- package/src/providers/gumroad/executors.js +2 -3
- package/src/providers/habitica/executors.js +2 -3
- package/src/providers/hackerrank_work/executors.js +2 -3
- package/src/providers/harvest/executors.js +3 -4
- package/src/providers/haveibeenpwned/executors.js +2 -3
- package/src/providers/headout/executors.js +3 -4
- package/src/providers/healthchecks_io/executors.js +2 -3
- package/src/providers/helium10/runtime.js +4 -5
- package/src/providers/helpdesk/runtime.js +4 -4
- package/src/providers/home_assistant/runtime-ws.js +9 -10
- package/src/providers/hotjar/executors.js +4 -4
- package/src/providers/httpsms/runtime.js +3 -4
- package/src/providers/hub_planner/executors.js +3 -3
- package/src/providers/hubspot/runtime.js +3 -4
- package/src/providers/humaans/runtime.js +3 -3
- package/src/providers/hunter/runtime.js +3 -3
- package/src/providers/icypeas/executors.js +3 -4
- package/src/providers/ima/runtime.js +7 -7
- package/src/providers/infolobby/runtime.js +6 -6
- package/src/providers/instabot/runtime.js +6 -6
- package/src/providers/instatus/runtime.js +4 -4
- 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/intuiface/executors.js +3 -3
- package/src/providers/iplocate/runtime.js +4 -5
- package/src/providers/ipregistry/executors.js +2 -2
- package/src/providers/jiminny/runtime.js +4 -4
- package/src/providers/jin10/executors.js +4 -5
- package/src/providers/jira/executors.d.ts +2 -0
- package/src/providers/jira/executors.js +6 -4
- 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/kaleido/runtime.js +2 -2
- package/src/providers/kandji/runtime.js +2 -2
- 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/keygen/executors.js +4 -4
- package/src/providers/keyword/runtime.js +2 -2
- package/src/providers/kie_ai/executors.js +1 -1
- package/src/providers/kintone/runtime.js +1 -1
- package/src/providers/kit/runtime.js +2 -2
- package/src/providers/klangio/runtime.js +4 -4
- package/src/providers/klaviyo/executors.js +1 -1
- package/src/providers/klazify/executors.js +3 -3
- package/src/providers/klipfolio/runtime.js +3 -3
- package/src/providers/knack/executors.js +1 -1
- 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/kommo/runtime.js +2 -2
- package/src/providers/kontent_ai/executors.js +3 -4
- package/src/providers/l2s/executors.js +3 -4
- package/src/providers/latchshot/executors.js +2 -2
- package/src/providers/leadboxer/runtime.js +4 -4
- package/src/providers/leadiq/runtime.js +4 -4
- package/src/providers/linguapop/runtime.js +1 -1
- package/src/providers/lingvanex_translation_api/runtime.js +5 -6
- package/src/providers/lingxing_mcp/runtime.js +3 -4
- package/src/providers/linkup/runtime.js +5 -6
- 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/liveagent/executors.js +6 -6
- package/src/providers/loops/executors.js +2 -2
- package/src/providers/loyjoy/runtime.js +2 -2
- package/src/providers/loyverse/executors.js +4 -4
- package/src/providers/lusha/runtime.js +3 -3
- 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/mailbluster/runtime.js +3 -4
- package/src/providers/mailcoach/runtime.js +4 -4
- package/src/providers/mailgenius/executors.js +3 -4
- package/src/providers/mailjet/runtime.js +3 -3
- package/src/providers/mails_so/runtime.js +1 -1
- package/src/providers/mailsoftly/runtime.js +5 -5
- package/src/providers/mailtrap/runtime.js +4 -5
- package/src/providers/manus/runtime.js +3 -3
- package/src/providers/mautic/runtime.js +3 -3
- package/src/providers/megaventory/runtime.js +3 -3
- package/src/providers/memberstack/runtime.js +2 -2
- package/src/providers/mendeley/executors.js +2 -3
- package/src/providers/mindbody/runtime.js +3 -3
- package/src/providers/minerstat/executors.js +3 -3
- 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/mintlify/runtime.js +3 -3
- package/src/providers/missive/executors.js +3 -5
- package/src/providers/mixpanel/executors.js +3 -3
- package/src/providers/mobile_text_alerts/runtime.js +3 -3
- package/src/providers/mocean/executors.js +3 -3
- package/src/providers/moco/executors.js +5 -5
- package/src/providers/moesif/runtime.js +4 -4
- package/src/providers/monday/runtime-common.js +3 -3
- package/src/providers/moneyforward_mcp/manifest.d.ts +0 -2
- package/src/providers/moneyforward_mcp/manifest.js +1 -1
- package/src/providers/monica_crm/runtime.js +4 -4
- package/src/providers/moorcheh/runtime.js +3 -3
- package/src/providers/more_trees/runtime.d.ts +0 -1
- package/src/providers/more_trees/runtime.js +7 -8
- package/src/providers/moxie/runtime.js +2 -2
- package/src/providers/msg91/runtime.js +4 -4
- package/src/providers/mx/runtime.js +1 -1
- package/src/providers/needle/runtime.js +3 -4
- package/src/providers/netlify/runtime.js +2 -3
- package/src/providers/niftyimages/executors.js +2 -2
- package/src/providers/northbeam/runtime.js +1 -1
- package/src/providers/notion/executors.js +36 -3
- package/src/providers/nozbe_teams/executors.js +4 -4
- package/src/providers/npm/runtime.js +4 -4
- package/src/providers/nusii_proposals/runtime.js +2 -2
- package/src/providers/ocr_web_service/executors.js +4 -4
- 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/octopus_deploy/executors.js +3 -3
- package/src/providers/oksign/runtime.js +3 -4
- package/src/providers/one_drive/executors.js +6 -6
- package/src/providers/one_password_events/runtime.js +1 -1
- package/src/providers/onfleet/runtime.js +3 -3
- package/src/providers/onlyoffice_docspace/runtime.js +4 -4
- package/src/providers/oomnitza/runtime.js +3 -4
- 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/otter_ai/executors.js +2 -2
- package/src/providers/oura/runtime.js +1 -1
- package/src/providers/paddle/executors.js +3 -3
- package/src/providers/pagerduty/runtime.js +2 -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/paradym/runtime.js +4 -4
- package/src/providers/parallel/runtime.js +3 -3
- package/src/providers/partner_stack_partner/runtime.js +1 -1
- package/src/providers/payrexx/runtime.js +5 -6
- package/src/providers/permit_io/runtime.js +2 -2
- package/src/providers/pinboard/executors.js +5 -6
- package/src/providers/pinpoint/runtime.js +2 -2
- 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/placid/runtime.js +3 -3
- package/src/providers/plain/runtime.js +5 -5
- package/src/providers/planetscale/runtime.js +2 -2
- package/src/providers/planhat/executors.js +6 -6
- package/src/providers/plausible_analytics/runtime.js +3 -3
- 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/posthog/runtime.js +3 -3
- package/src/providers/predis_ai/executors.js +3 -3
- package/src/providers/printavo/runtime.js +2 -2
- package/src/providers/prospeo/runtime.js +2 -3
- package/src/providers/provider-runtime.d.ts +26 -1
- package/src/providers/provider-runtime.js +62 -14
- package/src/providers/push_by_techulus/executors.js +3 -4
- package/src/providers/pushover/runtime.js +4 -5
- package/src/providers/pushsafer/runtime.js +4 -5
- package/src/providers/pylon/runtime.js +2 -2
- package/src/providers/qase/runtime.js +3 -3
- package/src/providers/qdrant/runtime.js +1 -1
- package/src/providers/qichacha/runtime.js +2 -2
- package/src/providers/qingflow/runtime.js +2 -2
- package/src/providers/quickchart/runtime.js +2 -2
- package/src/providers/quintadb/runtime.js +2 -2
- package/src/providers/quo/runtime.js +2 -2
- package/src/providers/rawg/runtime.js +4 -4
- package/src/providers/razorpay/runtime.js +4 -5
- package/src/providers/readme/runtime.js +6 -6
- package/src/providers/referralhero/runtime.js +3 -3
- package/src/providers/registry.generated.js +18 -0
- package/src/providers/render/executors.js +3 -3
- 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/respond_io/executors.js +3 -3
- package/src/providers/reversecontact/runtime.js +3 -3
- package/src/providers/ritekit/executors.js +2 -2
- package/src/providers/riveter/executors.js +2 -3
- package/src/providers/rocket_chat/executors.js +3 -4
- package/src/providers/rocket_reach/executors.js +3 -4
- 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 +2 -2
- package/src/providers/salesforce/context.js +7 -4
- package/src/providers/salesforce/executors.js +10 -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-base.js +14 -3
- package/src/providers/salesforce/runtime-chatter.d.ts +2 -0
- package/src/providers/salesforce/runtime-chatter.js +78 -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/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/saucelabs/runtime.js +4 -4
- package/src/providers/scopus/runtime.js +3 -3
- package/src/providers/scrape_do/executors.js +2 -2
- package/src/providers/scraperapi/runtime.js +4 -4
- package/src/providers/scrapfly/executors.js +2 -2
- package/src/providers/scrapingant/executors.js +6 -7
- package/src/providers/scrapingbee/executors.js +3 -3
- package/src/providers/scrapingdog/executors.js +1 -1
- package/src/providers/screenshot_fyi/executors.js +3 -4
- package/src/providers/screenshotbase/runtime.js +3 -3
- 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/search_api/runtime.js +2 -2
- package/src/providers/securitytrails/executors.js +2 -2
- package/src/providers/semantic_scholar/executors.js +2 -2
- package/src/providers/sendbird/executors.js +2 -2
- package/src/providers/sendfox/executors.js +3 -3
- package/src/providers/sendgrid/executors.js +5 -5
- package/src/providers/sendmator/runtime.js +3 -4
- 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/seqera/runtime.js +3 -4
- package/src/providers/serveravatar/executors.js +3 -3
- package/src/providers/sf_express/runtime.d.ts +0 -16
- package/src/providers/sf_express/runtime.js +2 -2
- package/src/providers/sheetdb/runtime.js +2 -2
- package/src/providers/short_menu/runtime.js +3 -3
- package/src/providers/shortcut/runtime.js +3 -3
- package/src/providers/shortpixel/runtime.js +2 -2
- package/src/providers/shotstack/runtime.js +4 -4
- package/src/providers/signpath/runtime.js +2 -2
- package/src/providers/signwell/runtime.js +5 -6
- package/src/providers/similarweb_digitalrank_api/runtime.js +3 -3
- package/src/providers/simla/runtime.js +5 -5
- package/src/providers/simplybook_me/executors.js +6 -6
- package/src/providers/sitespeakai/runtime.js +3 -3
- 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/slickdeals/runtime.js +2 -3
- package/src/providers/smartsuite/runtime.js +3 -3
- package/src/providers/sonarcloud/runtime.js +5 -5
- package/src/providers/sorftime/runtime.js +8 -8
- package/src/providers/spider/runtime.js +2 -2
- package/src/providers/splunk_http_event_collector/runtime.js +7 -8
- package/src/providers/sportsdata/runtime.js +4 -4
- package/src/providers/spyfu/runtime.js +4 -5
- package/src/providers/square/runtime.js +4 -4
- package/src/providers/stannp/runtime.js +2 -2
- package/src/providers/stripe/executors.js +2 -2
- package/src/providers/supermemory/runtime.js +3 -3
- 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/survey_monkey/runtime.js +3 -3
- package/src/providers/taiga/runtime.js +4 -4
- package/src/providers/talenox/executors.js +4 -4
- package/src/providers/tally/executors.d.ts +2 -0
- package/src/providers/tally/executors.js +2 -0
- package/src/providers/tally/runtime.js +3 -3
- 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/tavily/runtime.js +3 -4
- package/src/providers/teamcamp/executors.js +2 -2
- package/src/providers/teamtailor/executors.js +2 -2
- package/src/providers/telegram/executors.js +6 -7
- package/src/providers/teltel/executors.js +2 -2
- package/src/providers/templated/executors.js +3 -3
- package/src/providers/tencent_docs/runtime.js +4 -4
- package/src/providers/tencent_maps/runtime.js +3 -3
- package/src/providers/textcortex/runtime.js +3 -3
- package/src/providers/the_cat_api/runtime.js +3 -3
- package/src/providers/the_colony/runtime.js +3 -3
- package/src/providers/the_odds_api/runtime.js +3 -4
- package/src/providers/the_official_board/runtime.js +4 -4
- package/src/providers/thehive/runtime.js +1 -1
- package/src/providers/tikhub/endpoint-catalog.js +2 -3
- package/src/providers/tiktok_business/runtime.js +2 -2
- package/src/providers/timecamp/runtime.js +2 -2
- package/src/providers/timelink/runtime.js +2 -2
- 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/totp/runtime.js +4 -5
- package/src/providers/trawlingweb/runtime.js +2 -2
- package/src/providers/trello/executors.js +5 -2
- package/src/providers/trilium/runtime.js +2 -2
- package/src/providers/triple_whale/runtime.js +3 -3
- package/src/providers/truvera/runtime.js +2 -2
- package/src/providers/tuskr/runtime.js +2 -2
- package/src/providers/typebot/runtime.js +2 -2
- package/src/providers/typeform/executors.d.ts +2 -0
- package/src/providers/typeform/executors.js +2 -0
- package/src/providers/typeform/runtime.js +2 -2
- 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/uptimerobot/executors.js +3 -4
- package/src/providers/v2ex/runtime.js +8 -9
- package/src/providers/valyu/runtime.js +3 -3
- package/src/providers/vapi/runtime.js +4 -4
- 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/vectorshift/runtime.js +3 -3
- package/src/providers/venafitlsprotectcloud/runtime.js +2 -3
- package/src/providers/venafitlsprotectdatacenter/runtime.js +2 -3
- 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/vida/runtime.js +4 -4
- package/src/providers/vonage/runtime.js +3 -3
- package/src/providers/walmart_marketplace/runtime.js +5 -5
- package/src/providers/weatherapi/executors.js +3 -4
- package/src/providers/web_of_science/runtime.js +4 -4
- package/src/providers/web_of_science_expanded/runtime.js +9 -9
- package/src/providers/webex/runtime.js +3 -3
- package/src/providers/webinarjam/runtime.js +4 -4
- package/src/providers/webscraping_ai/runtime.js +3 -3
- package/src/providers/webvizio/runtime.js +3 -4
- package/src/providers/wecom_bot/smart-runtime.js +4 -5
- package/src/providers/wecom_mcp/runtime.js +3 -4
- 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/wejam_ai/runtime.js +3 -3
- package/src/providers/wolfram_alpha_api/runtime.js +3 -3
- package/src/providers/woocommerce/runtime.js +1 -1
- package/src/providers/woodpecker_co/executors.js +3 -4
- package/src/providers/woot/runtime.js +6 -6
- package/src/providers/workable/runtime.js +3 -3
- package/src/providers/workday/runtime.js +4 -4
- package/src/providers/workiom/runtime.js +2 -2
- package/src/providers/workiz/runtime.js +2 -2
- package/src/providers/workpath/executors.js +3 -4
- package/src/providers/worksnaps/executors.js +2 -2
- package/src/providers/y_gy/runtime.js +2 -2
- package/src/providers/zenscrape/runtime.js +3 -3
- package/src/providers/zep/runtime.js +4 -4
- package/src/providers/zeplin/runtime.js +2 -2
- package/src/providers/zhihu/executors.js +6 -6
- 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/providers/zylvie/runtime.js +4 -4
- package/src/saas/saas-cleanup-service.d.ts +2 -0
- package/src/saas/saas-cleanup-service.js +2 -1
- package/src/saas/saas-execution-service.d.ts +1 -1
- package/src/server/actions/action-runner.js +1 -1
- package/src/server/api/action-example.js +12 -1
- package/src/server/api/auth.js +3 -0
- package/src/server/api/connection-routes.js +1 -1
- package/src/server/api/console-catalog-routes.js +1 -1
- package/src/server/api/console-oauth-routes.d.ts +3 -1
- package/src/server/api/console-oauth-routes.js +22 -9
- package/src/server/api/oauth-completion-page.d.ts +57 -0
- package/src/server/api/oauth-completion-page.js +135 -10
- package/src/server/api/openapi.d.ts +5 -0
- package/src/server/api/openapi.js +62 -2
- package/src/server/api/pattern-example.js +35 -1
- package/src/server/api/runtime-api.d.ts +2 -1
- package/src/server/api/runtime-app-routes.js +1 -1
- package/src/server/api/runtime-execution-routes.js +2 -1
- package/src/server/api/trigger-routes.js +1 -1
- package/src/server/connect-app.d.ts +4 -0
- package/src/server/connect-app.js +15 -1
- package/src/server/connect-server.d.ts +6 -0
- package/src/server/connect-server.js +114 -4
- package/src/server/connector-runtime.d.ts +6 -8
- package/src/server/connector-runtime.js +8 -28
- package/src/server/proxy/proxy-runner.js +1 -1
- package/src/server/slack-event-verification.d.ts +37 -0
- package/src/server/slack-event-verification.js +91 -0
- package/src/server/storage/connection-request-store.d.ts +1 -1
- package/src/server/storage/connection-store.d.ts +1 -1
- package/src/server/storage/postgres/runtime-store.d.ts +1 -1
- package/src/server/storage/runtime-database.d.ts +1 -1
- package/src/server/storage/saas-project-store.d.ts +1 -1
- 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/maintenance.d.ts +2 -0
- package/src/triggers/maintenance.js +2 -1
- 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-signature.d.ts +10 -0
- package/src/triggers/sources/slack-signature.js +13 -0
- package/src/triggers/sources/slack.d.ts +3 -0
- package/src/triggers/sources/slack.js +125 -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 +53 -17
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CredentialValidators, ProviderExecutors, ProviderProxyExecutor } from "../../core/types.ts";
|
|
2
|
+
export declare const credentialValidators: CredentialValidators;
|
|
3
|
+
export declare const executors: ProviderExecutors;
|
|
4
|
+
export declare const proxy: ProviderProxyExecutor;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { optionalRecord, optionalString } from "../../core/cast.js";
|
|
2
|
+
import { requiredResponseRecord, runProviderRequest, ProviderRequestError, providerInputError, defineApiKeyProviderExecutors, defineProviderProxy, } from "../provider-runtime.js";
|
|
3
|
+
import { fundableActions } from "./actions.js";
|
|
4
|
+
import { fundableRoutes } from "./actions.js";
|
|
5
|
+
const fundableApiBaseUrl = "https://www.tryfundable.ai/api/v1";
|
|
6
|
+
async function requestFundable(path, method, parameters, apiKey, fetcher, validating = false, parentSignal) {
|
|
7
|
+
const url = new URL(`${fundableApiBaseUrl}${path}`);
|
|
8
|
+
if (method === "GET") {
|
|
9
|
+
for (const [key, value] of Object.entries(parameters)) {
|
|
10
|
+
if (value !== undefined)
|
|
11
|
+
url.searchParams.set(key, String(value));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return runProviderRequest({ label: "fundable", signal: parentSignal }, async (signal) => {
|
|
15
|
+
const headers = new Headers({ accept: "application/json", authorization: `Bearer ${apiKey}` });
|
|
16
|
+
if (method === "POST")
|
|
17
|
+
headers.set("content-type", "application/json");
|
|
18
|
+
const response = await fetcher(url.toString(), {
|
|
19
|
+
method,
|
|
20
|
+
headers,
|
|
21
|
+
body: method === "POST" ? JSON.stringify(parameters) : undefined,
|
|
22
|
+
signal,
|
|
23
|
+
});
|
|
24
|
+
const text = await response.text();
|
|
25
|
+
let payload;
|
|
26
|
+
try {
|
|
27
|
+
payload = JSON.parse(text);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
throw new ProviderRequestError(response.ok ? 502 : response.status, response.ok ? "fundable returned malformed JSON" : `fundable request failed (${response.status})`, undefined, "provider_error");
|
|
31
|
+
}
|
|
32
|
+
const object = optionalRecord(payload);
|
|
33
|
+
if (!response.ok || object?.success === false || object?.error != null) {
|
|
34
|
+
const error = optionalRecord(object?.error);
|
|
35
|
+
const code = optionalString(error?.code);
|
|
36
|
+
const message = optionalString(error?.message) ??
|
|
37
|
+
optionalString(object?.error) ??
|
|
38
|
+
optionalString(object?.message) ??
|
|
39
|
+
`fundable request failed (${response.status})`;
|
|
40
|
+
const detail = code ? `${code}: ${message}` : message;
|
|
41
|
+
if (code === "INVALID_API_KEY" || code === "INACTIVE_API_KEY") {
|
|
42
|
+
throw new ProviderRequestError(validating ? 400 : 409, detail, undefined, validating ? "invalid_input" : "authorization_failed");
|
|
43
|
+
}
|
|
44
|
+
throw new ProviderRequestError(response.ok ? 502 : response.status, detail, undefined, "provider_error");
|
|
45
|
+
}
|
|
46
|
+
return requiredResponseRecord(payload, "Fundable response");
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
async function execute(actionName, values, context) {
|
|
50
|
+
const { apiKey, fetcher } = context;
|
|
51
|
+
const route = fundableRoutes[actionName];
|
|
52
|
+
if (!route)
|
|
53
|
+
throw providerInputError("Unknown action route");
|
|
54
|
+
const path = route.path.replace("{id}", encodeURIComponent(String(values.id)));
|
|
55
|
+
const parameters = { ...values };
|
|
56
|
+
if (route.path.includes("{id}"))
|
|
57
|
+
delete parameters.id;
|
|
58
|
+
return requestFundable(path, route.method, parameters, apiKey, fetcher, undefined, context.signal);
|
|
59
|
+
}
|
|
60
|
+
export const credentialValidators = {
|
|
61
|
+
async apiKey(input, { fetcher, signal }) {
|
|
62
|
+
await requestFundable("/industry/search", "GET", { name: "software" }, input.apiKey, fetcher, true, signal);
|
|
63
|
+
return { profile: { displayName: "Fundable API Key" }, grantedScopes: [], metadata: {} };
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
export const executors = defineApiKeyProviderExecutors("fundable", Object.fromEntries(fundableActions.map((action) => [action.name, (values, context) => execute(action.name, values, context)])));
|
|
67
|
+
export const proxy = defineProviderProxy({
|
|
68
|
+
service: "fundable",
|
|
69
|
+
baseUrl: fundableApiBaseUrl,
|
|
70
|
+
auth: { type: "api_key_authorization", prefix: "Bearer " },
|
|
71
|
+
customizeRequest({ headers }) {
|
|
72
|
+
headers.set("accept", "application/json");
|
|
73
|
+
},
|
|
74
|
+
});
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { optionalRecord, optionalString } from "../../core/cast.js";
|
|
2
2
|
import { compactJson, encodePathSegment } from "../../core/request.js";
|
|
3
|
-
import { createProviderTimeout, isAbortLikeError, mapProviderActionHandlers, ProviderRequestError, providerUserAgent, } from "../provider-runtime.js";
|
|
3
|
+
import { createProviderTimeout, isAbortLikeError, mapProviderActionHandlers, ProviderRequestError, providerUserAgent, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
|
|
4
4
|
import { fusionApiOperations } from "./operations.js";
|
|
5
5
|
export const fusionApiDefaultBaseUrl = "https://fusion-api.oomol.com";
|
|
6
|
-
const fusionApiDefaultRequestTimeoutMs = 30_000;
|
|
7
6
|
const fusionApiLongRunningRequestTimeoutMs = 300_000;
|
|
8
7
|
const fusionApiLongRunningPaths = new Set(["/v1/deepseek-ocr/action/recognize", "/v1/jina-reader/action/read"]);
|
|
9
8
|
const fusionApiValidationPath = "/openapi/qwen-image?hideTaskStateAPI=true";
|
|
@@ -52,7 +51,7 @@ async function fusionApiRequest(context, request) {
|
|
|
52
51
|
}
|
|
53
52
|
const requestTimeoutMs = fusionApiLongRunningPaths.has(request.path)
|
|
54
53
|
? fusionApiLongRunningRequestTimeoutMs
|
|
55
|
-
:
|
|
54
|
+
: defaultProviderRequestTimeoutMs;
|
|
56
55
|
const timeout = createProviderTimeout(context.signal, requestTimeoutMs);
|
|
57
56
|
let response;
|
|
58
57
|
try {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { optionalInteger, optionalRawString, optionalRecord, optionalString } from "../../core/cast.js";
|
|
2
|
-
import { createProviderFetch, createProviderProxyUrl, providerUserAgent, createProviderTimeout, defineProviderExecutors, normalizeProviderProxyHeaders, ProviderRequestError, readProviderProxyErrorMessage, readProviderProxyResponse, readProviderTextBody, requireCustomCredential, toProviderProxyError, } from "../provider-runtime.js";
|
|
2
|
+
import { createProviderFetch, createProviderProxyUrl, providerUserAgent, createProviderTimeout, defineProviderExecutors, normalizeProviderProxyHeaders, ProviderRequestError, readProviderProxyErrorMessage, readProviderProxyResponse, readProviderTextBody, requireCustomCredential, toProviderProxyError, providerInputError, providerResponseError, } from "../provider-runtime.js";
|
|
3
3
|
const service = "gagelist";
|
|
4
4
|
const gagelistApiBaseUrl = "https://gagelist.net/GageList/api";
|
|
5
5
|
const gagelistTokenUrl = "https://gagelist.net/api/token";
|
|
@@ -452,7 +452,7 @@ function listQuery(input) {
|
|
|
452
452
|
function requireObject(value, message) {
|
|
453
453
|
const object = optionalRecord(value);
|
|
454
454
|
if (!object) {
|
|
455
|
-
throw
|
|
455
|
+
throw providerResponseError(message);
|
|
456
456
|
}
|
|
457
457
|
return object;
|
|
458
458
|
}
|
|
@@ -480,7 +480,7 @@ function createGagelistError(status, payload, phase, operation) {
|
|
|
480
480
|
optionalRawString(body?.message) ??
|
|
481
481
|
`GageList ${operation} failed with HTTP ${status}`;
|
|
482
482
|
if (phase == "validate" && (status == 400 || status == 401 || status == 403)) {
|
|
483
|
-
return
|
|
483
|
+
return providerInputError(message);
|
|
484
484
|
}
|
|
485
485
|
if (status == 401 || status == 403) {
|
|
486
486
|
return new ProviderRequestError(status, message);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { compactObject, optionalInteger, optionalRecord, optionalString, rawStringOrNull } from "../../core/cast.js";
|
|
2
2
|
import { assertPublicHttpUrl } from "../../core/request.js";
|
|
3
|
-
import { createProviderTimeout, defineProviderExecutors, defineProviderProxy, isAbortLikeError, providerInputError, providerUserAgent, ProviderRequestError, readProviderTextBody, requireApiKeyCredential, } from "../provider-runtime.js";
|
|
3
|
+
import { createProviderTimeout, defineProviderExecutors, defineProviderProxy, isAbortLikeError, providerInputError, providerUserAgent, ProviderRequestError, readProviderTextBody, requireApiKeyCredential, providerResponseError, } from "../provider-runtime.js";
|
|
4
4
|
const gainsightNxtMaxResponseBytes = 10 * 1024 * 1024;
|
|
5
5
|
const companyPath = "/v1/data/objects/Company";
|
|
6
6
|
const companyQueryPath = "/v1/data/objects/query/Company";
|
|
@@ -171,7 +171,7 @@ function createGainsightError(status, payload, phase) {
|
|
|
171
171
|
if (status >= 400 && status < 500) {
|
|
172
172
|
return new ProviderRequestError(status || 400, message);
|
|
173
173
|
}
|
|
174
|
-
return
|
|
174
|
+
return providerResponseError(message);
|
|
175
175
|
}
|
|
176
176
|
function readGainsightErrorMessage(payload) {
|
|
177
177
|
if (typeof payload === "string" && payload.trim()) {
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { compactObject, optionalInteger, optionalNumber, optionalRecord, optionalString } from "../../core/cast.js";
|
|
2
2
|
import { compactJson } from "../../core/request.js";
|
|
3
|
-
import { defineApiKeyProviderExecutors, defineProviderProxy, isAbortLikeError, ProviderRequestError, providerUserAgent, requiredInputString, } from "../provider-runtime.js";
|
|
3
|
+
import { defineApiKeyProviderExecutors, defineProviderProxy, isAbortLikeError, ProviderRequestError, providerUserAgent, requiredInputString, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
|
|
4
4
|
const service = "gamma";
|
|
5
5
|
const gammaApiBaseUrl = "https://public-api.gamma.app";
|
|
6
6
|
const gammaApiVersionPath = "/v1.0";
|
|
7
|
-
const gammaDefaultRequestTimeoutMs = 30_000;
|
|
8
7
|
export const gammaActionHandlers = {
|
|
9
8
|
create_generation(input, context) {
|
|
10
9
|
return createGeneration(input, context);
|
|
@@ -215,7 +214,9 @@ function isTerminalGenerationStatus(status) {
|
|
|
215
214
|
return status === "completed" || status === "failed";
|
|
216
215
|
}
|
|
217
216
|
async function gammaRequest(input) {
|
|
218
|
-
const requestTimeoutMs = input.timeoutMs == null
|
|
217
|
+
const requestTimeoutMs = input.timeoutMs == null
|
|
218
|
+
? defaultProviderRequestTimeoutMs
|
|
219
|
+
: Math.min(defaultProviderRequestTimeoutMs, input.timeoutMs);
|
|
219
220
|
const timeoutSignal = AbortSignal.timeout(requestTimeoutMs);
|
|
220
221
|
const signal = input.context.signal ? AbortSignal.any([input.context.signal, timeoutSignal]) : timeoutSignal;
|
|
221
222
|
const url = new URL(`${gammaApiVersionPath}${input.path}`, gammaApiBaseUrl);
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { compactObject, optionalInteger, optionalRecord, optionalString } from "../../core/cast.js";
|
|
2
|
-
import { ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
|
|
2
|
+
import { ProviderRequestError, providerUserAgent, providerInputError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
|
|
3
3
|
export const gangtiseApiBaseUrl = "https://openapi.gangtise.com";
|
|
4
4
|
const gangtiseCredentialUrl = "https://open-platform.gangtise.com/";
|
|
5
|
-
const gangtiseRequestTimeoutMs = 30_000;
|
|
6
5
|
const loginPath = "/application/auth/oauth/open/loginV2";
|
|
7
6
|
const securitiesSearchPath = "/application/open-reference/securities/search";
|
|
8
7
|
const realtimeQuotePath = "/application/open-quote/quote/realtime";
|
|
@@ -846,7 +845,7 @@ function normalizeMatrix(value, outputFields) {
|
|
|
846
845
|
});
|
|
847
846
|
}
|
|
848
847
|
async function postGangtiseJson(input) {
|
|
849
|
-
const timeout = createTimeoutSignal({ timeoutMs:
|
|
848
|
+
const timeout = createTimeoutSignal({ timeoutMs: defaultProviderRequestTimeoutMs });
|
|
850
849
|
let response;
|
|
851
850
|
let payload;
|
|
852
851
|
try {
|
|
@@ -908,7 +907,7 @@ function createGangtiseError(response, payload, phase) {
|
|
|
908
907
|
return new ProviderRequestError(phase === "validate" ? 400 : 401, message);
|
|
909
908
|
}
|
|
910
909
|
if (response.status === 400 || response.status === 422) {
|
|
911
|
-
return
|
|
910
|
+
return providerInputError(message);
|
|
912
911
|
}
|
|
913
912
|
return new ProviderRequestError(response.status >= 500 ? 502 : response.status || 502, message);
|
|
914
913
|
}
|
|
@@ -115,7 +115,7 @@ async function readGatherupPayload(response) {
|
|
|
115
115
|
function createGatherupError(status, payload, phase) {
|
|
116
116
|
const message = extractGatherupErrorMessage(payload) ?? `GatherUp request failed with status ${status}`;
|
|
117
117
|
if (phase === "validate" && (status === 401 || status === 403)) {
|
|
118
|
-
return
|
|
118
|
+
return providerInputError(message);
|
|
119
119
|
}
|
|
120
120
|
if (phase === "execute" && (status === 401 || status === 403)) {
|
|
121
121
|
return new ProviderRequestError(status, message);
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { optionalRecord, optionalString } from "../../core/cast.js";
|
|
2
2
|
import { compactJson, jsonObject } from "../../core/request.js";
|
|
3
|
-
import { defineApiKeyProviderExecutors, defineProviderProxy, isAbortLikeError, providerUserAgent, ProviderRequestError, } from "../provider-runtime.js";
|
|
3
|
+
import { defineApiKeyProviderExecutors, defineProviderProxy, isAbortLikeError, providerUserAgent, ProviderRequestError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
|
|
4
4
|
const service = "geckoboard";
|
|
5
5
|
const geckoboardApiBaseUrl = "https://api.geckoboard.com";
|
|
6
|
-
const geckoboardDefaultRequestTimeoutMs = 30_000;
|
|
7
6
|
export const geckoboardActionHandlers = {
|
|
8
7
|
async find_or_create_dataset(input, context) {
|
|
9
8
|
const datasetId = readInputString(input.datasetId, "datasetId");
|
|
@@ -97,7 +96,7 @@ export const credentialValidators = {
|
|
|
97
96
|
},
|
|
98
97
|
};
|
|
99
98
|
async function requestGeckoboardJson(input) {
|
|
100
|
-
const timeoutSignal = AbortSignal.timeout(
|
|
99
|
+
const timeoutSignal = AbortSignal.timeout(defaultProviderRequestTimeoutMs);
|
|
101
100
|
const signal = input.context.signal ? AbortSignal.any([input.context.signal, timeoutSignal]) : timeoutSignal;
|
|
102
101
|
let response;
|
|
103
102
|
let payload;
|
|
@@ -8,7 +8,6 @@ export declare const geminiDefaultVideoModel = "veo-3.0-generate-001";
|
|
|
8
8
|
export declare const geminiDefaultVideoPollIntervalMs = 10000;
|
|
9
9
|
export declare const geminiDefaultVideoMaxWaitMs: number;
|
|
10
10
|
export declare const geminiDefaultRequestTimeoutMs = 10000;
|
|
11
|
-
export declare const geminiDefaultLongRunningRequestTimeoutMs = 30000;
|
|
12
11
|
type GeminiErrorMode = "validate" | "execute";
|
|
13
12
|
interface GeminiModelSummary {
|
|
14
13
|
name: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { compactObject, optionalInteger, optionalNumber, optionalRecord, optionalString } from "../../core/cast.js";
|
|
2
2
|
import { jsonObject, readBoundedResponseBytes } from "../../core/request.js";
|
|
3
|
-
import { isAbortLikeError, providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
|
|
3
|
+
import { isAbortLikeError, providerUserAgent, ProviderRequestError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
|
|
4
4
|
export const geminiApiBaseUrl = "https://generativelanguage.googleapis.com/v1beta";
|
|
5
5
|
export const geminiDefaultTextModel = "gemini-2.5-flash";
|
|
6
6
|
export const geminiDefaultEmbeddingModel = "text-embedding-004";
|
|
@@ -10,7 +10,6 @@ export const geminiDefaultVideoModel = "veo-3.0-generate-001";
|
|
|
10
10
|
export const geminiDefaultVideoPollIntervalMs = 10_000;
|
|
11
11
|
export const geminiDefaultVideoMaxWaitMs = 12 * 60_000;
|
|
12
12
|
export const geminiDefaultRequestTimeoutMs = 10_000;
|
|
13
|
-
export const geminiDefaultLongRunningRequestTimeoutMs = 30_000;
|
|
14
13
|
export function geminiHeaders(apiKey) {
|
|
15
14
|
return {
|
|
16
15
|
"content-type": "application/json",
|
|
@@ -176,7 +175,7 @@ export async function generateGeminiImage(input, context) {
|
|
|
176
175
|
safetySettings: asSafetySettings(input.safety_settings),
|
|
177
176
|
systemInstruction: buildGeminiSystemInstruction(input.system_instruction),
|
|
178
177
|
})),
|
|
179
|
-
}, context, "generate_image", resolveGeminiTimeoutMs(input.timeout,
|
|
178
|
+
}, context, "generate_image", resolveGeminiTimeoutMs(input.timeout, defaultProviderRequestTimeoutMs));
|
|
180
179
|
await assertGeminiResponse(response, "execute", "generate_image");
|
|
181
180
|
const payload = await readGeminiJson(response, "generate_image");
|
|
182
181
|
const inlineImage = extractInlineDataPart(payload, "image/");
|
|
@@ -215,7 +214,7 @@ export async function generateGeminiVideos(input, context) {
|
|
|
215
214
|
seed: optionalInteger(input.seed),
|
|
216
215
|
}),
|
|
217
216
|
})),
|
|
218
|
-
}, context, "generate_videos",
|
|
217
|
+
}, context, "generate_videos", defaultProviderRequestTimeoutMs);
|
|
219
218
|
await assertGeminiResponse(response, "execute", "generate_videos");
|
|
220
219
|
const payload = await readGeminiJson(response, "generate_videos");
|
|
221
220
|
const operationName = optionalString(payload.name);
|
|
@@ -282,7 +281,7 @@ async function fetchGeminiVideoOperation(input, context) {
|
|
|
282
281
|
const operationName = buildOperationResource(optionalString(input.operation_name) ?? "", resolveGeminiModel(input.model, geminiDefaultVideoModel));
|
|
283
282
|
const response = await fetchGemini(`${geminiApiBaseUrl}/${operationName}`, {
|
|
284
283
|
headers: geminiHeaders(context.apiKey),
|
|
285
|
-
}, context, "get_videos_operation",
|
|
284
|
+
}, context, "get_videos_operation", defaultProviderRequestTimeoutMs);
|
|
286
285
|
await assertGeminiResponse(response, "execute", "get_videos_operation");
|
|
287
286
|
return readGeminiJson(response, "get_videos_operation");
|
|
288
287
|
}
|
|
@@ -432,7 +431,7 @@ async function downloadMediaBytes(url, context) {
|
|
|
432
431
|
}
|
|
433
432
|
const response = await fetchGemini(url, {
|
|
434
433
|
headers,
|
|
435
|
-
}, context, "media download",
|
|
434
|
+
}, context, "media download", defaultProviderRequestTimeoutMs);
|
|
436
435
|
if (!response.ok) {
|
|
437
436
|
const message = (await response.text().catch(() => "")) || `gemini media download failed with ${response.status}`;
|
|
438
437
|
throw new ProviderRequestError(502, message, { status: response.status });
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { optionalRecord, optionalString } from "../../core/cast.js";
|
|
2
|
-
import { ProviderRequestError, providerUserAgent, runProviderRequest } from "../provider-runtime.js";
|
|
2
|
+
import { ProviderRequestError, providerUserAgent, runProviderRequest, providerInputError, } from "../provider-runtime.js";
|
|
3
3
|
export const genpageApiBaseUrl = "https://backend.genpage.ai";
|
|
4
4
|
function listHandler(path, outputKey) {
|
|
5
5
|
return async (input, context) => ({
|
|
@@ -87,7 +87,7 @@ function createError(status, payload, phase) {
|
|
|
87
87
|
if (status === 429)
|
|
88
88
|
return new ProviderRequestError(429, message);
|
|
89
89
|
if (phase === "validate" && 400 <= status && status < 500)
|
|
90
|
-
return
|
|
90
|
+
return providerInputError(message);
|
|
91
91
|
return new ProviderRequestError(status || 500, message);
|
|
92
92
|
}
|
|
93
93
|
function requireArray(value) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { compactObject, optionalRecord, optionalString } from "../../core/cast.js";
|
|
2
|
-
import { defineApiKeyProviderExecutors, defineProviderProxy, ProviderRequestError } from "../provider-runtime.js";
|
|
2
|
+
import { defineApiKeyProviderExecutors, defineProviderProxy, ProviderRequestError, providerInputError, providerResponseError, } from "../provider-runtime.js";
|
|
3
3
|
const service = "geokeo";
|
|
4
4
|
const geokeoApiBaseUrl = "https://geokeo.com";
|
|
5
5
|
const geokeoValidationQuery = "ZZQXV NO MATCH PLACE 19700101";
|
|
@@ -104,12 +104,12 @@ function createGeokeoStatusError(status) {
|
|
|
104
104
|
return new ProviderRequestError(429, status);
|
|
105
105
|
}
|
|
106
106
|
if (status === "INVALID_REQUEST") {
|
|
107
|
-
return
|
|
107
|
+
return providerInputError(status);
|
|
108
108
|
}
|
|
109
109
|
if (status === "ACCESS_DENIED") {
|
|
110
|
-
return
|
|
110
|
+
return providerInputError(status);
|
|
111
111
|
}
|
|
112
|
-
return
|
|
112
|
+
return providerResponseError(status);
|
|
113
113
|
}
|
|
114
114
|
function readGeokeoStatus(payload) {
|
|
115
115
|
return optionalString(payload?.status);
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { nullableString, optionalNumber, optionalBoolean, optionalRecord, optionalString, requiredRecord, } from "../../core/cast.js";
|
|
2
|
-
import { isAbortLikeError, providerFetch, ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
|
|
2
|
+
import { isAbortLikeError, providerFetch, ProviderRequestError, providerUserAgent, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
|
|
3
3
|
export const getnoteBaseUrl = "https://openapi.biji.com";
|
|
4
|
-
const getnoteRequestTimeoutMs = 30_000;
|
|
5
4
|
export async function validateGetnoteCredential(input, fetcher = providerFetch, signal) {
|
|
6
5
|
const apiKey = readGetnoteApiKey(input.apiKey);
|
|
7
6
|
const clientId = readGetnoteClientId(input);
|
|
@@ -396,7 +395,7 @@ async function getnoteRequest(context, request) {
|
|
|
396
395
|
url.searchParams.set(key, String(value));
|
|
397
396
|
}
|
|
398
397
|
}
|
|
399
|
-
const timeoutSignal = AbortSignal.timeout(
|
|
398
|
+
const timeoutSignal = AbortSignal.timeout(defaultProviderRequestTimeoutMs);
|
|
400
399
|
const signal = context.signal ? AbortSignal.any([context.signal, timeoutSignal]) : timeoutSignal;
|
|
401
400
|
let response;
|
|
402
401
|
try {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { compactObject, optionalInteger, optionalString, optionalRawString } from "../../core/cast.js";
|
|
2
|
-
import { ProviderRequestError } from "../provider-runtime.js";
|
|
2
|
+
import { ProviderRequestError, providerInputError } from "../provider-runtime.js";
|
|
3
3
|
export { compactObject };
|
|
4
4
|
export const githubApiBaseUrl = "https://api.github.com";
|
|
5
5
|
export const githubApiVersion = "2022-11-28";
|
|
@@ -135,7 +135,7 @@ export function normalizeGitHubError(response, payload, fallbackMessage) {
|
|
|
135
135
|
return new ProviderRequestError(404, message);
|
|
136
136
|
}
|
|
137
137
|
if (response.status === 400 || response.status === 422) {
|
|
138
|
-
return
|
|
138
|
+
return providerInputError(message);
|
|
139
139
|
}
|
|
140
140
|
return new ProviderRequestError(500, message, response.status);
|
|
141
141
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { compactObject, optionalString } from "../../core/cast.js";
|
|
2
|
-
import { createProviderTimeout, isAbortLikeError, providerUserAgent, ProviderRequestError, } from "../provider-runtime.js";
|
|
2
|
+
import { createProviderTimeout, isAbortLikeError, providerUserAgent, ProviderRequestError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
|
|
3
3
|
export const glyphicApiBaseUrl = "https://api.glyphic.ai";
|
|
4
|
-
const glyphicRequestTimeoutMs = 30_000;
|
|
5
4
|
export const glyphicActionHandlers = {
|
|
6
5
|
async list_calls(input, context) {
|
|
7
6
|
const payload = await requestGlyphicJson({
|
|
@@ -99,7 +98,7 @@ async function requestGlyphicArray(path, context, label) {
|
|
|
99
98
|
return readResponseArray(payload, label);
|
|
100
99
|
}
|
|
101
100
|
async function requestGlyphicJson(input, context, mode) {
|
|
102
|
-
const timeout = createProviderTimeout(context.signal
|
|
101
|
+
const timeout = createProviderTimeout(context.signal);
|
|
103
102
|
try {
|
|
104
103
|
const response = await context.fetcher(buildGlyphicUrl(input.path, input.query), {
|
|
105
104
|
method: input.method,
|
|
@@ -121,7 +120,7 @@ async function requestGlyphicJson(input, context, mode) {
|
|
|
121
120
|
throw error;
|
|
122
121
|
}
|
|
123
122
|
if (timeout.didTimeout() || isAbortLikeError(error)) {
|
|
124
|
-
throw new ProviderRequestError(504, `Glyphic request timed out after ${
|
|
123
|
+
throw new ProviderRequestError(504, `Glyphic request timed out after ${defaultProviderRequestTimeoutMs / 1000} seconds`);
|
|
125
124
|
}
|
|
126
125
|
const message = error instanceof Error && error.message.trim() ? error.message : "request failed";
|
|
127
126
|
throw new ProviderRequestError(502, `Glyphic request failed: ${message}`);
|
|
@@ -2,7 +2,7 @@ import { format as schemaFormat } from "@cfworker/json-schema";
|
|
|
2
2
|
import { looseArray, optionalBoolean, optionalNumberLike, optionalRawString, optionalRecord, optionalString, } from "../../core/cast.js";
|
|
3
3
|
import { encodePathSegment } from "../../core/request.js";
|
|
4
4
|
import { googleBearerProxyAuth, googleServiceAccountValidator, resolveGoogleAccessToken, } from "../googledrive/runtime-auth.js";
|
|
5
|
-
import { defineProviderExecutors, defineProviderProxy, providerInputError, ProviderRequestError, providerResponseError, readProviderErrorTextBody, readProviderJsonBody, requiredInputString, requiredResponseRecord, runProviderRequest, withRetryAfterSeconds, } from "../provider-runtime.js";
|
|
5
|
+
import { defineProviderExecutors, defineProviderProxy, providerInputError, ProviderRequestError, providerResponseError, readProviderErrorTextBody, readProviderJsonBody, readRetryAfterSeconds, requiredInputString, requiredResponseRecord, runProviderRequest, providerRequestErrorCode, withRetryAfterSeconds, } from "../provider-runtime.js";
|
|
6
6
|
import { decodeGmailAttachment } from "./attachment-stream.js";
|
|
7
7
|
import { gmailMaxMimeBytes } from "./limits.js";
|
|
8
8
|
import { assertMatchingReplySubject, buildRecipients, normalizeGmailMessage, normalizeMessageId, normalizeThreadId, readHeader, resolveReplyHeaders, summarizeGmailMessage, } from "./message.js";
|
|
@@ -13,6 +13,16 @@ import { gmailMessageReceived } from "./trigger-on-message-received.js";
|
|
|
13
13
|
const service = "gmail";
|
|
14
14
|
const gmailApiBaseUrl = "https://gmail.googleapis.com/gmail/v1";
|
|
15
15
|
const detailHydrationBatchSize = 10;
|
|
16
|
+
// Hydration fans out one detail request per listed id, which can exceed Gmail's per-user quota.
|
|
17
|
+
// The retry below keeps hydrated rows and paces the rest instead of discarding the page.
|
|
18
|
+
// Six attempts let the backoff climb 1, 2, 4, 8, 16 s (about 31 s of waiting per message at most),
|
|
19
|
+
// long enough for the moving average to drain, without retrying one message forever.
|
|
20
|
+
const hydrationMaxAttempts = 6;
|
|
21
|
+
const hydrationBaseBackoffMs = 1_000;
|
|
22
|
+
// Total time one action may spend waiting out rate limits. It stays well below the few minutes a
|
|
23
|
+
// caller typically allows one action call, so a persistent limit still comes back as rate_limited
|
|
24
|
+
// (which the caller can pace) rather than as a client-side timeout.
|
|
25
|
+
const hydrationRetryBudgetMs = 120_000;
|
|
16
26
|
// Attachments may reach Gmail's 25 MB cap, and the base64 JSON envelope is a third larger again;
|
|
17
27
|
// the default 30 s request budget covers fetch, decode, and disk write, so give this transfer longer.
|
|
18
28
|
const attachmentDownloadTimeoutMs = 120_000;
|
|
@@ -49,11 +59,11 @@ export const gmailActionHandlers = {
|
|
|
49
59
|
})),
|
|
50
60
|
};
|
|
51
61
|
},
|
|
52
|
-
list_threads(input, { userId, accessToken, fetcher }) {
|
|
53
|
-
return listThreads(input, userId, accessToken, fetcher);
|
|
62
|
+
list_threads(input, { userId, accessToken, fetcher, signal }) {
|
|
63
|
+
return listThreads(input, userId, accessToken, fetcher, signal);
|
|
54
64
|
},
|
|
55
|
-
fetch_emails(input, { userId, accessToken, fetcher }) {
|
|
56
|
-
return fetchEmails(input, userId, accessToken, fetcher);
|
|
65
|
+
fetch_emails(input, { userId, accessToken, fetcher, signal }) {
|
|
66
|
+
return fetchEmails(input, userId, accessToken, fetcher, signal);
|
|
57
67
|
},
|
|
58
68
|
async get_message(input, { userId, accessToken, fetcher }) {
|
|
59
69
|
const message = await getMessageResource(userId, normalizeMessageId(input.messageId), accessToken, fetcher, "full");
|
|
@@ -92,8 +102,8 @@ export const gmailActionHandlers = {
|
|
|
92
102
|
create_email_draft(input, context) {
|
|
93
103
|
return createEmailDraft(input, context);
|
|
94
104
|
},
|
|
95
|
-
list_drafts(input, { userId, accessToken, fetcher }) {
|
|
96
|
-
return listDrafts(input, userId, accessToken, fetcher);
|
|
105
|
+
list_drafts(input, { userId, accessToken, fetcher, signal }) {
|
|
106
|
+
return listDrafts(input, userId, accessToken, fetcher, signal);
|
|
97
107
|
},
|
|
98
108
|
get_draft(input, { userId, accessToken, fetcher }) {
|
|
99
109
|
return getDraft(input, userId, accessToken, fetcher);
|
|
@@ -233,7 +243,7 @@ export const credentialValidators = {
|
|
|
233
243
|
},
|
|
234
244
|
customCredential: googleServiceAccountValidator(service, gmailOAuthScopes),
|
|
235
245
|
};
|
|
236
|
-
async function fetchEmails(input, userId, accessToken, fetcher) {
|
|
246
|
+
async function fetchEmails(input, userId, accessToken, fetcher, signal) {
|
|
237
247
|
const detail = trimmedString(input.detail) || "summary";
|
|
238
248
|
const url = new URL(gmailUserUrl(userId, "messages"));
|
|
239
249
|
const query = trimmedString(input.query);
|
|
@@ -265,7 +275,7 @@ async function fetchEmails(input, userId, accessToken, fetcher) {
|
|
|
265
275
|
}
|
|
266
276
|
const includeFullMessage = detail === "full";
|
|
267
277
|
const format = includeFullMessage ? "full" : "metadata";
|
|
268
|
-
const hydrated = await hydrateInBatches(messages, (message) => getMessageResource(userId, message.id, accessToken, fetcher, format));
|
|
278
|
+
const hydrated = await hydrateInBatches(messages, (message) => getMessageResource(userId, message.id, accessToken, fetcher, format), signal);
|
|
269
279
|
return {
|
|
270
280
|
messages: hydrated.map((message) => includeFullMessage ? normalizeGmailMessage(message) : summarizeGmailMessage(message)),
|
|
271
281
|
nextPageToken: payload.nextPageToken ?? null,
|
|
@@ -285,7 +295,7 @@ async function fetchMessagesByThreadId(input, userId, accessToken, fetcher) {
|
|
|
285
295
|
messages: (thread.messages ?? []).map((message) => normalizeGmailMessage(message)),
|
|
286
296
|
};
|
|
287
297
|
}
|
|
288
|
-
async function listThreads(input, userId, accessToken, fetcher) {
|
|
298
|
+
async function listThreads(input, userId, accessToken, fetcher, signal) {
|
|
289
299
|
const url = new URL(gmailUserUrl(userId, "threads"));
|
|
290
300
|
const query = trimmedString(input.query);
|
|
291
301
|
if (query) {
|
|
@@ -300,7 +310,7 @@ async function listThreads(input, userId, accessToken, fetcher) {
|
|
|
300
310
|
const payload = await fetchJson(url.toString(), accessToken, fetcher);
|
|
301
311
|
const threads = payload.threads ?? [];
|
|
302
312
|
if (input.verbose === true) {
|
|
303
|
-
const hydrated = await hydrateInBatches(threads, (thread) => getThreadResource(userId, thread.id, accessToken, fetcher, "full"));
|
|
313
|
+
const hydrated = await hydrateInBatches(threads, (thread) => getThreadResource(userId, thread.id, accessToken, fetcher, "full"), signal);
|
|
304
314
|
return {
|
|
305
315
|
threads: hydrated.map((thread) => ({
|
|
306
316
|
threadId: thread.id,
|
|
@@ -465,7 +475,7 @@ function latestReplyMessage(thread) {
|
|
|
465
475
|
throw providerInputError("thread has no non-draft messages to reply to");
|
|
466
476
|
return latest;
|
|
467
477
|
}
|
|
468
|
-
async function listDrafts(input, userId, accessToken, fetcher) {
|
|
478
|
+
async function listDrafts(input, userId, accessToken, fetcher, signal) {
|
|
469
479
|
const url = new URL(gmailUserUrl(userId, "drafts"));
|
|
470
480
|
if (input.pageToken != null) {
|
|
471
481
|
url.searchParams.set("pageToken", String(input.pageToken));
|
|
@@ -476,7 +486,7 @@ async function listDrafts(input, userId, accessToken, fetcher) {
|
|
|
476
486
|
const payload = await fetchJson(url.toString(), accessToken, fetcher);
|
|
477
487
|
const drafts = payload.drafts ?? [];
|
|
478
488
|
if (input.verbose === true) {
|
|
479
|
-
const hydrated = await hydrateInBatches(drafts, (draft) => getDraftResource(userId, draft.id, accessToken, fetcher, "full"));
|
|
489
|
+
const hydrated = await hydrateInBatches(drafts, (draft) => getDraftResource(userId, draft.id, accessToken, fetcher, "full"), signal);
|
|
480
490
|
return {
|
|
481
491
|
drafts: hydrated.map((draft) => ({
|
|
482
492
|
id: draft.id,
|
|
@@ -780,14 +790,94 @@ function normalizeThread(thread) {
|
|
|
780
790
|
messages: (thread.messages ?? []).map((message) => normalizeGmailMessage(message)),
|
|
781
791
|
};
|
|
782
792
|
}
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
793
|
+
/**
|
|
794
|
+
* Hydrate every item, in order, or fail the whole call: a caller advances its page cursor on
|
|
795
|
+
* success, so a partial page must never look complete.
|
|
796
|
+
*
|
|
797
|
+
* Items run in batches of up to `detailHydrationBatchSize`. A per-user rate limit on one item
|
|
798
|
+
* keeps every row already hydrated and requeues only the limited items; the batch width halves
|
|
799
|
+
* (down to 1) and the next batch waits out `Retry-After` or an exponential, jittered backoff.
|
|
800
|
+
* Each clean batch widens the next one by a single item again. When an item runs out of
|
|
801
|
+
* attempts, or the next wait would overrun the action's retry budget, the rate-limit error
|
|
802
|
+
* with the longest `Retry-After` is thrown unchanged, so the action still reports `rate_limited`.
|
|
803
|
+
* Any other error rejects immediately, exactly like the plain batch it replaces.
|
|
804
|
+
*/
|
|
805
|
+
async function hydrateInBatches(items, hydrate, signal) {
|
|
806
|
+
const hydrated = new Array(items.length);
|
|
807
|
+
const attempts = new Array(items.length).fill(0);
|
|
808
|
+
const deadline = Date.now() + hydrationRetryBudgetMs;
|
|
809
|
+
let pending = items.map((_item, index) => index);
|
|
810
|
+
let width = detailHydrationBatchSize;
|
|
811
|
+
while (pending.length > 0) {
|
|
812
|
+
const batch = pending.slice(0, width);
|
|
813
|
+
const outcomes = await Promise.all(batch.map(async (index) => {
|
|
814
|
+
attempts[index] += 1;
|
|
815
|
+
try {
|
|
816
|
+
hydrated[index] = await hydrate(items[index]);
|
|
817
|
+
return undefined;
|
|
818
|
+
}
|
|
819
|
+
catch (error) {
|
|
820
|
+
if (isRetryableGmailRateLimit(error))
|
|
821
|
+
return error;
|
|
822
|
+
throw error;
|
|
823
|
+
}
|
|
824
|
+
}));
|
|
825
|
+
const limited = batch.filter((_index, position) => outcomes[position] !== undefined);
|
|
826
|
+
pending = [...limited, ...pending.slice(batch.length)];
|
|
827
|
+
if (limited.length === 0) {
|
|
828
|
+
width = Math.min(detailHydrationBatchSize, width + 1);
|
|
829
|
+
continue;
|
|
830
|
+
}
|
|
831
|
+
// Surface the error carrying the longest Retry-After so the caller can pace the connection.
|
|
832
|
+
const pacingError = outcomes
|
|
833
|
+
.filter((error) => error !== undefined)
|
|
834
|
+
.reduce((longest, error) => (gmailRetryAfterMs(error) > gmailRetryAfterMs(longest) ? error : longest));
|
|
835
|
+
const attempt = Math.max(...limited.map((index) => attempts[index]));
|
|
836
|
+
if (attempt >= hydrationMaxAttempts)
|
|
837
|
+
throw pacingError;
|
|
838
|
+
const delayMs = hydrationRetryDelayMs(attempt, gmailRetryAfterMs(pacingError));
|
|
839
|
+
if (Date.now() + delayMs > deadline)
|
|
840
|
+
throw pacingError;
|
|
841
|
+
width = Math.max(1, Math.floor(width / 2));
|
|
842
|
+
await sleepFor(delayMs, signal);
|
|
788
843
|
}
|
|
789
844
|
return hydrated;
|
|
790
845
|
}
|
|
846
|
+
/**
|
|
847
|
+
* A rate limit worth waiting out inside this action: whatever the runtime reports as `rate_limited`
|
|
848
|
+
* (any 429, and the 403 rate-limit reasons `readGmailError` labels), except an exhausted daily or
|
|
849
|
+
* project quota, which stays `rate_limited` but does not recover within one action.
|
|
850
|
+
*/
|
|
851
|
+
function isRetryableGmailRateLimit(error) {
|
|
852
|
+
return (error instanceof GmailRequestError && !error.quotaExhausted && providerRequestErrorCode(error) === "rate_limited");
|
|
853
|
+
}
|
|
854
|
+
function gmailRetryAfterMs(error) {
|
|
855
|
+
return (optionalNumberLike(optionalRecord(error.details)?.retryAfterSeconds) ?? 0) * 1_000;
|
|
856
|
+
}
|
|
857
|
+
/** Honour the upstream `Retry-After` when present, else equal-jitter exponential backoff. */
|
|
858
|
+
function hydrationRetryDelayMs(attempt, retryAfterMs) {
|
|
859
|
+
if (retryAfterMs > 0)
|
|
860
|
+
return retryAfterMs;
|
|
861
|
+
const backoffMs = hydrationBaseBackoffMs * 2 ** (attempt - 1);
|
|
862
|
+
return backoffMs / 2 + Math.random() * (backoffMs / 2);
|
|
863
|
+
}
|
|
864
|
+
function sleepFor(delayMs, signal) {
|
|
865
|
+
return new Promise((resolve, reject) => {
|
|
866
|
+
if (signal?.aborted) {
|
|
867
|
+
reject(signal.reason);
|
|
868
|
+
return;
|
|
869
|
+
}
|
|
870
|
+
const onAbort = () => {
|
|
871
|
+
clearTimeout(timer);
|
|
872
|
+
reject(signal.reason);
|
|
873
|
+
};
|
|
874
|
+
const timer = setTimeout(() => {
|
|
875
|
+
signal?.removeEventListener("abort", onAbort);
|
|
876
|
+
resolve();
|
|
877
|
+
}, delayMs);
|
|
878
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
879
|
+
});
|
|
880
|
+
}
|
|
791
881
|
function buildLabelPayload(input) {
|
|
792
882
|
return Object.fromEntries(Object.entries(input).filter(([key, value]) => key !== "userId" && key !== "labelId" && value !== undefined));
|
|
793
883
|
}
|
|
@@ -864,12 +954,18 @@ async function assertGmailResponse(response) {
|
|
|
864
954
|
}
|
|
865
955
|
throw await readGmailError(response);
|
|
866
956
|
}
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
957
|
+
// Gmail answers both of these with a 403, which would otherwise read as an authorization failure.
|
|
958
|
+
// Per-user rate limits clear within seconds; exhausted daily or project quotas do not.
|
|
959
|
+
const gmailRateLimitReasons = new Set(["rateLimitExceeded", "userRateLimitExceeded"]);
|
|
960
|
+
const gmailExhaustedQuotaReasons = new Set(["dailyLimitExceeded", "quotaExceeded"]);
|
|
961
|
+
/** A Gmail API failure that also records whether the upstream reason was an exhausted quota. */
|
|
962
|
+
class GmailRequestError extends ProviderRequestError {
|
|
963
|
+
quotaExhausted;
|
|
964
|
+
constructor(status, message, details, code, quotaExhausted) {
|
|
965
|
+
super(status, message, details, code);
|
|
966
|
+
this.quotaExhausted = quotaExhausted;
|
|
967
|
+
}
|
|
968
|
+
}
|
|
873
969
|
async function readGmailError(response) {
|
|
874
970
|
const text = await readProviderErrorTextBody(response, "gmail error response");
|
|
875
971
|
let error;
|
|
@@ -879,8 +975,10 @@ async function readGmailError(response) {
|
|
|
879
975
|
catch {
|
|
880
976
|
// A malformed response must not expose its raw body or change status classification.
|
|
881
977
|
}
|
|
882
|
-
const
|
|
883
|
-
|
|
884
|
-
|
|
978
|
+
const reasons = looseArray(error?.errors).flatMap((entry) => optionalString(optionalRecord(entry)?.reason) ?? []);
|
|
979
|
+
const quotaExhausted = reasons.some((reason) => gmailExhaustedQuotaReasons.has(reason));
|
|
980
|
+
const rateLimited = response.status === 403 && (quotaExhausted || reasons.some((reason) => gmailRateLimitReasons.has(reason)));
|
|
981
|
+
const retryAfterSeconds = rateLimited ? readRetryAfterSeconds(response.headers) : undefined;
|
|
982
|
+
return new GmailRequestError(response.status, optionalString(error?.message) ?? `gmail request failed with ${response.status}`, retryAfterSeconds === undefined ? withRetryAfterSeconds(response) : { retryAfterSeconds }, rateLimited ? "rate_limited" : undefined, quotaExhausted);
|
|
885
983
|
}
|
|
886
984
|
export const triggers = [gmailMessageReceived];
|