@tangle-network/agent-integrations 0.53.53 → 0.53.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -0
- package/data/bundled-adapter-manifests.json +1 -0
- package/dist/audit-DMTzJQJU.d.ts +51 -0
- package/dist/catalog.d.ts +3 -3
- package/dist/catalog.js +2 -12
- package/dist/chunk-A4OJ5EQT.js +133156 -0
- package/dist/chunk-A4OJ5EQT.js.map +1 -0
- package/dist/chunk-ABA4HWIQ.js +58 -0
- package/dist/chunk-ABA4HWIQ.js.map +1 -0
- package/dist/chunk-DED3J7F6.js +1 -0
- package/dist/chunk-ESY2FBBM.js +33 -0
- package/dist/chunk-ESY2FBBM.js.map +1 -0
- package/dist/chunk-GIK6EXU2.js +121 -0
- package/dist/chunk-GIK6EXU2.js.map +1 -0
- package/dist/{chunk-TWR2KAZG.js → chunk-MH4IEJCL.js} +1 -1
- package/dist/chunk-MH4IEJCL.js.map +1 -0
- package/dist/chunk-QVWTBQXP.js +267 -0
- package/dist/chunk-QVWTBQXP.js.map +1 -0
- package/dist/{chunk-2GEGKSL5.js → chunk-QWOX5SIM.js} +6 -33
- package/dist/chunk-QWOX5SIM.js.map +1 -0
- package/dist/chunk-RSJRICPU.js +394 -0
- package/dist/chunk-RSJRICPU.js.map +1 -0
- package/dist/chunk-WPQJK4S4.js +400 -0
- package/dist/chunk-WPQJK4S4.js.map +1 -0
- package/dist/connect/index.d.ts +2 -2
- package/dist/connectors/adapters/index.d.ts +2 -2
- package/dist/connectors/index.d.ts +10 -22
- package/dist/connectors/index.js +12 -10
- package/dist/{consumer-BbQWkIzU.d.ts → consumer-CIq2D22y.d.ts} +4 -51
- package/dist/consumer.d.ts +5 -4
- package/dist/{core-types-A-xIaTzb.d.ts → core-types-DZJQRBya.d.ts} +2 -2
- package/dist/coverage-catalog.d.ts +2 -2
- package/dist/coverage-catalog.js +1 -1
- package/dist/{importers-BMigcDVf.d.ts → importers-Cyk5osDs.d.ts} +1 -1
- package/dist/index.d.ts +17 -104
- package/dist/index.js +72 -62
- package/dist/internal/bundled-manifest-runtime.d.ts +15 -0
- package/dist/internal/bundled-manifest-runtime.js +13 -0
- package/dist/internal/bundled-manifest-runtime.js.map +1 -0
- package/dist/mcp.d.ts +3 -3
- package/dist/mcp.js +10 -5
- package/dist/mcp.js.map +1 -1
- package/dist/middleware/index.d.ts +2 -2
- package/dist/registry-core-DqdQjTkh.d.ts +49 -0
- package/dist/registry.d.ts +6 -49
- package/dist/registry.js +16 -10
- package/dist/runtime.d.ts +3 -3
- package/dist/runtime.js +3 -12
- package/dist/specs.d.ts +2 -2
- package/dist/specs.js +4 -6
- package/dist/{tangle-id-gFOGXe4Y.d.ts → tangle-id-Oy2z4W3p.d.ts} +1 -1
- package/dist/{types-DpKEBiX6.d.ts → types-DIis6QtV.d.ts} +1 -1
- package/dist/worker.d.ts +99 -0
- package/dist/worker.js +28 -0
- package/dist/worker.js.map +1 -0
- package/docs/repo-structure.md +29 -6
- package/package.json +10 -1
- package/dist/chunk-2GEGKSL5.js.map +0 -1
- package/dist/chunk-E2QYXDJQ.js +0 -147
- package/dist/chunk-E2QYXDJQ.js.map +0 -1
- package/dist/chunk-P4FFI752.js +0 -1
- package/dist/chunk-TWR2KAZG.js.map +0 -1
- package/dist/chunk-ZC3ZE7TN.js +0 -4849
- package/dist/chunk-ZC3ZE7TN.js.map +0 -1
- /package/dist/{chunk-P4FFI752.js.map → chunk-DED3J7F6.js.map} +0 -0
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
import {
|
|
2
|
+
INTEGRATION_KIND_ALIASES
|
|
3
|
+
} from "./chunk-ESY2FBBM.js";
|
|
4
|
+
|
|
5
|
+
// src/registry-core.ts
|
|
6
|
+
var DEFAULT_ALIASES = INTEGRATION_KIND_ALIASES;
|
|
7
|
+
var DEFAULT_SOURCE_PRECEDENCE = {
|
|
8
|
+
"first-party": 500,
|
|
9
|
+
spec: 400,
|
|
10
|
+
gateway: 300,
|
|
11
|
+
"tangle-catalog": 100,
|
|
12
|
+
activepieces: 100,
|
|
13
|
+
coverage: 50
|
|
14
|
+
};
|
|
15
|
+
var SUPPORT_RANK = {
|
|
16
|
+
catalogOnly: 0,
|
|
17
|
+
setupReady: 1,
|
|
18
|
+
gatewayExecutable: 2,
|
|
19
|
+
firstPartyExecutable: 3,
|
|
20
|
+
sandboxExecutable: 4
|
|
21
|
+
};
|
|
22
|
+
function composeIntegrationRegistry(sources, options = {}) {
|
|
23
|
+
const aliases = { ...DEFAULT_ALIASES, ...options.aliases ?? {} };
|
|
24
|
+
const precedence = { ...DEFAULT_SOURCE_PRECEDENCE, ...options.sourcePrecedence ?? {} };
|
|
25
|
+
const grouped = /* @__PURE__ */ new Map();
|
|
26
|
+
for (const source of sources) {
|
|
27
|
+
for (const connector of source.connectors) {
|
|
28
|
+
const canonicalId = canonicalConnectorId(connector.id, aliases);
|
|
29
|
+
const candidates = grouped.get(canonicalId) ?? [];
|
|
30
|
+
candidates.push({
|
|
31
|
+
source,
|
|
32
|
+
connector,
|
|
33
|
+
supportTier: inferIntegrationSupportTier(connector)
|
|
34
|
+
});
|
|
35
|
+
grouped.set(canonicalId, candidates);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const entries = [...grouped.entries()].map(([canonicalId, candidates]) => registryEntry(canonicalId, candidates, precedence, aliases)).sort((a, b) => a.canonicalId.localeCompare(b.canonicalId));
|
|
39
|
+
const byId = /* @__PURE__ */ new Map();
|
|
40
|
+
for (const entry of entries) {
|
|
41
|
+
byId.set(entry.canonicalId, entry);
|
|
42
|
+
for (const alias of entry.aliases) byId.set(alias, entry);
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
entries,
|
|
46
|
+
connectors: entries.map((entry) => entry.connector),
|
|
47
|
+
byId
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function summarizeIntegrationRegistry(registry) {
|
|
51
|
+
const bySupportTier = {
|
|
52
|
+
catalogOnly: 0,
|
|
53
|
+
setupReady: 0,
|
|
54
|
+
gatewayExecutable: 0,
|
|
55
|
+
firstPartyExecutable: 0,
|
|
56
|
+
sandboxExecutable: 0
|
|
57
|
+
};
|
|
58
|
+
for (const entry of registry.entries) bySupportTier[entry.supportTier] += 1;
|
|
59
|
+
return {
|
|
60
|
+
totalEntries: registry.entries.length,
|
|
61
|
+
totalSources: registry.entries.reduce((sum, entry) => sum + entry.sources.length, 0),
|
|
62
|
+
toolBindableEntries: registry.entries.filter((entry) => entry.connector.actions.length > 0).length,
|
|
63
|
+
conflictEntries: registry.entries.filter((entry) => entry.conflicts.length > 0).length,
|
|
64
|
+
bySupportTier
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function canonicalConnectorId(id, aliases = DEFAULT_ALIASES) {
|
|
68
|
+
const normalized = slug(id);
|
|
69
|
+
let current = normalized;
|
|
70
|
+
const seen = /* @__PURE__ */ new Set();
|
|
71
|
+
while (aliases[current] && !seen.has(current)) {
|
|
72
|
+
seen.add(current);
|
|
73
|
+
current = aliases[current];
|
|
74
|
+
}
|
|
75
|
+
return current;
|
|
76
|
+
}
|
|
77
|
+
function inferIntegrationSupportTier(connector) {
|
|
78
|
+
const metadata = connector.metadata ?? {};
|
|
79
|
+
const explicit = metadata.supportTier;
|
|
80
|
+
if (isSupportTier(explicit)) return explicit;
|
|
81
|
+
if (metadata.sandboxExecutable === true) return "sandboxExecutable";
|
|
82
|
+
if (metadata.source === "first-party-adapter" || connector.providerId === "first-party") return "firstPartyExecutable";
|
|
83
|
+
if (metadata.source === "gateway-catalog" && metadata.executable === true) return "gatewayExecutable";
|
|
84
|
+
if (metadata.source === "integration-spec") return "setupReady";
|
|
85
|
+
if (metadata.source === "coverage-catalog" || metadata.source === "activepieces-community" || metadata.source === "tangle-integrations-catalog" || metadata.catalogOnly === true) return "catalogOnly";
|
|
86
|
+
if (connector.actions.length > 0) return "gatewayExecutable";
|
|
87
|
+
return "catalogOnly";
|
|
88
|
+
}
|
|
89
|
+
function registryEntry(canonicalId, candidates, precedence, aliases) {
|
|
90
|
+
const ordered = [...candidates].sort((a, b) => compareCandidates(a, b, precedence));
|
|
91
|
+
const primary = ordered[0];
|
|
92
|
+
const actions = mergeActions(ordered);
|
|
93
|
+
const triggers = mergeTriggers(ordered);
|
|
94
|
+
const scopes = unique(toolBindableCandidates(ordered).flatMap((candidate) => candidate.connector.scopes ?? []));
|
|
95
|
+
const supportTier = ordered.reduce(
|
|
96
|
+
(best, candidate) => SUPPORT_RANK[candidate.supportTier] > SUPPORT_RANK[best] ? candidate.supportTier : best,
|
|
97
|
+
primary.supportTier
|
|
98
|
+
);
|
|
99
|
+
const aliasesForEntry = unique([
|
|
100
|
+
...ordered.map((candidate) => candidate.connector.id),
|
|
101
|
+
...Object.entries(aliases).filter(([, target]) => canonicalConnectorId(target, aliases) === canonicalId).map(([alias]) => alias)
|
|
102
|
+
].map(slug).filter((id) => id && id !== canonicalId)).sort();
|
|
103
|
+
const sources = ordered.map((candidate) => ({
|
|
104
|
+
sourceId: candidate.source.id,
|
|
105
|
+
providerId: candidate.connector.providerId,
|
|
106
|
+
connectorId: candidate.connector.id,
|
|
107
|
+
supportTier: candidate.supportTier,
|
|
108
|
+
actionCount: candidate.connector.actions.length,
|
|
109
|
+
triggerCount: candidate.connector.triggers?.length ?? 0
|
|
110
|
+
}));
|
|
111
|
+
const conflicts = conflictDiagnostics(ordered);
|
|
112
|
+
return {
|
|
113
|
+
canonicalId,
|
|
114
|
+
aliases: aliasesForEntry,
|
|
115
|
+
supportTier,
|
|
116
|
+
sources,
|
|
117
|
+
conflicts,
|
|
118
|
+
connector: {
|
|
119
|
+
...primary.connector,
|
|
120
|
+
id: canonicalId,
|
|
121
|
+
scopes,
|
|
122
|
+
actions,
|
|
123
|
+
triggers,
|
|
124
|
+
metadata: {
|
|
125
|
+
...primary.connector.metadata ?? {},
|
|
126
|
+
registry: {
|
|
127
|
+
canonicalId,
|
|
128
|
+
aliases: aliasesForEntry,
|
|
129
|
+
supportTier,
|
|
130
|
+
sources,
|
|
131
|
+
conflicts,
|
|
132
|
+
toolBindable: actions.length > 0,
|
|
133
|
+
catalogOnlyActionCount: ordered.filter((candidate) => candidate.supportTier === "catalogOnly").reduce((sum, candidate) => sum + catalogActionCount(candidate.connector), 0)
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
function compareCandidates(a, b, precedence) {
|
|
140
|
+
return SUPPORT_RANK[b.supportTier] - SUPPORT_RANK[a.supportTier] || (b.source.precedence ?? precedence[b.source.id] ?? 0) - (a.source.precedence ?? precedence[a.source.id] ?? 0) || b.connector.actions.length - a.connector.actions.length || a.connector.id.localeCompare(b.connector.id);
|
|
141
|
+
}
|
|
142
|
+
function mergeActions(candidates) {
|
|
143
|
+
const out = /* @__PURE__ */ new Map();
|
|
144
|
+
for (const candidate of toolBindableCandidates(candidates)) {
|
|
145
|
+
for (const action of candidate.connector.actions) {
|
|
146
|
+
if (!out.has(action.id)) out.set(action.id, action);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return [...out.values()];
|
|
150
|
+
}
|
|
151
|
+
function mergeTriggers(candidates) {
|
|
152
|
+
const out = /* @__PURE__ */ new Map();
|
|
153
|
+
for (const candidate of toolBindableCandidates(candidates)) {
|
|
154
|
+
for (const trigger of candidate.connector.triggers ?? []) {
|
|
155
|
+
if (!out.has(trigger.id)) out.set(trigger.id, trigger);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return out.size > 0 ? [...out.values()] : void 0;
|
|
159
|
+
}
|
|
160
|
+
function toolBindableCandidates(candidates) {
|
|
161
|
+
const bindable = candidates.filter((candidate) => candidate.supportTier !== "catalogOnly");
|
|
162
|
+
if (bindable.length === 0) return [];
|
|
163
|
+
const maxRank = Math.max(...bindable.map((candidate) => SUPPORT_RANK[candidate.supportTier]));
|
|
164
|
+
return bindable.filter((candidate) => SUPPORT_RANK[candidate.supportTier] === maxRank);
|
|
165
|
+
}
|
|
166
|
+
function catalogActionCount(connector) {
|
|
167
|
+
const value = connector.metadata?.catalogActionCount;
|
|
168
|
+
return typeof value === "number" ? value : connector.actions.length;
|
|
169
|
+
}
|
|
170
|
+
function conflictDiagnostics(candidates) {
|
|
171
|
+
return [
|
|
172
|
+
conflictFor("auth", candidates.map((candidate) => ({
|
|
173
|
+
value: candidate.connector.auth,
|
|
174
|
+
sourceId: candidate.source.id,
|
|
175
|
+
connectorId: candidate.connector.id
|
|
176
|
+
}))),
|
|
177
|
+
conflictFor("category", candidates.map((candidate) => ({
|
|
178
|
+
value: candidate.connector.category,
|
|
179
|
+
sourceId: candidate.source.id,
|
|
180
|
+
connectorId: candidate.connector.id
|
|
181
|
+
})))
|
|
182
|
+
].filter((conflict) => Boolean(conflict));
|
|
183
|
+
}
|
|
184
|
+
function conflictFor(field, values) {
|
|
185
|
+
const uniqueValues = new Set(values.map((entry) => entry.value));
|
|
186
|
+
if (uniqueValues.size <= 1) return void 0;
|
|
187
|
+
return { field, values };
|
|
188
|
+
}
|
|
189
|
+
function isSupportTier(value) {
|
|
190
|
+
return value === "catalogOnly" || value === "setupReady" || value === "gatewayExecutable" || value === "firstPartyExecutable" || value === "sandboxExecutable";
|
|
191
|
+
}
|
|
192
|
+
function slug(value) {
|
|
193
|
+
return value.trim().toLowerCase().replace(/&/g, "and").replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
|
|
194
|
+
}
|
|
195
|
+
function unique(values) {
|
|
196
|
+
return [...new Set(values)];
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// src/base64.ts
|
|
200
|
+
function encodeUtf8Base64Url(value) {
|
|
201
|
+
const bytes = new TextEncoder().encode(value);
|
|
202
|
+
let binary = "";
|
|
203
|
+
for (const byte of bytes) binary += String.fromCharCode(byte);
|
|
204
|
+
return btoa(binary).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");
|
|
205
|
+
}
|
|
206
|
+
function decodeUtf8Base64Url(value) {
|
|
207
|
+
const normalized = value.replace(/-/g, "+").replace(/_/g, "/");
|
|
208
|
+
const padded = normalized.padEnd(Math.ceil(normalized.length / 4) * 4, "=");
|
|
209
|
+
const binary = atob(padded);
|
|
210
|
+
const bytes = Uint8Array.from(binary, (character) => character.charCodeAt(0));
|
|
211
|
+
return new TextDecoder().decode(bytes);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// src/catalog.ts
|
|
215
|
+
var riskRank = {
|
|
216
|
+
read: 0,
|
|
217
|
+
write: 1,
|
|
218
|
+
destructive: 2
|
|
219
|
+
};
|
|
220
|
+
function integrationToolName(providerId, connectorId, actionId) {
|
|
221
|
+
return `int_${encodeToolPart(providerId)}_${encodeToolPart(connectorId)}_${encodeToolPart(actionId)}`;
|
|
222
|
+
}
|
|
223
|
+
function parseIntegrationToolName(name) {
|
|
224
|
+
const parts = name.split("_");
|
|
225
|
+
if (parts.length !== 4 || parts[0] !== "int") {
|
|
226
|
+
throw new Error(`Invalid integration tool name: ${name}`);
|
|
227
|
+
}
|
|
228
|
+
return {
|
|
229
|
+
providerId: decodeToolPart(parts[1]),
|
|
230
|
+
connectorId: decodeToolPart(parts[2]),
|
|
231
|
+
actionId: decodeToolPart(parts[3])
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
function buildIntegrationToolCatalog(connectors) {
|
|
235
|
+
const tools = [];
|
|
236
|
+
for (const connector of connectors) {
|
|
237
|
+
for (const action of connector.actions) {
|
|
238
|
+
tools.push(flattenIntegrationToolDefinition(connector, action));
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return tools;
|
|
242
|
+
}
|
|
243
|
+
function flattenIntegrationToolDefinition(connector, action) {
|
|
244
|
+
const tags = unique2([
|
|
245
|
+
connector.id,
|
|
246
|
+
connector.providerId,
|
|
247
|
+
connector.title,
|
|
248
|
+
connector.category,
|
|
249
|
+
action.id,
|
|
250
|
+
action.title,
|
|
251
|
+
action.risk,
|
|
252
|
+
action.dataClass,
|
|
253
|
+
...connector.scopes ?? [],
|
|
254
|
+
...action.requiredScopes ?? []
|
|
255
|
+
].flatMap(tokenize));
|
|
256
|
+
return {
|
|
257
|
+
name: integrationToolName(connector.providerId, connector.id, action.id),
|
|
258
|
+
title: `${connector.title}: ${action.title}`,
|
|
259
|
+
description: action.description ?? `${action.risk} action ${action.id} on ${connector.title}`,
|
|
260
|
+
providerId: connector.providerId,
|
|
261
|
+
connectorId: connector.id,
|
|
262
|
+
connectorTitle: connector.title,
|
|
263
|
+
category: connector.category,
|
|
264
|
+
action,
|
|
265
|
+
risk: action.risk,
|
|
266
|
+
dataClass: action.dataClass,
|
|
267
|
+
requiredScopes: action.requiredScopes,
|
|
268
|
+
inputSchema: action.inputSchema,
|
|
269
|
+
outputSchema: action.outputSchema,
|
|
270
|
+
tags,
|
|
271
|
+
supportTier: toolSupportTier(connector),
|
|
272
|
+
runnable: toolRunnable(connector)
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
function describeIntegrationTool(registry, toolName) {
|
|
276
|
+
let parsed;
|
|
277
|
+
try {
|
|
278
|
+
parsed = parseIntegrationToolName(toolName);
|
|
279
|
+
} catch {
|
|
280
|
+
return void 0;
|
|
281
|
+
}
|
|
282
|
+
const entry = registry.byId.get(parsed.connectorId);
|
|
283
|
+
if (!entry) return void 0;
|
|
284
|
+
const action = entry.connector.actions.find((candidate) => candidate.id === parsed.actionId);
|
|
285
|
+
if (!action) return void 0;
|
|
286
|
+
return flattenIntegrationToolDefinition(entry.connector, action);
|
|
287
|
+
}
|
|
288
|
+
function buildIntegrationCatalogView(input) {
|
|
289
|
+
const runtimeConnectors = input.executableRegistry?.connectors ?? input.discoveryRegistry.connectors.filter((connector) => toolRunnable(connector));
|
|
290
|
+
const runtimeTools = buildIntegrationToolCatalog(runtimeConnectors);
|
|
291
|
+
const discoveryTools = buildIntegrationToolCatalog(input.discoveryRegistry.connectors);
|
|
292
|
+
return {
|
|
293
|
+
connectors: input.discoveryRegistry.connectors,
|
|
294
|
+
conflicts: input.discoveryRegistry.entries.flatMap((entry) => entry.conflicts),
|
|
295
|
+
summary: summarizeIntegrationRegistry(input.discoveryRegistry),
|
|
296
|
+
tools: runtimeTools,
|
|
297
|
+
runtimeTools,
|
|
298
|
+
discoveryTools
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
function searchIntegrationTools(catalog, query, filters = {}) {
|
|
302
|
+
const terms = tokenize(query);
|
|
303
|
+
const filtered = catalog.filter((tool) => {
|
|
304
|
+
if (filters.providerId && tool.providerId !== filters.providerId) return false;
|
|
305
|
+
if (filters.connectorId && tool.connectorId !== filters.connectorId) return false;
|
|
306
|
+
if (filters.category && tool.category !== filters.category) return false;
|
|
307
|
+
if (filters.dataClass && tool.dataClass !== filters.dataClass) return false;
|
|
308
|
+
if (filters.maxRisk && riskRank[tool.risk] > riskRank[filters.maxRisk]) return false;
|
|
309
|
+
return true;
|
|
310
|
+
});
|
|
311
|
+
const scored = filtered.map((tool) => scoreTool(tool, terms));
|
|
312
|
+
return scored.filter((result) => terms.length === 0 || result.score > 0).sort((a, b) => b.score - a.score || a.tool.name.localeCompare(b.tool.name)).slice(0, filters.limit ?? 20);
|
|
313
|
+
}
|
|
314
|
+
function toMcpTools(tools) {
|
|
315
|
+
return tools.map((tool) => ({
|
|
316
|
+
name: tool.name,
|
|
317
|
+
description: `${tool.title}. ${tool.description}`,
|
|
318
|
+
inputSchema: tool.inputSchema ?? {
|
|
319
|
+
type: "object",
|
|
320
|
+
additionalProperties: true,
|
|
321
|
+
properties: {}
|
|
322
|
+
}
|
|
323
|
+
}));
|
|
324
|
+
}
|
|
325
|
+
function scoreTool(tool, terms) {
|
|
326
|
+
if (terms.length === 0) return { tool, score: 1, matched: [] };
|
|
327
|
+
const haystack = new Set(tool.tags);
|
|
328
|
+
const identity = new Set(
|
|
329
|
+
[tool.connectorId, tool.connectorTitle, tool.providerId].flatMap(tokenize)
|
|
330
|
+
);
|
|
331
|
+
const matched = [];
|
|
332
|
+
let score = 0;
|
|
333
|
+
for (const term of terms) {
|
|
334
|
+
if (identity.has(term)) {
|
|
335
|
+
matched.push(term);
|
|
336
|
+
score += 6;
|
|
337
|
+
continue;
|
|
338
|
+
}
|
|
339
|
+
if (haystack.has(term)) {
|
|
340
|
+
matched.push(term);
|
|
341
|
+
score += 4;
|
|
342
|
+
continue;
|
|
343
|
+
}
|
|
344
|
+
if (tool.tags.some((tag) => tag.includes(term))) {
|
|
345
|
+
matched.push(term);
|
|
346
|
+
score += 1;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
if (tool.risk === "read") score += 0.25;
|
|
350
|
+
return { tool, score, matched: unique2(matched) };
|
|
351
|
+
}
|
|
352
|
+
function tokenize(value) {
|
|
353
|
+
return value.toLowerCase().split(/[^a-z0-9]+/g).map((part) => part.trim()).filter(Boolean);
|
|
354
|
+
}
|
|
355
|
+
function encodeToolPart(value) {
|
|
356
|
+
return encodeUtf8Base64Url(value).replace(/_/g, ".");
|
|
357
|
+
}
|
|
358
|
+
function decodeToolPart(value) {
|
|
359
|
+
return decodeUtf8Base64Url(value.replace(/\./g, "_"));
|
|
360
|
+
}
|
|
361
|
+
function unique2(values) {
|
|
362
|
+
return [...new Set(values)];
|
|
363
|
+
}
|
|
364
|
+
function toolSupportTier(connector) {
|
|
365
|
+
const registry = connector.metadata?.registry;
|
|
366
|
+
if (registry && typeof registry === "object" && !Array.isArray(registry)) {
|
|
367
|
+
const supportTier2 = registry.supportTier;
|
|
368
|
+
return isIntegrationSupportTier(supportTier2) ? supportTier2 : void 0;
|
|
369
|
+
}
|
|
370
|
+
const supportTier = connector.metadata?.supportTier;
|
|
371
|
+
return isIntegrationSupportTier(supportTier) ? supportTier : void 0;
|
|
372
|
+
}
|
|
373
|
+
function toolRunnable(connector) {
|
|
374
|
+
const registry = connector.metadata?.registry;
|
|
375
|
+
if (registry && typeof registry === "object" && !Array.isArray(registry)) {
|
|
376
|
+
const toolBindable = registry.toolBindable;
|
|
377
|
+
if (typeof toolBindable === "boolean") return toolBindable;
|
|
378
|
+
}
|
|
379
|
+
const tier = toolSupportTier(connector);
|
|
380
|
+
return tier === "gatewayExecutable" || tier === "firstPartyExecutable" || tier === "sandboxExecutable";
|
|
381
|
+
}
|
|
382
|
+
function isIntegrationSupportTier(value) {
|
|
383
|
+
return value === "catalogOnly" || value === "setupReady" || value === "gatewayExecutable" || value === "firstPartyExecutable" || value === "sandboxExecutable";
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
export {
|
|
387
|
+
composeIntegrationRegistry,
|
|
388
|
+
summarizeIntegrationRegistry,
|
|
389
|
+
canonicalConnectorId,
|
|
390
|
+
inferIntegrationSupportTier,
|
|
391
|
+
integrationToolName,
|
|
392
|
+
parseIntegrationToolName,
|
|
393
|
+
buildIntegrationToolCatalog,
|
|
394
|
+
flattenIntegrationToolDefinition,
|
|
395
|
+
describeIntegrationTool,
|
|
396
|
+
buildIntegrationCatalogView,
|
|
397
|
+
searchIntegrationTools,
|
|
398
|
+
toMcpTools
|
|
399
|
+
};
|
|
400
|
+
//# sourceMappingURL=chunk-WPQJK4S4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/registry-core.ts","../src/base64.ts","../src/catalog.ts"],"sourcesContent":["import type {\n IntegrationCatalogSource,\n IntegrationConnector,\n IntegrationConnectorAction,\n IntegrationConnectorTrigger,\n} from './core-types.js'\nimport { INTEGRATION_KIND_ALIASES } from './integration-kind-aliases.js'\n\nexport type IntegrationSupportTier =\n | 'catalogOnly'\n | 'setupReady'\n | 'gatewayExecutable'\n | 'firstPartyExecutable'\n | 'sandboxExecutable'\n\nexport interface IntegrationRegistrySourceRef {\n sourceId: string\n providerId: string\n connectorId: string\n supportTier: IntegrationSupportTier\n actionCount: number\n triggerCount: number\n}\n\nexport interface IntegrationRegistryConflict {\n field: 'auth' | 'category'\n values: Array<{\n value: string\n sourceId: string\n connectorId: string\n }>\n}\n\nexport interface IntegrationRegistryEntry {\n canonicalId: string\n connector: IntegrationConnector\n aliases: string[]\n supportTier: IntegrationSupportTier\n sources: IntegrationRegistrySourceRef[]\n conflicts: IntegrationRegistryConflict[]\n}\n\nexport interface IntegrationRegistry {\n entries: IntegrationRegistryEntry[]\n connectors: IntegrationConnector[]\n byId: Map<string, IntegrationRegistryEntry>\n}\n\nexport interface IntegrationRegistrySummary {\n totalEntries: number\n totalSources: number\n toolBindableEntries: number\n conflictEntries: number\n bySupportTier: Record<IntegrationSupportTier, number>\n}\n\nexport interface ComposeIntegrationRegistryOptions {\n aliases?: Record<string, string>\n sourcePrecedence?: Record<string, number>\n}\n\nconst DEFAULT_ALIASES = INTEGRATION_KIND_ALIASES\n\nconst DEFAULT_SOURCE_PRECEDENCE: Record<string, number> = {\n 'first-party': 500,\n spec: 400,\n gateway: 300,\n 'tangle-catalog': 100,\n activepieces: 100,\n coverage: 50,\n}\n\nconst SUPPORT_RANK: Record<IntegrationSupportTier, number> = {\n catalogOnly: 0,\n setupReady: 1,\n gatewayExecutable: 2,\n firstPartyExecutable: 3,\n sandboxExecutable: 4,\n}\n\nexport function composeIntegrationRegistry(\n sources: IntegrationCatalogSource[],\n options: ComposeIntegrationRegistryOptions = {},\n): IntegrationRegistry {\n const aliases = { ...DEFAULT_ALIASES, ...(options.aliases ?? {}) }\n const precedence = { ...DEFAULT_SOURCE_PRECEDENCE, ...(options.sourcePrecedence ?? {}) }\n const grouped = new Map<string, Candidate[]>()\n\n for (const source of sources) {\n for (const connector of source.connectors) {\n const canonicalId = canonicalConnectorId(connector.id, aliases)\n const candidates = grouped.get(canonicalId) ?? []\n candidates.push({\n source,\n connector,\n supportTier: inferIntegrationSupportTier(connector),\n })\n grouped.set(canonicalId, candidates)\n }\n }\n\n const entries = [...grouped.entries()]\n .map(([canonicalId, candidates]) => registryEntry(canonicalId, candidates, precedence, aliases))\n .sort((a, b) => a.canonicalId.localeCompare(b.canonicalId))\n const byId = new Map<string, IntegrationRegistryEntry>()\n for (const entry of entries) {\n byId.set(entry.canonicalId, entry)\n for (const alias of entry.aliases) byId.set(alias, entry)\n }\n return {\n entries,\n connectors: entries.map((entry) => entry.connector),\n byId,\n }\n}\n\nexport function summarizeIntegrationRegistry(registry: IntegrationRegistry): IntegrationRegistrySummary {\n const bySupportTier = {\n catalogOnly: 0,\n setupReady: 0,\n gatewayExecutable: 0,\n firstPartyExecutable: 0,\n sandboxExecutable: 0,\n } satisfies Record<IntegrationSupportTier, number>\n for (const entry of registry.entries) bySupportTier[entry.supportTier] += 1\n return {\n totalEntries: registry.entries.length,\n totalSources: registry.entries.reduce((sum, entry) => sum + entry.sources.length, 0),\n toolBindableEntries: registry.entries.filter((entry) => entry.connector.actions.length > 0).length,\n conflictEntries: registry.entries.filter((entry) => entry.conflicts.length > 0).length,\n bySupportTier,\n }\n}\n\nexport function canonicalConnectorId(id: string, aliases: Record<string, string> = DEFAULT_ALIASES): string {\n const normalized = slug(id)\n let current = normalized\n const seen = new Set<string>()\n while (aliases[current] && !seen.has(current)) {\n seen.add(current)\n current = aliases[current]\n }\n return current\n}\n\nexport function inferIntegrationSupportTier(connector: IntegrationConnector): IntegrationSupportTier {\n const metadata = connector.metadata ?? {}\n const explicit = metadata.supportTier\n if (isSupportTier(explicit)) return explicit\n if (metadata.sandboxExecutable === true) return 'sandboxExecutable'\n if (metadata.source === 'first-party-adapter' || connector.providerId === 'first-party') return 'firstPartyExecutable'\n if (metadata.source === 'gateway-catalog' && metadata.executable === true) return 'gatewayExecutable'\n if (metadata.source === 'integration-spec') return 'setupReady'\n if (\n metadata.source === 'coverage-catalog'\n || metadata.source === 'activepieces-community'\n || metadata.source === 'tangle-integrations-catalog'\n || metadata.catalogOnly === true\n ) return 'catalogOnly'\n if (connector.actions.length > 0) return 'gatewayExecutable'\n return 'catalogOnly'\n}\n\nfunction registryEntry(\n canonicalId: string,\n candidates: Candidate[],\n precedence: Record<string, number>,\n aliases: Record<string, string>,\n): IntegrationRegistryEntry {\n const ordered = [...candidates].sort((a, b) => compareCandidates(a, b, precedence))\n const primary = ordered[0]!\n const actions = mergeActions(ordered)\n const triggers = mergeTriggers(ordered)\n const scopes = unique(toolBindableCandidates(ordered).flatMap((candidate) => candidate.connector.scopes ?? []))\n const supportTier = ordered.reduce<IntegrationSupportTier>(\n (best, candidate) => SUPPORT_RANK[candidate.supportTier] > SUPPORT_RANK[best] ? candidate.supportTier : best,\n primary.supportTier,\n )\n const aliasesForEntry = unique([\n ...ordered.map((candidate) => candidate.connector.id),\n ...Object.entries(aliases)\n .filter(([, target]) => canonicalConnectorId(target, aliases) === canonicalId)\n .map(([alias]) => alias),\n ].map(slug).filter((id) => id && id !== canonicalId)).sort()\n const sources = ordered.map((candidate): IntegrationRegistrySourceRef => ({\n sourceId: candidate.source.id,\n providerId: candidate.connector.providerId,\n connectorId: candidate.connector.id,\n supportTier: candidate.supportTier,\n actionCount: candidate.connector.actions.length,\n triggerCount: candidate.connector.triggers?.length ?? 0,\n }))\n const conflicts = conflictDiagnostics(ordered)\n\n return {\n canonicalId,\n aliases: aliasesForEntry,\n supportTier,\n sources,\n conflicts,\n connector: {\n ...primary.connector,\n id: canonicalId,\n scopes,\n actions,\n triggers,\n metadata: {\n ...(primary.connector.metadata ?? {}),\n registry: {\n canonicalId,\n aliases: aliasesForEntry,\n supportTier,\n sources,\n conflicts,\n toolBindable: actions.length > 0,\n catalogOnlyActionCount: ordered\n .filter((candidate) => candidate.supportTier === 'catalogOnly')\n .reduce((sum, candidate) => sum + catalogActionCount(candidate.connector), 0),\n },\n },\n },\n }\n}\n\nfunction compareCandidates(a: Candidate, b: Candidate, precedence: Record<string, number>): number {\n return SUPPORT_RANK[b.supportTier] - SUPPORT_RANK[a.supportTier]\n || (b.source.precedence ?? precedence[b.source.id] ?? 0) - (a.source.precedence ?? precedence[a.source.id] ?? 0)\n || b.connector.actions.length - a.connector.actions.length\n || a.connector.id.localeCompare(b.connector.id)\n}\n\nfunction mergeActions(candidates: Candidate[]): IntegrationConnectorAction[] {\n const out = new Map<string, IntegrationConnectorAction>()\n for (const candidate of toolBindableCandidates(candidates)) {\n for (const action of candidate.connector.actions) {\n if (!out.has(action.id)) out.set(action.id, action)\n }\n }\n return [...out.values()]\n}\n\nfunction mergeTriggers(candidates: Candidate[]): IntegrationConnectorTrigger[] | undefined {\n const out = new Map<string, IntegrationConnectorTrigger>()\n for (const candidate of toolBindableCandidates(candidates)) {\n for (const trigger of candidate.connector.triggers ?? []) {\n if (!out.has(trigger.id)) out.set(trigger.id, trigger)\n }\n }\n return out.size > 0 ? [...out.values()] : undefined\n}\n\nfunction toolBindableCandidates(candidates: Candidate[]): Candidate[] {\n const bindable = candidates.filter((candidate) => candidate.supportTier !== 'catalogOnly')\n if (bindable.length === 0) return []\n const maxRank = Math.max(...bindable.map((candidate) => SUPPORT_RANK[candidate.supportTier]))\n return bindable.filter((candidate) => SUPPORT_RANK[candidate.supportTier] === maxRank)\n}\n\nfunction catalogActionCount(connector: IntegrationConnector): number {\n const value = connector.metadata?.catalogActionCount\n return typeof value === 'number' ? value : connector.actions.length\n}\n\nfunction conflictDiagnostics(candidates: Candidate[]): IntegrationRegistryConflict[] {\n return [\n conflictFor('auth', candidates.map((candidate) => ({\n value: candidate.connector.auth,\n sourceId: candidate.source.id,\n connectorId: candidate.connector.id,\n }))),\n conflictFor('category', candidates.map((candidate) => ({\n value: candidate.connector.category,\n sourceId: candidate.source.id,\n connectorId: candidate.connector.id,\n }))),\n ].filter((conflict): conflict is IntegrationRegistryConflict => Boolean(conflict))\n}\n\nfunction conflictFor(\n field: IntegrationRegistryConflict['field'],\n values: IntegrationRegistryConflict['values'],\n): IntegrationRegistryConflict | undefined {\n const uniqueValues = new Set(values.map((entry) => entry.value))\n if (uniqueValues.size <= 1) return undefined\n return { field, values }\n}\n\nfunction isSupportTier(value: unknown): value is IntegrationSupportTier {\n return value === 'catalogOnly'\n || value === 'setupReady'\n || value === 'gatewayExecutable'\n || value === 'firstPartyExecutable'\n || value === 'sandboxExecutable'\n}\n\nfunction slug(value: string): string {\n return value.trim().toLowerCase()\n .replace(/&/g, 'and')\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '')\n}\n\nfunction unique<T>(values: T[]): T[] {\n return [...new Set(values)]\n}\n\ninterface Candidate {\n source: IntegrationCatalogSource\n connector: IntegrationConnector\n supportTier: IntegrationSupportTier\n}\n","export function encodeUtf8Base64Url(value: string): string {\n const bytes = new TextEncoder().encode(value)\n let binary = ''\n for (const byte of bytes) binary += String.fromCharCode(byte)\n return btoa(binary)\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/g, '')\n}\n\nexport function decodeUtf8Base64Url(value: string): string {\n const normalized = value.replace(/-/g, '+').replace(/_/g, '/')\n const padded = normalized.padEnd(Math.ceil(normalized.length / 4) * 4, '=')\n const binary = atob(padded)\n const bytes = Uint8Array.from(binary, (character) => character.charCodeAt(0))\n return new TextDecoder().decode(bytes)\n}\n","import type {\n IntegrationConnector,\n IntegrationConnectorAction,\n IntegrationConnectorCategory,\n IntegrationActionRisk,\n IntegrationDataClass,\n} from './core-types.js'\nimport {\n summarizeIntegrationRegistry,\n type IntegrationRegistry,\n type IntegrationRegistrySummary,\n type IntegrationSupportTier,\n} from './registry-core.js'\nimport { decodeUtf8Base64Url, encodeUtf8Base64Url } from './base64.js'\n\nexport interface IntegrationToolDefinition {\n name: string\n title: string\n description: string\n providerId: string\n connectorId: string\n connectorTitle: string\n category: IntegrationConnectorCategory\n action: IntegrationConnectorAction\n risk: IntegrationActionRisk\n dataClass: IntegrationDataClass\n requiredScopes: string[]\n inputSchema?: unknown\n outputSchema?: unknown\n tags: string[]\n supportTier?: IntegrationSupportTier\n runnable?: boolean\n}\n\nexport interface IntegrationCatalogView {\n connectors: IntegrationConnector[]\n conflicts: IntegrationRegistry['entries'][number]['conflicts']\n summary: IntegrationRegistrySummary\n tools: IntegrationToolDefinition[]\n runtimeTools: IntegrationToolDefinition[]\n discoveryTools: IntegrationToolDefinition[]\n}\n\nexport interface IntegrationToolSearchFilters {\n providerId?: string\n connectorId?: string\n category?: IntegrationConnectorCategory\n maxRisk?: IntegrationActionRisk\n dataClass?: IntegrationDataClass\n limit?: number\n}\n\nexport interface IntegrationToolSearchResult {\n tool: IntegrationToolDefinition\n score: number\n matched: string[]\n}\n\nexport interface McpToolDefinition {\n name: string\n description: string\n inputSchema: unknown\n}\n\nconst riskRank: Record<IntegrationActionRisk, number> = {\n read: 0,\n write: 1,\n destructive: 2,\n}\n\nexport function integrationToolName(providerId: string, connectorId: string, actionId: string): string {\n return `int_${encodeToolPart(providerId)}_${encodeToolPart(connectorId)}_${encodeToolPart(actionId)}`\n}\n\nexport function parseIntegrationToolName(name: string): { providerId: string; connectorId: string; actionId: string } {\n const parts = name.split('_')\n if (parts.length !== 4 || parts[0] !== 'int') {\n throw new Error(`Invalid integration tool name: ${name}`)\n }\n return {\n providerId: decodeToolPart(parts[1]),\n connectorId: decodeToolPart(parts[2]),\n actionId: decodeToolPart(parts[3]),\n }\n}\n\nexport function buildIntegrationToolCatalog(connectors: IntegrationConnector[]): IntegrationToolDefinition[] {\n const tools: IntegrationToolDefinition[] = []\n for (const connector of connectors) {\n for (const action of connector.actions) {\n tools.push(flattenIntegrationToolDefinition(connector, action))\n }\n }\n return tools\n}\n\n/** Flatten a single (connector, action) pair into the tool descriptor the\n * catalog exposes. The inverse of {@link parseIntegrationToolName} +\n * {@link integrationToolName}: every tool name round-trips back to exactly\n * this shape via {@link describeIntegrationTool}. */\nexport function flattenIntegrationToolDefinition(\n connector: IntegrationConnector,\n action: IntegrationConnectorAction,\n): IntegrationToolDefinition {\n const tags = unique([\n connector.id,\n connector.providerId,\n connector.title,\n connector.category,\n action.id,\n action.title,\n action.risk,\n action.dataClass,\n ...(connector.scopes ?? []),\n ...(action.requiredScopes ?? []),\n ].flatMap(tokenize))\n return {\n name: integrationToolName(connector.providerId, connector.id, action.id),\n title: `${connector.title}: ${action.title}`,\n description: action.description ?? `${action.risk} action ${action.id} on ${connector.title}`,\n providerId: connector.providerId,\n connectorId: connector.id,\n connectorTitle: connector.title,\n category: connector.category,\n action,\n risk: action.risk,\n dataClass: action.dataClass,\n requiredScopes: action.requiredScopes,\n inputSchema: action.inputSchema,\n outputSchema: action.outputSchema,\n tags,\n supportTier: toolSupportTier(connector),\n runnable: toolRunnable(connector),\n }\n}\n\n/** Resolve a single tool's full descriptor from an opaque\n * `int_<provider>_<connector>_<action>` name against a composed registry.\n * Returns undefined when the name is malformed, the connector is unknown,\n * or the action is not defined by that connector. Powers `/tools/describe`\n * without callers re-implementing parse → byId → action → flatten. */\nexport function describeIntegrationTool(\n registry: IntegrationRegistry,\n toolName: string,\n): IntegrationToolDefinition | undefined {\n let parsed: ReturnType<typeof parseIntegrationToolName>\n try {\n parsed = parseIntegrationToolName(toolName)\n } catch {\n return undefined\n }\n const entry = registry.byId.get(parsed.connectorId)\n if (!entry) return undefined\n const action = entry.connector.actions.find((candidate) => candidate.id === parsed.actionId)\n if (!action) return undefined\n return flattenIntegrationToolDefinition(entry.connector, action)\n}\n\nexport function buildIntegrationCatalogView(input: {\n discoveryRegistry: IntegrationRegistry\n executableRegistry?: IntegrationRegistry\n}): IntegrationCatalogView {\n const runtimeConnectors =\n input.executableRegistry?.connectors ??\n input.discoveryRegistry.connectors.filter((connector) => toolRunnable(connector))\n const runtimeTools = buildIntegrationToolCatalog(runtimeConnectors)\n const discoveryTools = buildIntegrationToolCatalog(input.discoveryRegistry.connectors)\n return {\n connectors: input.discoveryRegistry.connectors,\n conflicts: input.discoveryRegistry.entries.flatMap((entry) => entry.conflicts),\n summary: summarizeIntegrationRegistry(input.discoveryRegistry),\n tools: runtimeTools,\n runtimeTools,\n discoveryTools,\n }\n}\n\nexport function searchIntegrationTools(\n catalog: IntegrationToolDefinition[],\n query: string,\n filters: IntegrationToolSearchFilters = {},\n): IntegrationToolSearchResult[] {\n const terms = tokenize(query)\n const filtered = catalog.filter((tool) => {\n if (filters.providerId && tool.providerId !== filters.providerId) return false\n if (filters.connectorId && tool.connectorId !== filters.connectorId) return false\n if (filters.category && tool.category !== filters.category) return false\n if (filters.dataClass && tool.dataClass !== filters.dataClass) return false\n if (filters.maxRisk && riskRank[tool.risk] > riskRank[filters.maxRisk]) return false\n return true\n })\n const scored = filtered.map((tool) => scoreTool(tool, terms))\n return scored\n .filter((result) => terms.length === 0 || result.score > 0)\n .sort((a, b) => b.score - a.score || a.tool.name.localeCompare(b.tool.name))\n .slice(0, filters.limit ?? 20)\n}\n\nexport function toMcpTools(tools: IntegrationToolDefinition[]): McpToolDefinition[] {\n return tools.map((tool) => ({\n name: tool.name,\n description: `${tool.title}. ${tool.description}`,\n inputSchema: tool.inputSchema ?? {\n type: 'object',\n additionalProperties: true,\n properties: {},\n },\n }))\n}\n\nfunction scoreTool(tool: IntegrationToolDefinition, terms: string[]): IntegrationToolSearchResult {\n if (terms.length === 0) return { tool, score: 1, matched: [] }\n const haystack = new Set(tool.tags)\n // Naming the connector is a stronger signal than matching a generic verb:\n // \"send a slack message\" is a request for Slack, not for whichever\n // connector happens to spell its capability `send_*`. Scored above a plain\n // tag hit so connector identity breaks that tie on meaning rather than on\n // alphabetical order.\n const identity = new Set(\n [tool.connectorId, tool.connectorTitle, tool.providerId].flatMap(tokenize),\n )\n const matched: string[] = []\n let score = 0\n for (const term of terms) {\n if (identity.has(term)) {\n matched.push(term)\n score += 6\n continue\n }\n if (haystack.has(term)) {\n matched.push(term)\n score += 4\n continue\n }\n if (tool.tags.some((tag) => tag.includes(term))) {\n matched.push(term)\n score += 1\n }\n }\n if (tool.risk === 'read') score += 0.25\n return { tool, score, matched: unique(matched) }\n}\n\nfunction tokenize(value: string): string[] {\n return value\n .toLowerCase()\n .split(/[^a-z0-9]+/g)\n .map((part) => part.trim())\n .filter(Boolean)\n}\n\nfunction encodeToolPart(value: string): string {\n return encodeUtf8Base64Url(value).replace(/_/g, '.')\n}\n\nfunction decodeToolPart(value: string): string {\n return decodeUtf8Base64Url(value.replace(/\\./g, '_'))\n}\n\nfunction unique<T>(values: T[]): T[] {\n return [...new Set(values)]\n}\n\nfunction toolSupportTier(connector: IntegrationConnector): IntegrationSupportTier | undefined {\n const registry = connector.metadata?.registry\n if (registry && typeof registry === 'object' && !Array.isArray(registry)) {\n const supportTier = (registry as { supportTier?: unknown }).supportTier\n return isIntegrationSupportTier(supportTier) ? supportTier : undefined\n }\n const supportTier = connector.metadata?.supportTier\n return isIntegrationSupportTier(supportTier) ? supportTier : undefined\n}\n\nfunction toolRunnable(connector: IntegrationConnector): boolean {\n const registry = connector.metadata?.registry\n if (registry && typeof registry === 'object' && !Array.isArray(registry)) {\n const toolBindable = (registry as { toolBindable?: unknown }).toolBindable\n if (typeof toolBindable === 'boolean') return toolBindable\n }\n const tier = toolSupportTier(connector)\n return tier === 'gatewayExecutable' || tier === 'firstPartyExecutable' || tier === 'sandboxExecutable'\n}\n\nfunction isIntegrationSupportTier(value: unknown): value is IntegrationSupportTier {\n return (\n value === 'catalogOnly' ||\n value === 'setupReady' ||\n value === 'gatewayExecutable' ||\n value === 'firstPartyExecutable' ||\n value === 'sandboxExecutable'\n )\n}\n"],"mappings":"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","names":["unique","supportTier"]}
|
package/dist/connect/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { T as TangleIdentityOptions, a as TangleUserSummary } from '../tangle-id-
|
|
2
|
-
import '../types-
|
|
1
|
+
import { T as TangleIdentityOptions, a as TangleUserSummary } from '../tangle-id-Oy2z4W3p.js';
|
|
2
|
+
import '../types-DIis6QtV.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* @stable Cross-product connect flow.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { C as ConnectorAdapter } from '../../types-
|
|
1
|
+
import { C as ConnectorAdapter } from '../../types-DIis6QtV.js';
|
|
2
2
|
import { KafkaConfig, Admin, Kafka, Producer, Consumer, ISocketFactory } from 'kafkajs';
|
|
3
3
|
import { Options, SocketOptions, ChannelModel } from 'amqplib';
|
|
4
4
|
import { RedisClientOptions } from 'redis';
|
|
5
5
|
import { ClientConfig, QueryConfig, FieldDef } from 'pg';
|
|
6
6
|
import SftpClient from 'ssh2-sftp-client';
|
|
7
|
-
export { D as DEFAULT_TANGLE_PLATFORM_URL, d as TANGLE_API_KEY_PREFIX, e as TANGLE_SERVICE_TOKEN_PREFIX, b as TangleIdentityClient, T as TangleIdentityOptions, f as TangleIdentityUnreachableError, c as TangleTokenVerifyFailure, g as TangleTokenVerifyResult, a as TangleUserSummary, h as TangleWorkspaceSummary, i as createTangleIdentityClient, t as tangleIdentity } from '../../tangle-id-
|
|
7
|
+
export { D as DEFAULT_TANGLE_PLATFORM_URL, d as TANGLE_API_KEY_PREFIX, e as TANGLE_SERVICE_TOKEN_PREFIX, b as TangleIdentityClient, T as TangleIdentityOptions, f as TangleIdentityUnreachableError, c as TangleTokenVerifyFailure, g as TangleTokenVerifyResult, a as TangleUserSummary, h as TangleWorkspaceSummary, i as createTangleIdentityClient, t as tangleIdentity } from '../../tangle-id-Oy2z4W3p.js';
|
|
8
8
|
import { MongoClientOptions } from 'mongodb';
|
|
9
9
|
import { ConnectionOptions, FieldPacket } from 'mysql2/promise';
|
|
10
10
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { O as OAuth2TokenClientAuthMethod, p as OAuth2UrlTemplateMetadataSpec,
|
|
2
|
-
export { A as AuthSpec,
|
|
1
|
+
import { O as OAuth2TokenClientAuthMethod, p as OAuth2UrlTemplateMetadataSpec, a as ConnectorManifest } from '../types-DIis6QtV.js';
|
|
2
|
+
export { A as AuthSpec, c as CASStrategy, d as Capability, e as CapabilityClass, f as CapabilityMutation, g as CapabilityMutationResult, h as CapabilityParameterSchema, i as CapabilityRead, j as CapabilityReadResult, C as ConnectorAdapter, b as ConnectorCredentials, k as ConnectorInvocation, l as ConnectorManifestValidationIssue, m as ConnectorManifestValidationResult, n as ConsistencyModel, o as CredentialsExpired, D as DataSourceMetadata, E as EventHandlerResult, I as InboundEvent, P as ProviderConfigError, q as ProviderHttpErrorInit, r as ProviderRateLimited, s as ProviderRateLimitedInit, t as RateLimitSpec, R as ResolvedDataSource, u as ResourceContention, T as TokenMetadataSource, v as assertValidConnectorManifest, w as validateConnectorManifest } from '../types-DIis6QtV.js';
|
|
3
3
|
export { CONNECTOR_ADAPTER_FACTORIES, CalComOptions, ClientCredentialsRegion, ClientCredentialsRestSpec, ConnectorAdapterFactoryDefinition, ConnectorAdapterFactoryEnvNames, DocuSealOptions, EtsyOptions, GmailOptions, GoogleCalendarOptions, GoogleDocsOptions, GoogleDriveOptions, GoogleErrorClass, GoogleFormsOptions, GoogleSheetsOptions, HelloSignOptions, HubSpotOptions, KafkaConnectorOptions, LinkedInOptions, MicrosoftCalendarOptions, MicrosoftGraphOptions, MicrosoftTeamsOptions, MongoDbConnectorOptions, MySqlConnectorOptions, NotionOptions, OneDriveOptions, OutlookMailOptions, PandaDocOptions, PostgresConnectorOptions, RabbitMqConnectorOptions, RedditOptions, RedisConnectorOptions, RedshiftConnectorOptions, RestConnectorSpec, RestCredentialPlacement, RestOperationSpec, RestRequestSpec, SftpConnectorOptions, SharePointOptions, SlackOptions, TELEGRAM_FILE_DOWNLOAD_ROOT, TikTokOptions, TwitterOptions, WhatsappBusinessOptions, activecampaignConnector, actualbudgetConnector, acuitySchedulingConnector, acumbamailConnector, adobeCreativeCloudConnector, adobeSignConnector, adpConnector, affinityConnector, afforaiConnector, agentxConnector, aianswerConnector, aidbaseConnector, aipriseConnector, airOpsConnector, aircallConnector, airparserConnector, airtableConnector, airtopConnector, alaiConnector, altTextAiConnector, alttextifyConnector, amazonBedrockConnector, amazonCloudWatchConnector, amazonEventBridgeConnector, amazonLambdaConnector, amazonS3Connector, amazonSecretsManagerConnector, amazonSesConnector, amazonSnsConnector, amazonSqsConnector, amazonTextractConnector, aminosConnector, ampecoConnector, amplemarketConnector, amplitudeConnector, anthropicConnector, anyhookWebsocketConnector, apifyConnector, apitableConnector, apitemplateIoConnector, apolloConnector, appfollowConnector, asanaConnector, ashbyConnector, askHandleConnector, asknewsConnector, assemblyaiConnector, attioConnector, auth0Connector, autoboundConnector, autocallsConnector, avalaraConnector, avianConnector, avomaConnector, azureAdConnector, azureBlobStorageConnector, azureCommunicationServicesConnector, azureEventGridConnector, azureOpenaiConnector, azureServiceBusConnector, backblazeConnector, bamboohrConnector, bannerbearConnector, barcodeLookupConnector, baremetricsConnector, base44Connector, basecampConnector, baserowConnector, beamerConnector, beehiivConnector, bettercontactConnector, bettermodeConnector, bexioConnector, bigcommerceConnector, biginByZohoConnector, bikaConnector, billComConnector, billplzConnector, bitlyConnector, blandAiConnector, blueskyConnector, bolnaConnector, bonjoroConnector, bookedinConnector, boxConnector, braveSearchConnector, brazeConnector, brexConnector, brightdataConnector, brilliantDirectoriesConnector, browseAiConnector, builtwithConnector, buttondownConnector, calCom, calComConnector, calendlyConnector, cambAiConnector, campaignMonitorConnector, cannyConnector, canvaConnector, capsuleCrmConnector, captainDataConnector, cartloomConnector, cashfreePaymentsConnector, certopusConnector, chainAwareConnector, chainalysisApiConnector, chaindeskConnector, chargebeeConnector, chargekeepConnector, chartlyConnector, chatAidConnector, chatDataConnector, chatbaseConnector, chatlingConnector, chatnodeConnector, chatsistantConnector, chatwootConnector, checkoutConnector, chessComConnector, circleConnector, classifyGoogleError, classifyGoogleReason, claudeConnector, clayConnector, clearoutConnector, clearoutphoneConnector, clicdataConnector, clickfunnelsConnector, clicksendConnector, clickupConnector, clientCredentialsRestConnector, clioConnector, clockifyConnector, clockodoConnector, closeConnector, cloudconvertConnector, cloudflareConnector, cloudinaryConnector, cloutlyConnector, codaConnector, codyConnector, cognismConnector, cognitoFormsConnector, cohereConnector, cometapiConnector, comfyicuConnector, commonRoomConnector, confluenceConnector, constantContactConnector, contactoutConnector, contentfulConnector, contextualAiConnector, contiguityConnector, convertkitConnector, copperConnector, copyAiConnector, couchbaseConnector, createKafkaConnector, createLinkedinConnector, createMongoDbConnector, createMySqlConnector, createPostgresConnector, createRabbitMqConnector, createRedisConnector, createRedshiftConnector, createSftpConnector, crispConnector, crustdataConnector, cryptolensConnector, csvFilesConnector, customerIoConnector, customgptConnector, dappierConnector, dashworksConnector, datadogConnector, datafuelConnector, datocmsConnector, declarativeRestConnector, deepgramConnector, deepseekConnector, demandbaseConnector, denserAiConnector, descriptConnector, detectingAiConnector, devinConnector, dialpadConnector, digitalOceanConnector, digitalPilotConnector, discordConnector, discourseConnector, dittofeedConnector, docsbotConnector, doctlyConnector, documentproConnector, documergeConnector, docuseal, docusignConnector, dripConnector, dropboxConnector, dubConnector, duckdbConnector, dumplingAiConnector, dustConnector, easyPeasyAiConnector, ebayConnector, echowinConnector, edenAiConnector, elasticEmailConnector, elevenlabsConnector, emailitConnector, emailoctopusConnector, enrichlayerConnector, esignaturesConnector, etsyConnector, everhourConnector, exaConnector, excelFilesConnector, facebookLeadsConnector, facebookPagesConnector, factorsAiConnector, fathomAnalyticsConnector, fathomConnector, featheryConnector, fellowConnector, figjamConnector, figmaConnector, filloutFormsConnector, findymailConnector, firebaseConnector, fireberryConnector, firecrawlConnector, firefliesAiConnector, flipandoConnector, flowParserConnector, flowiseConnector, flowluConnector, folkConnector, foreplayCoConnector, formbricksConnector, formstackConnector, fountainConnector, fragmentConnector, frameConnector, freeAgentConnector, freshdeskConnector, freshsalesConnector, freshserviceConnector, frontConnector, fullenrichConnector, gameballConnector, gammaConnector, geminiConnector, genderApiConnector, generatebannersConnector, getresponseConnector, ghostcmsConnector, giftbitConnector, gistlyConnector, giteaConnector, githubConnector, gitlabConnector, glideConnector, gmail, gongConnector, googleAnalyticsConnector, googleApiError, googleBigqueryConnector, googleCalendar, googleCloudStorageConnector, googleContactsConnector, googleDocs, googleDrive, googleErrorReason, googleForms, googleGeminiConnector, googleMeetConnector, googleMyBusinessConnector, googlePubSubConnector, googleSearchConnector, googleSearchConsoleConnector, googleSheets, googleSlidesConnector, googleTasksConnector, googleTestFailureReason, googleVertexaiConnector, googlechatConnector, gorgiasConnector, gotifyConnector, gptzeroDetectAiConnector, granolaConnector, greenhouseConnector, greenptConnector, greipConnector, griptapeConnector, gristConnector, guideliteConnector, gustoConnector, harvestConnector, hashiCorpVaultConnector, hastewireConnector, heartbeatConnector, hedyConnector, hellosign, helpscoutConnector, heygenConnector, heymarketSmsConnector, heyreachConnector, hightouchConnector, housecallProConnector, httpConnector, hubspot, huggingFaceConnector, huggingfaceConnector, humeAiConnector, hunterConnector, hystructConnector, ibmCognoseConnector, imageRouterConnector, imapConnector, influencersClubConnector, insightlyConnector, insightoAiConnector, instaChartsConnector, instagramBusinessConnector, instantlyAiConnector, instasentConnector, intercomConnector, invoiceninjaConnector, ironcladConnector, jinaAiConnector, jiraCloudConnector, jiraDataCenterConnector, joggAiConnector, jotformConnector, justInvoiceConnector, justcallConnector, kafkaConnector, kallabotAiConnector, kapsoConnector, kimaiConnector, kissflowConnector, kizeoFormsConnector, klaviyoConnector, klentyConnector, knackConnector, knockConnector, koFiConnector, kommoConnector, kudosityConnector, kustomerConnector, lagrowthmachineConnector, leadConnectorConnector, leadfeederConnector, leadmagicConnector, leapAiConnector, leexiConnector, lemlistConnector, lemonSqueezyConnector, letsCalendarConnector, lettaConnector, leverConnector, lightfunnelsConnector, linearConnector, linkaConnector, linkedinConnector, linkupConnector, llmrailsConnector, lobstermailConnector, localaiConnector, loftyConnector, logrocketConnector, logsnagConnector, lokaliseConnector, loopsConnector, lucidyaConnector, lushaConnector, luxuryPresenceConnector, magicalApiConnector, mailchainConnector, mailchimpConnector, mailerLiteConnector, mailercheckConnector, mailerooConnector, mailgunConnector, makeConnector, manychatConnector, marketoConnector, mastodonConnector, matomoConnector, matrixConnector, mattermostConnector, mauticConnector, medullarConnector, meetgeekAiConnector, memConnector, messagebirdConnector, metabaseConnector, microsoft365PeopleConnector, microsoft365PlannerConnector, microsoftCalendar, microsoftDynamics365BusinessCentralConnector, microsoftDynamicsCrmConnector, microsoftExcel365Connector, microsoftGraph, microsoftOnenoteConnector, microsoftPowerBiConnector, microsoftTeams, microsoftTodoConnector, millionverifierConnector, mindStudioConnector, mindeeConnector, miroConnector, missiveConnector, mixmaxConnector, mixpanelConnector, modelslabConnector, modjoConnector, mollieConnector, mondayConnector, mongodbConnector, mycaseConnector, mysqlConnector, n8nConnector, netlifyConnector, netsuiteConnector, neverbounceConnector, niftyConnector, ninjapipeConnector, nocodbConnector, nooksConnector, notion, notionConnector, ntfyConnector, oceanIoConnector, odooConnector, oktaConnector, omniCoConnector, omnihrConnector, oneDrive, oneSpanSignConnector, oneloginConnector, openPhoneConnector, openRouterConnector, openaiConnector, openmicAiConnector, opnformConnector, opportifyConnector, opsgenieConnector, oracleDatabaseConnector, orimonConnector, outlookMail, outreachConnector, paddleConnector, pagerdutyConnector, pandadoc, paperformConnector, parquetFilesConnector, parseurConnector, pastefyConnector, paychexConnector, paywhirlConnector, pdfmonkeyConnector, peekshotConnector, perplexityAiConnector, personalAiConnector, phantombusterConnector, phonyConnector, pinchPaymentsConnector, pineconeConnector, pingIdentityConnector, pipedreamConnector, pipedriveConnector, placidConnector, plaidConnector, plausibleConnector, pocketbaseConnector, pollybotAiConnector, polytomicConnector, postgresConnector, posthogConnector, postizConnector, postmarkConnector, predictLeadsConnector, productboardConnector, proxycurlConnector, publicKafkaSocketFactory, pushbulletConnector, pushoverConnector, qawafelConnector, qdrantConnector, quadernoConnector, quickbooksConnector, quickzuConnector, rabbitMqConnector, raiaAiConnector, rampConnector, rapidtextAiConnector, reachinboxConnector, recallAiConnector, recurlyConnector, reddit, redditConnector, redisConnector, redshiftConnector, reoonVerifierConnector, replyIoConnector, resolveConnectorAdapterFactoryOptions, retableConnector, retellAiConnector, ringcentralConnector, ripplingConnector, robollyConnector, rssConnector, runwareConnector, saasticConnector, sageIntacctConnector, saleorConnector, salesforceConnector, saleshandyConnector, salesloftConnector, sanityConnector, sardisConnector, savvycalConnector, scimConnector, scrapegraphaiConnector, scrapelessConnector, seamlessAiConnector, seekTableConnector, segmentConnector, semrushConnector, sendgridConnector, sendinblueConnector, sendpulseConnector, senjaConnector, sentryConnector, serperConnector, serpstatConnector, serviceNowConnector, sftpConnector, sharepoint, shippoConnector, shopifyConnector, shortIoConnector, signNowConnector, signrequestConnector, signwellConnector, similarwebConnector, simplirouteConnector, simplybookmeConnector, skyprepConnector, slack, slackEventsConnector, smartleadConnector, smartsheetConnector, smartsuiteConnector, smooveConnector, smsmodeConnector, snovIoConnector, snowflakeConnector, socialkitConnector, squareConnector, stripeConnector, stripePackConnector, stripeWebhookReceiverConnector, supabaseConnector, supadataConnector, swarmnodeConnector, systemeIoConnector, tableauConnector, talkableConnector, tallyConnector, taxjarConnector, teableConnector, telegramConnector, telnyxConnector, tenzoConnector, textcortexAiConnector, theirstackConnector, ticktickConnector, tiktok, tiktokConnector, timeOpsConnector, timelinesAiConnector, tlDvConnector, todoistConnector, togglTrackConnector, totalcmsConnector, trelloConnector, twentyConnector, twilioConnector, twilioSmsConnector, twinLabsConnector, twitter, twitterConnector, typeformConnector, typefullyConnector, umamiConnector, upgradechatConnector, uscreenConnector, usergemsConnector, validatedmailsConnector, vapiConnector, vboutConnector, vercelConnector, videoaskConnector, vidlab7Connector, vlmRunConnector, voucheryIoConnector, vtexConnector, vtigerConnector, wafeqConnector, warmlyConnector, weaviateConnector, webflowConnector, webhookConnector, webscrapingAiConnector, whatConvertsConnector, whatsappBusiness, whatsappConnector, whatsscaleConnector, wizaConnector, wonderchatConnector, woocommerceConnector, woodpeckerConnector, wootricConnector, wordpressConnector, workableConnector, workdayConnector, wrikeConnector, writesonicBulkConnector, wufooConnector, xeroConnector, youcanbookmeConnector, youtubeDataConnector, zagomailConnector, zapierConnector, zendeskConnector, zendeskSellConnector, zenrowsConnector, zeplinConnector, zerobounceConnector, zohoBookingsConnector, zohoBooksConnector, zohoCampaignsConnector, zohoCrmConnector, zohoDeskConnector, zohoInvoiceConnector, zohoMailConnector, zoomConnector, zoominfoConnector, zuoraConnector } from './adapters/index.js';
|
|
4
|
-
export { D as DEFAULT_TANGLE_PLATFORM_URL, d as TANGLE_API_KEY_PREFIX, e as TANGLE_SERVICE_TOKEN_PREFIX, b as TangleIdentityClient, T as TangleIdentityOptions, f as TangleIdentityUnreachableError, c as TangleTokenVerifyFailure, g as TangleTokenVerifyResult, a as TangleUserSummary, h as TangleWorkspaceSummary, i as createTangleIdentityClient, t as tangleIdentity } from '../tangle-id-
|
|
4
|
+
export { D as DEFAULT_TANGLE_PLATFORM_URL, d as TANGLE_API_KEY_PREFIX, e as TANGLE_SERVICE_TOKEN_PREFIX, b as TangleIdentityClient, T as TangleIdentityOptions, f as TangleIdentityUnreachableError, c as TangleTokenVerifyFailure, g as TangleTokenVerifyResult, a as TangleUserSummary, h as TangleWorkspaceSummary, i as createTangleIdentityClient, t as tangleIdentity } from '../tangle-id-Oy2z4W3p.js';
|
|
5
|
+
export { listBundledConnectorAdapters } from '../internal/bundled-manifest-runtime.js';
|
|
5
6
|
import 'kafkajs';
|
|
6
7
|
import 'amqplib';
|
|
7
8
|
import 'redis';
|
|
@@ -232,15 +233,6 @@ interface EmailVerifyOptions {
|
|
|
232
233
|
declare function verifyEmailSignature(rawBody: string, signatureHeader: string, timestampHeader: string, secret: string, options?: EmailVerifyOptions): boolean;
|
|
233
234
|
declare function firstHeader(headers: Record<string, string | string[] | undefined>, name: string): string | undefined;
|
|
234
235
|
|
|
235
|
-
/**
|
|
236
|
-
* Direct adapter instances that public catalog and action hosts may register.
|
|
237
|
-
*
|
|
238
|
-
* Factory adapters are intentionally absent: their construction requires
|
|
239
|
-
* product-owned OAuth configuration. Inbound-only adapters remain available
|
|
240
|
-
* as named exports for webhook hosts, but never compete with action adapters
|
|
241
|
-
* for a public connector kind.
|
|
242
|
-
*/
|
|
243
|
-
declare function listBundledConnectorAdapters(): ConnectorAdapter[];
|
|
244
236
|
/** Every connector manifest this package bundles, sorted by kind. */
|
|
245
237
|
declare function listBundledAdapterManifests(): ConnectorManifest[];
|
|
246
238
|
/** The bundled manifest for `kind`, or undefined when nothing implements it. */
|
|
@@ -254,12 +246,12 @@ declare function listBundledAdapterKinds(): string[];
|
|
|
254
246
|
*
|
|
255
247
|
* `oauth2_client_credentials` is called out separately because it IS a
|
|
256
248
|
* connectable mode but has no user-facing authorize step — a caller that
|
|
257
|
-
* treats "oauth2 without an authorizationUrl" as broken would wrongly
|
|
258
|
-
* these machine-to-machine providers.
|
|
249
|
+
* treats "oauth2 without an authorizationUrl" as broken would wrongly
|
|
250
|
+
* condemn these machine-to-machine providers.
|
|
259
251
|
*/
|
|
260
252
|
type BundledAuthMode = 'oauth2' | 'oauth2_client_credentials' | 'api_key' | 'hmac' | 'none';
|
|
261
253
|
/** The auth mode a connect flow would actually drive for this manifest,
|
|
262
|
-
*
|
|
254
|
+
* resolving `one_of` through its declared `preferred` mode. */
|
|
263
255
|
declare function bundledAuthMode(manifest: ConnectorManifest): BundledAuthMode | undefined;
|
|
264
256
|
/** The setup hint an api-key connector shows when collecting its credential. */
|
|
265
257
|
declare function bundledApiKeyHint(manifest: ConnectorManifest): string | undefined;
|
|
@@ -282,16 +274,12 @@ interface BundledOAuth2AuthContract {
|
|
|
282
274
|
urlTemplateMetadata?: Readonly<Record<string, OAuth2UrlTemplateMetadataSpec>>;
|
|
283
275
|
}
|
|
284
276
|
/** The selected OAuth2 contract for a manifest, including non-redirect
|
|
285
|
-
*
|
|
277
|
+
* client-credentials providers and validated provider-root templates. */
|
|
286
278
|
declare function bundledOAuth2AuthContract(manifest: ConnectorManifest): BundledOAuth2AuthContract | undefined;
|
|
287
|
-
/** The authorization-code OAuth2 branch of a manifest
|
|
288
|
-
* one. `one_of` manifests are resolved through their `preferred` mode, which
|
|
289
|
-
* is the mode a connect flow would actually drive. Returns undefined for
|
|
290
|
-
* api-key/hmac/none connectors and for `client_credentials` OAuth (which has
|
|
291
|
-
* no user-facing authorize step). */
|
|
279
|
+
/** The authorization-code OAuth2 branch of a manifest, if it has one. */
|
|
292
280
|
declare function bundledOAuth2Auth(manifest: ConnectorManifest): (BundledOAuth2AuthContract & {
|
|
293
281
|
grantType: 'authorization_code';
|
|
294
282
|
authorizationUrl: string;
|
|
295
283
|
}) | undefined;
|
|
296
284
|
|
|
297
|
-
export { type BundledAuthMode, type BundledOAuth2AuthContract,
|
|
285
|
+
export { type BundledAuthMode, type BundledOAuth2AuthContract, ConnectorManifest, DEFAULT_SIGNATURE_TOLERANCE_SECONDS, type EmailVerifyOptions, type ExchangeCodeInput, type GenericHmacVerifyOptions, InMemoryOAuthFlowStore, OAuth2TokenClientAuthMethod, OAuth2UrlTemplateMetadataSpec, type OAuthFlowStore, type OAuthPkceMode, type OAuthTokens, type ParsedStripeSignatureHeader, type PendingOAuthFlow, type RefreshInput, type SlackVerifyOptions, type StartOAuthInput, type StartOAuthOutput, type StripeVerifyOptions, type TwilioVerifyOptions, _resetPendingFlowsForTests, bundledApiKeyHint, bundledAuthMode, bundledOAuth2Auth, bundledOAuth2AuthContract, consumePendingFlow, createOAuthBasicAuthorizationHeader, createOAuthTokenRequestHeaders, exchangeAuthorizationCode, firstHeader, formEncodeOAuthClientCredential, getBundledAdapterManifest, hasBundledAdapter, listBundledAdapterKinds, listBundledAdapterManifests, oauthClientCredentialRedactionValues, parseStripeSignatureHeader, redactOAuthSensitiveText, refreshAccessToken, startOAuthFlow, verifyEmailSignature, verifyHmacSignature, verifySlackSignature, verifyStripeSignature, verifyTwilioSignature };
|
package/dist/connectors/index.js
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-DED3J7F6.js";
|
|
2
2
|
import {
|
|
3
|
-
bundledApiKeyHint,
|
|
4
|
-
bundledAuthMode,
|
|
5
|
-
bundledOAuth2Auth,
|
|
6
|
-
bundledOAuth2AuthContract,
|
|
7
|
-
getBundledAdapterManifest,
|
|
8
|
-
hasBundledAdapter,
|
|
9
|
-
listBundledAdapterKinds,
|
|
10
|
-
listBundledAdapterManifests,
|
|
11
3
|
listBundledConnectorAdapters
|
|
12
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-ABA4HWIQ.js";
|
|
13
5
|
import {
|
|
14
6
|
CONNECTOR_ADAPTER_FACTORIES,
|
|
15
7
|
InMemoryOAuthFlowStore,
|
|
@@ -701,6 +693,16 @@ import {
|
|
|
701
693
|
tangleIdentity,
|
|
702
694
|
validateConnectorManifest
|
|
703
695
|
} from "../chunk-DCSQH4O6.js";
|
|
696
|
+
import {
|
|
697
|
+
bundledApiKeyHint,
|
|
698
|
+
bundledAuthMode,
|
|
699
|
+
bundledOAuth2Auth,
|
|
700
|
+
bundledOAuth2AuthContract,
|
|
701
|
+
getBundledAdapterManifest,
|
|
702
|
+
hasBundledAdapter,
|
|
703
|
+
listBundledAdapterKinds,
|
|
704
|
+
listBundledAdapterManifests
|
|
705
|
+
} from "../chunk-GIK6EXU2.js";
|
|
704
706
|
import "../chunk-PZ5AY32C.js";
|
|
705
707
|
export {
|
|
706
708
|
CONNECTOR_ADAPTER_FACTORIES,
|