@oomol-lab/open-connector 1.9.1 → 1.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/open-connector/catalog/apps/aisa.json +1946 -56
- package/assets/open-connector/catalog/apps/akta.json +1181 -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 +230 -1
- 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/core/json-schema.d.ts +11 -3
- package/src/core/json-schema.js +13 -3
- package/src/providers/action-contracts.generated.d.ts +23 -6
- 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/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/calendly/executors.d.ts +2 -0
- package/src/providers/calendly/executors.js +2 -0
- package/src/providers/calendly/trigger-on-booking-event.d.ts +2 -0
- package/src/providers/calendly/trigger-on-booking-event.definition.d.ts +5 -0
- package/src/providers/calendly/trigger-on-booking-event.definition.js +42 -0
- package/src/providers/calendly/trigger-on-booking-event.js +144 -0
- package/src/providers/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/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/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/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/feishu_app_bot/trigger-on-event.js +2 -0
- package/src/providers/fireflies/executors.d.ts +2 -0
- package/src/providers/fireflies/executors.js +2 -0
- package/src/providers/fireflies/trigger-on-meeting-ready.d.ts +2 -0
- package/src/providers/fireflies/trigger-on-meeting-ready.definition.d.ts +4 -0
- package/src/providers/fireflies/trigger-on-meeting-ready.definition.js +44 -0
- package/src/providers/fireflies/trigger-on-meeting-ready.js +60 -0
- package/src/providers/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/gmail/message.d.ts +1 -6
- package/src/providers/gmail/message.js +1 -1
- package/src/providers/intercom/executors.d.ts +2 -0
- package/src/providers/intercom/executors.js +2 -0
- package/src/providers/intercom/trigger-on-conversation-event.d.ts +2 -0
- package/src/providers/intercom/trigger-on-conversation-event.definition.d.ts +4 -0
- package/src/providers/intercom/trigger-on-conversation-event.definition.js +42 -0
- package/src/providers/intercom/trigger-on-conversation-event.js +23 -0
- package/src/providers/jira/executors.d.ts +2 -0
- package/src/providers/jira/executors.js +2 -0
- package/src/providers/jira/trigger-on-issue-event.d.ts +2 -0
- package/src/providers/jira/trigger-on-issue-event.definition.d.ts +4 -0
- package/src/providers/jira/trigger-on-issue-event.definition.js +44 -0
- package/src/providers/jira/trigger-on-issue-event.js +116 -0
- package/src/providers/jira/trigger-resource.d.ts +4 -0
- package/src/providers/jira/trigger-resource.js +141 -0
- package/src/providers/keenable/executors.d.ts +4 -0
- package/src/providers/keenable/executors.js +20 -0
- package/src/providers/keenable/runtime.d.ts +26 -0
- package/src/providers/keenable/runtime.js +89 -0
- package/src/providers/kolsprite_mcp/actions.d.ts +2 -0
- package/src/providers/kolsprite_mcp/actions.js +519 -0
- package/src/providers/kolsprite_mcp/executors.d.ts +4 -0
- package/src/providers/kolsprite_mcp/executors.js +89 -0
- package/src/providers/litescrape/actions.d.ts +12 -0
- package/src/providers/litescrape/actions.js +124 -0
- package/src/providers/litescrape/airbnb-schemas.d.ts +2 -0
- package/src/providers/litescrape/airbnb-schemas.js +72 -0
- package/src/providers/litescrape/aliexpress-schemas.d.ts +2 -0
- package/src/providers/litescrape/aliexpress-schemas.js +52 -0
- package/src/providers/litescrape/amazon-schemas.d.ts +2 -0
- package/src/providers/litescrape/amazon-schemas.js +358 -0
- package/src/providers/litescrape/apartments-schemas.d.ts +2 -0
- package/src/providers/litescrape/apartments-schemas.js +45 -0
- package/src/providers/litescrape/apple-schemas.d.ts +2 -0
- package/src/providers/litescrape/apple-schemas.js +215 -0
- package/src/providers/litescrape/ashby-schemas.d.ts +2 -0
- package/src/providers/litescrape/ashby-schemas.js +82 -0
- package/src/providers/litescrape/baidu-schemas.d.ts +2 -0
- package/src/providers/litescrape/baidu-schemas.js +31 -0
- package/src/providers/litescrape/bestbuy-schemas.d.ts +2 -0
- package/src/providers/litescrape/bestbuy-schemas.js +56 -0
- package/src/providers/litescrape/bing-schemas.d.ts +2 -0
- package/src/providers/litescrape/bing-schemas.js +315 -0
- package/src/providers/litescrape/brave-schemas.d.ts +2 -0
- package/src/providers/litescrape/brave-schemas.js +101 -0
- package/src/providers/litescrape/copilot-schemas.d.ts +2 -0
- package/src/providers/litescrape/copilot-schemas.js +590 -0
- package/src/providers/litescrape/duckduckgo-schemas.d.ts +2 -0
- package/src/providers/litescrape/duckduckgo-schemas.js +64 -0
- package/src/providers/litescrape/ebay-schemas.d.ts +2 -0
- package/src/providers/litescrape/ebay-schemas.js +300 -0
- package/src/providers/litescrape/etsy-schemas.d.ts +2 -0
- package/src/providers/litescrape/etsy-schemas.js +52 -0
- package/src/providers/litescrape/eventbrite-schemas.d.ts +2 -0
- package/src/providers/litescrape/eventbrite-schemas.js +43 -0
- package/src/providers/litescrape/executors.d.ts +4 -0
- package/src/providers/litescrape/executors.js +138 -0
- package/src/providers/litescrape/facebook-schemas.d.ts +2 -0
- package/src/providers/litescrape/facebook-schemas.js +283 -0
- package/src/providers/litescrape/glassdoor-schemas.d.ts +2 -0
- package/src/providers/litescrape/glassdoor-schemas.js +147 -0
- package/src/providers/litescrape/google-schemas.d.ts +2 -0
- package/src/providers/litescrape/google-schemas.js +1686 -0
- package/src/providers/litescrape/homedepot-schemas.d.ts +2 -0
- package/src/providers/litescrape/homedepot-schemas.js +58 -0
- package/src/providers/litescrape/homes-schemas.d.ts +2 -0
- package/src/providers/litescrape/homes-schemas.js +45 -0
- package/src/providers/litescrape/ikea-schemas.d.ts +2 -0
- package/src/providers/litescrape/ikea-schemas.js +56 -0
- package/src/providers/litescrape/indeed-schemas.d.ts +2 -0
- package/src/providers/litescrape/indeed-schemas.js +141 -0
- package/src/providers/litescrape/instagram-schemas.d.ts +2 -0
- package/src/providers/litescrape/instagram-schemas.js +234 -0
- package/src/providers/litescrape/kroger-schemas.d.ts +2 -0
- package/src/providers/litescrape/kroger-schemas.js +62 -0
- package/src/providers/litescrape/levels-schemas.d.ts +2 -0
- package/src/providers/litescrape/levels-schemas.js +153 -0
- package/src/providers/litescrape/naver-schemas.d.ts +2 -0
- package/src/providers/litescrape/naver-schemas.js +107 -0
- package/src/providers/litescrape/realtor-schemas.d.ts +2 -0
- package/src/providers/litescrape/realtor-schemas.js +47 -0
- package/src/providers/litescrape/redfin-schemas.d.ts +2 -0
- package/src/providers/litescrape/redfin-schemas.js +112 -0
- package/src/providers/litescrape/shared.d.ts +9 -0
- package/src/providers/litescrape/shared.js +1 -0
- package/src/providers/litescrape/sprouts-schemas.d.ts +2 -0
- package/src/providers/litescrape/sprouts-schemas.js +72 -0
- package/src/providers/litescrape/target-schemas.d.ts +2 -0
- package/src/providers/litescrape/target-schemas.js +56 -0
- package/src/providers/litescrape/tiktok-schemas.d.ts +2 -0
- package/src/providers/litescrape/tiktok-schemas.js +625 -0
- package/src/providers/litescrape/tools.d.ts +2 -0
- package/src/providers/litescrape/tools.js +88 -0
- package/src/providers/litescrape/tripadvisor-schemas.d.ts +2 -0
- package/src/providers/litescrape/tripadvisor-schemas.js +119 -0
- package/src/providers/litescrape/walmart-schemas.d.ts +2 -0
- package/src/providers/litescrape/walmart-schemas.js +52 -0
- package/src/providers/litescrape/wayfair-schemas.d.ts +2 -0
- package/src/providers/litescrape/wayfair-schemas.js +52 -0
- package/src/providers/litescrape/web-schemas.d.ts +2 -0
- package/src/providers/litescrape/web-schemas.js +463 -0
- package/src/providers/litescrape/wholefoods-schemas.d.ts +2 -0
- package/src/providers/litescrape/wholefoods-schemas.js +56 -0
- package/src/providers/litescrape/x-schemas.d.ts +2 -0
- package/src/providers/litescrape/x-schemas.js +128 -0
- package/src/providers/litescrape/yahoo-schemas.d.ts +2 -0
- package/src/providers/litescrape/yahoo-schemas.js +234 -0
- package/src/providers/litescrape/yandex-schemas.d.ts +2 -0
- package/src/providers/litescrape/yandex-schemas.js +179 -0
- package/src/providers/litescrape/yelp-schemas.d.ts +2 -0
- package/src/providers/litescrape/yelp-schemas.js +130 -0
- package/src/providers/litescrape/youtube-schemas.d.ts +2 -0
- package/src/providers/litescrape/youtube-schemas.js +128 -0
- package/src/providers/litescrape/zillow-schemas.d.ts +2 -0
- package/src/providers/litescrape/zillow-schemas.js +128 -0
- package/src/providers/litescrape/ziprecruiter-schemas.d.ts +2 -0
- package/src/providers/litescrape/ziprecruiter-schemas.js +96 -0
- package/src/providers/magichour/actions.d.ts +22 -0
- package/src/providers/magichour/actions.js +308 -0
- package/src/providers/magichour/audio-schemas.d.ts +2 -0
- package/src/providers/magichour/audio-schemas.js +54 -0
- package/src/providers/magichour/executors.d.ts +4 -0
- package/src/providers/magichour/executors.js +115 -0
- package/src/providers/magichour/image-schemas.d.ts +2 -0
- package/src/providers/magichour/image-schemas.js +443 -0
- package/src/providers/magichour/project-schemas.d.ts +8 -0
- package/src/providers/magichour/project-schemas.js +65 -0
- package/src/providers/magichour/shared-schemas.d.ts +8 -0
- package/src/providers/magichour/shared-schemas.js +18 -0
- package/src/providers/magichour/utility-schemas.d.ts +11 -0
- package/src/providers/magichour/utility-schemas.js +150 -0
- package/src/providers/magichour/video-schemas.d.ts +2 -0
- package/src/providers/magichour/video-schemas.js +629 -0
- package/src/providers/magichour/voices.d.ts +1 -0
- package/src/providers/magichour/voices.js +1268 -0
- package/src/providers/minimax/executors.js +19 -4
- package/src/providers/minimax/text-models.d.ts +2 -0
- package/src/providers/minimax/text-models.js +34 -0
- package/src/providers/moneyforward_mcp/manifest.d.ts +0 -2
- package/src/providers/moneyforward_mcp/manifest.js +1 -1
- package/src/providers/notion/executors.js +36 -3
- package/src/providers/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/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/pandadoc/executors.d.ts +2 -0
- package/src/providers/pandadoc/executors.js +2 -0
- package/src/providers/pandadoc/trigger-on-document-event.d.ts +2 -0
- package/src/providers/pandadoc/trigger-on-document-event.definition.d.ts +4 -0
- package/src/providers/pandadoc/trigger-on-document-event.definition.js +33 -0
- package/src/providers/pandadoc/trigger-on-document-event.js +96 -0
- package/src/providers/pipedrive/executors.d.ts +2 -0
- package/src/providers/pipedrive/executors.js +2 -0
- package/src/providers/pipedrive/trigger-on-crm-event.d.ts +2 -0
- package/src/providers/pipedrive/trigger-on-crm-event.definition.d.ts +4 -0
- package/src/providers/pipedrive/trigger-on-crm-event.definition.js +30 -0
- package/src/providers/pipedrive/trigger-on-crm-event.js +101 -0
- package/src/providers/ploid/actions.d.ts +16 -0
- package/src/providers/ploid/actions.js +23 -0
- package/src/providers/ploid/endpoints.json +8440 -0
- package/src/providers/ploid/executors.d.ts +4 -0
- package/src/providers/ploid/executors.js +119 -0
- package/src/providers/provider-runtime.d.ts +13 -0
- package/src/providers/provider-runtime.js +37 -4
- package/src/providers/registry.generated.js +17 -0
- package/src/providers/resend/executors.d.ts +2 -0
- package/src/providers/resend/executors.js +2 -0
- package/src/providers/resend/trigger-on-email-event.d.ts +2 -0
- package/src/providers/resend/trigger-on-email-event.definition.d.ts +4 -0
- package/src/providers/resend/trigger-on-email-event.definition.js +37 -0
- package/src/providers/resend/trigger-on-email-event.js +125 -0
- package/src/providers/salesforce/chatter-routes.d.ts +107 -0
- package/src/providers/salesforce/chatter-routes.js +140 -0
- package/src/providers/salesforce/context.d.ts +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/search1api/actions.d.ts +2 -0
- package/src/providers/search1api/actions.js +39 -0
- package/src/providers/search1api/executors.d.ts +4 -0
- package/src/providers/search1api/executors.js +72 -0
- package/src/providers/search1api/runtime.d.ts +3 -0
- package/src/providers/search1api/runtime.js +44 -0
- package/src/providers/search1api/schemas.d.ts +3 -0
- package/src/providers/search1api/schemas.js +1834 -0
- package/src/providers/sentry/executors.d.ts +2 -0
- package/src/providers/sentry/executors.js +2 -0
- package/src/providers/sentry/trigger-on-issue-alert.d.ts +2 -0
- package/src/providers/sentry/trigger-on-issue-alert.definition.d.ts +4 -0
- package/src/providers/sentry/trigger-on-issue-alert.definition.js +64 -0
- package/src/providers/sentry/trigger-on-issue-alert.js +80 -0
- package/src/providers/sf_express/runtime.d.ts +0 -16
- package/src/providers/sf_express/runtime.js +2 -2
- package/src/providers/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/surf/actions.d.ts +21 -0
- package/src/providers/surf/actions.js +26 -0
- package/src/providers/surf/discovery-definitions.d.ts +2 -0
- package/src/providers/surf/discovery-definitions.js +871 -0
- package/src/providers/surf/equity-definitions.d.ts +2 -0
- package/src/providers/surf/equity-definitions.js +322 -0
- package/src/providers/surf/executors.d.ts +4 -0
- package/src/providers/surf/executors.js +131 -0
- package/src/providers/surf/market-definitions.d.ts +2 -0
- package/src/providers/surf/market-definitions.js +885 -0
- package/src/providers/surf/onchain-definitions.d.ts +2 -0
- package/src/providers/surf/onchain-definitions.js +901 -0
- package/src/providers/surf/prediction-definitions.d.ts +2 -0
- package/src/providers/surf/prediction-definitions.js +683 -0
- package/src/providers/surf/shared-schemas.d.ts +18 -0
- package/src/providers/surf/shared-schemas.js +37 -0
- package/src/providers/tally/executors.d.ts +2 -0
- package/src/providers/tally/executors.js +2 -0
- package/src/providers/tally/trigger-on-form-response.d.ts +2 -0
- package/src/providers/tally/trigger-on-form-response.definition.d.ts +4 -0
- package/src/providers/tally/trigger-on-form-response.definition.js +54 -0
- package/src/providers/tally/trigger-on-form-response.js +166 -0
- package/src/providers/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/trello/executors.js +5 -2
- package/src/providers/typeform/executors.d.ts +2 -0
- package/src/providers/typeform/executors.js +2 -0
- package/src/providers/typeform/trigger-on-form-response.d.ts +2 -0
- package/src/providers/typeform/trigger-on-form-response.definition.d.ts +4 -0
- package/src/providers/typeform/trigger-on-form-response.definition.js +40 -0
- package/src/providers/typeform/trigger-on-form-response.js +68 -0
- package/src/providers/vaquill/actions.d.ts +13 -0
- package/src/providers/vaquill/actions.js +529 -0
- package/src/providers/vaquill/executors.d.ts +4 -0
- package/src/providers/vaquill/executors.js +141 -0
- package/src/providers/vaquill/schemas.d.ts +67 -0
- package/src/providers/vaquill/schemas.js +4953 -0
- package/src/providers/vercel/executors.d.ts +2 -0
- package/src/providers/vercel/executors.js +2 -0
- package/src/providers/vercel/trigger-on-deployment-event.d.ts +2 -0
- package/src/providers/vercel/trigger-on-deployment-event.definition.d.ts +5 -0
- package/src/providers/vercel/trigger-on-deployment-event.definition.js +41 -0
- package/src/providers/vercel/trigger-on-deployment-event.js +102 -0
- package/src/providers/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/zoom/executors.d.ts +2 -0
- package/src/providers/zoom/executors.js +2 -0
- package/src/providers/zoom/trigger-on-recording-ready.d.ts +2 -0
- package/src/providers/zoom/trigger-on-recording-ready.definition.d.ts +4 -0
- package/src/providers/zoom/trigger-on-recording-ready.definition.js +44 -0
- package/src/providers/zoom/trigger-on-recording-ready.js +39 -0
- package/src/server/api/action-example.js +12 -1
- package/src/server/api/pattern-example.js +35 -1
- package/src/server/api/trigger-routes.js +1 -1
- package/src/server/connect-app.js +1 -0
- package/src/triggers/common/integration.d.ts +15 -3
- package/src/triggers/common/integration.js +5 -0
- package/src/triggers/common/proxy.d.ts +7 -0
- package/src/triggers/managed-webhook.d.ts +13 -0
- package/src/triggers/managed-webhook.js +48 -0
- package/src/triggers/request.d.ts +5 -1
- package/src/triggers/request.js +2 -0
- package/src/triggers/resources.d.ts +8 -2
- package/src/triggers/resources.js +31 -0
- package/src/triggers/signature.d.ts +3 -3
- package/src/triggers/signature.js +4 -6
- package/src/triggers/sources/configuration-schema.d.ts +5 -0
- package/src/triggers/sources/configuration-schema.js +118 -0
- package/src/triggers/sources/configuration.d.ts +115 -0
- package/src/triggers/sources/configuration.js +1 -0
- package/src/triggers/sources/definition.d.ts +61 -0
- package/src/triggers/sources/definition.js +3 -0
- package/src/triggers/sources/feishu-demands.d.ts +6 -0
- package/src/triggers/sources/feishu-demands.js +24 -0
- package/src/triggers/sources/feishu-events.d.ts +19 -0
- package/src/triggers/sources/feishu-events.js +108 -0
- package/src/triggers/sources/feishu.d.ts +3 -0
- package/src/triggers/sources/feishu.js +85 -0
- package/src/triggers/sources/fireflies.d.ts +3 -0
- package/src/triggers/sources/fireflies.js +100 -0
- package/src/triggers/sources/intercom.d.ts +3 -0
- package/src/triggers/sources/intercom.js +86 -0
- package/src/triggers/sources/jira.d.ts +3 -0
- package/src/triggers/sources/jira.js +120 -0
- package/src/triggers/sources/operation.d.ts +42 -0
- package/src/triggers/sources/operation.js +146 -0
- package/src/triggers/sources/sentry.d.ts +3 -0
- package/src/triggers/sources/sentry.js +125 -0
- package/src/triggers/sources/signature.d.ts +1 -0
- package/src/triggers/sources/signature.js +10 -0
- package/src/triggers/sources/slack.d.ts +3 -0
- package/src/triggers/sources/slack.js +127 -0
- package/src/triggers/sources/zoom.d.ts +3 -0
- package/src/triggers/sources/zoom.js +113 -0
- package/src/triggers/trigger-runner.d.ts +2 -0
- package/src/triggers/trigger-runner.js +52 -16
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { JsonSchema } from "../../core/types.ts";
|
|
2
|
+
export declare const orderSchema: JsonSchema;
|
|
3
|
+
export declare const financialPeriodLimitSchema: JsonSchema;
|
|
4
|
+
export declare const endDateSchema: JsonSchema;
|
|
5
|
+
export declare const evmWalletAddressSchema: JsonSchema;
|
|
6
|
+
export declare const polymarketConditionIdSchema: JsonSchema;
|
|
7
|
+
export declare const conditionIdSchema: JsonSchema;
|
|
8
|
+
export declare const fromSchema: JsonSchema;
|
|
9
|
+
export declare const metaSchema: JsonSchema;
|
|
10
|
+
export declare const projectSearchQuerySchema: JsonSchema;
|
|
11
|
+
export declare const dataSchema: JsonSchema;
|
|
12
|
+
export declare const exchangeMarketTypeSchema: JsonSchema;
|
|
13
|
+
export declare const kalshiTickerSchema: JsonSchema;
|
|
14
|
+
export declare const timeRangeSchema: JsonSchema;
|
|
15
|
+
export declare const projectIdSchema: JsonSchema;
|
|
16
|
+
export declare const objectResponseSchema: JsonSchema;
|
|
17
|
+
export declare const arrayResponseSchema: JsonSchema;
|
|
18
|
+
export declare const sqlJobResponseSchema: JsonSchema;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { s } from "../../core/json-schema.js";
|
|
2
|
+
export const orderSchema = s.withExamples(s.withEnum(s.string('Sort order Default: "desc".'), ["asc", "desc"]), ["desc"]);
|
|
3
|
+
export const financialPeriodLimitSchema = s.integer("Maximum financial periods to return Default: 5.", {
|
|
4
|
+
minimum: 1,
|
|
5
|
+
maximum: 100,
|
|
6
|
+
});
|
|
7
|
+
export const endDateSchema = s.withExamples(s.string("Inclusive latest period end date in YYYY-MM-DD format"), ["2024-12-31"]);
|
|
8
|
+
export const evmWalletAddressSchema = s.string("Wallet address: a 0x EVM address or an ENS name (e.g. vitalik.eth). Solana addresses are not supported.");
|
|
9
|
+
export const polymarketConditionIdSchema = s.withExamples(s.string("Polymarket condition ID"), [
|
|
10
|
+
"0x6fefc0438c7598b23531457c8c60541990d0786bd4bd9dfc3eabc8d95c291092",
|
|
11
|
+
]);
|
|
12
|
+
export const conditionIdSchema = s.withExamples(s.string("Market condition identifier"), [
|
|
13
|
+
"0x6fefc0438c7598b23531457c8c60541990d0786bd4bd9dfc3eabc8d95c291092",
|
|
14
|
+
]);
|
|
15
|
+
export const fromSchema = s.withExamples(s.string("Start of time range. Accepts Unix seconds (`1704067200`) or date string (`2024-01-01`)"), ["2024-01-01"]);
|
|
16
|
+
export const metaSchema = s.object("Upstream response metadata, including pagination cursors, limits, and credits when supplied.", {}, { required: [], additionalProperties: true });
|
|
17
|
+
export const projectSearchQuerySchema = s.withExamples(s.string("Fuzzy entity name search. Only use when 'id' is not available. May return unexpected results for ambiguous names."), ["ethereum"]);
|
|
18
|
+
export const dataSchema = s.nullable(s.array("Upstream result data, preserving all provider fields.", {
|
|
19
|
+
description: "Upstream result item, preserving all provider fields.",
|
|
20
|
+
}));
|
|
21
|
+
export const exchangeMarketTypeSchema = s.withExamples(s.withEnum(s.string('Market type: spot for spot trading, swap/perpetual/perp for perpetual contracts Default: "spot".'), ["spot", "swap", "perpetual", "perp"]), ["spot"]);
|
|
22
|
+
export const kalshiTickerSchema = s.withExamples(s.string("Market ticker identifier. Use GET /v1/prediction-market/kalshi/markets or GET /v1/search/prediction-market?platform=kalshi&q={keyword} to discover valid tickers."), ["KXBTC2026250-27JAN01-250000"]);
|
|
23
|
+
export const timeRangeSchema = s.withExamples(s.withEnum(s.string('Window of history to return: `7d`, `30d`, `90d`, `180d`, or `1y`. This endpoint uses `time_range` only — it does NOT accept `interval`. Default: "30d".'), ["7d", "30d", "90d", "180d", "1y"]), ["30d"]);
|
|
24
|
+
export const projectIdSchema = s.withExamples(s.string("Surf project UUID. PREFERRED — always use this when available from a previous response (e.g. project_id from /fund/portfolio or id from /search/project). Takes priority over q."), ["25c6612a-395c-4974-94eb-3b5f9f4b2ed7"]);
|
|
25
|
+
export const objectResponseSchema = s.object("Surf response with the original provider envelope and fields.", {
|
|
26
|
+
$schema: s.string("Response JSON Schema URL."),
|
|
27
|
+
data: s.object("Upstream result data, preserving all provider fields.", {}, { required: [], additionalProperties: true }),
|
|
28
|
+
meta: metaSchema,
|
|
29
|
+
}, { required: [], additionalProperties: true });
|
|
30
|
+
export const arrayResponseSchema = s.object("Surf response with the original provider envelope and fields.", { $schema: s.string("Response JSON Schema URL."), data: dataSchema, meta: metaSchema }, { required: [], additionalProperties: true });
|
|
31
|
+
export const sqlJobResponseSchema = s.object("Surf response with the original provider envelope and fields.", {
|
|
32
|
+
$schema: s.string("Response JSON Schema URL."),
|
|
33
|
+
data: s.object("Upstream result data, preserving all provider fields.", {}, { required: [], additionalProperties: true }),
|
|
34
|
+
meta: metaSchema,
|
|
35
|
+
job_id: s.string("Asynchronous SQL job identifier, promoted from data.job_id."),
|
|
36
|
+
status: s.string("Asynchronous SQL job state, promoted from data.status."),
|
|
37
|
+
}, { required: [], additionalProperties: true });
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { CredentialValidators, ProviderExecutors, ProviderProxyExecutor } from "../../core/types.ts";
|
|
2
|
+
import type { IntegrationDefinition } from "../../triggers/common/integration.ts";
|
|
3
|
+
export declare const triggers: readonly IntegrationDefinition[];
|
|
2
4
|
export declare const executors: ProviderExecutors;
|
|
3
5
|
export declare const proxy: ProviderProxyExecutor;
|
|
4
6
|
export declare const credentialValidators: CredentialValidators;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { defineApiKeyProviderExecutors, defineProviderProxy } from "../provider-runtime.js";
|
|
2
2
|
import { tallyActionHandlers, tallyApiBaseUrl, validateTallyCredential } from "./runtime.js";
|
|
3
|
+
import { tallyFormResponse } from "./trigger-on-form-response.js";
|
|
3
4
|
const service = "tally";
|
|
5
|
+
export const triggers = [tallyFormResponse];
|
|
4
6
|
export const executors = defineApiKeyProviderExecutors(service, tallyActionHandlers);
|
|
5
7
|
export const proxy = defineProviderProxy({
|
|
6
8
|
service,
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { jsonSchema as s } from "../../core/json-schema.js";
|
|
2
|
+
export const snapshot = {
|
|
3
|
+
configInputs: [
|
|
4
|
+
{
|
|
5
|
+
handle: "formId",
|
|
6
|
+
jsonSchema: { ...s.string({ minLength: 1, maxLength: 128 }), title: "Form" },
|
|
7
|
+
nullable: false,
|
|
8
|
+
description: "Choose a form accessible to this Connection.",
|
|
9
|
+
},
|
|
10
|
+
],
|
|
11
|
+
definitionVersion: 2,
|
|
12
|
+
description: "Receives new Tally form submissions through a signed, automatically managed webhook.",
|
|
13
|
+
displayName: "Form Response",
|
|
14
|
+
endpoint: {
|
|
15
|
+
body: { allowArray: false, allowEmpty: false, formats: ["json"] },
|
|
16
|
+
methods: ["POST"],
|
|
17
|
+
successStatus: 200,
|
|
18
|
+
},
|
|
19
|
+
key: "tally.on_form_response",
|
|
20
|
+
name: "on_form_response",
|
|
21
|
+
outputs: [
|
|
22
|
+
{
|
|
23
|
+
handle: "response",
|
|
24
|
+
nullable: false,
|
|
25
|
+
jsonSchema: {
|
|
26
|
+
type: "object",
|
|
27
|
+
properties: {
|
|
28
|
+
eventId: s.string(),
|
|
29
|
+
createdAt: s.string(),
|
|
30
|
+
formId: s.string(),
|
|
31
|
+
submissionId: s.string(),
|
|
32
|
+
responseId: s.string(),
|
|
33
|
+
fields: {
|
|
34
|
+
type: "array",
|
|
35
|
+
items: {
|
|
36
|
+
type: "object",
|
|
37
|
+
properties: {
|
|
38
|
+
key: s.string(),
|
|
39
|
+
type: s.string(),
|
|
40
|
+
label: { type: ["string", "null"] },
|
|
41
|
+
value: {},
|
|
42
|
+
options: { type: "array", items: { type: "object" } },
|
|
43
|
+
},
|
|
44
|
+
required: ["key", "type", "label", "value"],
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
required: ["eventId", "createdAt", "formId", "submissionId", "responseId", "fields"],
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
provider: "tally",
|
|
53
|
+
type: "integration",
|
|
54
|
+
};
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { PermanentIntegrationError, TransientIntegrationError } from "../../triggers/common/integration.js";
|
|
2
|
+
import { isJsonObject } from "../../triggers/common/json.js";
|
|
3
|
+
import { bytes, verifyBase64Hmac } from "../../triggers/signature.js";
|
|
4
|
+
import { snapshot } from "./trigger-on-form-response.definition.js";
|
|
5
|
+
export const tallyFormResponse = {
|
|
6
|
+
snapshot,
|
|
7
|
+
initialState: { checkpoint: null, subscription: {} },
|
|
8
|
+
async configOptions(context) {
|
|
9
|
+
if (context.field != "formId")
|
|
10
|
+
throw new PermanentIntegrationError("Unknown Tally configuration field.");
|
|
11
|
+
const options = [];
|
|
12
|
+
for (let page = 1; page <= 100; page++) {
|
|
13
|
+
const result = await request(context, { endpoint: "/forms", method: "GET", query: { page, limit: 100 } });
|
|
14
|
+
success(result);
|
|
15
|
+
const data = pageData(result.data, "items", page);
|
|
16
|
+
for (const form of data.items) {
|
|
17
|
+
if (!isJsonObject(form) || !nonempty(form.id) || typeof form.name != "string")
|
|
18
|
+
throw new TransientIntegrationError("Tally returned an invalid form.");
|
|
19
|
+
options.push({ value: form.id, label: form.name || form.id });
|
|
20
|
+
}
|
|
21
|
+
if (!data.hasMore)
|
|
22
|
+
return options;
|
|
23
|
+
}
|
|
24
|
+
throw new PermanentIntegrationError("The Tally form list exceeds 10000 entries.");
|
|
25
|
+
},
|
|
26
|
+
async receive(context) {
|
|
27
|
+
// Tally signs the parsed JSON serialization rather than transport whitespace.
|
|
28
|
+
if (!(await verifyBase64Hmac(context.callbackSecret, [bytes(JSON.stringify(context.payload))], context.header("tally-signature"))))
|
|
29
|
+
return { outcome: "respond", status: 401, body: "", contentType: "text/plain" };
|
|
30
|
+
const payload = context.payload;
|
|
31
|
+
if (!isJsonObject(payload) || payload.eventType != "FORM_RESPONSE")
|
|
32
|
+
return { outcome: "ignored", reason: "Tally event is not a form response." };
|
|
33
|
+
const data = payload.data;
|
|
34
|
+
if (!isJsonObject(data) || data.formId != context.config.formId)
|
|
35
|
+
return { outcome: "ignored", reason: "Tally form does not match this subscription." };
|
|
36
|
+
if (!nonempty(payload.eventId) ||
|
|
37
|
+
!nonempty(payload.createdAt) ||
|
|
38
|
+
!nonempty(data.submissionId) ||
|
|
39
|
+
!nonempty(data.responseId) ||
|
|
40
|
+
!Array.isArray(data.fields) ||
|
|
41
|
+
data.fields.some((field) => !isJsonObject(field) ||
|
|
42
|
+
!nonempty(field.key) ||
|
|
43
|
+
!nonempty(field.type) ||
|
|
44
|
+
(field.label !== null && typeof field.label != "string") ||
|
|
45
|
+
!("value" in field) ||
|
|
46
|
+
("options" in field &&
|
|
47
|
+
(!Array.isArray(field.options) || field.options.some((option) => !isJsonObject(option))))))
|
|
48
|
+
return { outcome: "respond", status: 400, body: "", contentType: "text/plain" };
|
|
49
|
+
return {
|
|
50
|
+
outcome: "event",
|
|
51
|
+
dedupeKey: payload.eventId,
|
|
52
|
+
outputs: { response: { ...data, eventId: payload.eventId, createdAt: payload.createdAt } },
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
async reconcile(context) {
|
|
56
|
+
const state = context.state;
|
|
57
|
+
if (state == null)
|
|
58
|
+
throw new PermanentIntegrationError("Tally subscription state is missing.");
|
|
59
|
+
const formId = context.config.formId;
|
|
60
|
+
if (!nonempty(formId))
|
|
61
|
+
throw new PermanentIntegrationError("Choose a Tally form.");
|
|
62
|
+
let hookId = nonempty(state.subscription.hookId) ? state.subscription.hookId : undefined;
|
|
63
|
+
if (hookId == null) {
|
|
64
|
+
for (let page = 1; page <= 100; page++) {
|
|
65
|
+
const result = await request(context, { endpoint: "/webhooks", method: "GET", query: { page, limit: 100 } });
|
|
66
|
+
success(result);
|
|
67
|
+
const data = pageData(result.data, "webhooks", page);
|
|
68
|
+
for (const hook of data.items) {
|
|
69
|
+
if (!isJsonObject(hook) || !nonempty(hook.id) || !nonempty(hook.formId) || typeof hook.url != "string")
|
|
70
|
+
throw new TransientIntegrationError("Tally returned an invalid webhook.");
|
|
71
|
+
if (hook.formId == formId && hook.url == context.endpointUrl) {
|
|
72
|
+
if (hookId != null)
|
|
73
|
+
throw new PermanentIntegrationError("Multiple Tally webhooks match this subscription. Remove duplicates before retrying.");
|
|
74
|
+
hookId = hook.id;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (!data.hasMore)
|
|
78
|
+
break;
|
|
79
|
+
if (page == 100)
|
|
80
|
+
throw new PermanentIntegrationError("The Tally webhook list exceeds 10000 entries.");
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (!context.active) {
|
|
84
|
+
if (hookId != null) {
|
|
85
|
+
const result = await request(context, {
|
|
86
|
+
endpoint: `/webhooks/${encodeURIComponent(hookId)}`,
|
|
87
|
+
method: "DELETE",
|
|
88
|
+
});
|
|
89
|
+
if (result.status != 404)
|
|
90
|
+
success(result);
|
|
91
|
+
}
|
|
92
|
+
else if (state.subscription.creating === true) {
|
|
93
|
+
throw new PermanentIntegrationError("Tally webhook creation has an uncertain outcome. Verify the remote subscription before cleanup.");
|
|
94
|
+
}
|
|
95
|
+
await state.saveSubscription({}, later(context.now));
|
|
96
|
+
return { outcome: "ready" };
|
|
97
|
+
}
|
|
98
|
+
if (hookId == null) {
|
|
99
|
+
if (state.subscription.creating === true)
|
|
100
|
+
throw new PermanentIntegrationError("Tally webhook creation has an uncertain outcome. Retry after verifying the remote subscription.");
|
|
101
|
+
await state.saveSubscription({ creating: true }, context.now);
|
|
102
|
+
const result = await request(context, {
|
|
103
|
+
endpoint: "/webhooks",
|
|
104
|
+
method: "POST",
|
|
105
|
+
body: {
|
|
106
|
+
formId,
|
|
107
|
+
url: context.endpointUrl,
|
|
108
|
+
eventTypes: ["FORM_RESPONSE"],
|
|
109
|
+
signingSecret: context.callbackSecret,
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
if (result.status >= 400 && result.status < 500)
|
|
113
|
+
await state.saveSubscription({}, context.now);
|
|
114
|
+
success(result);
|
|
115
|
+
if (!isJsonObject(result.data) || !nonempty(result.data.id))
|
|
116
|
+
throw new TransientIntegrationError("Tally webhook creation returned no identity.");
|
|
117
|
+
hookId = result.data.id;
|
|
118
|
+
}
|
|
119
|
+
await state.saveSubscription({ hookId }, context.now);
|
|
120
|
+
const aligned = await request(context, {
|
|
121
|
+
endpoint: `/webhooks/${encodeURIComponent(hookId)}`,
|
|
122
|
+
method: "PATCH",
|
|
123
|
+
body: {
|
|
124
|
+
url: context.endpointUrl,
|
|
125
|
+
eventTypes: ["FORM_RESPONSE"],
|
|
126
|
+
signingSecret: context.callbackSecret,
|
|
127
|
+
isEnabled: true,
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
if (aligned.status == 404) {
|
|
131
|
+
await state.saveSubscription({}, context.now);
|
|
132
|
+
return { outcome: "pending" };
|
|
133
|
+
}
|
|
134
|
+
success(aligned);
|
|
135
|
+
await state.saveSubscription({ hookId }, later(context.now));
|
|
136
|
+
return { outcome: "ready" };
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
function nonempty(value) {
|
|
140
|
+
return typeof value == "string" && value.length > 0;
|
|
141
|
+
}
|
|
142
|
+
function pageData(value, field, page) {
|
|
143
|
+
if (!isJsonObject(value) ||
|
|
144
|
+
!Array.isArray(value[field]) ||
|
|
145
|
+
typeof value.hasMore != "boolean" ||
|
|
146
|
+
value.page !== page ||
|
|
147
|
+
(value.hasMore && value[field].length == 0))
|
|
148
|
+
throw new TransientIntegrationError("Tally returned an invalid page.");
|
|
149
|
+
return { items: value[field], hasMore: value.hasMore };
|
|
150
|
+
}
|
|
151
|
+
async function request(context, input) {
|
|
152
|
+
context.signal?.throwIfAborted();
|
|
153
|
+
const result = await context.connector.execute(input, context.signal);
|
|
154
|
+
context.signal?.throwIfAborted();
|
|
155
|
+
return result;
|
|
156
|
+
}
|
|
157
|
+
function success(result) {
|
|
158
|
+
if (result.status >= 200 && result.status < 300)
|
|
159
|
+
return;
|
|
160
|
+
if (result.status >= 400 && result.status < 500 && result.status != 429)
|
|
161
|
+
throw new PermanentIntegrationError(`Tally rejected the subscription request (HTTP ${result.status}). Check form access and API key permissions.`);
|
|
162
|
+
throw new TransientIntegrationError(`Tally subscription request failed (HTTP ${result.status}).`);
|
|
163
|
+
}
|
|
164
|
+
function later(now) {
|
|
165
|
+
return new Date(now.getTime() + 24 * 60 * 60 * 1000);
|
|
166
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ActionDefinition } from "../../core/types.ts";
|
|
2
|
+
import type { TinyfishEndpoint } from "./endpoints.ts";
|
|
3
|
+
declare const tinyfishEndpoints: TinyfishEndpoint[];
|
|
4
|
+
export declare const tinyfishEndpointByName: Map<string, (typeof tinyfishEndpoints)[number]>;
|
|
5
|
+
export declare const tinyfishActions: ActionDefinition[];
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { defineProviderAction } from "../../core/provider-definition.js";
|
|
2
|
+
import { agentEndpoints } from "./agent-actions.js";
|
|
3
|
+
import { dataEndpoints } from "./data-actions.js";
|
|
4
|
+
import { managementEndpoints } from "./management-actions.js";
|
|
5
|
+
const actionLifecycles = {
|
|
6
|
+
submit_run: { startActionId: "tinyfish.submit_run", statusActionId: "tinyfish.get_run" },
|
|
7
|
+
start_research: { startActionId: "tinyfish.start_research", statusActionId: "tinyfish.get_research_run" },
|
|
8
|
+
};
|
|
9
|
+
const tinyfishEndpoints = [...agentEndpoints, ...dataEndpoints, ...managementEndpoints];
|
|
10
|
+
export const tinyfishEndpointByName = new Map(tinyfishEndpoints.map((endpoint) => [endpoint.name, endpoint]));
|
|
11
|
+
export const tinyfishActions = tinyfishEndpoints.map((endpoint) => defineProviderAction("tinyfish", {
|
|
12
|
+
name: endpoint.name,
|
|
13
|
+
description: endpoint.description,
|
|
14
|
+
operationType: endpoint.operationType,
|
|
15
|
+
requiredScopes: [],
|
|
16
|
+
inputSchema: endpoint.inputSchema,
|
|
17
|
+
outputSchema: endpoint.outputSchema,
|
|
18
|
+
asyncLifecycle: actionLifecycles[endpoint.name],
|
|
19
|
+
}));
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { s } from "../../core/json-schema.js";
|
|
2
|
+
const runStatus = s.stringEnum("Current automation run status.", [
|
|
3
|
+
"PENDING",
|
|
4
|
+
"RUNNING",
|
|
5
|
+
"COMPLETED",
|
|
6
|
+
"FAILED",
|
|
7
|
+
"CANCELLED",
|
|
8
|
+
]);
|
|
9
|
+
const runId = s.nonEmptyString("Automation run ID.", { pattern: "^[A-Za-z0-9_-]+$" });
|
|
10
|
+
const outputSchema = s.record("Provider-supported structured-output schema subset. Unsupported schema keywords are rejected by TinyFish.", true);
|
|
11
|
+
const profileId = s.nonEmptyString("Browser Context Profile ID to use when use_profile is true.");
|
|
12
|
+
const runProperties = {
|
|
13
|
+
url: s.url("Target website URL to automate."),
|
|
14
|
+
goal: s.nonEmptyString("Natural language description of the task to perform on the website."),
|
|
15
|
+
browser_profile: s.stringEnum("Browser profile: lite uses a standard browser; stealth enables anti-detection.", [
|
|
16
|
+
"lite",
|
|
17
|
+
"stealth",
|
|
18
|
+
]),
|
|
19
|
+
api_integration: s.string("Integration name used for analytics."),
|
|
20
|
+
agent_config: s.object("Agent behavior configuration.", {
|
|
21
|
+
mode: s.stringEnum("Strict mode enables fail-fast behavior for test automation.", ["default", "strict"]),
|
|
22
|
+
cursor_style: s.stringEnum("Browser agent cursor style.", ["fish", "standard", "green-pointer"]),
|
|
23
|
+
max_steps: s.integer("Maximum tool-call steps; the provider default is 150.", {
|
|
24
|
+
minimum: 1,
|
|
25
|
+
maximum: 500,
|
|
26
|
+
}),
|
|
27
|
+
max_duration_seconds: s.integer("Maximum wall-clock execution time in seconds. Omit for no limit.", {
|
|
28
|
+
minimum: 1,
|
|
29
|
+
}),
|
|
30
|
+
}, { required: [] }),
|
|
31
|
+
capture_config: s.object("Data to capture during the run.", {
|
|
32
|
+
elements: s.boolean("Capture page elements."),
|
|
33
|
+
snapshots: s.boolean("Capture browser snapshots."),
|
|
34
|
+
screenshots: s.boolean("Capture screenshots."),
|
|
35
|
+
recording: s.boolean("Record the browser session."),
|
|
36
|
+
html: s.boolean("Capture full-page HTML snapshots."),
|
|
37
|
+
}, { required: [] }),
|
|
38
|
+
webhook_url: s.url("HTTPS URL for run lifecycle webhook notifications."),
|
|
39
|
+
use_vault: s.boolean("Use enabled vault credentials for this run. Defaults to false."),
|
|
40
|
+
use_profile: s.boolean("Use a Browser Context Profile. If profiles are enabled and no profile_id is given, a default profile must exist. Legacy calls are ignored when profiles are disabled."),
|
|
41
|
+
credential_item_ids: s.stringArray("Credential URIs to use. Requires use_vault=true; omit to use all enabled items.", { minItems: 1, itemDescription: "Vault credential URI." }),
|
|
42
|
+
proxy_config: s.object("Browser proxy configuration.", {
|
|
43
|
+
enabled: s.boolean("Enable a proxy for this run."),
|
|
44
|
+
country_code: s.string("Proxy exit country as ISO 3166-1 alpha-2; defaults to US."),
|
|
45
|
+
}, { required: ["enabled"] }),
|
|
46
|
+
};
|
|
47
|
+
const runInput = s.object("Browser automation task parameters.", {
|
|
48
|
+
...runProperties,
|
|
49
|
+
profile_id: profileId,
|
|
50
|
+
output_schema: outputSchema,
|
|
51
|
+
}, { required: ["url", "goal"] });
|
|
52
|
+
const errorSchema = s.nullable(s.looseObject("Provider error details, including retry guidance and profile setup hints.", {
|
|
53
|
+
code: s.string("Machine-readable error code."),
|
|
54
|
+
message: s.string("Human-readable error message."),
|
|
55
|
+
category: s.string("Error category: SYSTEM_FAILURE, AGENT_FAILURE, BILLING_FAILURE, or UNKNOWN."),
|
|
56
|
+
retry_after: s.nullableNumber("Suggested retry delay in seconds, or null when not retryable."),
|
|
57
|
+
help_url: s.string("Troubleshooting documentation URL."),
|
|
58
|
+
help_message: s.string("Troubleshooting guidance."),
|
|
59
|
+
details: { description: "Additional provider error details, including validation errors." },
|
|
60
|
+
}));
|
|
61
|
+
const profileHint = s.looseObject("Profile setup guidance for authentication walls or bot challenges.", {
|
|
62
|
+
message: s.string("Human-readable setup guidance."),
|
|
63
|
+
setup_url: s.string("Profile setup URL."),
|
|
64
|
+
reason: s.string("Reason a profile may help: auth_wall or bot_challenge."),
|
|
65
|
+
});
|
|
66
|
+
const runSummaryProperties = {
|
|
67
|
+
run_id: runId,
|
|
68
|
+
status: runStatus,
|
|
69
|
+
goal: s.string("Natural language goal for this automation run."),
|
|
70
|
+
created_at: s.string("Run creation timestamp."),
|
|
71
|
+
started_at: s.nullableString("Run start timestamp, or null before execution."),
|
|
72
|
+
finished_at: s.nullableString("Run completion timestamp, or null before completion."),
|
|
73
|
+
num_of_steps: s.nullableInteger("Number of automation steps; null while in progress.", {
|
|
74
|
+
minimum: 0,
|
|
75
|
+
}),
|
|
76
|
+
result: s.nullable(s.record("Extracted structured result.", true)),
|
|
77
|
+
output_schema: s.nullable(outputSchema),
|
|
78
|
+
profile_attached: s.boolean("Whether a Browser Context Profile was attached."),
|
|
79
|
+
profile_id: s.nullableString("Attached Browser Context Profile ID, or null."),
|
|
80
|
+
error: errorSchema,
|
|
81
|
+
profile_hint: profileHint,
|
|
82
|
+
streaming_url: s.nullableString("Live browser session URL, available while running."),
|
|
83
|
+
browser_config: s.nullable(s.looseObject("Browser configuration used by the run.", {
|
|
84
|
+
proxy_enabled: s.nullableBoolean("Whether a proxy was enabled."),
|
|
85
|
+
proxy_country_code: s.nullableString("Proxy exit country code."),
|
|
86
|
+
})),
|
|
87
|
+
};
|
|
88
|
+
const runDetail = s.object("Automation run details and captured steps.", {
|
|
89
|
+
...runSummaryProperties,
|
|
90
|
+
video_url: s.nullableString("Presigned recording URL, expiring after 15 minutes, or null."),
|
|
91
|
+
steps: s.array("Steps performed during this run.", s.looseObject("An automation step.", {
|
|
92
|
+
id: s.string("Step event ID."),
|
|
93
|
+
timestamp: s.string("Step timestamp."),
|
|
94
|
+
status: runStatus,
|
|
95
|
+
action: s.nullableString("Description of the performed action."),
|
|
96
|
+
screenshot: s.nullableString("Screenshot URL or data URI according to the requested delivery mode, or null."),
|
|
97
|
+
html: s.nullableString("HTML snapshot URL, or null. Requires capture_config.html when submitting."),
|
|
98
|
+
duration: s.nullableString("Step duration."),
|
|
99
|
+
})),
|
|
100
|
+
}, {
|
|
101
|
+
required: ["run_id", "status"],
|
|
102
|
+
additionalProperties: true,
|
|
103
|
+
});
|
|
104
|
+
const cancellation = s.looseObject("Cancellation result; terminal runs retain their existing status.", {
|
|
105
|
+
run_id: runId,
|
|
106
|
+
status: s.stringEnum("Final run status.", ["CANCELLED", "COMPLETED", "FAILED"]),
|
|
107
|
+
cancelled_at: s.nullableString("Cancellation timestamp, or null when not cancelled."),
|
|
108
|
+
message: s.nullableString("Additional cancellation context."),
|
|
109
|
+
});
|
|
110
|
+
const batchIds = s.requiredObject("Run IDs to retrieve or cancel.", {
|
|
111
|
+
run_ids: s.stringArray("Run IDs.", {
|
|
112
|
+
minItems: 1,
|
|
113
|
+
maxItems: 100,
|
|
114
|
+
itemDescription: "Automation run ID.",
|
|
115
|
+
}),
|
|
116
|
+
});
|
|
117
|
+
const notFound = s.nullable(s.stringArray("Run IDs not found or not owned; null if all were found.", {
|
|
118
|
+
itemDescription: "Unresolved run ID.",
|
|
119
|
+
}));
|
|
120
|
+
const fileOutput = s.requiredObject("Captured file uploaded to file transit.", {
|
|
121
|
+
url: s.url("Download URL of the captured file."),
|
|
122
|
+
mimeType: s.string("Captured file MIME type."),
|
|
123
|
+
});
|
|
124
|
+
const stepInput = s.requiredObject("Run and captured step identifiers.", {
|
|
125
|
+
id: runId,
|
|
126
|
+
stepId: s.nonEmptyString("Step event ID.", { pattern: "^[A-Za-z0-9_-]+$" }),
|
|
127
|
+
});
|
|
128
|
+
export const agentEndpoints = [
|
|
129
|
+
{
|
|
130
|
+
name: "submit_run",
|
|
131
|
+
description: "Submit a browser automation task asynchronously. The agent can perform arbitrary website operations; use get_run to retrieve progress and results.",
|
|
132
|
+
operationType: "destructive",
|
|
133
|
+
origin: "main",
|
|
134
|
+
method: "POST",
|
|
135
|
+
path: "/v1/automation/run-async",
|
|
136
|
+
inputSchema: runInput,
|
|
137
|
+
outputSchema: s.looseObject("Asynchronous automation submission.", {
|
|
138
|
+
run_id: s.nullableString("Created run ID; null if creation failed."),
|
|
139
|
+
error: errorSchema,
|
|
140
|
+
}),
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
name: "submit_run_batch",
|
|
144
|
+
description: "Atomically submit 1–100 browser automation tasks. Shared profile_id and output_schema apply to the batch. Retrieve each run using get_run or get_runs.",
|
|
145
|
+
operationType: "destructive",
|
|
146
|
+
origin: "main",
|
|
147
|
+
method: "POST",
|
|
148
|
+
path: "/v1/automation/run-batch",
|
|
149
|
+
inputSchema: s.object("Batch automation parameters.", {
|
|
150
|
+
runs: s.array("Automation tasks.", s.object("One automation task.", runProperties, { required: ["url", "goal"] }), { minItems: 1, maxItems: 100 }),
|
|
151
|
+
profile_id: profileId,
|
|
152
|
+
output_schema: outputSchema,
|
|
153
|
+
}, { required: ["runs"] }),
|
|
154
|
+
outputSchema: s.looseObject("Atomic batch submission result.", {
|
|
155
|
+
run_ids: s.nullable(s.stringArray("Created run IDs, or null on failure.", {
|
|
156
|
+
itemDescription: "Created run ID.",
|
|
157
|
+
})),
|
|
158
|
+
error: errorSchema,
|
|
159
|
+
}),
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
name: "list_runs",
|
|
163
|
+
description: "List and search automation runs with cursor pagination, status, goal, and creation-time filters.",
|
|
164
|
+
operationType: "read",
|
|
165
|
+
origin: "main",
|
|
166
|
+
method: "GET",
|
|
167
|
+
path: "/v1/runs",
|
|
168
|
+
queryKeys: ["status", "goal", "created_after", "created_before", "sort_direction", "cursor", "limit"],
|
|
169
|
+
inputSchema: s.object("Run search and pagination parameters.", {
|
|
170
|
+
status: runStatus,
|
|
171
|
+
goal: s.string("Case-insensitive partial goal text filter.", { maxLength: 500 }),
|
|
172
|
+
created_after: s.string("Filter runs created after this ISO 8601 timestamp.", {
|
|
173
|
+
format: "date-time",
|
|
174
|
+
}),
|
|
175
|
+
created_before: s.string("Filter runs created before this ISO 8601 timestamp.", {
|
|
176
|
+
format: "date-time",
|
|
177
|
+
}),
|
|
178
|
+
sort_direction: s.stringEnum("Sort order by creation time; defaults to desc.", ["asc", "desc"]),
|
|
179
|
+
cursor: s.string("Pagination cursor from the previous response."),
|
|
180
|
+
limit: s.integer("Maximum results; defaults to 20.", { minimum: 1, maximum: 100 }),
|
|
181
|
+
}, { required: [] }),
|
|
182
|
+
outputSchema: s.looseObject("Paginated automation runs.", {
|
|
183
|
+
data: s.array("Run summaries without steps and video URLs.", s.looseObject("Automation run summary.", runSummaryProperties)),
|
|
184
|
+
pagination: s.looseObject("Pagination information.", {
|
|
185
|
+
total: s.integer("Total matching runs."),
|
|
186
|
+
next_cursor: s.nullableString("Next-page cursor; null on the last page."),
|
|
187
|
+
has_more: s.boolean("Whether more results exist."),
|
|
188
|
+
}),
|
|
189
|
+
}),
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
name: "get_runs",
|
|
193
|
+
description: "Retrieve up to 100 automation runs, including per-run results, steps, and missing IDs.",
|
|
194
|
+
operationType: "read",
|
|
195
|
+
origin: "main",
|
|
196
|
+
method: "POST",
|
|
197
|
+
path: "/v1/runs/batch",
|
|
198
|
+
inputSchema: batchIds,
|
|
199
|
+
outputSchema: s.looseObject("Batch run retrieval result.", {
|
|
200
|
+
data: s.array("Found automation runs.", runDetail),
|
|
201
|
+
not_found: notFound,
|
|
202
|
+
}),
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
name: "cancel_runs",
|
|
206
|
+
description: "Cancel up to 100 automation runs. Already terminal runs retain their existing status; missing IDs are returned separately.",
|
|
207
|
+
operationType: "destructive",
|
|
208
|
+
origin: "main",
|
|
209
|
+
method: "POST",
|
|
210
|
+
path: "/v1/runs/batch/cancel",
|
|
211
|
+
inputSchema: batchIds,
|
|
212
|
+
outputSchema: s.looseObject("Batch cancellation result.", {
|
|
213
|
+
results: s.array("Per-run cancellation results.", cancellation),
|
|
214
|
+
not_found: notFound,
|
|
215
|
+
}),
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
name: "get_run",
|
|
219
|
+
description: "Retrieve an automation run and captured steps. Prefer screenshot URLs for JSON clients; use get_step_screenshot or get_step_html to transfer captured files.",
|
|
220
|
+
operationType: "read",
|
|
221
|
+
origin: "main",
|
|
222
|
+
method: "GET",
|
|
223
|
+
path: "/v1/runs/{id}",
|
|
224
|
+
pathKeys: ["id"],
|
|
225
|
+
queryKeys: ["screenshots", "html"],
|
|
226
|
+
inputSchema: s.object("Run details and capture delivery options.", {
|
|
227
|
+
id: runId,
|
|
228
|
+
screenshots: s.stringEnum("Screenshot delivery mode; defaults to url. Base64 embeds potentially large data URIs.", ["base64", "url", "none"]),
|
|
229
|
+
html: s.stringEnum("HTML snapshot delivery mode; defaults to url and requires capture_config.html at submission.", ["url", "none"]),
|
|
230
|
+
}, { required: ["id"] }),
|
|
231
|
+
outputSchema: runDetail,
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
name: "cancel_run",
|
|
235
|
+
description: "Cancel an asynchronous automation run. Already terminal runs retain their status. Runs started through the synchronous API cannot be cancelled.",
|
|
236
|
+
operationType: "destructive",
|
|
237
|
+
origin: "main",
|
|
238
|
+
method: "POST",
|
|
239
|
+
path: "/v1/runs/{id}/cancel",
|
|
240
|
+
pathKeys: ["id"],
|
|
241
|
+
inputSchema: s.requiredObject("Run to cancel.", { id: runId }),
|
|
242
|
+
outputSchema: cancellation,
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
name: "get_step_screenshot",
|
|
246
|
+
description: "Download a captured automation-step screenshot and return a file-transit URL.",
|
|
247
|
+
operationType: "read",
|
|
248
|
+
origin: "main",
|
|
249
|
+
method: "GET",
|
|
250
|
+
path: "/v1/runs/{id}/steps/{stepId}/screenshot",
|
|
251
|
+
pathKeys: ["id", "stepId"],
|
|
252
|
+
inputSchema: stepInput,
|
|
253
|
+
outputSchema: fileOutput,
|
|
254
|
+
responseType: "screenshot",
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
name: "get_step_html",
|
|
258
|
+
description: "Download a captured automation-step HTML snapshot and return a file-transit URL. Requires capture_config.html when submitting the run.",
|
|
259
|
+
operationType: "read",
|
|
260
|
+
origin: "main",
|
|
261
|
+
method: "GET",
|
|
262
|
+
path: "/v1/runs/{id}/steps/{stepId}/html",
|
|
263
|
+
pathKeys: ["id", "stepId"],
|
|
264
|
+
inputSchema: stepInput,
|
|
265
|
+
outputSchema: fileOutput,
|
|
266
|
+
responseType: "html",
|
|
267
|
+
},
|
|
268
|
+
];
|