@oomol-lab/open-connector 1.6.3 → 1.6.5
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 +568 -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/feishu_app_bot.json +2 -2
- package/assets/open-connector/catalog/apps/gmail.json +73 -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/jin10.json +1 -1
- package/assets/open-connector/catalog/apps/osv.json +663 -0
- package/assets/open-connector/catalog/apps/pdf_vector.json +329 -0
- package/assets/open-connector/catalog/apps/pulsetic.json +406 -0
- package/assets/open-connector/catalog/apps/shopee.json +1785 -0
- package/assets/open-connector/catalog/apps/slack.json +81 -0
- package/assets/open-connector/catalog/apps/slackbot.json +81 -0
- package/assets/open-connector/catalog/apps/speak_ai.json +360 -0
- package/assets/open-connector/catalog/apps/tongdaxin.json +11 -440
- 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/json-schema.d.ts +5 -1
- package/src/core/json-schema.js +14 -2
- package/src/core/types.d.ts +9 -0
- package/src/oauth/oauth-credential-refresh-service.js +3 -1
- package/src/oauth/oauth-flow-service.js +17 -2
- package/src/oauth/oauth-token.d.ts +13 -0
- package/src/providers/action-contracts.generated.d.ts +16 -4
- package/src/providers/aisa/executors.d.ts +4 -0
- package/src/providers/aisa/executors.js +176 -0
- 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 +238 -0
- package/src/providers/bilibili/upload.d.ts +14 -0
- package/src/providers/bilibili/upload.js +105 -0
- package/src/providers/bitwarden/executors.d.ts +3 -0
- package/src/providers/bitwarden/executors.js +146 -0
- 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/dropbox/executors.js +21 -3
- package/src/providers/elevenreader/runtime.js +6 -5
- package/src/providers/feishu_app_bot/scopes.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 +53 -25
- 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/mcp-client.d.ts +1 -0
- package/src/providers/mcp-client.js +41 -27
- 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/pdf_vector/executors.d.ts +4 -0
- package/src/providers/pdf_vector/executors.js +108 -0
- package/src/providers/provider-runtime.d.ts +3 -0
- package/src/providers/provider-runtime.js +4 -1
- package/src/providers/pulsetic/executors.d.ts +4 -0
- package/src/providers/pulsetic/executors.js +126 -0
- package/src/providers/registry.generated.js +12 -0
- package/src/providers/sellersprite_mcp/executors.js +2 -1
- 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 +17 -0
- package/src/providers/slack/runtime.js +62 -4
- package/src/providers/speak_ai/executors.d.ts +3 -0
- package/src/providers/speak_ai/executors.js +187 -0
- package/src/providers/tongdaxin/executors.js +5 -4
- package/src/providers/tongdaxin/named-action-output.js +3 -9
- package/src/providers/tongdaxin/named-action-routing.js +1 -1
- package/src/providers/tongdaxin/named-actions.js +1 -6
- package/src/providers/tushare/runtime.js +22 -9
- package/src/providers/twenty_crm/runtime.js +4 -2
- package/src/providers/zyhub/executors.d.ts +3 -0
- package/src/providers/zyhub/executors.js +240 -0
- package/src/server/files/transit-files.d.ts +3 -2
- package/src/server/files/transit-files.js +31 -35
|
@@ -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"),
|
|
@@ -146,6 +147,7 @@ export const executorModules = {
|
|
|
146
147
|
bigmailer: () => import("./bigmailer/executors.js"),
|
|
147
148
|
bigml: () => import("./bigml/executors.js"),
|
|
148
149
|
bigpicture_io: () => import("./bigpicture_io/executors.js"),
|
|
150
|
+
bilibili: () => import("./bilibili/executors.js"),
|
|
149
151
|
bing_webmaster: () => import("./bing_webmaster/executors.js"),
|
|
150
152
|
biorxiv_medrxiv: () => import("./biorxiv_medrxiv/executors.js"),
|
|
151
153
|
bird: () => import("./bird/executors.js"),
|
|
@@ -153,6 +155,7 @@ export const executorModules = {
|
|
|
153
155
|
bitly: () => import("./bitly/executors.js"),
|
|
154
156
|
bitquery: () => import("./bitquery/executors.js"),
|
|
155
157
|
bitrise: () => import("./bitrise/executors.js"),
|
|
158
|
+
bitwarden: () => import("./bitwarden/executors.js"),
|
|
156
159
|
bland_ai: () => import("./bland_ai/executors.js"),
|
|
157
160
|
blaze_meter_functional: () => import("./blaze_meter_functional/executors.js"),
|
|
158
161
|
blaze_meter_performance: () => import("./blaze_meter_performance/executors.js"),
|
|
@@ -315,6 +318,7 @@ export const executorModules = {
|
|
|
315
318
|
cratedb_cloud: () => import("./cratedb_cloud/executors.js"),
|
|
316
319
|
credit_repair_cloud: () => import("./credit_repair_cloud/executors.js"),
|
|
317
320
|
crisp: () => import("./crisp/executors.js"),
|
|
321
|
+
cronfree: () => import("./cronfree/executors.js"),
|
|
318
322
|
cronitor: () => import("./cronitor/executors.js"),
|
|
319
323
|
cronly: () => import("./cronly/executors.js"),
|
|
320
324
|
crossref: () => import("./crossref/executors.js"),
|
|
@@ -323,6 +327,7 @@ export const executorModules = {
|
|
|
323
327
|
crustdata: () => import("./crustdata/executors.js"),
|
|
324
328
|
crypto_apis: () => import("./crypto_apis/executors.js"),
|
|
325
329
|
cubox: () => import("./cubox/executors.js"),
|
|
330
|
+
cufinder: () => import("./cufinder/executors.js"),
|
|
326
331
|
currencyapi: () => import("./currencyapi/executors.js"),
|
|
327
332
|
currencyscoop: () => import("./currencyscoop/executors.js"),
|
|
328
333
|
currents_api: () => import("./currents_api/executors.js"),
|
|
@@ -680,6 +685,7 @@ export const executorModules = {
|
|
|
680
685
|
iqair_airvisual: () => import("./iqair_airvisual/executors.js"),
|
|
681
686
|
it_glue: () => import("./it_glue/executors.js"),
|
|
682
687
|
itunes_search: () => import("./itunes_search/executors.js"),
|
|
688
|
+
ixspy: () => import("./ixspy/executors.js"),
|
|
683
689
|
iyunbiao: () => import("./iyunbiao/executors.js"),
|
|
684
690
|
jamie: () => import("./jamie/executors.js"),
|
|
685
691
|
jazzhr: () => import("./jazzhr/executors.js"),
|
|
@@ -963,6 +969,7 @@ export const executorModules = {
|
|
|
963
969
|
orimon: () => import("./orimon/executors.js"),
|
|
964
970
|
ortto: () => import("./ortto/executors.js"),
|
|
965
971
|
ossinsight: () => import("./ossinsight/executors.js"),
|
|
972
|
+
osv: () => import("./osv/executors.js"),
|
|
966
973
|
otter_ai: () => import("./otter_ai/executors.js"),
|
|
967
974
|
oura: () => import("./oura/executors.js"),
|
|
968
975
|
outline: () => import("./outline/executors.js"),
|
|
@@ -995,6 +1002,7 @@ export const executorModules = {
|
|
|
995
1002
|
paystack: () => import("./paystack/executors.js"),
|
|
996
1003
|
pdf_api_io: () => import("./pdf_api_io/executors.js"),
|
|
997
1004
|
pdf_co: () => import("./pdf_co/executors.js"),
|
|
1005
|
+
pdf_vector: () => import("./pdf_vector/executors.js"),
|
|
998
1006
|
pdfless: () => import("./pdfless/executors.js"),
|
|
999
1007
|
pdfmonkey: () => import("./pdfmonkey/executors.js"),
|
|
1000
1008
|
peec: () => import("./peec/executors.js"),
|
|
@@ -1067,6 +1075,7 @@ export const executorModules = {
|
|
|
1067
1075
|
proxiedmail: () => import("./proxiedmail/executors.js"),
|
|
1068
1076
|
prtg_classic: () => import("./prtg_classic/executors.js"),
|
|
1069
1077
|
pubmed: () => import("./pubmed/executors.js"),
|
|
1078
|
+
pulsetic: () => import("./pulsetic/executors.js"),
|
|
1070
1079
|
push_by_techulus: () => import("./push_by_techulus/executors.js"),
|
|
1071
1080
|
pushbullet: () => import("./pushbullet/executors.js"),
|
|
1072
1081
|
pushover: () => import("./pushover/executors.js"),
|
|
@@ -1206,6 +1215,7 @@ export const executorModules = {
|
|
|
1206
1215
|
shipengine: () => import("./shipengine/executors.js"),
|
|
1207
1216
|
shippo: () => import("./shippo/executors.js"),
|
|
1208
1217
|
shodan: () => import("./shodan/executors.js"),
|
|
1218
|
+
shopee: () => import("./shopee/executors.js"),
|
|
1209
1219
|
shopify: () => import("./shopify/executors.js"),
|
|
1210
1220
|
shopify_admin: () => import("./shopify_admin/executors.js"),
|
|
1211
1221
|
shopify_partner: () => import("./shopify_partner/executors.js"),
|
|
@@ -1254,6 +1264,7 @@ export const executorModules = {
|
|
|
1254
1264
|
sonarcloud: () => import("./sonarcloud/executors.js"),
|
|
1255
1265
|
sorftime: () => import("./sorftime/executors.js"),
|
|
1256
1266
|
sorftime_mcp: () => import("./sorftime_mcp/executors.js"),
|
|
1267
|
+
speak_ai: () => import("./speak_ai/executors.js"),
|
|
1257
1268
|
speechmatics: () => import("./speechmatics/executors.js"),
|
|
1258
1269
|
speedtest_tracker: () => import("./speedtest_tracker/executors.js"),
|
|
1259
1270
|
spider: () => import("./spider/executors.js"),
|
|
@@ -1540,6 +1551,7 @@ export const executorModules = {
|
|
|
1540
1551
|
zoom: () => import("./zoom/executors.js"),
|
|
1541
1552
|
zorus: () => import("./zorus/executors.js"),
|
|
1542
1553
|
zotero: () => import("./zotero/executors.js"),
|
|
1554
|
+
zyhub: () => import("./zyhub/executors.js"),
|
|
1543
1555
|
zylvie: () => import("./zylvie/executors.js"),
|
|
1544
1556
|
zyte_api: () => import("./zyte_api/executors.js"),
|
|
1545
1557
|
};
|
|
@@ -87,8 +87,9 @@ function normalize(result) {
|
|
|
87
87
|
const message = envelope.message ?? `SellerSprite MCP tool failed with ${envelope.code}`;
|
|
88
88
|
if (["ERROR_UNAUTHORIZED", "ERROR_SECRET_KEY", "ERROR_SECRET_KEY_INVALID", "ERROR_SECRET_KEY_OVERDUE"].includes(envelope.code))
|
|
89
89
|
throw new ProviderRequestError(401, message, envelope);
|
|
90
|
-
if (envelope.code === "ERROR_VISIT_MAX")
|
|
90
|
+
if (envelope.code === "ERROR_VISIT_MAX" || envelope.code === "ERROR_MAXIMUM_ACCESS_PER_MINUTE") {
|
|
91
91
|
throw new ProviderRequestError(429, message, envelope);
|
|
92
|
+
}
|
|
92
93
|
if (envelope.code === "ERROR_AUTH_ERROR")
|
|
93
94
|
throw new ProviderRequestError(403, message, envelope);
|
|
94
95
|
if (envelope.code === "ERROR_PARAM")
|