@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.
Files changed (65) hide show
  1. package/README.md +23 -0
  2. package/data/bundled-adapter-manifests.json +1 -0
  3. package/dist/audit-DMTzJQJU.d.ts +51 -0
  4. package/dist/catalog.d.ts +3 -3
  5. package/dist/catalog.js +2 -12
  6. package/dist/chunk-A4OJ5EQT.js +133156 -0
  7. package/dist/chunk-A4OJ5EQT.js.map +1 -0
  8. package/dist/chunk-ABA4HWIQ.js +58 -0
  9. package/dist/chunk-ABA4HWIQ.js.map +1 -0
  10. package/dist/chunk-DED3J7F6.js +1 -0
  11. package/dist/chunk-ESY2FBBM.js +33 -0
  12. package/dist/chunk-ESY2FBBM.js.map +1 -0
  13. package/dist/chunk-GIK6EXU2.js +121 -0
  14. package/dist/chunk-GIK6EXU2.js.map +1 -0
  15. package/dist/{chunk-TWR2KAZG.js → chunk-MH4IEJCL.js} +1 -1
  16. package/dist/chunk-MH4IEJCL.js.map +1 -0
  17. package/dist/chunk-QVWTBQXP.js +267 -0
  18. package/dist/chunk-QVWTBQXP.js.map +1 -0
  19. package/dist/{chunk-2GEGKSL5.js → chunk-QWOX5SIM.js} +6 -33
  20. package/dist/chunk-QWOX5SIM.js.map +1 -0
  21. package/dist/chunk-RSJRICPU.js +394 -0
  22. package/dist/chunk-RSJRICPU.js.map +1 -0
  23. package/dist/chunk-WPQJK4S4.js +400 -0
  24. package/dist/chunk-WPQJK4S4.js.map +1 -0
  25. package/dist/connect/index.d.ts +2 -2
  26. package/dist/connectors/adapters/index.d.ts +2 -2
  27. package/dist/connectors/index.d.ts +10 -22
  28. package/dist/connectors/index.js +12 -10
  29. package/dist/{consumer-BbQWkIzU.d.ts → consumer-CIq2D22y.d.ts} +4 -51
  30. package/dist/consumer.d.ts +5 -4
  31. package/dist/{core-types-A-xIaTzb.d.ts → core-types-DZJQRBya.d.ts} +2 -2
  32. package/dist/coverage-catalog.d.ts +2 -2
  33. package/dist/coverage-catalog.js +1 -1
  34. package/dist/{importers-BMigcDVf.d.ts → importers-Cyk5osDs.d.ts} +1 -1
  35. package/dist/index.d.ts +17 -104
  36. package/dist/index.js +72 -62
  37. package/dist/internal/bundled-manifest-runtime.d.ts +15 -0
  38. package/dist/internal/bundled-manifest-runtime.js +13 -0
  39. package/dist/internal/bundled-manifest-runtime.js.map +1 -0
  40. package/dist/mcp.d.ts +3 -3
  41. package/dist/mcp.js +10 -5
  42. package/dist/mcp.js.map +1 -1
  43. package/dist/middleware/index.d.ts +2 -2
  44. package/dist/registry-core-DqdQjTkh.d.ts +49 -0
  45. package/dist/registry.d.ts +6 -49
  46. package/dist/registry.js +16 -10
  47. package/dist/runtime.d.ts +3 -3
  48. package/dist/runtime.js +3 -12
  49. package/dist/specs.d.ts +2 -2
  50. package/dist/specs.js +4 -6
  51. package/dist/{tangle-id-gFOGXe4Y.d.ts → tangle-id-Oy2z4W3p.d.ts} +1 -1
  52. package/dist/{types-DpKEBiX6.d.ts → types-DIis6QtV.d.ts} +1 -1
  53. package/dist/worker.d.ts +99 -0
  54. package/dist/worker.js +28 -0
  55. package/dist/worker.js.map +1 -0
  56. package/docs/repo-structure.md +29 -6
  57. package/package.json +10 -1
  58. package/dist/chunk-2GEGKSL5.js.map +0 -1
  59. package/dist/chunk-E2QYXDJQ.js +0 -147
  60. package/dist/chunk-E2QYXDJQ.js.map +0 -1
  61. package/dist/chunk-P4FFI752.js +0 -1
  62. package/dist/chunk-TWR2KAZG.js.map +0 -1
  63. package/dist/chunk-ZC3ZE7TN.js +0 -4849
  64. package/dist/chunk-ZC3ZE7TN.js.map +0 -1
  65. /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"]}
@@ -1,5 +1,5 @@
1
- import { T as TangleIdentityOptions, a as TangleUserSummary } from '../tangle-id-gFOGXe4Y.js';
2
- import '../types-DpKEBiX6.js';
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-DpKEBiX6.js';
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-gFOGXe4Y.js';
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, k as ConnectorManifest, C as ConnectorAdapter } from '../types-DpKEBiX6.js';
2
- export { A as AuthSpec, b as CASStrategy, c as Capability, d as CapabilityClass, e as CapabilityMutation, f as CapabilityMutationResult, g as CapabilityParameterSchema, h as CapabilityRead, i as CapabilityReadResult, a as ConnectorCredentials, j 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-DpKEBiX6.js';
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-gFOGXe4Y.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-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 condemn
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
- * resolving `one_of` through its declared `preferred` mode. */
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
- * client-credentials providers and validated provider-root templates. */
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's auth spec, if it has
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, ConnectorAdapter, 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, listBundledConnectorAdapters, oauthClientCredentialRedactionValues, parseStripeSignatureHeader, redactOAuthSensitiveText, refreshAccessToken, startOAuthFlow, verifyEmailSignature, verifyHmacSignature, verifySlackSignature, verifyStripeSignature, verifyTwilioSignature };
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 };
@@ -1,15 +1,7 @@
1
- import "../chunk-P4FFI752.js";
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-E2QYXDJQ.js";
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,