@oomol-lab/open-connector 1.6.4 → 1.7.0
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 +6394 -0
- package/assets/open-connector/catalog/apps/baizhi_mcp.json +135 -0
- package/assets/open-connector/catalog/apps/bilibili.json +2586 -0
- package/assets/open-connector/catalog/apps/bitwarden.json +1423 -0
- package/assets/open-connector/catalog/apps/cronfree.json +303 -0
- package/assets/open-connector/catalog/apps/cufinder.json +368 -0
- package/assets/open-connector/catalog/apps/discordbot.json +2888 -248
- package/assets/open-connector/catalog/apps/drawio_mcp.json +192 -0
- package/assets/open-connector/catalog/apps/firecrawl.json +176 -32
- package/assets/open-connector/catalog/apps/framejet.json +273 -0
- package/assets/open-connector/catalog/apps/futunn.json +2967 -0
- package/assets/open-connector/catalog/apps/gmail.json +298 -0
- package/assets/open-connector/catalog/apps/google_analytics.json +4 -1
- package/assets/open-connector/catalog/apps/google_bigquery.json +4 -1
- package/assets/open-connector/catalog/apps/google_search_console.json +4 -1
- package/assets/open-connector/catalog/apps/googlecalendar.json +4 -1
- package/assets/open-connector/catalog/apps/googlechat.json +694 -7
- package/assets/open-connector/catalog/apps/googledocs.json +4 -1
- package/assets/open-connector/catalog/apps/googlesheets.json +4 -1
- package/assets/open-connector/catalog/apps/granola.json +23 -0
- package/assets/open-connector/catalog/apps/investoday_mcp.json +22228 -197
- package/assets/open-connector/catalog/apps/ixspy.json +2274 -0
- package/assets/open-connector/catalog/apps/keepa.json +3534 -987
- package/assets/open-connector/catalog/apps/linear.json +17 -0
- package/assets/open-connector/catalog/apps/linear_mcp.json +510 -0
- package/assets/open-connector/catalog/apps/moneyforward_mcp.json +1432 -0
- package/assets/open-connector/catalog/apps/notion.json +446 -1
- package/assets/open-connector/catalog/apps/notion_mcp.json +490 -0
- package/assets/open-connector/catalog/apps/odoo.json +619 -0
- package/assets/open-connector/catalog/apps/osv.json +663 -0
- package/assets/open-connector/catalog/apps/outlook.json +30 -8
- package/assets/open-connector/catalog/apps/outlook_calendar.json +23 -2
- package/assets/open-connector/catalog/apps/pdf_vector.json +329 -0
- package/assets/open-connector/catalog/apps/postiz.json +334 -0
- package/assets/open-connector/catalog/apps/proworkflow.json +529 -0
- package/assets/open-connector/catalog/apps/pulsetic.json +406 -0
- package/assets/open-connector/catalog/apps/sellersprite_mcp.json +2 -1
- package/assets/open-connector/catalog/apps/shopee.json +1785 -0
- package/assets/open-connector/catalog/apps/slack.json +304 -0
- package/assets/open-connector/catalog/apps/slackbot.json +295 -0
- package/assets/open-connector/catalog/apps/speak_ai.json +360 -0
- package/assets/open-connector/catalog/apps/tencent_docs.json +3 -0
- package/assets/open-connector/catalog/apps/wisburg.json +1528 -0
- package/assets/open-connector/catalog/apps/youtube.json +4 -1
- package/assets/open-connector/catalog/apps/zerotier.json +3319 -0
- package/assets/open-connector/catalog/apps/zyhub.json +1585 -0
- package/assets/open-connector/catalog/apps-index.json +1 -1
- package/package.json +1 -1
- package/src/core/cast.d.ts +10 -0
- package/src/core/cast.js +14 -0
- package/src/core/guarded-fetch.d.ts +6 -3
- package/src/core/guarded-fetch.js +6 -3
- package/src/core/json-schema.d.ts +5 -1
- package/src/core/json-schema.js +14 -2
- package/src/core/provider-scenarios.js +67 -13
- package/src/core/request.js +4 -1
- package/src/core/types.d.ts +10 -1
- package/src/mcp.js +10 -7
- package/src/oauth/oauth-client-config-service.d.ts +16 -1
- package/src/oauth/oauth-client-config-service.js +59 -3
- package/src/oauth/oauth-credential-refresh-service.js +3 -1
- package/src/oauth/oauth-flow-service.d.ts +6 -0
- package/src/oauth/oauth-flow-service.js +21 -4
- package/src/oauth/oauth-token.d.ts +13 -0
- package/src/providers/17track/runtime.js +1 -1
- package/src/providers/action-contracts.generated.d.ts +32 -8
- package/src/providers/aifinmarket/runtime.js +1 -1
- package/src/providers/aisa/executors.d.ts +4 -0
- package/src/providers/aisa/executors.js +864 -0
- package/src/providers/aliyun_ack/runtime.js +1 -1
- package/src/providers/aliyun_sls/runtime.js +1 -1
- package/src/providers/app_store_server/runtime-helpers.js +1 -1
- package/src/providers/baizhi_mcp/actions.d.ts +2 -0
- package/src/providers/baizhi_mcp/actions.js +40 -0
- package/src/providers/baizhi_mcp/executors.d.ts +3 -0
- package/src/providers/baizhi_mcp/executors.js +102 -0
- package/src/providers/bazhuayu/runtime.js +2 -2
- package/src/providers/bilibili/articles.d.ts +3 -0
- package/src/providers/bilibili/articles.js +369 -0
- package/src/providers/bilibili/executors.d.ts +8 -0
- package/src/providers/bilibili/executors.js +262 -0
- package/src/providers/bilibili/runtime.d.ts +95 -0
- package/src/providers/bilibili/runtime.js +236 -0
- package/src/providers/bilibili/upload.d.ts +14 -0
- package/src/providers/bilibili/upload.js +107 -0
- package/src/providers/bitwarden/executors.d.ts +3 -0
- package/src/providers/bitwarden/executors.js +146 -0
- package/src/providers/cloudflare_browser_rendering/executors.js +1 -1
- package/src/providers/cloudflare_dns/executors.js +1 -1
- package/src/providers/{cloudflare-current-user.js → cloudflare_dns/runtime-user.js} +2 -2
- package/src/providers/cloudflare_dns/runtime.d.ts +1 -1
- package/src/providers/cloudflare_dns/runtime.js +1 -1
- package/src/providers/cloudflare_r2/executors.js +1 -1
- package/src/providers/cloudflare_r2/runtime.d.ts +1 -1
- package/src/providers/cloudflare_r2/runtime.js +1 -1
- package/src/providers/cloudflare_worker/executors.js +1 -1
- package/src/providers/cloudflare_worker/runtime.d.ts +1 -1
- package/src/providers/cloudflare_worker/runtime.js +1 -1
- package/src/providers/cronfree/executors.d.ts +4 -0
- package/src/providers/cronfree/executors.js +89 -0
- package/src/providers/cufinder/executors.d.ts +4 -0
- package/src/providers/cufinder/executors.js +105 -0
- package/src/providers/dingtalk_mcp/runtime.js +1 -1
- package/src/providers/discordbot/executors.d.ts +0 -9
- package/src/providers/discordbot/executors.js +9 -101
- package/src/providers/discordbot/runtime-guilds.d.ts +3 -0
- package/src/providers/discordbot/runtime-guilds.js +464 -0
- package/src/providers/discordbot/runtime.d.ts +42 -0
- package/src/providers/discordbot/runtime.js +124 -0
- package/src/providers/drawio_mcp/executors.d.ts +3 -0
- package/src/providers/drawio_mcp/executors.js +19 -0
- package/src/providers/drawio_mcp/runtime.d.ts +8 -0
- package/src/providers/drawio_mcp/runtime.js +175 -0
- package/src/providers/elevenreader/runtime.js +6 -5
- package/src/providers/fastmoss_mcp/executors.js +2 -2
- package/src/providers/finchina/executors.js +1 -1
- package/src/providers/framejet/executors.d.ts +4 -0
- package/src/providers/framejet/executors.js +19 -0
- package/src/providers/framejet/runtime.d.ts +16 -0
- package/src/providers/framejet/runtime.js +148 -0
- package/src/providers/futunn/actions.d.ts +2 -0
- package/src/providers/futunn/actions.js +152 -0
- package/src/providers/futunn/actions.research.d.ts +2 -0
- package/src/providers/futunn/actions.research.js +423 -0
- package/src/providers/futunn/actions.trading.d.ts +2 -0
- package/src/providers/futunn/actions.trading.js +204 -0
- package/src/providers/futunn/executors.d.ts +3 -0
- package/src/providers/futunn/executors.js +24 -0
- package/src/providers/futunn/runtime-research.d.ts +3 -0
- package/src/providers/futunn/runtime-research.js +133 -0
- package/src/providers/futunn/runtime-trading.d.ts +3 -0
- package/src/providers/futunn/runtime-trading.js +39 -0
- package/src/providers/futunn/runtime.d.ts +2 -0
- package/src/providers/futunn/runtime.js +50 -0
- package/src/providers/futunn/transport.d.ts +11 -0
- package/src/providers/futunn/transport.js +76 -0
- package/src/providers/gildata/executors.js +1 -1
- package/src/providers/gmail/attachment-stream.d.ts +2 -0
- package/src/providers/gmail/attachment-stream.js +162 -0
- package/src/providers/gmail/executors.d.ts +3 -1
- package/src/providers/gmail/executors.js +54 -26
- package/src/providers/gmail/message.d.ts +6 -8
- package/src/providers/gmail/message.js +4 -0
- package/src/providers/gmail/scopes.d.ts +32 -0
- package/src/providers/gmail/scopes.js +37 -0
- package/src/providers/google_analytics/executors.js +2 -2
- package/src/providers/google_analytics/scopes.js +6 -1
- package/src/providers/google_bigquery/executors.js +2 -2
- package/src/providers/google_bigquery/scopes.js +2 -0
- package/src/providers/google_search_console/executors.js +2 -2
- package/src/providers/google_search_console/scopes.js +2 -0
- package/src/providers/googleads/executors.js +1 -1
- package/src/providers/googleads/scopes.d.ts +1 -3
- package/src/providers/googleads/scopes.js +2 -4
- package/src/providers/googlecalendar/executors.js +1 -1
- package/src/providers/googlecalendar/runtime-shared.js +2 -2
- package/src/providers/googlecalendar/scopes.js +2 -0
- package/src/providers/googlechat/executors.d.ts +1 -3
- package/src/providers/googlechat/executors.js +219 -28
- package/src/providers/googlechat/members.d.ts +55 -0
- package/src/providers/googlechat/members.js +293 -0
- package/src/providers/googlechat/runtime.d.ts +16 -0
- package/src/providers/googlechat/runtime.js +25 -0
- package/src/providers/googlechat/scopes.d.ts +22 -3
- package/src/providers/googlechat/scopes.js +30 -7
- package/src/providers/googledocs/executors.js +1 -1
- package/src/providers/googledrive/executors.js +2 -2
- package/src/providers/{google-auth.d.ts → googledrive/runtime-auth.d.ts} +2 -2
- package/src/providers/{google-auth.js → googledrive/runtime-auth.js} +3 -3
- package/src/providers/googledrive/runtime-collaboration.js +1 -1
- package/src/providers/{google-runtime.d.ts → googledrive/runtime-request.d.ts} +1 -1
- package/src/providers/{google-runtime.js → googledrive/runtime-request.js} +2 -2
- package/src/providers/googleforms/executors.js +2 -2
- package/src/providers/googleforms/scopes.d.ts +0 -3
- package/src/providers/googleforms/scopes.js +2 -6
- package/src/providers/googlemeet/executors.js +2 -2
- package/src/providers/googlemeet/scopes.d.ts +0 -3
- package/src/providers/googlemeet/scopes.js +2 -6
- package/src/providers/googlesheets/executors.js +1 -1
- package/src/providers/googlesheets/scopes.js +2 -0
- package/src/providers/googleslides/executors.js +2 -2
- package/src/providers/googleslides/scopes.d.ts +0 -3
- package/src/providers/googleslides/scopes.js +2 -6
- package/src/providers/googletasks/executors.js +2 -2
- package/src/providers/googletasks/scopes.d.ts +0 -3
- package/src/providers/googletasks/scopes.js +2 -6
- package/src/providers/granola/actions.js +2 -0
- package/src/providers/granola/runtime-mcp.js +2 -0
- package/src/providers/granola/runtime.js +2 -2
- package/src/providers/indiegogo/executors.js +1 -1
- package/src/providers/investoday_mcp/executors.js +2 -2
- package/src/providers/investoday_mcp/official-actions.js +19 -372
- package/src/providers/investoday_mcp/official-tool-types.d.ts +10 -0
- package/src/providers/investoday_mcp/official-tool-types.js +4 -0
- package/src/providers/investoday_mcp/official-tools/charts.d.ts +2 -0
- package/src/providers/investoday_mcp/official-tools/charts.js +32 -0
- package/src/providers/investoday_mcp/official-tools/fixed-income.d.ts +2 -0
- package/src/providers/investoday_mcp/official-tools/fixed-income.js +326 -0
- package/src/providers/investoday_mcp/official-tools/funds.d.ts +2 -0
- package/src/providers/investoday_mcp/official-tools/funds.js +1085 -0
- package/src/providers/investoday_mcp/official-tools/hong-kong.d.ts +2 -0
- package/src/providers/investoday_mcp/official-tools/hong-kong.js +275 -0
- package/src/providers/investoday_mcp/official-tools/indices-industries.d.ts +2 -0
- package/src/providers/investoday_mcp/official-tools/indices-industries.js +642 -0
- package/src/providers/investoday_mcp/official-tools/macro-calendar.d.ts +2 -0
- package/src/providers/investoday_mcp/official-tools/macro-calendar.js +398 -0
- package/src/providers/investoday_mcp/official-tools/other.d.ts +2 -0
- package/src/providers/investoday_mcp/official-tools/other.js +131 -0
- package/src/providers/investoday_mcp/official-tools/research-news.d.ts +2 -0
- package/src/providers/investoday_mcp/official-tools/research-news.js +302 -0
- package/src/providers/investoday_mcp/official-tools/stocks.d.ts +2 -0
- package/src/providers/investoday_mcp/official-tools/stocks.js +2829 -0
- package/src/providers/ixspy/executors.d.ts +3 -0
- package/src/providers/ixspy/executors.js +220 -0
- package/src/providers/iyunbiao/runtime.js +2 -2
- package/src/providers/keepa/actions.d.ts +1 -1
- package/src/providers/keepa/actions.js +371 -149
- package/src/providers/keepa/deal-attributes.d.ts +1 -0
- package/src/providers/keepa/deal-attributes.js +26 -0
- package/src/providers/keepa/runtime.js +212 -18
- package/src/providers/kingdee/executors.js +1 -1
- package/src/providers/kingdee/runtime.js +2 -2
- package/src/providers/kuaidi100/runtime.js +1 -1
- package/src/providers/linear/executors.js +12 -9
- package/src/providers/linear_mcp/actions.d.ts +47 -0
- package/src/providers/linear_mcp/actions.js +102 -0
- package/src/providers/linear_mcp/endpoints.d.ts +3 -0
- package/src/providers/linear_mcp/endpoints.js +3 -0
- package/src/providers/linear_mcp/executors.d.ts +3 -0
- package/src/providers/linear_mcp/executors.js +9 -0
- package/src/providers/linear_mcp/runtime-mcp.d.ts +15 -0
- package/src/providers/linear_mcp/runtime-mcp.js +238 -0
- package/src/providers/lingxing_mcp/runtime.js +1 -1
- package/src/providers/mcdonalds_cn_mcp/runtime.js +1 -1
- package/src/providers/metabase/mcp-runtime.js +1 -1
- package/src/providers/moneyforward_mcp/executors.d.ts +3 -0
- package/src/providers/moneyforward_mcp/executors.js +11 -0
- package/src/providers/moneyforward_mcp/manifest.d.ts +31 -0
- package/src/providers/moneyforward_mcp/manifest.js +204 -0
- package/src/providers/moneyforward_mcp/runtime.d.ts +18 -0
- package/src/providers/moneyforward_mcp/runtime.js +296 -0
- package/src/providers/notion/executors.js +39 -3
- package/src/providers/notion_mcp/endpoints.d.ts +3 -0
- package/src/providers/notion_mcp/endpoints.js +3 -0
- package/src/providers/notion_mcp/executors.d.ts +3 -0
- package/src/providers/notion_mcp/executors.js +176 -0
- package/src/providers/notion_mcp/mcp-response.d.ts +86 -0
- package/src/providers/notion_mcp/mcp-response.js +314 -0
- package/src/providers/odoo/executors.d.ts +3 -0
- package/src/providers/odoo/executors.js +32 -0
- package/src/providers/odoo/runtime.d.ts +16 -0
- package/src/providers/odoo/runtime.js +140 -0
- package/src/providers/osv/executors.d.ts +2 -0
- package/src/providers/osv/executors.js +11 -0
- package/src/providers/osv/runtime.d.ts +9 -0
- package/src/providers/osv/runtime.js +66 -0
- package/src/providers/outlook/executors.js +27 -6
- package/src/providers/outlook/microsoft-graph.js +17 -6
- package/src/providers/outlook_calendar/executors.js +24 -7
- package/src/providers/patsnap_mcp/executors.js +2 -2
- package/src/providers/pdf_vector/executors.d.ts +4 -0
- package/src/providers/pdf_vector/executors.js +108 -0
- package/src/providers/postiz/executors.d.ts +4 -0
- package/src/providers/postiz/executors.js +83 -0
- package/src/providers/provider-runtime.d.ts +18 -0
- package/src/providers/provider-runtime.js +60 -4
- package/src/providers/proworkflow/executors.d.ts +4 -0
- package/src/providers/proworkflow/executors.js +135 -0
- package/src/providers/pulsetic/executors.d.ts +4 -0
- package/src/providers/pulsetic/executors.js +126 -0
- package/src/providers/registry.generated.js +24 -0
- package/src/providers/scrape_creators/catalog.js +1 -1
- package/src/providers/scrape_creators/runtime.js +1 -1
- package/src/providers/sellersprite_mcp/executors.js +2 -2
- package/src/providers/sellersprite_mcp/official-actions.js +3 -2
- package/src/providers/sentry/runtime.js +6 -7
- package/src/providers/shopee/actions.d.ts +2 -0
- package/src/providers/shopee/actions.js +474 -0
- package/src/providers/shopee/executors.d.ts +3 -0
- package/src/providers/shopee/executors.js +85 -0
- package/src/providers/shopee/runtime.d.ts +79 -0
- package/src/providers/shopee/runtime.js +693 -0
- package/src/providers/slack/actions.js +69 -3
- package/src/providers/slack/runtime.js +116 -21
- package/src/providers/slickdeals/runtime.js +1 -1
- package/src/providers/sorftime_mcp/executors.js +2 -2
- package/src/providers/speak_ai/executors.d.ts +3 -0
- package/src/providers/speak_ai/executors.js +187 -0
- package/src/providers/tikhub/bounded-response.d.ts +1 -1
- package/src/providers/tikhub/bounded-response.js +8 -34
- package/src/providers/tikhub/endpoint-catalog.js +1 -1
- package/src/providers/tikhub/runtime.js +2 -2
- package/src/providers/tongdaxin/executors.js +79 -15
- package/src/providers/tushare/runtime.js +22 -9
- package/src/providers/uspto/executors.js +1 -1
- package/src/providers/waffo/executors.js +1 -1
- package/src/providers/waffo/runtime.js +1 -1
- package/src/providers/wecom_mcp/runtime.js +1 -1
- package/src/providers/wisburg/executors.d.ts +4 -0
- package/src/providers/wisburg/executors.js +13 -0
- package/src/providers/wisburg/runtime.d.ts +12 -0
- package/src/providers/wisburg/runtime.js +133 -0
- package/src/providers/xydc_mcp/executors.js +2 -2
- package/src/providers/youtube/executors.js +1 -1
- package/src/providers/youtube/runtime.js +1 -1
- package/src/providers/zerotier/executors.d.ts +9 -0
- package/src/providers/zerotier/executors.js +629 -0
- package/src/providers/zerotier/runtime.d.ts +54 -0
- package/src/providers/zerotier/runtime.js +207 -0
- package/src/providers/zyhub/executors.d.ts +3 -0
- package/src/providers/zyhub/executors.js +240 -0
- package/src/server/api/openapi.js +12 -2
- package/src/server/api/runtime-api.d.ts +8 -1
- package/src/server/api/runtime-api.js +19 -1
- package/src/server/connect-server.js +10 -2
- package/src/server/files/transit-files.d.ts +3 -2
- package/src/server/files/transit-files.js +31 -35
- package/src/providers/sentry/scopes.d.ts +0 -1
- package/src/providers/sentry/scopes.js +0 -7
- /package/src/providers/{cloudflare-current-user.d.ts → cloudflare_dns/runtime-user.d.ts} +0 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { optionalNumber, optionalRawString, optionalRecord, optionalString } from "../../core/cast.js";
|
|
2
|
+
import { defineApiKeyProviderExecutors, defineProviderProxy, providerInputError, ProviderRequestError, providerResponseError, providerUserAgent, readProviderJsonBody, requiredResponseRecord, runProviderRequest, } from "../provider-runtime.js";
|
|
3
|
+
const service = "pulsetic";
|
|
4
|
+
const baseUrl = "https://api.pulsetic.com/api/public";
|
|
5
|
+
const handlers = {
|
|
6
|
+
async list_monitors(input, context) {
|
|
7
|
+
return {
|
|
8
|
+
monitors: responseArray(await request("/monitors", query({ page: input.page, per_page: input.perPage }), context, "execute"), "Pulsetic monitors response"),
|
|
9
|
+
};
|
|
10
|
+
},
|
|
11
|
+
async get_monitor(input, context) {
|
|
12
|
+
return {
|
|
13
|
+
monitor: requiredResponseRecord(await request(`/monitors/${monitorId(input.monitorId)}`, undefined, context, "execute"), "Pulsetic monitor response"),
|
|
14
|
+
};
|
|
15
|
+
},
|
|
16
|
+
list_monitor_snapshots(input, context) {
|
|
17
|
+
return history("snapshots", input, context);
|
|
18
|
+
},
|
|
19
|
+
list_monitor_checks(input, context) {
|
|
20
|
+
return history("checks", input, context);
|
|
21
|
+
},
|
|
22
|
+
list_monitor_events(input, context) {
|
|
23
|
+
return history("events", input, context);
|
|
24
|
+
},
|
|
25
|
+
async get_monitor_stats(input, context) {
|
|
26
|
+
return {
|
|
27
|
+
stats: requiredResponseRecord(await request(`/monitors/${monitorId(input.monitorId)}/stats`, undefined, context, "execute"), "Pulsetic monitor stats response"),
|
|
28
|
+
};
|
|
29
|
+
},
|
|
30
|
+
async get_monitor_downtime(input, context) {
|
|
31
|
+
const value = await request(`/monitors/${monitorId(input.monitorId)}/downtime`, query({ seconds: input.seconds }), context, "execute");
|
|
32
|
+
const downtimeSeconds = optionalNumber(value);
|
|
33
|
+
if (downtimeSeconds == null)
|
|
34
|
+
throw providerResponseError("Pulsetic monitor downtime response must be a number");
|
|
35
|
+
return { downtimeSeconds };
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
export const executors = defineApiKeyProviderExecutors(service, handlers, {
|
|
39
|
+
skipDnsValidation: true,
|
|
40
|
+
});
|
|
41
|
+
export const proxy = defineProviderProxy({
|
|
42
|
+
service,
|
|
43
|
+
baseUrl,
|
|
44
|
+
auth: { type: "api_key_header", name: "Authorization" },
|
|
45
|
+
skipDnsValidation: true,
|
|
46
|
+
});
|
|
47
|
+
export const credentialValidators = {
|
|
48
|
+
async apiKey(input, { fetcher, signal }) {
|
|
49
|
+
responseArray(await request("/monitors", query({ per_page: 1 }), { apiKey: input.apiKey, fetcher, signal }, "validate"), "Pulsetic monitors response");
|
|
50
|
+
return {
|
|
51
|
+
profile: { accountId: "pulsetic-api-key", displayName: "Pulsetic API Key" },
|
|
52
|
+
grantedScopes: [],
|
|
53
|
+
metadata: { apiBaseUrl: baseUrl, validationEndpoint: "/monitors?per_page=1" },
|
|
54
|
+
};
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
async function history(resource, input, context) {
|
|
58
|
+
const params = query({
|
|
59
|
+
start_dt: input.startTime,
|
|
60
|
+
end_dt: input.endTime,
|
|
61
|
+
page: resource === "snapshots" ? input.page : undefined,
|
|
62
|
+
per_page: resource === "snapshots" ? input.perPage : undefined,
|
|
63
|
+
monitor_event_type: resource === "events" ? input.eventType : undefined,
|
|
64
|
+
});
|
|
65
|
+
append(params, "nodes[]", input.nodes);
|
|
66
|
+
append(params, "response_codes[]", input.responseCodes);
|
|
67
|
+
return {
|
|
68
|
+
[resource]: responseArray(await request(`/monitors/${monitorId(input.monitorId)}/${resource}`, params, context, "execute"), `Pulsetic ${resource} response`),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function responseArray(value, label) {
|
|
72
|
+
if (!Array.isArray(value))
|
|
73
|
+
throw providerResponseError(`${label} must be an array`);
|
|
74
|
+
return value;
|
|
75
|
+
}
|
|
76
|
+
async function request(path, params, context, phase) {
|
|
77
|
+
return runProviderRequest({ signal: context.signal, label: "Pulsetic" }, async (signal) => {
|
|
78
|
+
const url = new URL(path.replace(/^\//, ""), `${baseUrl}/`);
|
|
79
|
+
url.search = params?.toString() ?? "";
|
|
80
|
+
const response = await context.fetcher(url, {
|
|
81
|
+
headers: { accept: "application/json", authorization: context.apiKey, "user-agent": providerUserAgent },
|
|
82
|
+
signal,
|
|
83
|
+
});
|
|
84
|
+
const payload = await readProviderJsonBody(response, {
|
|
85
|
+
emptyBody: null,
|
|
86
|
+
invalidJsonMessage: "Pulsetic returned invalid JSON",
|
|
87
|
+
invalidJsonFallback: response.ok ? undefined : (text) => text.trim(),
|
|
88
|
+
});
|
|
89
|
+
if (!response.ok)
|
|
90
|
+
throw error(response.status, payload, phase);
|
|
91
|
+
return payload;
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
function error(status, payload, phase) {
|
|
95
|
+
const record = optionalRecord(payload);
|
|
96
|
+
const message = optionalRawString(payload) ??
|
|
97
|
+
optionalString(record?.message) ??
|
|
98
|
+
optionalString(record?.error) ??
|
|
99
|
+
optionalString(record?.detail) ??
|
|
100
|
+
`Pulsetic request failed with status ${status}`;
|
|
101
|
+
if (status === 429)
|
|
102
|
+
return new ProviderRequestError(429, message, payload);
|
|
103
|
+
if (phase === "validate" && status >= 400 && status < 500)
|
|
104
|
+
return providerInputError(message);
|
|
105
|
+
if (phase === "execute" && [400, 404, 422].includes(status))
|
|
106
|
+
return providerInputError(message);
|
|
107
|
+
return new ProviderRequestError(status || 502, message, payload);
|
|
108
|
+
}
|
|
109
|
+
function query(values) {
|
|
110
|
+
const result = new URLSearchParams();
|
|
111
|
+
for (const [key, value] of Object.entries(values))
|
|
112
|
+
if (value != null)
|
|
113
|
+
result.set(key, String(value));
|
|
114
|
+
return result;
|
|
115
|
+
}
|
|
116
|
+
function append(query, name, value) {
|
|
117
|
+
if (Array.isArray(value))
|
|
118
|
+
for (const item of value)
|
|
119
|
+
query.append(name, String(item));
|
|
120
|
+
}
|
|
121
|
+
function monitorId(value) {
|
|
122
|
+
const id = Number(value);
|
|
123
|
+
if (!Number.isInteger(id) || id < 1)
|
|
124
|
+
throw providerInputError("monitorId must be a positive integer");
|
|
125
|
+
return id;
|
|
126
|
+
}
|
|
@@ -40,6 +40,7 @@ export const executorModules = {
|
|
|
40
40
|
airfocus: () => import("./airfocus/executors.js"),
|
|
41
41
|
airmeet: () => import("./airmeet/executors.js"),
|
|
42
42
|
airtable: () => import("./airtable/executors.js"),
|
|
43
|
+
aisa: () => import("./aisa/executors.js"),
|
|
43
44
|
aitable_ai: () => import("./aitable_ai/executors.js"),
|
|
44
45
|
aivoov: () => import("./aivoov/executors.js"),
|
|
45
46
|
alchemy: () => import("./alchemy/executors.js"),
|
|
@@ -119,6 +120,7 @@ export const executorModules = {
|
|
|
119
120
|
baidu_maps: () => import("./baidu_maps/executors.js"),
|
|
120
121
|
baidu_netdisk: () => import("./baidu_netdisk/executors.js"),
|
|
121
122
|
baixiao: () => import("./baixiao/executors.js"),
|
|
123
|
+
baizhi_mcp: () => import("./baizhi_mcp/executors.js"),
|
|
122
124
|
balldontlie_worldcup: () => import("./balldontlie_worldcup/executors.js"),
|
|
123
125
|
bamboohr: () => import("./bamboohr/executors.js"),
|
|
124
126
|
bannerbear: () => import("./bannerbear/executors.js"),
|
|
@@ -146,6 +148,7 @@ export const executorModules = {
|
|
|
146
148
|
bigmailer: () => import("./bigmailer/executors.js"),
|
|
147
149
|
bigml: () => import("./bigml/executors.js"),
|
|
148
150
|
bigpicture_io: () => import("./bigpicture_io/executors.js"),
|
|
151
|
+
bilibili: () => import("./bilibili/executors.js"),
|
|
149
152
|
bing_webmaster: () => import("./bing_webmaster/executors.js"),
|
|
150
153
|
biorxiv_medrxiv: () => import("./biorxiv_medrxiv/executors.js"),
|
|
151
154
|
bird: () => import("./bird/executors.js"),
|
|
@@ -153,6 +156,7 @@ export const executorModules = {
|
|
|
153
156
|
bitly: () => import("./bitly/executors.js"),
|
|
154
157
|
bitquery: () => import("./bitquery/executors.js"),
|
|
155
158
|
bitrise: () => import("./bitrise/executors.js"),
|
|
159
|
+
bitwarden: () => import("./bitwarden/executors.js"),
|
|
156
160
|
bland_ai: () => import("./bland_ai/executors.js"),
|
|
157
161
|
blaze_meter_functional: () => import("./blaze_meter_functional/executors.js"),
|
|
158
162
|
blaze_meter_performance: () => import("./blaze_meter_performance/executors.js"),
|
|
@@ -315,6 +319,7 @@ export const executorModules = {
|
|
|
315
319
|
cratedb_cloud: () => import("./cratedb_cloud/executors.js"),
|
|
316
320
|
credit_repair_cloud: () => import("./credit_repair_cloud/executors.js"),
|
|
317
321
|
crisp: () => import("./crisp/executors.js"),
|
|
322
|
+
cronfree: () => import("./cronfree/executors.js"),
|
|
318
323
|
cronitor: () => import("./cronitor/executors.js"),
|
|
319
324
|
cronly: () => import("./cronly/executors.js"),
|
|
320
325
|
crossref: () => import("./crossref/executors.js"),
|
|
@@ -323,6 +328,7 @@ export const executorModules = {
|
|
|
323
328
|
crustdata: () => import("./crustdata/executors.js"),
|
|
324
329
|
crypto_apis: () => import("./crypto_apis/executors.js"),
|
|
325
330
|
cubox: () => import("./cubox/executors.js"),
|
|
331
|
+
cufinder: () => import("./cufinder/executors.js"),
|
|
326
332
|
currencyapi: () => import("./currencyapi/executors.js"),
|
|
327
333
|
currencyscoop: () => import("./currencyscoop/executors.js"),
|
|
328
334
|
currents_api: () => import("./currents_api/executors.js"),
|
|
@@ -401,6 +407,7 @@ export const executorModules = {
|
|
|
401
407
|
doubao_speech: () => import("./doubao_speech/executors.js"),
|
|
402
408
|
dovetail: () => import("./dovetail/executors.js"),
|
|
403
409
|
drata: () => import("./drata/executors.js"),
|
|
410
|
+
drawio_mcp: () => import("./drawio_mcp/executors.js"),
|
|
404
411
|
drimify: () => import("./drimify/executors.js"),
|
|
405
412
|
dropbox: () => import("./dropbox/executors.js"),
|
|
406
413
|
dropbox_sign: () => import("./dropbox_sign/executors.js"),
|
|
@@ -505,6 +512,7 @@ export const executorModules = {
|
|
|
505
512
|
formstack: () => import("./formstack/executors.js"),
|
|
506
513
|
formstack_documents: () => import("./formstack_documents/executors.js"),
|
|
507
514
|
foursquare: () => import("./foursquare/executors.js"),
|
|
515
|
+
framejet: () => import("./framejet/executors.js"),
|
|
508
516
|
fraudlabspro: () => import("./fraudlabspro/executors.js"),
|
|
509
517
|
freepik: () => import("./freepik/executors.js"),
|
|
510
518
|
freshdesk: () => import("./freshdesk/executors.js"),
|
|
@@ -517,6 +525,7 @@ export const executorModules = {
|
|
|
517
525
|
fullenrich: () => import("./fullenrich/executors.js"),
|
|
518
526
|
fundzwatch: () => import("./fundzwatch/executors.js"),
|
|
519
527
|
"fusion-api": () => import("./fusion-api/executors.js"),
|
|
528
|
+
futunn: () => import("./futunn/executors.js"),
|
|
520
529
|
fuxin: () => import("./fuxin/executors.js"),
|
|
521
530
|
gagelist: () => import("./gagelist/executors.js"),
|
|
522
531
|
gainsight_nxt: () => import("./gainsight_nxt/executors.js"),
|
|
@@ -680,6 +689,7 @@ export const executorModules = {
|
|
|
680
689
|
iqair_airvisual: () => import("./iqair_airvisual/executors.js"),
|
|
681
690
|
it_glue: () => import("./it_glue/executors.js"),
|
|
682
691
|
itunes_search: () => import("./itunes_search/executors.js"),
|
|
692
|
+
ixspy: () => import("./ixspy/executors.js"),
|
|
683
693
|
iyunbiao: () => import("./iyunbiao/executors.js"),
|
|
684
694
|
jamie: () => import("./jamie/executors.js"),
|
|
685
695
|
jazzhr: () => import("./jazzhr/executors.js"),
|
|
@@ -762,6 +772,7 @@ export const executorModules = {
|
|
|
762
772
|
lightspeed_vt: () => import("./lightspeed_vt/executors.js"),
|
|
763
773
|
line: () => import("./line/executors.js"),
|
|
764
774
|
linear: () => import("./linear/executors.js"),
|
|
775
|
+
linear_mcp: () => import("./linear_mcp/executors.js"),
|
|
765
776
|
linguapop: () => import("./linguapop/executors.js"),
|
|
766
777
|
lingvanex_translation_api: () => import("./lingvanex_translation_api/executors.js"),
|
|
767
778
|
lingxing_mcp: () => import("./lingxing_mcp/executors.js"),
|
|
@@ -864,6 +875,7 @@ export const executorModules = {
|
|
|
864
875
|
mojo_helpdesk: () => import("./mojo_helpdesk/executors.js"),
|
|
865
876
|
momentum_io: () => import("./momentum_io/executors.js"),
|
|
866
877
|
monday: () => import("./monday/executors.js"),
|
|
878
|
+
moneyforward_mcp: () => import("./moneyforward_mcp/executors.js"),
|
|
867
879
|
mongo_db_atlas_administration: () => import("./mongo_db_atlas_administration/executors.js"),
|
|
868
880
|
monica_crm: () => import("./monica_crm/executors.js"),
|
|
869
881
|
moonclerk: () => import("./moonclerk/executors.js"),
|
|
@@ -913,6 +925,7 @@ export const executorModules = {
|
|
|
913
925
|
northbeam: () => import("./northbeam/executors.js"),
|
|
914
926
|
northflank: () => import("./northflank/executors.js"),
|
|
915
927
|
notion: () => import("./notion/executors.js"),
|
|
928
|
+
notion_mcp: () => import("./notion_mcp/executors.js"),
|
|
916
929
|
novu: () => import("./novu/executors.js"),
|
|
917
930
|
nozbe_teams: () => import("./nozbe_teams/executors.js"),
|
|
918
931
|
npm: () => import("./npm/executors.js"),
|
|
@@ -925,6 +938,7 @@ export const executorModules = {
|
|
|
925
938
|
ocrspace: () => import("./ocrspace/executors.js"),
|
|
926
939
|
octave: () => import("./octave/executors.js"),
|
|
927
940
|
octopus_deploy: () => import("./octopus_deploy/executors.js"),
|
|
941
|
+
odoo: () => import("./odoo/executors.js"),
|
|
928
942
|
oksign: () => import("./oksign/executors.js"),
|
|
929
943
|
okta: () => import("./okta/executors.js"),
|
|
930
944
|
omise: () => import("./omise/executors.js"),
|
|
@@ -963,6 +977,7 @@ export const executorModules = {
|
|
|
963
977
|
orimon: () => import("./orimon/executors.js"),
|
|
964
978
|
ortto: () => import("./ortto/executors.js"),
|
|
965
979
|
ossinsight: () => import("./ossinsight/executors.js"),
|
|
980
|
+
osv: () => import("./osv/executors.js"),
|
|
966
981
|
otter_ai: () => import("./otter_ai/executors.js"),
|
|
967
982
|
oura: () => import("./oura/executors.js"),
|
|
968
983
|
outline: () => import("./outline/executors.js"),
|
|
@@ -995,6 +1010,7 @@ export const executorModules = {
|
|
|
995
1010
|
paystack: () => import("./paystack/executors.js"),
|
|
996
1011
|
pdf_api_io: () => import("./pdf_api_io/executors.js"),
|
|
997
1012
|
pdf_co: () => import("./pdf_co/executors.js"),
|
|
1013
|
+
pdf_vector: () => import("./pdf_vector/executors.js"),
|
|
998
1014
|
pdfless: () => import("./pdfless/executors.js"),
|
|
999
1015
|
pdfmonkey: () => import("./pdfmonkey/executors.js"),
|
|
1000
1016
|
peec: () => import("./peec/executors.js"),
|
|
@@ -1044,6 +1060,7 @@ export const executorModules = {
|
|
|
1044
1060
|
postgrid: () => import("./postgrid/executors.js"),
|
|
1045
1061
|
postgrid_verify: () => import("./postgrid_verify/executors.js"),
|
|
1046
1062
|
posthog: () => import("./posthog/executors.js"),
|
|
1063
|
+
postiz: () => import("./postiz/executors.js"),
|
|
1047
1064
|
postman: () => import("./postman/executors.js"),
|
|
1048
1065
|
postmark: () => import("./postmark/executors.js"),
|
|
1049
1066
|
practitest: () => import("./practitest/executors.js"),
|
|
@@ -1064,9 +1081,11 @@ export const executorModules = {
|
|
|
1064
1081
|
projectmanager: () => import("./projectmanager/executors.js"),
|
|
1065
1082
|
promptlayer: () => import("./promptlayer/executors.js"),
|
|
1066
1083
|
prospeo: () => import("./prospeo/executors.js"),
|
|
1084
|
+
proworkflow: () => import("./proworkflow/executors.js"),
|
|
1067
1085
|
proxiedmail: () => import("./proxiedmail/executors.js"),
|
|
1068
1086
|
prtg_classic: () => import("./prtg_classic/executors.js"),
|
|
1069
1087
|
pubmed: () => import("./pubmed/executors.js"),
|
|
1088
|
+
pulsetic: () => import("./pulsetic/executors.js"),
|
|
1070
1089
|
push_by_techulus: () => import("./push_by_techulus/executors.js"),
|
|
1071
1090
|
pushbullet: () => import("./pushbullet/executors.js"),
|
|
1072
1091
|
pushover: () => import("./pushover/executors.js"),
|
|
@@ -1206,6 +1225,7 @@ export const executorModules = {
|
|
|
1206
1225
|
shipengine: () => import("./shipengine/executors.js"),
|
|
1207
1226
|
shippo: () => import("./shippo/executors.js"),
|
|
1208
1227
|
shodan: () => import("./shodan/executors.js"),
|
|
1228
|
+
shopee: () => import("./shopee/executors.js"),
|
|
1209
1229
|
shopify: () => import("./shopify/executors.js"),
|
|
1210
1230
|
shopify_admin: () => import("./shopify_admin/executors.js"),
|
|
1211
1231
|
shopify_partner: () => import("./shopify_partner/executors.js"),
|
|
@@ -1254,6 +1274,7 @@ export const executorModules = {
|
|
|
1254
1274
|
sonarcloud: () => import("./sonarcloud/executors.js"),
|
|
1255
1275
|
sorftime: () => import("./sorftime/executors.js"),
|
|
1256
1276
|
sorftime_mcp: () => import("./sorftime_mcp/executors.js"),
|
|
1277
|
+
speak_ai: () => import("./speak_ai/executors.js"),
|
|
1257
1278
|
speechmatics: () => import("./speechmatics/executors.js"),
|
|
1258
1279
|
speedtest_tracker: () => import("./speedtest_tracker/executors.js"),
|
|
1259
1280
|
spider: () => import("./spider/executors.js"),
|
|
@@ -1483,6 +1504,7 @@ export const executorModules = {
|
|
|
1483
1504
|
whop: () => import("./whop/executors.js"),
|
|
1484
1505
|
winston_ai: () => import("./winston_ai/executors.js"),
|
|
1485
1506
|
wire2air: () => import("./wire2air/executors.js"),
|
|
1507
|
+
wisburg: () => import("./wisburg/executors.js"),
|
|
1486
1508
|
wise: () => import("./wise/executors.js"),
|
|
1487
1509
|
wit_ai: () => import("./wit_ai/executors.js"),
|
|
1488
1510
|
wiza: () => import("./wiza/executors.js"),
|
|
@@ -1531,6 +1553,7 @@ export const executorModules = {
|
|
|
1531
1553
|
zep: () => import("./zep/executors.js"),
|
|
1532
1554
|
zeplin: () => import("./zeplin/executors.js"),
|
|
1533
1555
|
zerobounce: () => import("./zerobounce/executors.js"),
|
|
1556
|
+
zerotier: () => import("./zerotier/executors.js"),
|
|
1534
1557
|
zhihu: () => import("./zhihu/executors.js"),
|
|
1535
1558
|
zigpoll: () => import("./zigpoll/executors.js"),
|
|
1536
1559
|
zip_archive_api: () => import("./zip_archive_api/executors.js"),
|
|
@@ -1540,6 +1563,7 @@ export const executorModules = {
|
|
|
1540
1563
|
zoom: () => import("./zoom/executors.js"),
|
|
1541
1564
|
zorus: () => import("./zorus/executors.js"),
|
|
1542
1565
|
zotero: () => import("./zotero/executors.js"),
|
|
1566
|
+
zyhub: () => import("./zyhub/executors.js"),
|
|
1543
1567
|
zylvie: () => import("./zylvie/executors.js"),
|
|
1544
1568
|
zyte_api: () => import("./zyte_api/executors.js"),
|
|
1545
1569
|
};
|
|
@@ -95,7 +95,7 @@ async function requestJson(method, path, query, body, apiKey, fetcher, phase, pa
|
|
|
95
95
|
method,
|
|
96
96
|
headers,
|
|
97
97
|
body: serializedBody,
|
|
98
|
-
redirect: "
|
|
98
|
+
redirect: "manual",
|
|
99
99
|
signal: timeout.signal,
|
|
100
100
|
});
|
|
101
101
|
const text = await readBoundedResponseText(response, responseMaxBytes, "Scrape Creators response");
|
|
@@ -15,7 +15,7 @@ const handlers = mapProviderActionHandlers(service, sellerspriteMcpActions, (_ac
|
|
|
15
15
|
if (name === "call_tool") {
|
|
16
16
|
return (input, context) => call(context, required(input.toolName, "toolName"), object(input.arguments));
|
|
17
17
|
}
|
|
18
|
-
return (input, context) => call(context, name, input);
|
|
18
|
+
return (input, context) => call(context, name, name === "traffic_extend" ? { ...input, queryType: input.queryType ?? 2 } : input);
|
|
19
19
|
});
|
|
20
20
|
export const executors = defineApiKeyProviderExecutors(service, handlers, {
|
|
21
21
|
skipDnsValidation: true,
|
|
@@ -39,7 +39,7 @@ export const proxy = defineProviderProxy({
|
|
|
39
39
|
auth: { type: "api_key_header", name: "secret-key" },
|
|
40
40
|
skipDnsValidation: true,
|
|
41
41
|
timeoutMs,
|
|
42
|
-
redirect: "
|
|
42
|
+
redirect: "manual",
|
|
43
43
|
customizeRequest({ url, headers }) {
|
|
44
44
|
if (url.toString() !== endpoint) {
|
|
45
45
|
throw new ProviderRequestError(400, "SellerSprite MCP proxy only supports the official /mcp endpoint");
|
|
@@ -705,7 +705,7 @@ const parameterDescriptionByToolAndName = {
|
|
|
705
705
|
"keyword_miner.filterRootWord": "Root-word filter: 0 includes all keywords and 1 includes only root-word matches.",
|
|
706
706
|
"keyword_miner.matchType": "Keyword match type: 2 for broad or 3 for phrase.",
|
|
707
707
|
"traffic_extend.asinList": "Amazon ASINs to query, with at most 20 values.",
|
|
708
|
-
"traffic_extend.queryType": "Variation query mode: 0 for all variations, 1 for the best-selling variation, or 2 for the current variation.",
|
|
708
|
+
"traffic_extend.queryType": "Variation query mode: 0 for all variations, 1 for the best-selling variation, or 2 for the current variation; defaults to 2.",
|
|
709
709
|
"aba_research_weekly.searchModel": "Search model from 1 through 6: popular, changing, sustained growth, rapid growth, potential, or long-tail market.",
|
|
710
710
|
"aba_research_monthly.searchModel": "Search model from 1 through 6: popular, changing, sustained growth, rapid growth, potential, or long-tail market.",
|
|
711
711
|
"keyword_order.asins": "Amazon ASINs to query, with at most 20 values.",
|
|
@@ -788,7 +788,8 @@ function officialParameterSchema(toolName, name, type) {
|
|
|
788
788
|
}
|
|
789
789
|
const integerValues = integerValuesByToolAndParameter[parameterKey];
|
|
790
790
|
if (type === "integer" && integerValues) {
|
|
791
|
-
|
|
791
|
+
const schema = { type: "integer", enum: integerValues, description };
|
|
792
|
+
return parameterKey === "traffic_extend.queryType" ? s.withDefault(schema, 2) : schema;
|
|
792
793
|
}
|
|
793
794
|
const stringValues = stringValuesByToolAndParameter[parameterKey];
|
|
794
795
|
if (type === "string" && stringValues) {
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { compactObject, looseArray, optionalRawString, rawStringOrNull } from "../../core/cast.js";
|
|
1
|
+
import { compactObject, looseArray, optionalRawString, optionalStringArray, rawStringOrNull } from "../../core/cast.js";
|
|
2
2
|
import { ProviderRequestError } from "../provider-runtime.js";
|
|
3
|
-
import { sentryProviderScopes } from "./scopes.js";
|
|
4
3
|
export const sentryApiBaseUrl = "https://sentry.io/api/0/";
|
|
5
|
-
const sentryCurrentUserUrl = `${sentryApiBaseUrl}users/me/`;
|
|
6
4
|
export const sentryActionHandlers = {
|
|
7
5
|
list_organization_integrations(input, context) {
|
|
8
6
|
return sentryListOrganizationIntegrations(input, context.accessToken, context.fetcher);
|
|
@@ -63,8 +61,9 @@ export const sentryActionHandlers = {
|
|
|
63
61
|
},
|
|
64
62
|
};
|
|
65
63
|
export async function validateSentryCredential(accessToken, fetcher) {
|
|
66
|
-
const { payload } = await requestSentryJson(accessToken,
|
|
67
|
-
const
|
|
64
|
+
const { payload } = await requestSentryJson(accessToken, sentryApiBaseUrl, fetcher, {}, "validate");
|
|
65
|
+
const payloadRecord = asRecord(payload);
|
|
66
|
+
const user = asRecord(payloadRecord?.user);
|
|
68
67
|
if (!user) {
|
|
69
68
|
throw new ProviderRequestError(502, "sentry current user payload is invalid");
|
|
70
69
|
}
|
|
@@ -78,9 +77,9 @@ export async function validateSentryCredential(accessToken, fetcher) {
|
|
|
78
77
|
accountId: userId,
|
|
79
78
|
displayName,
|
|
80
79
|
},
|
|
81
|
-
grantedScopes:
|
|
80
|
+
grantedScopes: optionalStringArray(asRecord(payloadRecord?.auth)?.scopes) ?? [],
|
|
82
81
|
metadata: compactObject({
|
|
83
|
-
validationEndpoint: "/
|
|
82
|
+
validationEndpoint: "/",
|
|
84
83
|
userId,
|
|
85
84
|
username: optionalRawString(user.username),
|
|
86
85
|
email: optionalRawString(user.email),
|