integrate-sdk 0.9.27-dev.0 → 0.9.27-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +82 -0
- package/dist/adapters/index.js +84 -34
- package/dist/adapters/solid-start.js +84 -34
- package/dist/adapters/svelte-kit.js +84 -34
- package/dist/ai/anthropic.js +27 -1
- package/dist/ai/google.js +27 -1
- package/dist/ai/index.js +27 -1
- package/dist/ai/openai.js +27 -1
- package/dist/ai/vercel-ai.js +27 -1
- package/dist/code-mode/executor.js +27 -1
- package/dist/code-mode/index.js +27 -1
- package/dist/code-mode/runtime-stub.d.ts +1 -1
- package/dist/code-mode/runtime-stub.d.ts.map +1 -1
- package/dist/code-mode/runtime-stub.js +27 -1
- package/dist/code-mode/tool-builder.js +27 -1
- package/dist/index.js +263 -62
- package/dist/server.js +312 -84
- package/dist/src/client.d.ts +8 -0
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/code-mode/runtime-stub.d.ts +1 -1
- package/dist/src/code-mode/runtime-stub.d.ts.map +1 -1
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/integrations/dropbox.d.ts +22 -0
- package/dist/src/integrations/dropbox.d.ts.map +1 -0
- package/dist/src/integrations/granola.d.ts +14 -0
- package/dist/src/integrations/granola.d.ts.map +1 -0
- package/dist/src/integrations/mercury.d.ts +14 -0
- package/dist/src/integrations/mercury.d.ts.map +1 -0
- package/dist/src/integrations/types.d.ts +4 -0
- package/dist/src/integrations/types.d.ts.map +1 -1
- package/dist/src/server.d.ts +3 -0
- package/dist/src/server.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1962,6 +1962,34 @@ class OAuthManager {
|
|
|
1962
1962
|
|
|
1963
1963
|
// src/client.ts
|
|
1964
1964
|
var CLIENT_LOG_CONTEXT = "client";
|
|
1965
|
+
var NON_TOOL_PROXY_PROPERTIES = new Set([
|
|
1966
|
+
"then",
|
|
1967
|
+
"catch",
|
|
1968
|
+
"finally",
|
|
1969
|
+
"constructor",
|
|
1970
|
+
"prototype",
|
|
1971
|
+
"toString",
|
|
1972
|
+
"valueOf",
|
|
1973
|
+
"toJSON",
|
|
1974
|
+
"inspect",
|
|
1975
|
+
"hasOwnProperty",
|
|
1976
|
+
"isPrototypeOf",
|
|
1977
|
+
"propertyIsEnumerable",
|
|
1978
|
+
"__proto__",
|
|
1979
|
+
"__defineGetter__",
|
|
1980
|
+
"__defineSetter__",
|
|
1981
|
+
"__lookupGetter__",
|
|
1982
|
+
"__lookupSetter__",
|
|
1983
|
+
"__esModule",
|
|
1984
|
+
Symbol.toStringTag,
|
|
1985
|
+
Symbol.toPrimitive,
|
|
1986
|
+
Symbol.iterator,
|
|
1987
|
+
Symbol.asyncIterator,
|
|
1988
|
+
Symbol.for("nodejs.util.inspect.custom")
|
|
1989
|
+
]);
|
|
1990
|
+
function isToolProxyProperty(property) {
|
|
1991
|
+
return typeof property === "string" && !NON_TOOL_PROXY_PROPERTIES.has(property);
|
|
1992
|
+
}
|
|
1965
1993
|
|
|
1966
1994
|
class SimpleEventEmitter {
|
|
1967
1995
|
handlers = new Map;
|
|
@@ -2186,6 +2214,8 @@ class MCPClientBase {
|
|
|
2186
2214
|
}
|
|
2187
2215
|
return new Proxy({}, {
|
|
2188
2216
|
get: (_target, methodName) => {
|
|
2217
|
+
if (!isToolProxyProperty(methodName))
|
|
2218
|
+
return;
|
|
2189
2219
|
return async (args, options) => {
|
|
2190
2220
|
const toolName = methodToToolName(methodName, integrationId);
|
|
2191
2221
|
return await this.callToolWithRetry(toolName, args, 0, options);
|
|
@@ -2199,6 +2229,8 @@ class MCPClientBase {
|
|
|
2199
2229
|
createServerProxy() {
|
|
2200
2230
|
return new Proxy({}, {
|
|
2201
2231
|
get: (_target, methodName) => {
|
|
2232
|
+
if (!isToolProxyProperty(methodName))
|
|
2233
|
+
return;
|
|
2202
2234
|
if (methodName === "listConfiguredIntegrations") {
|
|
2203
2235
|
return async (options) => {
|
|
2204
2236
|
const transportHeaders = this.transport.headers || {};
|
|
@@ -2419,6 +2451,9 @@ class MCPClientBase {
|
|
|
2419
2451
|
async _callToolByName(name, args, options) {
|
|
2420
2452
|
return await this.callToolWithRetry(name, args, 0, options);
|
|
2421
2453
|
}
|
|
2454
|
+
async callTool(name, args, options) {
|
|
2455
|
+
return await this.callToolWithRetry(name, args, 0, options);
|
|
2456
|
+
}
|
|
2422
2457
|
async callServerTool(name, args) {
|
|
2423
2458
|
try {
|
|
2424
2459
|
const response = await this.callToolThroughHandler(name, args);
|
|
@@ -2429,35 +2464,38 @@ class MCPClientBase {
|
|
|
2429
2464
|
}
|
|
2430
2465
|
}
|
|
2431
2466
|
async callToolThroughHandler(name, args, provider, options) {
|
|
2467
|
+
const integrationHeaders = this.getHeadersForTool(name);
|
|
2432
2468
|
const transportHeaders = this.transport.headers || {};
|
|
2433
2469
|
const hasApiKey = !!transportHeaders["X-API-KEY"];
|
|
2434
2470
|
if (hasApiKey) {
|
|
2435
2471
|
await this.ensureConnected();
|
|
2472
|
+
const temporaryHeaders = { ...integrationHeaders };
|
|
2436
2473
|
if (provider) {
|
|
2437
2474
|
const tokenData = await this.oauthManager.getProviderToken(provider, undefined, options?.context);
|
|
2438
|
-
if (tokenData
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2451
|
-
|
|
2452
|
-
|
|
2475
|
+
if (tokenData) {
|
|
2476
|
+
temporaryHeaders["Authorization"] = `Bearer ${tokenData.accessToken}`;
|
|
2477
|
+
}
|
|
2478
|
+
}
|
|
2479
|
+
const previousHeaders = new Map;
|
|
2480
|
+
for (const [key, value] of Object.entries(temporaryHeaders)) {
|
|
2481
|
+
previousHeaders.set(key, transportHeaders[key]);
|
|
2482
|
+
this.transport.setHeader(key, value);
|
|
2483
|
+
}
|
|
2484
|
+
try {
|
|
2485
|
+
const result2 = await this.transport.sendRequest("tools/call", {
|
|
2486
|
+
name,
|
|
2487
|
+
arguments: args || {}
|
|
2488
|
+
});
|
|
2489
|
+
return result2;
|
|
2490
|
+
} finally {
|
|
2491
|
+
for (const [key, previousValue] of previousHeaders.entries()) {
|
|
2492
|
+
if (previousValue !== undefined) {
|
|
2493
|
+
this.transport.setHeader(key, previousValue);
|
|
2494
|
+
} else {
|
|
2495
|
+
this.transport.removeHeader(key);
|
|
2453
2496
|
}
|
|
2454
2497
|
}
|
|
2455
2498
|
}
|
|
2456
|
-
const result2 = await this.transport.sendRequest("tools/call", {
|
|
2457
|
-
name,
|
|
2458
|
-
arguments: args || {}
|
|
2459
|
-
});
|
|
2460
|
-
return result2;
|
|
2461
2499
|
}
|
|
2462
2500
|
const url = this.apiBaseUrl ? `${this.apiBaseUrl}${this.apiRouteBase}/mcp` : `${this.apiRouteBase}/mcp`;
|
|
2463
2501
|
const headers = {
|
|
@@ -2467,6 +2505,7 @@ class MCPClientBase {
|
|
|
2467
2505
|
if (integrationsHeader) {
|
|
2468
2506
|
headers["X-Integrations"] = integrationsHeader;
|
|
2469
2507
|
}
|
|
2508
|
+
Object.assign(headers, integrationHeaders);
|
|
2470
2509
|
if (provider) {
|
|
2471
2510
|
const tokenData = await this.oauthManager.getProviderToken(provider, undefined, options?.context);
|
|
2472
2511
|
if (tokenData) {
|
|
@@ -2556,6 +2595,14 @@ class MCPClientBase {
|
|
|
2556
2595
|
}
|
|
2557
2596
|
return;
|
|
2558
2597
|
}
|
|
2598
|
+
getHeadersForTool(toolName) {
|
|
2599
|
+
for (const integration of this.integrations) {
|
|
2600
|
+
if (integration.tools.includes(toolName) && integration.getHeaders) {
|
|
2601
|
+
return integration.getHeaders();
|
|
2602
|
+
}
|
|
2603
|
+
}
|
|
2604
|
+
return {};
|
|
2605
|
+
}
|
|
2559
2606
|
getTool(name) {
|
|
2560
2607
|
return this.availableTools.get(name);
|
|
2561
2608
|
}
|
|
@@ -4725,8 +4772,55 @@ function onedriveIntegration(config = {}) {
|
|
|
4725
4772
|
}
|
|
4726
4773
|
};
|
|
4727
4774
|
}
|
|
4775
|
+
// src/integrations/dropbox.ts
|
|
4776
|
+
var logger25 = createLogger("Dropbox");
|
|
4777
|
+
var DROPBOX_TOOLS = [
|
|
4778
|
+
"dropbox_get_current_account",
|
|
4779
|
+
"dropbox_get_space_usage",
|
|
4780
|
+
"dropbox_list_folder",
|
|
4781
|
+
"dropbox_list_folder_continue",
|
|
4782
|
+
"dropbox_get_metadata",
|
|
4783
|
+
"dropbox_search_files",
|
|
4784
|
+
"dropbox_create_folder",
|
|
4785
|
+
"dropbox_delete_path",
|
|
4786
|
+
"dropbox_move_path",
|
|
4787
|
+
"dropbox_copy_path",
|
|
4788
|
+
"dropbox_upload_text_file",
|
|
4789
|
+
"dropbox_download_file",
|
|
4790
|
+
"dropbox_get_temporary_link",
|
|
4791
|
+
"dropbox_create_shared_link",
|
|
4792
|
+
"dropbox_list_shared_links",
|
|
4793
|
+
"dropbox_revoke_shared_link"
|
|
4794
|
+
];
|
|
4795
|
+
function dropboxIntegration(options = {}) {
|
|
4796
|
+
if (options.scopes !== undefined && (!Array.isArray(options.scopes) || options.scopes.some((scope) => typeof scope !== "string"))) {
|
|
4797
|
+
throw new Error("dropboxIntegration scopes must be an array of strings");
|
|
4798
|
+
}
|
|
4799
|
+
const oauth = {
|
|
4800
|
+
provider: "dropbox",
|
|
4801
|
+
clientId: options.clientId ?? getEnv("DROPBOX_CLIENT_ID"),
|
|
4802
|
+
clientSecret: options.clientSecret ?? getEnv("DROPBOX_CLIENT_SECRET"),
|
|
4803
|
+
scopes: options.scopes,
|
|
4804
|
+
optionalScopes: options.optionalScopes,
|
|
4805
|
+
redirectUri: options.redirectUri,
|
|
4806
|
+
config: options
|
|
4807
|
+
};
|
|
4808
|
+
return {
|
|
4809
|
+
id: "dropbox",
|
|
4810
|
+
name: "Dropbox",
|
|
4811
|
+
tools: [...DROPBOX_TOOLS],
|
|
4812
|
+
authType: "oauth",
|
|
4813
|
+
oauth,
|
|
4814
|
+
async onInit(_client) {
|
|
4815
|
+
logger25.debug("Dropbox integration initialized");
|
|
4816
|
+
},
|
|
4817
|
+
async onAfterConnect(_client) {
|
|
4818
|
+
logger25.debug("Dropbox integration connected");
|
|
4819
|
+
}
|
|
4820
|
+
};
|
|
4821
|
+
}
|
|
4728
4822
|
// src/integrations/gdocs.ts
|
|
4729
|
-
var
|
|
4823
|
+
var logger26 = createLogger("Google Docs");
|
|
4730
4824
|
var GDOCS_TOOLS = [
|
|
4731
4825
|
"gdocs_list",
|
|
4732
4826
|
"gdocs_get",
|
|
@@ -4751,15 +4845,15 @@ function gdocsIntegration(config = {}) {
|
|
|
4751
4845
|
tools: [...GDOCS_TOOLS],
|
|
4752
4846
|
oauth,
|
|
4753
4847
|
async onInit(_client) {
|
|
4754
|
-
|
|
4848
|
+
logger26.debug("Google Docs integration initialized");
|
|
4755
4849
|
},
|
|
4756
4850
|
async onAfterConnect(_client) {
|
|
4757
|
-
|
|
4851
|
+
logger26.debug("Google Docs integration connected");
|
|
4758
4852
|
}
|
|
4759
4853
|
};
|
|
4760
4854
|
}
|
|
4761
4855
|
// src/integrations/gsheets.ts
|
|
4762
|
-
var
|
|
4856
|
+
var logger27 = createLogger("Google Sheets");
|
|
4763
4857
|
var GSHEETS_TOOLS = [
|
|
4764
4858
|
"gsheets_list",
|
|
4765
4859
|
"gsheets_get",
|
|
@@ -4787,15 +4881,15 @@ function gsheetsIntegration(config = {}) {
|
|
|
4787
4881
|
tools: [...GSHEETS_TOOLS],
|
|
4788
4882
|
oauth,
|
|
4789
4883
|
async onInit(_client) {
|
|
4790
|
-
|
|
4884
|
+
logger27.debug("Google Sheets integration initialized");
|
|
4791
4885
|
},
|
|
4792
4886
|
async onAfterConnect(_client) {
|
|
4793
|
-
|
|
4887
|
+
logger27.debug("Google Sheets integration connected");
|
|
4794
4888
|
}
|
|
4795
4889
|
};
|
|
4796
4890
|
}
|
|
4797
4891
|
// src/integrations/gslides.ts
|
|
4798
|
-
var
|
|
4892
|
+
var logger28 = createLogger("Google Slides");
|
|
4799
4893
|
var GSLIDES_TOOLS = [
|
|
4800
4894
|
"gslides_list",
|
|
4801
4895
|
"gslides_get",
|
|
@@ -4822,15 +4916,15 @@ function gslidesIntegration(config = {}) {
|
|
|
4822
4916
|
tools: [...GSLIDES_TOOLS],
|
|
4823
4917
|
oauth,
|
|
4824
4918
|
async onInit(_client) {
|
|
4825
|
-
|
|
4919
|
+
logger28.debug("Google Slides integration initialized");
|
|
4826
4920
|
},
|
|
4827
4921
|
async onAfterConnect(_client) {
|
|
4828
|
-
|
|
4922
|
+
logger28.debug("Google Slides integration connected");
|
|
4829
4923
|
}
|
|
4830
4924
|
};
|
|
4831
4925
|
}
|
|
4832
4926
|
// src/integrations/polar.ts
|
|
4833
|
-
var
|
|
4927
|
+
var logger29 = createLogger("Polar");
|
|
4834
4928
|
var POLAR_TOOLS = [
|
|
4835
4929
|
"polar_list_products",
|
|
4836
4930
|
"polar_get_product",
|
|
@@ -4887,15 +4981,15 @@ function polarIntegration(config = {}) {
|
|
|
4887
4981
|
tools: [...POLAR_TOOLS],
|
|
4888
4982
|
oauth,
|
|
4889
4983
|
async onInit(_client) {
|
|
4890
|
-
|
|
4984
|
+
logger29.debug("Polar integration initialized");
|
|
4891
4985
|
},
|
|
4892
4986
|
async onAfterConnect(_client) {
|
|
4893
|
-
|
|
4987
|
+
logger29.debug("Polar integration connected");
|
|
4894
4988
|
}
|
|
4895
4989
|
};
|
|
4896
4990
|
}
|
|
4897
4991
|
// src/integrations/figma.ts
|
|
4898
|
-
var
|
|
4992
|
+
var logger30 = createLogger("Figma");
|
|
4899
4993
|
var FIGMA_TOOLS = [
|
|
4900
4994
|
"figma_get_file",
|
|
4901
4995
|
"figma_get_file_nodes",
|
|
@@ -4961,15 +5055,15 @@ function figmaIntegration(config = {}) {
|
|
|
4961
5055
|
tools: [...FIGMA_TOOLS],
|
|
4962
5056
|
oauth,
|
|
4963
5057
|
async onInit(_client) {
|
|
4964
|
-
|
|
5058
|
+
logger30.debug("Figma integration initialized");
|
|
4965
5059
|
},
|
|
4966
5060
|
async onAfterConnect(_client) {
|
|
4967
|
-
|
|
5061
|
+
logger30.debug("Figma integration connected");
|
|
4968
5062
|
}
|
|
4969
5063
|
};
|
|
4970
5064
|
}
|
|
4971
5065
|
// src/integrations/intercom.ts
|
|
4972
|
-
var
|
|
5066
|
+
var logger31 = createLogger("Intercom");
|
|
4973
5067
|
var INTERCOM_TOOLS = [
|
|
4974
5068
|
"intercom_list_contacts",
|
|
4975
5069
|
"intercom_get_contact",
|
|
@@ -5000,15 +5094,15 @@ function intercomIntegration(config = {}) {
|
|
|
5000
5094
|
tools: [...INTERCOM_TOOLS],
|
|
5001
5095
|
oauth,
|
|
5002
5096
|
async onInit(_client) {
|
|
5003
|
-
|
|
5097
|
+
logger31.debug("Intercom integration initialized");
|
|
5004
5098
|
},
|
|
5005
5099
|
async onAfterConnect(_client) {
|
|
5006
|
-
|
|
5100
|
+
logger31.debug("Intercom integration connected");
|
|
5007
5101
|
}
|
|
5008
5102
|
};
|
|
5009
5103
|
}
|
|
5010
5104
|
// src/integrations/hubspot.ts
|
|
5011
|
-
var
|
|
5105
|
+
var logger32 = createLogger("HubSpot");
|
|
5012
5106
|
var HUBSPOT_TOOLS = [
|
|
5013
5107
|
"hubspot_list_contacts",
|
|
5014
5108
|
"hubspot_get_contact",
|
|
@@ -5058,15 +5152,15 @@ function hubspotIntegration(config = {}) {
|
|
|
5058
5152
|
tools: [...HUBSPOT_TOOLS],
|
|
5059
5153
|
oauth,
|
|
5060
5154
|
async onInit(_client) {
|
|
5061
|
-
|
|
5155
|
+
logger32.debug("HubSpot integration initialized");
|
|
5062
5156
|
},
|
|
5063
5157
|
async onAfterConnect(_client) {
|
|
5064
|
-
|
|
5158
|
+
logger32.debug("HubSpot integration connected");
|
|
5065
5159
|
}
|
|
5066
5160
|
};
|
|
5067
5161
|
}
|
|
5068
5162
|
// src/integrations/youtube.ts
|
|
5069
|
-
var
|
|
5163
|
+
var logger33 = createLogger("YouTube");
|
|
5070
5164
|
var YOUTUBE_TOOLS = [
|
|
5071
5165
|
"youtube_search",
|
|
5072
5166
|
"youtube_get_video",
|
|
@@ -5112,15 +5206,15 @@ function youtubeIntegration(config = {}) {
|
|
|
5112
5206
|
tools: [...YOUTUBE_TOOLS],
|
|
5113
5207
|
oauth,
|
|
5114
5208
|
async onInit(_client) {
|
|
5115
|
-
|
|
5209
|
+
logger33.debug("YouTube integration initialized");
|
|
5116
5210
|
},
|
|
5117
5211
|
async onAfterConnect(_client) {
|
|
5118
|
-
|
|
5212
|
+
logger33.debug("YouTube integration connected");
|
|
5119
5213
|
}
|
|
5120
5214
|
};
|
|
5121
5215
|
}
|
|
5122
5216
|
// src/integrations/cursor.ts
|
|
5123
|
-
var
|
|
5217
|
+
var logger34 = createLogger("Cursor");
|
|
5124
5218
|
var CURSOR_TOOLS = [
|
|
5125
5219
|
"cursor_list_agents",
|
|
5126
5220
|
"cursor_get_agent",
|
|
@@ -5140,10 +5234,114 @@ function cursorIntegration(_config = {}) {
|
|
|
5140
5234
|
logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/cursor.jpeg",
|
|
5141
5235
|
tools: [...CURSOR_TOOLS],
|
|
5142
5236
|
async onInit(_client) {
|
|
5143
|
-
|
|
5237
|
+
logger34.debug("Cursor integration initialized");
|
|
5144
5238
|
},
|
|
5145
5239
|
async onAfterConnect(_client) {
|
|
5146
|
-
|
|
5240
|
+
logger34.debug("Cursor integration connected");
|
|
5241
|
+
}
|
|
5242
|
+
};
|
|
5243
|
+
}
|
|
5244
|
+
// src/integrations/granola.ts
|
|
5245
|
+
var GRANOLA_TOOLS = [
|
|
5246
|
+
"granola_list_notes",
|
|
5247
|
+
"granola_get_note",
|
|
5248
|
+
"granola_list_folders"
|
|
5249
|
+
];
|
|
5250
|
+
function granolaIntegration(options) {
|
|
5251
|
+
if (!options.apiKey) {
|
|
5252
|
+
throw new Error("granolaIntegration requires an apiKey");
|
|
5253
|
+
}
|
|
5254
|
+
return {
|
|
5255
|
+
id: "granola",
|
|
5256
|
+
name: "Granola",
|
|
5257
|
+
tools: [...GRANOLA_TOOLS],
|
|
5258
|
+
authType: "apiKey",
|
|
5259
|
+
getHeaders() {
|
|
5260
|
+
return {
|
|
5261
|
+
Authorization: `Bearer ${options.apiKey}`
|
|
5262
|
+
};
|
|
5263
|
+
}
|
|
5264
|
+
};
|
|
5265
|
+
}
|
|
5266
|
+
// src/integrations/mercury.ts
|
|
5267
|
+
var MERCURY_TOOLS = [
|
|
5268
|
+
"mercury_get_organization",
|
|
5269
|
+
"mercury_list_accounts",
|
|
5270
|
+
"mercury_get_account",
|
|
5271
|
+
"mercury_get_account_cards",
|
|
5272
|
+
"mercury_list_account_transactions",
|
|
5273
|
+
"mercury_get_account_transaction",
|
|
5274
|
+
"mercury_list_account_statements",
|
|
5275
|
+
"mercury_download_statement_pdf",
|
|
5276
|
+
"mercury_list_transactions",
|
|
5277
|
+
"mercury_get_transaction",
|
|
5278
|
+
"mercury_update_transaction",
|
|
5279
|
+
"mercury_upload_transaction_attachment",
|
|
5280
|
+
"mercury_list_cards",
|
|
5281
|
+
"mercury_get_card",
|
|
5282
|
+
"mercury_create_card",
|
|
5283
|
+
"mercury_update_card",
|
|
5284
|
+
"mercury_freeze_card",
|
|
5285
|
+
"mercury_unfreeze_card",
|
|
5286
|
+
"mercury_cancel_card",
|
|
5287
|
+
"mercury_list_categories",
|
|
5288
|
+
"mercury_create_category",
|
|
5289
|
+
"mercury_update_category",
|
|
5290
|
+
"mercury_list_credit_accounts",
|
|
5291
|
+
"mercury_list_users",
|
|
5292
|
+
"mercury_get_user",
|
|
5293
|
+
"mercury_list_recipients",
|
|
5294
|
+
"mercury_get_recipient",
|
|
5295
|
+
"mercury_create_recipient",
|
|
5296
|
+
"mercury_update_recipient",
|
|
5297
|
+
"mercury_list_recipient_attachments",
|
|
5298
|
+
"mercury_upload_recipient_attachment",
|
|
5299
|
+
"mercury_list_customers",
|
|
5300
|
+
"mercury_get_customer",
|
|
5301
|
+
"mercury_create_customer",
|
|
5302
|
+
"mercury_update_customer",
|
|
5303
|
+
"mercury_delete_customer",
|
|
5304
|
+
"mercury_list_invoices",
|
|
5305
|
+
"mercury_get_invoice",
|
|
5306
|
+
"mercury_create_invoice",
|
|
5307
|
+
"mercury_update_invoice",
|
|
5308
|
+
"mercury_cancel_invoice",
|
|
5309
|
+
"mercury_list_invoice_attachments",
|
|
5310
|
+
"mercury_get_attachment",
|
|
5311
|
+
"mercury_download_invoice_pdf",
|
|
5312
|
+
"mercury_list_treasury_accounts",
|
|
5313
|
+
"mercury_list_treasury_transactions",
|
|
5314
|
+
"mercury_list_treasury_statements",
|
|
5315
|
+
"mercury_list_events",
|
|
5316
|
+
"mercury_get_event",
|
|
5317
|
+
"mercury_list_send_money_requests",
|
|
5318
|
+
"mercury_get_send_money_request",
|
|
5319
|
+
"mercury_list_safe_requests",
|
|
5320
|
+
"mercury_get_safe_request",
|
|
5321
|
+
"mercury_download_safe_request_document",
|
|
5322
|
+
"mercury_list_webhooks",
|
|
5323
|
+
"mercury_get_webhook",
|
|
5324
|
+
"mercury_create_webhook",
|
|
5325
|
+
"mercury_update_webhook",
|
|
5326
|
+
"mercury_delete_webhook",
|
|
5327
|
+
"mercury_verify_webhook",
|
|
5328
|
+
"mercury_create_internal_transfer",
|
|
5329
|
+
"mercury_send_money",
|
|
5330
|
+
"mercury_request_send_money"
|
|
5331
|
+
];
|
|
5332
|
+
function mercuryIntegration(options) {
|
|
5333
|
+
if (!options.apiKey) {
|
|
5334
|
+
throw new Error("mercuryIntegration requires an apiKey");
|
|
5335
|
+
}
|
|
5336
|
+
return {
|
|
5337
|
+
id: "mercury",
|
|
5338
|
+
name: "Mercury",
|
|
5339
|
+
tools: [...MERCURY_TOOLS],
|
|
5340
|
+
authType: "apiKey",
|
|
5341
|
+
getHeaders() {
|
|
5342
|
+
return {
|
|
5343
|
+
Authorization: `Bearer ${options.apiKey}`
|
|
5344
|
+
};
|
|
5147
5345
|
}
|
|
5148
5346
|
};
|
|
5149
5347
|
}
|
|
@@ -5161,7 +5359,7 @@ function validateStepLimit(stepIndex, maxSteps) {
|
|
|
5161
5359
|
return { valid: true };
|
|
5162
5360
|
}
|
|
5163
5361
|
// src/triggers/webhooks.ts
|
|
5164
|
-
var
|
|
5362
|
+
var logger35 = createLogger("Webhooks", "server");
|
|
5165
5363
|
async function signPayload(payload, secret) {
|
|
5166
5364
|
const encoder = new TextEncoder;
|
|
5167
5365
|
const data = encoder.encode(JSON.stringify(payload));
|
|
@@ -5187,7 +5385,7 @@ async function deliverWebhook(webhook, payload, timeoutMs) {
|
|
|
5187
5385
|
signal: controller.signal
|
|
5188
5386
|
});
|
|
5189
5387
|
if (!response.ok) {
|
|
5190
|
-
|
|
5388
|
+
logger35.warn(`Webhook delivery to ${webhook.url} returned ${response.status}`);
|
|
5191
5389
|
}
|
|
5192
5390
|
} finally {
|
|
5193
5391
|
clearTimeout(timeout);
|
|
@@ -5200,7 +5398,7 @@ async function deliverWebhooks(webhooks, payload, timeoutMs) {
|
|
|
5200
5398
|
for (let i = 0;i < results.length; i++) {
|
|
5201
5399
|
const result = results[i];
|
|
5202
5400
|
if (result.status === "rejected") {
|
|
5203
|
-
|
|
5401
|
+
logger35.warn(`Webhook delivery to ${webhooks[i].url} failed:`, result.reason);
|
|
5204
5402
|
}
|
|
5205
5403
|
}
|
|
5206
5404
|
}
|
|
@@ -5237,7 +5435,7 @@ function createSimpleIntegration(config) {
|
|
|
5237
5435
|
};
|
|
5238
5436
|
}
|
|
5239
5437
|
// src/integrations/word.ts
|
|
5240
|
-
var
|
|
5438
|
+
var logger36 = createLogger("Word");
|
|
5241
5439
|
var WORD_TOOLS = [
|
|
5242
5440
|
"word_list",
|
|
5243
5441
|
"word_get",
|
|
@@ -5263,16 +5461,16 @@ function wordIntegration(config = {}) {
|
|
|
5263
5461
|
tools: [...WORD_TOOLS],
|
|
5264
5462
|
oauth,
|
|
5265
5463
|
async onInit(_client) {
|
|
5266
|
-
|
|
5464
|
+
logger36.debug("Word integration initialized");
|
|
5267
5465
|
},
|
|
5268
5466
|
async onAfterConnect(_client) {
|
|
5269
|
-
|
|
5467
|
+
logger36.debug("Word integration connected");
|
|
5270
5468
|
}
|
|
5271
5469
|
};
|
|
5272
5470
|
}
|
|
5273
5471
|
|
|
5274
5472
|
// src/integrations/excel.ts
|
|
5275
|
-
var
|
|
5473
|
+
var logger37 = createLogger("Excel");
|
|
5276
5474
|
var EXCEL_TOOLS = [
|
|
5277
5475
|
"excel_list",
|
|
5278
5476
|
"excel_get",
|
|
@@ -5308,16 +5506,16 @@ function excelIntegration(config = {}) {
|
|
|
5308
5506
|
tools: [...EXCEL_TOOLS],
|
|
5309
5507
|
oauth,
|
|
5310
5508
|
async onInit(_client) {
|
|
5311
|
-
|
|
5509
|
+
logger37.debug("Excel integration initialized");
|
|
5312
5510
|
},
|
|
5313
5511
|
async onAfterConnect(_client) {
|
|
5314
|
-
|
|
5512
|
+
logger37.debug("Excel integration connected");
|
|
5315
5513
|
}
|
|
5316
5514
|
};
|
|
5317
5515
|
}
|
|
5318
5516
|
|
|
5319
5517
|
// src/integrations/powerpoint.ts
|
|
5320
|
-
var
|
|
5518
|
+
var logger38 = createLogger("PowerPoint");
|
|
5321
5519
|
var POWERPOINT_TOOLS = [
|
|
5322
5520
|
"powerpoint_list",
|
|
5323
5521
|
"powerpoint_get",
|
|
@@ -5343,16 +5541,16 @@ function powerpointIntegration(config = {}) {
|
|
|
5343
5541
|
tools: [...POWERPOINT_TOOLS],
|
|
5344
5542
|
oauth,
|
|
5345
5543
|
async onInit(_client) {
|
|
5346
|
-
|
|
5544
|
+
logger38.debug("PowerPoint integration initialized");
|
|
5347
5545
|
},
|
|
5348
5546
|
async onAfterConnect(_client) {
|
|
5349
|
-
|
|
5547
|
+
logger38.debug("PowerPoint integration connected");
|
|
5350
5548
|
}
|
|
5351
5549
|
};
|
|
5352
5550
|
}
|
|
5353
5551
|
|
|
5354
5552
|
// src/integrations/gdrive.ts
|
|
5355
|
-
var
|
|
5553
|
+
var logger39 = createLogger("Google Drive");
|
|
5356
5554
|
var GDRIVE_TOOLS = [
|
|
5357
5555
|
"gdrive_list_files",
|
|
5358
5556
|
"gdrive_get_file",
|
|
@@ -5386,10 +5584,10 @@ function gdriveIntegration(config = {}) {
|
|
|
5386
5584
|
tools: [...GDRIVE_TOOLS],
|
|
5387
5585
|
oauth,
|
|
5388
5586
|
async onInit(_client) {
|
|
5389
|
-
|
|
5587
|
+
logger39.debug("Google Drive integration initialized");
|
|
5390
5588
|
},
|
|
5391
5589
|
async onAfterConnect(_client) {
|
|
5392
|
-
|
|
5590
|
+
logger39.debug("Google Drive integration connected");
|
|
5393
5591
|
}
|
|
5394
5592
|
};
|
|
5395
5593
|
}
|
|
@@ -5448,6 +5646,7 @@ export {
|
|
|
5448
5646
|
outlookIntegration,
|
|
5449
5647
|
onedriveIntegration,
|
|
5450
5648
|
notionIntegration,
|
|
5649
|
+
mercuryIntegration,
|
|
5451
5650
|
linearIntegration,
|
|
5452
5651
|
isTokenExpiredError,
|
|
5453
5652
|
isAuthorizationError,
|
|
@@ -5456,6 +5655,7 @@ export {
|
|
|
5456
5655
|
hubspotIntegration,
|
|
5457
5656
|
gslidesIntegration,
|
|
5458
5657
|
gsheetsIntegration,
|
|
5658
|
+
granolaIntegration,
|
|
5459
5659
|
gmailIntegration,
|
|
5460
5660
|
githubIntegration,
|
|
5461
5661
|
genericOAuthIntegration,
|
|
@@ -5467,6 +5667,7 @@ export {
|
|
|
5467
5667
|
gcalIntegration,
|
|
5468
5668
|
fromNodeHeaders,
|
|
5469
5669
|
figmaIntegration,
|
|
5670
|
+
dropboxIntegration,
|
|
5470
5671
|
deliverWebhooks,
|
|
5471
5672
|
cursorIntegration,
|
|
5472
5673
|
createTanStackOAuthHandler,
|