integrate-sdk 0.9.4-dev.0 → 0.9.8-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/auto-routes.js +76 -16
- package/dist/adapters/index.js +76 -16
- package/dist/adapters/nextjs.js +76 -16
- package/dist/adapters/node.js +76 -16
- package/dist/adapters/svelte-kit.js +76 -16
- package/dist/adapters/tanstack-start.js +76 -16
- package/dist/ai/anthropic.d.ts +2 -2
- package/dist/ai/anthropic.d.ts.map +1 -1
- package/dist/ai/anthropic.js +45 -9
- package/dist/ai/google.d.ts +2 -2
- package/dist/ai/google.d.ts.map +1 -1
- package/dist/ai/google.js +45 -9
- package/dist/ai/index.js +51 -15
- package/dist/ai/openai.d.ts +2 -2
- package/dist/ai/openai.d.ts.map +1 -1
- package/dist/ai/openai.js +45 -9
- package/dist/ai/trigger-tools.d.ts +7 -7
- package/dist/ai/trigger-tools.js +7 -7
- package/dist/ai/vercel-ai.d.ts +2 -2
- package/dist/ai/vercel-ai.d.ts.map +1 -1
- package/dist/ai/vercel-ai.js +45 -9
- package/dist/code-mode/executor.d.ts +5 -0
- package/dist/code-mode/executor.d.ts.map +1 -1
- package/dist/code-mode/executor.js +35 -0
- package/dist/code-mode/index.d.ts +1 -1
- package/dist/code-mode/index.d.ts.map +1 -1
- package/dist/code-mode/index.js +43 -0
- 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 +2 -0
- package/dist/code-mode/tool-builder.d.ts +1 -0
- package/dist/code-mode/tool-builder.d.ts.map +1 -1
- package/dist/code-mode/tool-builder.js +43 -0
- package/dist/index.js +76 -16
- package/dist/oauth.js +76 -16
- package/dist/server.js +76 -16
- package/dist/src/ai/anthropic.d.ts +2 -2
- package/dist/src/ai/anthropic.d.ts.map +1 -1
- package/dist/src/ai/google.d.ts +2 -2
- package/dist/src/ai/google.d.ts.map +1 -1
- package/dist/src/ai/openai.d.ts +2 -2
- package/dist/src/ai/openai.d.ts.map +1 -1
- package/dist/src/ai/trigger-tools.d.ts +7 -7
- package/dist/src/ai/vercel-ai.d.ts +2 -2
- package/dist/src/ai/vercel-ai.d.ts.map +1 -1
- package/dist/src/code-mode/executor.d.ts +5 -0
- package/dist/src/code-mode/executor.d.ts.map +1 -1
- package/dist/src/code-mode/index.d.ts +1 -1
- package/dist/src/code-mode/index.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/code-mode/tool-builder.d.ts +1 -0
- package/dist/src/code-mode/tool-builder.d.ts.map +1 -1
- package/dist/src/server.d.ts.map +1 -1
- package/package.json +3 -6
|
@@ -8173,7 +8173,7 @@ var init_utils2 = __esm(() => {
|
|
|
8173
8173
|
function createTriggerTools(config, context) {
|
|
8174
8174
|
const { callbacks } = config;
|
|
8175
8175
|
return {
|
|
8176
|
-
|
|
8176
|
+
trigger_create: {
|
|
8177
8177
|
description: "Schedule a tool to run at a specific time or on a recurring schedule. Use this when the user wants to do something later.",
|
|
8178
8178
|
inputSchema: exports_external.object({
|
|
8179
8179
|
name: exports_external.string().optional().describe("Human-readable trigger name"),
|
|
@@ -8207,7 +8207,7 @@ function createTriggerTools(config, context) {
|
|
|
8207
8207
|
return callbacks.create(trigger, context);
|
|
8208
8208
|
}
|
|
8209
8209
|
},
|
|
8210
|
-
|
|
8210
|
+
trigger_list: {
|
|
8211
8211
|
description: "List all scheduled triggers with optional filtering by status or tool name",
|
|
8212
8212
|
inputSchema: exports_external.object({
|
|
8213
8213
|
status: exports_external.enum(["active", "paused", "completed", "failed"]).optional().describe("Filter by trigger status"),
|
|
@@ -8231,7 +8231,7 @@ function createTriggerTools(config, context) {
|
|
|
8231
8231
|
};
|
|
8232
8232
|
}
|
|
8233
8233
|
},
|
|
8234
|
-
|
|
8234
|
+
trigger_get: {
|
|
8235
8235
|
description: "Get details of a specific trigger by its ID",
|
|
8236
8236
|
inputSchema: exports_external.object({
|
|
8237
8237
|
triggerId: exports_external.string().describe("The trigger ID to retrieve")
|
|
@@ -8244,7 +8244,7 @@ function createTriggerTools(config, context) {
|
|
|
8244
8244
|
return trigger;
|
|
8245
8245
|
}
|
|
8246
8246
|
},
|
|
8247
|
-
|
|
8247
|
+
trigger_update: {
|
|
8248
8248
|
description: "Update a trigger's properties like name, description, arguments, or schedule",
|
|
8249
8249
|
inputSchema: exports_external.object({
|
|
8250
8250
|
triggerId: exports_external.string().describe("The trigger ID to update"),
|
|
@@ -8271,7 +8271,7 @@ function createTriggerTools(config, context) {
|
|
|
8271
8271
|
return callbacks.update(triggerId, updatesWithTimestamp, context);
|
|
8272
8272
|
}
|
|
8273
8273
|
},
|
|
8274
|
-
|
|
8274
|
+
trigger_delete: {
|
|
8275
8275
|
description: "Delete a trigger permanently. This cannot be undone.",
|
|
8276
8276
|
inputSchema: exports_external.object({
|
|
8277
8277
|
triggerId: exports_external.string().describe("The trigger ID to delete")
|
|
@@ -8281,7 +8281,7 @@ function createTriggerTools(config, context) {
|
|
|
8281
8281
|
return { success: true, message: `Trigger ${args.triggerId} deleted` };
|
|
8282
8282
|
}
|
|
8283
8283
|
},
|
|
8284
|
-
|
|
8284
|
+
trigger_pause: {
|
|
8285
8285
|
description: "Pause a trigger to temporarily stop it from executing. Can be resumed later.",
|
|
8286
8286
|
inputSchema: exports_external.object({
|
|
8287
8287
|
triggerId: exports_external.string().describe("The trigger ID to pause")
|
|
@@ -8301,7 +8301,7 @@ function createTriggerTools(config, context) {
|
|
|
8301
8301
|
}, context);
|
|
8302
8302
|
}
|
|
8303
8303
|
},
|
|
8304
|
-
|
|
8304
|
+
trigger_resume: {
|
|
8305
8305
|
description: "Resume a paused trigger to start executing it again on schedule",
|
|
8306
8306
|
inputSchema: exports_external.object({
|
|
8307
8307
|
triggerId: exports_external.string().describe("The trigger ID to resume")
|
|
@@ -8541,6 +8541,7 @@ var init_type_generator = __esm(() => {
|
|
|
8541
8541
|
var RUNTIME_STUB_SOURCE = `// runtime.mjs — generated by integrate-sdk code mode
|
|
8542
8542
|
const MCP_URL = process.env.INTEGRATE_MCP_URL;
|
|
8543
8543
|
const SESSION_TOKEN = process.env.INTEGRATE_SESSION_TOKEN;
|
|
8544
|
+
const API_KEY = process.env.INTEGRATE_API_KEY || '';
|
|
8544
8545
|
const PROVIDER_TOKENS = process.env.INTEGRATE_PROVIDER_TOKENS || '';
|
|
8545
8546
|
const INTEGRATIONS_HEADER = process.env.INTEGRATE_INTEGRATIONS || '';
|
|
8546
8547
|
const CONTEXT_JSON = process.env.INTEGRATE_CONTEXT || '';
|
|
@@ -8559,6 +8560,7 @@ async function callTool(toolName, args) {
|
|
|
8559
8560
|
'x-integrate-code-mode': '1',
|
|
8560
8561
|
};
|
|
8561
8562
|
if (SESSION_TOKEN) headers['Authorization'] = 'Bearer ' + SESSION_TOKEN;
|
|
8563
|
+
if (API_KEY) headers['x-integrate-api-key'] = API_KEY;
|
|
8562
8564
|
if (PROVIDER_TOKENS) headers['x-integrate-tokens'] = PROVIDER_TOKENS;
|
|
8563
8565
|
if (INTEGRATIONS_HEADER) headers['x-integrations'] = INTEGRATIONS_HEADER;
|
|
8564
8566
|
if (CONTEXT_JSON) headers['x-integrate-context'] = CONTEXT_JSON;
|
|
@@ -8610,11 +8612,40 @@ export { callTool };
|
|
|
8610
8612
|
// ../code-mode/executor.ts
|
|
8611
8613
|
var exports_executor = {};
|
|
8612
8614
|
__export(exports_executor, {
|
|
8615
|
+
isSandboxAvailable: () => isSandboxAvailable,
|
|
8613
8616
|
executeSandboxCode: () => executeSandboxCode,
|
|
8617
|
+
__setSandboxUnavailableForTests: () => __setSandboxUnavailableForTests,
|
|
8614
8618
|
__setSandboxFactoryForTests: () => __setSandboxFactoryForTests
|
|
8615
8619
|
});
|
|
8616
8620
|
function __setSandboxFactoryForTests(factory) {
|
|
8617
8621
|
sandboxFactoryOverride = factory;
|
|
8622
|
+
_sandboxForcedUnavailableForTests = false;
|
|
8623
|
+
_sandboxAvailableCache = null;
|
|
8624
|
+
}
|
|
8625
|
+
function __setSandboxUnavailableForTests(force) {
|
|
8626
|
+
_sandboxForcedUnavailableForTests = force;
|
|
8627
|
+
_sandboxAvailableCache = null;
|
|
8628
|
+
}
|
|
8629
|
+
async function isSandboxAvailable() {
|
|
8630
|
+
if (_sandboxAvailableCache !== null)
|
|
8631
|
+
return _sandboxAvailableCache;
|
|
8632
|
+
if (_sandboxForcedUnavailableForTests) {
|
|
8633
|
+
_sandboxAvailableCache = false;
|
|
8634
|
+
return false;
|
|
8635
|
+
}
|
|
8636
|
+
if (sandboxFactoryOverride) {
|
|
8637
|
+
_sandboxAvailableCache = true;
|
|
8638
|
+
return true;
|
|
8639
|
+
}
|
|
8640
|
+
try {
|
|
8641
|
+
const dynamicImport = new Function("specifier", "return import(specifier)");
|
|
8642
|
+
await dynamicImport("@" + "vercel/sandbox");
|
|
8643
|
+
_sandboxAvailableCache = true;
|
|
8644
|
+
return true;
|
|
8645
|
+
} catch {
|
|
8646
|
+
_sandboxAvailableCache = false;
|
|
8647
|
+
return false;
|
|
8648
|
+
}
|
|
8618
8649
|
}
|
|
8619
8650
|
async function loadSandboxFactory() {
|
|
8620
8651
|
if (sandboxFactoryOverride)
|
|
@@ -8701,6 +8732,8 @@ async function executeSandboxCode(options) {
|
|
|
8701
8732
|
const env = {
|
|
8702
8733
|
INTEGRATE_MCP_URL: options.mcpUrl
|
|
8703
8734
|
};
|
|
8735
|
+
if (options.apiKey)
|
|
8736
|
+
env.INTEGRATE_API_KEY = options.apiKey;
|
|
8704
8737
|
if (options.sessionToken)
|
|
8705
8738
|
env.INTEGRATE_SESSION_TOKEN = options.sessionToken;
|
|
8706
8739
|
if (options.providerTokens && Object.keys(options.providerTokens).length > 0) {
|
|
@@ -8743,7 +8776,7 @@ async function executeSandboxCode(options) {
|
|
|
8743
8776
|
}
|
|
8744
8777
|
}
|
|
8745
8778
|
}
|
|
8746
|
-
var sandboxFactoryOverride = null, RESULT_SENTINEL = "__INTEGRATE_RESULT__";
|
|
8779
|
+
var sandboxFactoryOverride = null, _sandboxAvailableCache = null, _sandboxForcedUnavailableForTests = false, RESULT_SENTINEL = "__INTEGRATE_RESULT__";
|
|
8747
8780
|
var init_executor = () => {};
|
|
8748
8781
|
|
|
8749
8782
|
// ../code-mode/tool-builder.ts
|
|
@@ -8751,6 +8784,13 @@ function resolveCodeModeClientConfig(client) {
|
|
|
8751
8784
|
const oauthConfig = client.__oauthConfig;
|
|
8752
8785
|
return oauthConfig?.codeMode ?? {};
|
|
8753
8786
|
}
|
|
8787
|
+
async function canUseCodeMode(client) {
|
|
8788
|
+
if (!await isSandboxAvailable())
|
|
8789
|
+
return false;
|
|
8790
|
+
const serverConfig = resolveCodeModeClientConfig(client);
|
|
8791
|
+
const publicUrl = serverConfig.publicUrl ?? getEnv("INTEGRATE_PUBLIC_URL");
|
|
8792
|
+
return !!publicUrl;
|
|
8793
|
+
}
|
|
8754
8794
|
function buildCodeModeTool(client, options) {
|
|
8755
8795
|
const { tools, providerTokens, context, integrationIds } = options;
|
|
8756
8796
|
const generated = generateCodeModeTypes(tools);
|
|
@@ -8763,6 +8803,7 @@ ${generated.source}
|
|
|
8763
8803
|
\`\`\``;
|
|
8764
8804
|
const execute = async ({ code }) => {
|
|
8765
8805
|
const publicUrl = sandboxOverrides.publicUrl ?? serverCodeModeConfig.publicUrl ?? getEnv("INTEGRATE_PUBLIC_URL");
|
|
8806
|
+
const apiKey = client.__oauthConfig?.apiKey;
|
|
8766
8807
|
if (!publicUrl) {
|
|
8767
8808
|
return {
|
|
8768
8809
|
success: false,
|
|
@@ -8777,6 +8818,7 @@ ${generated.source}
|
|
|
8777
8818
|
return executeSandboxCode({
|
|
8778
8819
|
code,
|
|
8779
8820
|
mcpUrl,
|
|
8821
|
+
apiKey,
|
|
8780
8822
|
providerTokens,
|
|
8781
8823
|
context,
|
|
8782
8824
|
integrationsHeader: integrationIds && integrationIds.length > 0 ? integrationIds.join(",") : undefined,
|
|
@@ -8854,8 +8896,8 @@ async function getVercelAITools(client, options) {
|
|
|
8854
8896
|
await ensureClientConnected(client);
|
|
8855
8897
|
const mcpTools = await client.getEnabledToolsAsync();
|
|
8856
8898
|
const vercelTools = {};
|
|
8857
|
-
const
|
|
8858
|
-
if (
|
|
8899
|
+
const effectiveMode = options?.mode !== undefined ? options.mode : await canUseCodeMode(client) ? "code" : "tools";
|
|
8900
|
+
if (effectiveMode === "code") {
|
|
8859
8901
|
const codeTool = buildCodeModeTool(client, {
|
|
8860
8902
|
tools: mcpTools,
|
|
8861
8903
|
providerTokens,
|
|
@@ -10313,8 +10355,8 @@ async function getOpenAITools(client, options) {
|
|
|
10313
10355
|
const finalOptions = providerTokens ? { ...options, providerTokens } : options;
|
|
10314
10356
|
await ensureClientConnected(client);
|
|
10315
10357
|
const mcpTools = await client.getEnabledToolsAsync();
|
|
10316
|
-
const
|
|
10317
|
-
const openaiTools =
|
|
10358
|
+
const effectiveMode = options?.mode !== undefined ? options.mode : await canUseCodeMode(client) ? "code" : "tools";
|
|
10359
|
+
const openaiTools = effectiveMode === "code" ? (() => {
|
|
10318
10360
|
const codeTool = buildCodeModeTool(client, {
|
|
10319
10361
|
tools: mcpTools,
|
|
10320
10362
|
providerTokens,
|
|
@@ -10493,8 +10535,8 @@ async function getAnthropicTools(client, options) {
|
|
|
10493
10535
|
const finalOptions = providerTokens ? { ...options, providerTokens } : options;
|
|
10494
10536
|
await ensureClientConnected(client);
|
|
10495
10537
|
const mcpTools = await client.getEnabledToolsAsync();
|
|
10496
|
-
const
|
|
10497
|
-
const anthropicTools =
|
|
10538
|
+
const effectiveMode = options?.mode !== undefined ? options.mode : await canUseCodeMode(client) ? "code" : "tools";
|
|
10539
|
+
const anthropicTools = effectiveMode === "code" ? (() => {
|
|
10498
10540
|
const codeTool = buildCodeModeTool(client, {
|
|
10499
10541
|
tools: mcpTools,
|
|
10500
10542
|
providerTokens,
|
|
@@ -10682,9 +10724,9 @@ async function getGoogleTools(client, options) {
|
|
|
10682
10724
|
const finalOptions = providerTokens ? { ...options, providerTokens } : options;
|
|
10683
10725
|
await ensureClientConnected(client);
|
|
10684
10726
|
const mcpTools = await client.getEnabledToolsAsync();
|
|
10685
|
-
const
|
|
10727
|
+
const effectiveMode = options?.mode !== undefined ? options.mode : await canUseCodeMode(client) ? "code" : "tools";
|
|
10686
10728
|
let googleTools;
|
|
10687
|
-
if (
|
|
10729
|
+
if (effectiveMode === "code") {
|
|
10688
10730
|
const TypeEnum = await getGoogleType();
|
|
10689
10731
|
const codeTool = buildCodeModeTool(client, {
|
|
10690
10732
|
tools: mcpTools,
|
|
@@ -11231,6 +11273,24 @@ function createMCPServer(config) {
|
|
|
11231
11273
|
} catch {}
|
|
11232
11274
|
}
|
|
11233
11275
|
}
|
|
11276
|
+
if (!authHeader && config.getProviderToken) {
|
|
11277
|
+
const codeModeHeader = webRequest.headers.get("x-integrate-code-mode");
|
|
11278
|
+
const contextHeader = webRequest.headers.get("x-integrate-context");
|
|
11279
|
+
const callbackApiKey = webRequest.headers.get("x-integrate-api-key");
|
|
11280
|
+
const toolName = typeof body?.name === "string" ? body.name : "";
|
|
11281
|
+
if (codeModeHeader === "1" && contextHeader && toolName && config.apiKey && callbackApiKey === config.apiKey) {
|
|
11282
|
+
try {
|
|
11283
|
+
const context2 = JSON.parse(contextHeader);
|
|
11284
|
+
const provider = toolName.split("_")[0];
|
|
11285
|
+
if (provider) {
|
|
11286
|
+
const tokenData = await config.getProviderToken(provider, undefined, context2);
|
|
11287
|
+
if (tokenData?.accessToken) {
|
|
11288
|
+
authHeader = `Bearer ${tokenData.accessToken}`;
|
|
11289
|
+
}
|
|
11290
|
+
}
|
|
11291
|
+
} catch {}
|
|
11292
|
+
}
|
|
11293
|
+
}
|
|
11234
11294
|
const { OAuthHandler } = await Promise.resolve().then(() => (init_base_handler(), exports_base_handler));
|
|
11235
11295
|
const oauthHandler = new OAuthHandler({
|
|
11236
11296
|
providers,
|
package/dist/adapters/index.js
CHANGED
|
@@ -8173,7 +8173,7 @@ var init_utils2 = __esm(() => {
|
|
|
8173
8173
|
function createTriggerTools(config, context) {
|
|
8174
8174
|
const { callbacks } = config;
|
|
8175
8175
|
return {
|
|
8176
|
-
|
|
8176
|
+
trigger_create: {
|
|
8177
8177
|
description: "Schedule a tool to run at a specific time or on a recurring schedule. Use this when the user wants to do something later.",
|
|
8178
8178
|
inputSchema: exports_external.object({
|
|
8179
8179
|
name: exports_external.string().optional().describe("Human-readable trigger name"),
|
|
@@ -8207,7 +8207,7 @@ function createTriggerTools(config, context) {
|
|
|
8207
8207
|
return callbacks.create(trigger, context);
|
|
8208
8208
|
}
|
|
8209
8209
|
},
|
|
8210
|
-
|
|
8210
|
+
trigger_list: {
|
|
8211
8211
|
description: "List all scheduled triggers with optional filtering by status or tool name",
|
|
8212
8212
|
inputSchema: exports_external.object({
|
|
8213
8213
|
status: exports_external.enum(["active", "paused", "completed", "failed"]).optional().describe("Filter by trigger status"),
|
|
@@ -8231,7 +8231,7 @@ function createTriggerTools(config, context) {
|
|
|
8231
8231
|
};
|
|
8232
8232
|
}
|
|
8233
8233
|
},
|
|
8234
|
-
|
|
8234
|
+
trigger_get: {
|
|
8235
8235
|
description: "Get details of a specific trigger by its ID",
|
|
8236
8236
|
inputSchema: exports_external.object({
|
|
8237
8237
|
triggerId: exports_external.string().describe("The trigger ID to retrieve")
|
|
@@ -8244,7 +8244,7 @@ function createTriggerTools(config, context) {
|
|
|
8244
8244
|
return trigger;
|
|
8245
8245
|
}
|
|
8246
8246
|
},
|
|
8247
|
-
|
|
8247
|
+
trigger_update: {
|
|
8248
8248
|
description: "Update a trigger's properties like name, description, arguments, or schedule",
|
|
8249
8249
|
inputSchema: exports_external.object({
|
|
8250
8250
|
triggerId: exports_external.string().describe("The trigger ID to update"),
|
|
@@ -8271,7 +8271,7 @@ function createTriggerTools(config, context) {
|
|
|
8271
8271
|
return callbacks.update(triggerId, updatesWithTimestamp, context);
|
|
8272
8272
|
}
|
|
8273
8273
|
},
|
|
8274
|
-
|
|
8274
|
+
trigger_delete: {
|
|
8275
8275
|
description: "Delete a trigger permanently. This cannot be undone.",
|
|
8276
8276
|
inputSchema: exports_external.object({
|
|
8277
8277
|
triggerId: exports_external.string().describe("The trigger ID to delete")
|
|
@@ -8281,7 +8281,7 @@ function createTriggerTools(config, context) {
|
|
|
8281
8281
|
return { success: true, message: `Trigger ${args.triggerId} deleted` };
|
|
8282
8282
|
}
|
|
8283
8283
|
},
|
|
8284
|
-
|
|
8284
|
+
trigger_pause: {
|
|
8285
8285
|
description: "Pause a trigger to temporarily stop it from executing. Can be resumed later.",
|
|
8286
8286
|
inputSchema: exports_external.object({
|
|
8287
8287
|
triggerId: exports_external.string().describe("The trigger ID to pause")
|
|
@@ -8301,7 +8301,7 @@ function createTriggerTools(config, context) {
|
|
|
8301
8301
|
}, context);
|
|
8302
8302
|
}
|
|
8303
8303
|
},
|
|
8304
|
-
|
|
8304
|
+
trigger_resume: {
|
|
8305
8305
|
description: "Resume a paused trigger to start executing it again on schedule",
|
|
8306
8306
|
inputSchema: exports_external.object({
|
|
8307
8307
|
triggerId: exports_external.string().describe("The trigger ID to resume")
|
|
@@ -8541,6 +8541,7 @@ var init_type_generator = __esm(() => {
|
|
|
8541
8541
|
var RUNTIME_STUB_SOURCE = `// runtime.mjs — generated by integrate-sdk code mode
|
|
8542
8542
|
const MCP_URL = process.env.INTEGRATE_MCP_URL;
|
|
8543
8543
|
const SESSION_TOKEN = process.env.INTEGRATE_SESSION_TOKEN;
|
|
8544
|
+
const API_KEY = process.env.INTEGRATE_API_KEY || '';
|
|
8544
8545
|
const PROVIDER_TOKENS = process.env.INTEGRATE_PROVIDER_TOKENS || '';
|
|
8545
8546
|
const INTEGRATIONS_HEADER = process.env.INTEGRATE_INTEGRATIONS || '';
|
|
8546
8547
|
const CONTEXT_JSON = process.env.INTEGRATE_CONTEXT || '';
|
|
@@ -8559,6 +8560,7 @@ async function callTool(toolName, args) {
|
|
|
8559
8560
|
'x-integrate-code-mode': '1',
|
|
8560
8561
|
};
|
|
8561
8562
|
if (SESSION_TOKEN) headers['Authorization'] = 'Bearer ' + SESSION_TOKEN;
|
|
8563
|
+
if (API_KEY) headers['x-integrate-api-key'] = API_KEY;
|
|
8562
8564
|
if (PROVIDER_TOKENS) headers['x-integrate-tokens'] = PROVIDER_TOKENS;
|
|
8563
8565
|
if (INTEGRATIONS_HEADER) headers['x-integrations'] = INTEGRATIONS_HEADER;
|
|
8564
8566
|
if (CONTEXT_JSON) headers['x-integrate-context'] = CONTEXT_JSON;
|
|
@@ -8610,11 +8612,40 @@ export { callTool };
|
|
|
8610
8612
|
// ../code-mode/executor.ts
|
|
8611
8613
|
var exports_executor = {};
|
|
8612
8614
|
__export(exports_executor, {
|
|
8615
|
+
isSandboxAvailable: () => isSandboxAvailable,
|
|
8613
8616
|
executeSandboxCode: () => executeSandboxCode,
|
|
8617
|
+
__setSandboxUnavailableForTests: () => __setSandboxUnavailableForTests,
|
|
8614
8618
|
__setSandboxFactoryForTests: () => __setSandboxFactoryForTests
|
|
8615
8619
|
});
|
|
8616
8620
|
function __setSandboxFactoryForTests(factory) {
|
|
8617
8621
|
sandboxFactoryOverride = factory;
|
|
8622
|
+
_sandboxForcedUnavailableForTests = false;
|
|
8623
|
+
_sandboxAvailableCache = null;
|
|
8624
|
+
}
|
|
8625
|
+
function __setSandboxUnavailableForTests(force) {
|
|
8626
|
+
_sandboxForcedUnavailableForTests = force;
|
|
8627
|
+
_sandboxAvailableCache = null;
|
|
8628
|
+
}
|
|
8629
|
+
async function isSandboxAvailable() {
|
|
8630
|
+
if (_sandboxAvailableCache !== null)
|
|
8631
|
+
return _sandboxAvailableCache;
|
|
8632
|
+
if (_sandboxForcedUnavailableForTests) {
|
|
8633
|
+
_sandboxAvailableCache = false;
|
|
8634
|
+
return false;
|
|
8635
|
+
}
|
|
8636
|
+
if (sandboxFactoryOverride) {
|
|
8637
|
+
_sandboxAvailableCache = true;
|
|
8638
|
+
return true;
|
|
8639
|
+
}
|
|
8640
|
+
try {
|
|
8641
|
+
const dynamicImport = new Function("specifier", "return import(specifier)");
|
|
8642
|
+
await dynamicImport("@" + "vercel/sandbox");
|
|
8643
|
+
_sandboxAvailableCache = true;
|
|
8644
|
+
return true;
|
|
8645
|
+
} catch {
|
|
8646
|
+
_sandboxAvailableCache = false;
|
|
8647
|
+
return false;
|
|
8648
|
+
}
|
|
8618
8649
|
}
|
|
8619
8650
|
async function loadSandboxFactory() {
|
|
8620
8651
|
if (sandboxFactoryOverride)
|
|
@@ -8701,6 +8732,8 @@ async function executeSandboxCode(options) {
|
|
|
8701
8732
|
const env = {
|
|
8702
8733
|
INTEGRATE_MCP_URL: options.mcpUrl
|
|
8703
8734
|
};
|
|
8735
|
+
if (options.apiKey)
|
|
8736
|
+
env.INTEGRATE_API_KEY = options.apiKey;
|
|
8704
8737
|
if (options.sessionToken)
|
|
8705
8738
|
env.INTEGRATE_SESSION_TOKEN = options.sessionToken;
|
|
8706
8739
|
if (options.providerTokens && Object.keys(options.providerTokens).length > 0) {
|
|
@@ -8743,7 +8776,7 @@ async function executeSandboxCode(options) {
|
|
|
8743
8776
|
}
|
|
8744
8777
|
}
|
|
8745
8778
|
}
|
|
8746
|
-
var sandboxFactoryOverride = null, RESULT_SENTINEL = "__INTEGRATE_RESULT__";
|
|
8779
|
+
var sandboxFactoryOverride = null, _sandboxAvailableCache = null, _sandboxForcedUnavailableForTests = false, RESULT_SENTINEL = "__INTEGRATE_RESULT__";
|
|
8747
8780
|
var init_executor = () => {};
|
|
8748
8781
|
|
|
8749
8782
|
// ../code-mode/tool-builder.ts
|
|
@@ -8751,6 +8784,13 @@ function resolveCodeModeClientConfig(client) {
|
|
|
8751
8784
|
const oauthConfig = client.__oauthConfig;
|
|
8752
8785
|
return oauthConfig?.codeMode ?? {};
|
|
8753
8786
|
}
|
|
8787
|
+
async function canUseCodeMode(client) {
|
|
8788
|
+
if (!await isSandboxAvailable())
|
|
8789
|
+
return false;
|
|
8790
|
+
const serverConfig = resolveCodeModeClientConfig(client);
|
|
8791
|
+
const publicUrl = serverConfig.publicUrl ?? getEnv("INTEGRATE_PUBLIC_URL");
|
|
8792
|
+
return !!publicUrl;
|
|
8793
|
+
}
|
|
8754
8794
|
function buildCodeModeTool(client, options) {
|
|
8755
8795
|
const { tools, providerTokens, context, integrationIds } = options;
|
|
8756
8796
|
const generated = generateCodeModeTypes(tools);
|
|
@@ -8763,6 +8803,7 @@ ${generated.source}
|
|
|
8763
8803
|
\`\`\``;
|
|
8764
8804
|
const execute = async ({ code }) => {
|
|
8765
8805
|
const publicUrl = sandboxOverrides.publicUrl ?? serverCodeModeConfig.publicUrl ?? getEnv("INTEGRATE_PUBLIC_URL");
|
|
8806
|
+
const apiKey = client.__oauthConfig?.apiKey;
|
|
8766
8807
|
if (!publicUrl) {
|
|
8767
8808
|
return {
|
|
8768
8809
|
success: false,
|
|
@@ -8777,6 +8818,7 @@ ${generated.source}
|
|
|
8777
8818
|
return executeSandboxCode({
|
|
8778
8819
|
code,
|
|
8779
8820
|
mcpUrl,
|
|
8821
|
+
apiKey,
|
|
8780
8822
|
providerTokens,
|
|
8781
8823
|
context,
|
|
8782
8824
|
integrationsHeader: integrationIds && integrationIds.length > 0 ? integrationIds.join(",") : undefined,
|
|
@@ -8854,8 +8896,8 @@ async function getVercelAITools(client, options) {
|
|
|
8854
8896
|
await ensureClientConnected(client);
|
|
8855
8897
|
const mcpTools = await client.getEnabledToolsAsync();
|
|
8856
8898
|
const vercelTools = {};
|
|
8857
|
-
const
|
|
8858
|
-
if (
|
|
8899
|
+
const effectiveMode = options?.mode !== undefined ? options.mode : await canUseCodeMode(client) ? "code" : "tools";
|
|
8900
|
+
if (effectiveMode === "code") {
|
|
8859
8901
|
const codeTool = buildCodeModeTool(client, {
|
|
8860
8902
|
tools: mcpTools,
|
|
8861
8903
|
providerTokens,
|
|
@@ -10313,8 +10355,8 @@ async function getOpenAITools(client, options) {
|
|
|
10313
10355
|
const finalOptions = providerTokens ? { ...options, providerTokens } : options;
|
|
10314
10356
|
await ensureClientConnected(client);
|
|
10315
10357
|
const mcpTools = await client.getEnabledToolsAsync();
|
|
10316
|
-
const
|
|
10317
|
-
const openaiTools =
|
|
10358
|
+
const effectiveMode = options?.mode !== undefined ? options.mode : await canUseCodeMode(client) ? "code" : "tools";
|
|
10359
|
+
const openaiTools = effectiveMode === "code" ? (() => {
|
|
10318
10360
|
const codeTool = buildCodeModeTool(client, {
|
|
10319
10361
|
tools: mcpTools,
|
|
10320
10362
|
providerTokens,
|
|
@@ -10493,8 +10535,8 @@ async function getAnthropicTools(client, options) {
|
|
|
10493
10535
|
const finalOptions = providerTokens ? { ...options, providerTokens } : options;
|
|
10494
10536
|
await ensureClientConnected(client);
|
|
10495
10537
|
const mcpTools = await client.getEnabledToolsAsync();
|
|
10496
|
-
const
|
|
10497
|
-
const anthropicTools =
|
|
10538
|
+
const effectiveMode = options?.mode !== undefined ? options.mode : await canUseCodeMode(client) ? "code" : "tools";
|
|
10539
|
+
const anthropicTools = effectiveMode === "code" ? (() => {
|
|
10498
10540
|
const codeTool = buildCodeModeTool(client, {
|
|
10499
10541
|
tools: mcpTools,
|
|
10500
10542
|
providerTokens,
|
|
@@ -10682,9 +10724,9 @@ async function getGoogleTools(client, options) {
|
|
|
10682
10724
|
const finalOptions = providerTokens ? { ...options, providerTokens } : options;
|
|
10683
10725
|
await ensureClientConnected(client);
|
|
10684
10726
|
const mcpTools = await client.getEnabledToolsAsync();
|
|
10685
|
-
const
|
|
10727
|
+
const effectiveMode = options?.mode !== undefined ? options.mode : await canUseCodeMode(client) ? "code" : "tools";
|
|
10686
10728
|
let googleTools;
|
|
10687
|
-
if (
|
|
10729
|
+
if (effectiveMode === "code") {
|
|
10688
10730
|
const TypeEnum = await getGoogleType();
|
|
10689
10731
|
const codeTool = buildCodeModeTool(client, {
|
|
10690
10732
|
tools: mcpTools,
|
|
@@ -11231,6 +11273,24 @@ function createMCPServer(config) {
|
|
|
11231
11273
|
} catch {}
|
|
11232
11274
|
}
|
|
11233
11275
|
}
|
|
11276
|
+
if (!authHeader && config.getProviderToken) {
|
|
11277
|
+
const codeModeHeader = webRequest.headers.get("x-integrate-code-mode");
|
|
11278
|
+
const contextHeader = webRequest.headers.get("x-integrate-context");
|
|
11279
|
+
const callbackApiKey = webRequest.headers.get("x-integrate-api-key");
|
|
11280
|
+
const toolName = typeof body?.name === "string" ? body.name : "";
|
|
11281
|
+
if (codeModeHeader === "1" && contextHeader && toolName && config.apiKey && callbackApiKey === config.apiKey) {
|
|
11282
|
+
try {
|
|
11283
|
+
const context2 = JSON.parse(contextHeader);
|
|
11284
|
+
const provider = toolName.split("_")[0];
|
|
11285
|
+
if (provider) {
|
|
11286
|
+
const tokenData = await config.getProviderToken(provider, undefined, context2);
|
|
11287
|
+
if (tokenData?.accessToken) {
|
|
11288
|
+
authHeader = `Bearer ${tokenData.accessToken}`;
|
|
11289
|
+
}
|
|
11290
|
+
}
|
|
11291
|
+
} catch {}
|
|
11292
|
+
}
|
|
11293
|
+
}
|
|
11234
11294
|
const { OAuthHandler } = await Promise.resolve().then(() => (init_base_handler(), exports_base_handler));
|
|
11235
11295
|
const oauthHandler = new OAuthHandler({
|
|
11236
11296
|
providers,
|