integrate-sdk 0.9.5-dev.0 → 0.9.9-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 +129 -10
- package/dist/adapters/index.js +129 -10
- package/dist/adapters/nextjs.js +129 -10
- package/dist/adapters/node.js +129 -10
- package/dist/adapters/svelte-kit.js +129 -10
- package/dist/adapters/tanstack-start.js +129 -10
- package/dist/ai/anthropic.d.ts +2 -2
- package/dist/ai/anthropic.d.ts.map +1 -1
- package/dist/ai/anthropic.js +64 -2
- package/dist/ai/google.d.ts +2 -2
- package/dist/ai/google.d.ts.map +1 -1
- package/dist/ai/google.js +64 -2
- package/dist/ai/index.js +103 -8
- package/dist/ai/openai.d.ts +2 -2
- package/dist/ai/openai.d.ts.map +1 -1
- package/dist/ai/openai.js +64 -2
- 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 +64 -2
- 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 +64 -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 +17 -0
- package/dist/code-mode/tool-builder.d.ts.map +1 -1
- package/dist/code-mode/tool-builder.js +67 -0
- package/dist/index.js +129 -10
- package/dist/oauth.js +129 -10
- package/dist/server.js +129 -10
- 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/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 +17 -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
package/dist/ai/google.js
CHANGED
|
@@ -4621,6 +4621,7 @@ function pascalCase(id) {
|
|
|
4621
4621
|
var RUNTIME_STUB_SOURCE = `// runtime.mjs — generated by integrate-sdk code mode
|
|
4622
4622
|
const MCP_URL = process.env.INTEGRATE_MCP_URL;
|
|
4623
4623
|
const SESSION_TOKEN = process.env.INTEGRATE_SESSION_TOKEN;
|
|
4624
|
+
const API_KEY = process.env.INTEGRATE_API_KEY || '';
|
|
4624
4625
|
const PROVIDER_TOKENS = process.env.INTEGRATE_PROVIDER_TOKENS || '';
|
|
4625
4626
|
const INTEGRATIONS_HEADER = process.env.INTEGRATE_INTEGRATIONS || '';
|
|
4626
4627
|
const CONTEXT_JSON = process.env.INTEGRATE_CONTEXT || '';
|
|
@@ -4639,6 +4640,7 @@ async function callTool(toolName, args) {
|
|
|
4639
4640
|
'x-integrate-code-mode': '1',
|
|
4640
4641
|
};
|
|
4641
4642
|
if (SESSION_TOKEN) headers['Authorization'] = 'Bearer ' + SESSION_TOKEN;
|
|
4643
|
+
if (API_KEY) headers['x-integrate-api-key'] = API_KEY;
|
|
4642
4644
|
if (PROVIDER_TOKENS) headers['x-integrate-tokens'] = PROVIDER_TOKENS;
|
|
4643
4645
|
if (INTEGRATIONS_HEADER) headers['x-integrations'] = INTEGRATIONS_HEADER;
|
|
4644
4646
|
if (CONTEXT_JSON) headers['x-integrate-context'] = CONTEXT_JSON;
|
|
@@ -4689,6 +4691,29 @@ export { callTool };
|
|
|
4689
4691
|
|
|
4690
4692
|
// ../code-mode/executor.ts
|
|
4691
4693
|
var sandboxFactoryOverride = null;
|
|
4694
|
+
var _sandboxAvailableCache = null;
|
|
4695
|
+
var _sandboxForcedUnavailableForTests = false;
|
|
4696
|
+
async function isSandboxAvailable() {
|
|
4697
|
+
if (_sandboxAvailableCache !== null)
|
|
4698
|
+
return _sandboxAvailableCache;
|
|
4699
|
+
if (_sandboxForcedUnavailableForTests) {
|
|
4700
|
+
_sandboxAvailableCache = false;
|
|
4701
|
+
return false;
|
|
4702
|
+
}
|
|
4703
|
+
if (sandboxFactoryOverride) {
|
|
4704
|
+
_sandboxAvailableCache = true;
|
|
4705
|
+
return true;
|
|
4706
|
+
}
|
|
4707
|
+
try {
|
|
4708
|
+
const dynamicImport = new Function("specifier", "return import(specifier)");
|
|
4709
|
+
await dynamicImport("@" + "vercel/sandbox");
|
|
4710
|
+
_sandboxAvailableCache = true;
|
|
4711
|
+
return true;
|
|
4712
|
+
} catch {
|
|
4713
|
+
_sandboxAvailableCache = false;
|
|
4714
|
+
return false;
|
|
4715
|
+
}
|
|
4716
|
+
}
|
|
4692
4717
|
async function loadSandboxFactory() {
|
|
4693
4718
|
if (sandboxFactoryOverride)
|
|
4694
4719
|
return sandboxFactoryOverride;
|
|
@@ -4775,6 +4800,8 @@ async function executeSandboxCode(options) {
|
|
|
4775
4800
|
const env = {
|
|
4776
4801
|
INTEGRATE_MCP_URL: options.mcpUrl
|
|
4777
4802
|
};
|
|
4803
|
+
if (options.apiKey)
|
|
4804
|
+
env.INTEGRATE_API_KEY = options.apiKey;
|
|
4778
4805
|
if (options.sessionToken)
|
|
4779
4806
|
env.INTEGRATE_SESSION_TOKEN = options.sessionToken;
|
|
4780
4807
|
if (options.providerTokens && Object.keys(options.providerTokens).length > 0) {
|
|
@@ -4866,6 +4893,28 @@ function resolveCodeModeClientConfig(client) {
|
|
|
4866
4893
|
const oauthConfig = client.__oauthConfig;
|
|
4867
4894
|
return oauthConfig?.codeMode ?? {};
|
|
4868
4895
|
}
|
|
4896
|
+
async function diagnoseCodeMode(client) {
|
|
4897
|
+
if (!await isSandboxAvailable()) {
|
|
4898
|
+
return { available: false, reason: "sandbox-missing" };
|
|
4899
|
+
}
|
|
4900
|
+
const serverConfig = resolveCodeModeClientConfig(client);
|
|
4901
|
+
const publicUrl = serverConfig.publicUrl ?? getEnv("INTEGRATE_PUBLIC_URL");
|
|
4902
|
+
if (!publicUrl) {
|
|
4903
|
+
return { available: false, reason: "no-public-url" };
|
|
4904
|
+
}
|
|
4905
|
+
return { available: true };
|
|
4906
|
+
}
|
|
4907
|
+
var CODE_MODE_UNAVAILABLE_MESSAGES = {
|
|
4908
|
+
"sandbox-missing": "[integrate-sdk] Code Mode unavailable (reason: sandbox-missing) — falling back to tool mode. " + "Install `@vercel/sandbox` (e.g. `bun add @vercel/sandbox`) to enable Code Mode.",
|
|
4909
|
+
"no-public-url": "[integrate-sdk] Code Mode unavailable (reason: no-public-url) — falling back to tool mode. " + "Set `codeMode.publicUrl` on your server config or the `INTEGRATE_PUBLIC_URL` env var."
|
|
4910
|
+
};
|
|
4911
|
+
var warnedCodeModeReasons = new Set;
|
|
4912
|
+
function warnCodeModeFallback(reason) {
|
|
4913
|
+
if (warnedCodeModeReasons.has(reason))
|
|
4914
|
+
return;
|
|
4915
|
+
warnedCodeModeReasons.add(reason);
|
|
4916
|
+
console.warn(CODE_MODE_UNAVAILABLE_MESSAGES[reason]);
|
|
4917
|
+
}
|
|
4869
4918
|
function buildCodeModeTool(client, options) {
|
|
4870
4919
|
const { tools, providerTokens, context, integrationIds } = options;
|
|
4871
4920
|
const generated = generateCodeModeTypes(tools);
|
|
@@ -4878,6 +4927,7 @@ ${generated.source}
|
|
|
4878
4927
|
\`\`\``;
|
|
4879
4928
|
const execute = async ({ code }) => {
|
|
4880
4929
|
const publicUrl = sandboxOverrides.publicUrl ?? serverCodeModeConfig.publicUrl ?? getEnv("INTEGRATE_PUBLIC_URL");
|
|
4930
|
+
const apiKey = client.__oauthConfig?.apiKey;
|
|
4881
4931
|
if (!publicUrl) {
|
|
4882
4932
|
return {
|
|
4883
4933
|
success: false,
|
|
@@ -4892,6 +4942,7 @@ ${generated.source}
|
|
|
4892
4942
|
return executeSandboxCode({
|
|
4893
4943
|
code,
|
|
4894
4944
|
mcpUrl,
|
|
4945
|
+
apiKey,
|
|
4895
4946
|
providerTokens,
|
|
4896
4947
|
context,
|
|
4897
4948
|
integrationsHeader: integrationIds && integrationIds.length > 0 ? integrationIds.join(",") : undefined,
|
|
@@ -5043,9 +5094,20 @@ async function getGoogleTools(client, options) {
|
|
|
5043
5094
|
const finalOptions = providerTokens ? { ...options, providerTokens } : options;
|
|
5044
5095
|
await ensureClientConnected(client);
|
|
5045
5096
|
const mcpTools = await client.getEnabledToolsAsync();
|
|
5046
|
-
|
|
5097
|
+
let effectiveMode;
|
|
5098
|
+
if (options?.mode !== undefined) {
|
|
5099
|
+
effectiveMode = options.mode;
|
|
5100
|
+
} else {
|
|
5101
|
+
const diagnosis = await diagnoseCodeMode(client);
|
|
5102
|
+
if (diagnosis.available) {
|
|
5103
|
+
effectiveMode = "code";
|
|
5104
|
+
} else {
|
|
5105
|
+
warnCodeModeFallback(diagnosis.reason);
|
|
5106
|
+
effectiveMode = "tools";
|
|
5107
|
+
}
|
|
5108
|
+
}
|
|
5047
5109
|
let googleTools;
|
|
5048
|
-
if (
|
|
5110
|
+
if (effectiveMode === "code") {
|
|
5049
5111
|
const TypeEnum = await getGoogleType();
|
|
5050
5112
|
const codeTool = buildCodeModeTool(client, {
|
|
5051
5113
|
tools: mcpTools,
|
package/dist/ai/index.js
CHANGED
|
@@ -4621,6 +4621,7 @@ function pascalCase(id) {
|
|
|
4621
4621
|
var RUNTIME_STUB_SOURCE = `// runtime.mjs — generated by integrate-sdk code mode
|
|
4622
4622
|
const MCP_URL = process.env.INTEGRATE_MCP_URL;
|
|
4623
4623
|
const SESSION_TOKEN = process.env.INTEGRATE_SESSION_TOKEN;
|
|
4624
|
+
const API_KEY = process.env.INTEGRATE_API_KEY || '';
|
|
4624
4625
|
const PROVIDER_TOKENS = process.env.INTEGRATE_PROVIDER_TOKENS || '';
|
|
4625
4626
|
const INTEGRATIONS_HEADER = process.env.INTEGRATE_INTEGRATIONS || '';
|
|
4626
4627
|
const CONTEXT_JSON = process.env.INTEGRATE_CONTEXT || '';
|
|
@@ -4639,6 +4640,7 @@ async function callTool(toolName, args) {
|
|
|
4639
4640
|
'x-integrate-code-mode': '1',
|
|
4640
4641
|
};
|
|
4641
4642
|
if (SESSION_TOKEN) headers['Authorization'] = 'Bearer ' + SESSION_TOKEN;
|
|
4643
|
+
if (API_KEY) headers['x-integrate-api-key'] = API_KEY;
|
|
4642
4644
|
if (PROVIDER_TOKENS) headers['x-integrate-tokens'] = PROVIDER_TOKENS;
|
|
4643
4645
|
if (INTEGRATIONS_HEADER) headers['x-integrations'] = INTEGRATIONS_HEADER;
|
|
4644
4646
|
if (CONTEXT_JSON) headers['x-integrate-context'] = CONTEXT_JSON;
|
|
@@ -4689,6 +4691,29 @@ export { callTool };
|
|
|
4689
4691
|
|
|
4690
4692
|
// ../code-mode/executor.ts
|
|
4691
4693
|
var sandboxFactoryOverride = null;
|
|
4694
|
+
var _sandboxAvailableCache = null;
|
|
4695
|
+
var _sandboxForcedUnavailableForTests = false;
|
|
4696
|
+
async function isSandboxAvailable() {
|
|
4697
|
+
if (_sandboxAvailableCache !== null)
|
|
4698
|
+
return _sandboxAvailableCache;
|
|
4699
|
+
if (_sandboxForcedUnavailableForTests) {
|
|
4700
|
+
_sandboxAvailableCache = false;
|
|
4701
|
+
return false;
|
|
4702
|
+
}
|
|
4703
|
+
if (sandboxFactoryOverride) {
|
|
4704
|
+
_sandboxAvailableCache = true;
|
|
4705
|
+
return true;
|
|
4706
|
+
}
|
|
4707
|
+
try {
|
|
4708
|
+
const dynamicImport = new Function("specifier", "return import(specifier)");
|
|
4709
|
+
await dynamicImport("@" + "vercel/sandbox");
|
|
4710
|
+
_sandboxAvailableCache = true;
|
|
4711
|
+
return true;
|
|
4712
|
+
} catch {
|
|
4713
|
+
_sandboxAvailableCache = false;
|
|
4714
|
+
return false;
|
|
4715
|
+
}
|
|
4716
|
+
}
|
|
4692
4717
|
async function loadSandboxFactory() {
|
|
4693
4718
|
if (sandboxFactoryOverride)
|
|
4694
4719
|
return sandboxFactoryOverride;
|
|
@@ -4775,6 +4800,8 @@ async function executeSandboxCode(options) {
|
|
|
4775
4800
|
const env = {
|
|
4776
4801
|
INTEGRATE_MCP_URL: options.mcpUrl
|
|
4777
4802
|
};
|
|
4803
|
+
if (options.apiKey)
|
|
4804
|
+
env.INTEGRATE_API_KEY = options.apiKey;
|
|
4778
4805
|
if (options.sessionToken)
|
|
4779
4806
|
env.INTEGRATE_SESSION_TOKEN = options.sessionToken;
|
|
4780
4807
|
if (options.providerTokens && Object.keys(options.providerTokens).length > 0) {
|
|
@@ -4866,6 +4893,28 @@ function resolveCodeModeClientConfig(client) {
|
|
|
4866
4893
|
const oauthConfig = client.__oauthConfig;
|
|
4867
4894
|
return oauthConfig?.codeMode ?? {};
|
|
4868
4895
|
}
|
|
4896
|
+
async function diagnoseCodeMode(client) {
|
|
4897
|
+
if (!await isSandboxAvailable()) {
|
|
4898
|
+
return { available: false, reason: "sandbox-missing" };
|
|
4899
|
+
}
|
|
4900
|
+
const serverConfig = resolveCodeModeClientConfig(client);
|
|
4901
|
+
const publicUrl = serverConfig.publicUrl ?? getEnv("INTEGRATE_PUBLIC_URL");
|
|
4902
|
+
if (!publicUrl) {
|
|
4903
|
+
return { available: false, reason: "no-public-url" };
|
|
4904
|
+
}
|
|
4905
|
+
return { available: true };
|
|
4906
|
+
}
|
|
4907
|
+
var CODE_MODE_UNAVAILABLE_MESSAGES = {
|
|
4908
|
+
"sandbox-missing": "[integrate-sdk] Code Mode unavailable (reason: sandbox-missing) — falling back to tool mode. " + "Install `@vercel/sandbox` (e.g. `bun add @vercel/sandbox`) to enable Code Mode.",
|
|
4909
|
+
"no-public-url": "[integrate-sdk] Code Mode unavailable (reason: no-public-url) — falling back to tool mode. " + "Set `codeMode.publicUrl` on your server config or the `INTEGRATE_PUBLIC_URL` env var."
|
|
4910
|
+
};
|
|
4911
|
+
var warnedCodeModeReasons = new Set;
|
|
4912
|
+
function warnCodeModeFallback(reason) {
|
|
4913
|
+
if (warnedCodeModeReasons.has(reason))
|
|
4914
|
+
return;
|
|
4915
|
+
warnedCodeModeReasons.add(reason);
|
|
4916
|
+
console.warn(CODE_MODE_UNAVAILABLE_MESSAGES[reason]);
|
|
4917
|
+
}
|
|
4869
4918
|
function buildCodeModeTool(client, options) {
|
|
4870
4919
|
const { tools, providerTokens, context, integrationIds } = options;
|
|
4871
4920
|
const generated = generateCodeModeTypes(tools);
|
|
@@ -4878,6 +4927,7 @@ ${generated.source}
|
|
|
4878
4927
|
\`\`\``;
|
|
4879
4928
|
const execute = async ({ code }) => {
|
|
4880
4929
|
const publicUrl = sandboxOverrides.publicUrl ?? serverCodeModeConfig.publicUrl ?? getEnv("INTEGRATE_PUBLIC_URL");
|
|
4930
|
+
const apiKey = client.__oauthConfig?.apiKey;
|
|
4881
4931
|
if (!publicUrl) {
|
|
4882
4932
|
return {
|
|
4883
4933
|
success: false,
|
|
@@ -4892,6 +4942,7 @@ ${generated.source}
|
|
|
4892
4942
|
return executeSandboxCode({
|
|
4893
4943
|
code,
|
|
4894
4944
|
mcpUrl,
|
|
4945
|
+
apiKey,
|
|
4895
4946
|
providerTokens,
|
|
4896
4947
|
context,
|
|
4897
4948
|
integrationsHeader: integrationIds && integrationIds.length > 0 ? integrationIds.join(",") : undefined,
|
|
@@ -4989,8 +5040,19 @@ async function getAnthropicTools(client, options) {
|
|
|
4989
5040
|
const finalOptions = providerTokens ? { ...options, providerTokens } : options;
|
|
4990
5041
|
await ensureClientConnected(client);
|
|
4991
5042
|
const mcpTools = await client.getEnabledToolsAsync();
|
|
4992
|
-
|
|
4993
|
-
|
|
5043
|
+
let effectiveMode;
|
|
5044
|
+
if (options?.mode !== undefined) {
|
|
5045
|
+
effectiveMode = options.mode;
|
|
5046
|
+
} else {
|
|
5047
|
+
const diagnosis = await diagnoseCodeMode(client);
|
|
5048
|
+
if (diagnosis.available) {
|
|
5049
|
+
effectiveMode = "code";
|
|
5050
|
+
} else {
|
|
5051
|
+
warnCodeModeFallback(diagnosis.reason);
|
|
5052
|
+
effectiveMode = "tools";
|
|
5053
|
+
}
|
|
5054
|
+
}
|
|
5055
|
+
const anthropicTools = effectiveMode === "code" ? (() => {
|
|
4994
5056
|
const codeTool = buildCodeModeTool(client, {
|
|
4995
5057
|
tools: mcpTools,
|
|
4996
5058
|
providerTokens,
|
|
@@ -5173,9 +5235,20 @@ async function getGoogleTools(client, options) {
|
|
|
5173
5235
|
const finalOptions = providerTokens ? { ...options, providerTokens } : options;
|
|
5174
5236
|
await ensureClientConnected(client);
|
|
5175
5237
|
const mcpTools = await client.getEnabledToolsAsync();
|
|
5176
|
-
|
|
5238
|
+
let effectiveMode;
|
|
5239
|
+
if (options?.mode !== undefined) {
|
|
5240
|
+
effectiveMode = options.mode;
|
|
5241
|
+
} else {
|
|
5242
|
+
const diagnosis = await diagnoseCodeMode(client);
|
|
5243
|
+
if (diagnosis.available) {
|
|
5244
|
+
effectiveMode = "code";
|
|
5245
|
+
} else {
|
|
5246
|
+
warnCodeModeFallback(diagnosis.reason);
|
|
5247
|
+
effectiveMode = "tools";
|
|
5248
|
+
}
|
|
5249
|
+
}
|
|
5177
5250
|
let googleTools;
|
|
5178
|
-
if (
|
|
5251
|
+
if (effectiveMode === "code") {
|
|
5179
5252
|
const TypeEnum = await getGoogleType();
|
|
5180
5253
|
const codeTool = buildCodeModeTool(client, {
|
|
5181
5254
|
tools: mcpTools,
|
|
@@ -5299,8 +5372,19 @@ async function getVercelAITools(client, options) {
|
|
|
5299
5372
|
await ensureClientConnected(client);
|
|
5300
5373
|
const mcpTools = await client.getEnabledToolsAsync();
|
|
5301
5374
|
const vercelTools = {};
|
|
5302
|
-
|
|
5303
|
-
if (mode
|
|
5375
|
+
let effectiveMode;
|
|
5376
|
+
if (options?.mode !== undefined) {
|
|
5377
|
+
effectiveMode = options.mode;
|
|
5378
|
+
} else {
|
|
5379
|
+
const diagnosis = await diagnoseCodeMode(client);
|
|
5380
|
+
if (diagnosis.available) {
|
|
5381
|
+
effectiveMode = "code";
|
|
5382
|
+
} else {
|
|
5383
|
+
warnCodeModeFallback(diagnosis.reason);
|
|
5384
|
+
effectiveMode = "tools";
|
|
5385
|
+
}
|
|
5386
|
+
}
|
|
5387
|
+
if (effectiveMode === "code") {
|
|
5304
5388
|
const codeTool = buildCodeModeTool(client, {
|
|
5305
5389
|
tools: mcpTools,
|
|
5306
5390
|
providerTokens,
|
|
@@ -5349,8 +5433,19 @@ async function getOpenAITools(client, options) {
|
|
|
5349
5433
|
const finalOptions = providerTokens ? { ...options, providerTokens } : options;
|
|
5350
5434
|
await ensureClientConnected(client);
|
|
5351
5435
|
const mcpTools = await client.getEnabledToolsAsync();
|
|
5352
|
-
|
|
5353
|
-
|
|
5436
|
+
let effectiveMode;
|
|
5437
|
+
if (options?.mode !== undefined) {
|
|
5438
|
+
effectiveMode = options.mode;
|
|
5439
|
+
} else {
|
|
5440
|
+
const diagnosis = await diagnoseCodeMode(client);
|
|
5441
|
+
if (diagnosis.available) {
|
|
5442
|
+
effectiveMode = "code";
|
|
5443
|
+
} else {
|
|
5444
|
+
warnCodeModeFallback(diagnosis.reason);
|
|
5445
|
+
effectiveMode = "tools";
|
|
5446
|
+
}
|
|
5447
|
+
}
|
|
5448
|
+
const openaiTools = effectiveMode === "code" ? (() => {
|
|
5354
5449
|
const codeTool = buildCodeModeTool(client, {
|
|
5355
5450
|
tools: mcpTools,
|
|
5356
5451
|
providerTokens,
|
package/dist/ai/openai.d.ts
CHANGED
|
@@ -34,12 +34,12 @@ export interface OpenAIToolsOptions extends AIToolsOptions {
|
|
|
34
34
|
/**
|
|
35
35
|
* How to expose MCP tools to the model.
|
|
36
36
|
*
|
|
37
|
-
* - `'code'
|
|
37
|
+
* - `'code'`: Returns a single `execute_code` tool backed by a
|
|
38
38
|
* Vercel Sandbox. The model writes TypeScript that calls the typed
|
|
39
39
|
* `client.<integration>.<method>()` API and chains operations in one round-trip.
|
|
40
40
|
* - `'tools'`: Legacy behavior — one OpenAI function tool per MCP tool.
|
|
41
41
|
*
|
|
42
|
-
* @default 'code'
|
|
42
|
+
* @default auto-detects `'code'` when sandbox + public URL are available, otherwise `'tools'`
|
|
43
43
|
*/
|
|
44
44
|
mode?: 'code' | 'tools';
|
|
45
45
|
}
|
package/dist/ai/openai.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/ai/openai.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAkE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/ai/openai.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAkE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AASjH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE;QACV,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,GAAG,IAAI,CAAC;IACT,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kDAAkD;IAClD,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACzB;AAiCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,UAAU,EAAE,CAAC,CA2EvB;AA0GD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,QAAQ,EAAE;IAAE,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAA,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,CAAA;CAAE,EAChE,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,GAAG;IAAE,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAA,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAyB3H"}
|
package/dist/ai/openai.js
CHANGED
|
@@ -4621,6 +4621,7 @@ function pascalCase(id) {
|
|
|
4621
4621
|
var RUNTIME_STUB_SOURCE = `// runtime.mjs — generated by integrate-sdk code mode
|
|
4622
4622
|
const MCP_URL = process.env.INTEGRATE_MCP_URL;
|
|
4623
4623
|
const SESSION_TOKEN = process.env.INTEGRATE_SESSION_TOKEN;
|
|
4624
|
+
const API_KEY = process.env.INTEGRATE_API_KEY || '';
|
|
4624
4625
|
const PROVIDER_TOKENS = process.env.INTEGRATE_PROVIDER_TOKENS || '';
|
|
4625
4626
|
const INTEGRATIONS_HEADER = process.env.INTEGRATE_INTEGRATIONS || '';
|
|
4626
4627
|
const CONTEXT_JSON = process.env.INTEGRATE_CONTEXT || '';
|
|
@@ -4639,6 +4640,7 @@ async function callTool(toolName, args) {
|
|
|
4639
4640
|
'x-integrate-code-mode': '1',
|
|
4640
4641
|
};
|
|
4641
4642
|
if (SESSION_TOKEN) headers['Authorization'] = 'Bearer ' + SESSION_TOKEN;
|
|
4643
|
+
if (API_KEY) headers['x-integrate-api-key'] = API_KEY;
|
|
4642
4644
|
if (PROVIDER_TOKENS) headers['x-integrate-tokens'] = PROVIDER_TOKENS;
|
|
4643
4645
|
if (INTEGRATIONS_HEADER) headers['x-integrations'] = INTEGRATIONS_HEADER;
|
|
4644
4646
|
if (CONTEXT_JSON) headers['x-integrate-context'] = CONTEXT_JSON;
|
|
@@ -4689,6 +4691,29 @@ export { callTool };
|
|
|
4689
4691
|
|
|
4690
4692
|
// ../code-mode/executor.ts
|
|
4691
4693
|
var sandboxFactoryOverride = null;
|
|
4694
|
+
var _sandboxAvailableCache = null;
|
|
4695
|
+
var _sandboxForcedUnavailableForTests = false;
|
|
4696
|
+
async function isSandboxAvailable() {
|
|
4697
|
+
if (_sandboxAvailableCache !== null)
|
|
4698
|
+
return _sandboxAvailableCache;
|
|
4699
|
+
if (_sandboxForcedUnavailableForTests) {
|
|
4700
|
+
_sandboxAvailableCache = false;
|
|
4701
|
+
return false;
|
|
4702
|
+
}
|
|
4703
|
+
if (sandboxFactoryOverride) {
|
|
4704
|
+
_sandboxAvailableCache = true;
|
|
4705
|
+
return true;
|
|
4706
|
+
}
|
|
4707
|
+
try {
|
|
4708
|
+
const dynamicImport = new Function("specifier", "return import(specifier)");
|
|
4709
|
+
await dynamicImport("@" + "vercel/sandbox");
|
|
4710
|
+
_sandboxAvailableCache = true;
|
|
4711
|
+
return true;
|
|
4712
|
+
} catch {
|
|
4713
|
+
_sandboxAvailableCache = false;
|
|
4714
|
+
return false;
|
|
4715
|
+
}
|
|
4716
|
+
}
|
|
4692
4717
|
async function loadSandboxFactory() {
|
|
4693
4718
|
if (sandboxFactoryOverride)
|
|
4694
4719
|
return sandboxFactoryOverride;
|
|
@@ -4775,6 +4800,8 @@ async function executeSandboxCode(options) {
|
|
|
4775
4800
|
const env = {
|
|
4776
4801
|
INTEGRATE_MCP_URL: options.mcpUrl
|
|
4777
4802
|
};
|
|
4803
|
+
if (options.apiKey)
|
|
4804
|
+
env.INTEGRATE_API_KEY = options.apiKey;
|
|
4778
4805
|
if (options.sessionToken)
|
|
4779
4806
|
env.INTEGRATE_SESSION_TOKEN = options.sessionToken;
|
|
4780
4807
|
if (options.providerTokens && Object.keys(options.providerTokens).length > 0) {
|
|
@@ -4866,6 +4893,28 @@ function resolveCodeModeClientConfig(client) {
|
|
|
4866
4893
|
const oauthConfig = client.__oauthConfig;
|
|
4867
4894
|
return oauthConfig?.codeMode ?? {};
|
|
4868
4895
|
}
|
|
4896
|
+
async function diagnoseCodeMode(client) {
|
|
4897
|
+
if (!await isSandboxAvailable()) {
|
|
4898
|
+
return { available: false, reason: "sandbox-missing" };
|
|
4899
|
+
}
|
|
4900
|
+
const serverConfig = resolveCodeModeClientConfig(client);
|
|
4901
|
+
const publicUrl = serverConfig.publicUrl ?? getEnv("INTEGRATE_PUBLIC_URL");
|
|
4902
|
+
if (!publicUrl) {
|
|
4903
|
+
return { available: false, reason: "no-public-url" };
|
|
4904
|
+
}
|
|
4905
|
+
return { available: true };
|
|
4906
|
+
}
|
|
4907
|
+
var CODE_MODE_UNAVAILABLE_MESSAGES = {
|
|
4908
|
+
"sandbox-missing": "[integrate-sdk] Code Mode unavailable (reason: sandbox-missing) — falling back to tool mode. " + "Install `@vercel/sandbox` (e.g. `bun add @vercel/sandbox`) to enable Code Mode.",
|
|
4909
|
+
"no-public-url": "[integrate-sdk] Code Mode unavailable (reason: no-public-url) — falling back to tool mode. " + "Set `codeMode.publicUrl` on your server config or the `INTEGRATE_PUBLIC_URL` env var."
|
|
4910
|
+
};
|
|
4911
|
+
var warnedCodeModeReasons = new Set;
|
|
4912
|
+
function warnCodeModeFallback(reason) {
|
|
4913
|
+
if (warnedCodeModeReasons.has(reason))
|
|
4914
|
+
return;
|
|
4915
|
+
warnedCodeModeReasons.add(reason);
|
|
4916
|
+
console.warn(CODE_MODE_UNAVAILABLE_MESSAGES[reason]);
|
|
4917
|
+
}
|
|
4869
4918
|
function buildCodeModeTool(client, options) {
|
|
4870
4919
|
const { tools, providerTokens, context, integrationIds } = options;
|
|
4871
4920
|
const generated = generateCodeModeTypes(tools);
|
|
@@ -4878,6 +4927,7 @@ ${generated.source}
|
|
|
4878
4927
|
\`\`\``;
|
|
4879
4928
|
const execute = async ({ code }) => {
|
|
4880
4929
|
const publicUrl = sandboxOverrides.publicUrl ?? serverCodeModeConfig.publicUrl ?? getEnv("INTEGRATE_PUBLIC_URL");
|
|
4930
|
+
const apiKey = client.__oauthConfig?.apiKey;
|
|
4881
4931
|
if (!publicUrl) {
|
|
4882
4932
|
return {
|
|
4883
4933
|
success: false,
|
|
@@ -4892,6 +4942,7 @@ ${generated.source}
|
|
|
4892
4942
|
return executeSandboxCode({
|
|
4893
4943
|
code,
|
|
4894
4944
|
mcpUrl,
|
|
4945
|
+
apiKey,
|
|
4895
4946
|
providerTokens,
|
|
4896
4947
|
context,
|
|
4897
4948
|
integrationsHeader: integrationIds && integrationIds.length > 0 ? integrationIds.join(",") : undefined,
|
|
@@ -4941,8 +4992,19 @@ async function getOpenAITools(client, options) {
|
|
|
4941
4992
|
const finalOptions = providerTokens ? { ...options, providerTokens } : options;
|
|
4942
4993
|
await ensureClientConnected(client);
|
|
4943
4994
|
const mcpTools = await client.getEnabledToolsAsync();
|
|
4944
|
-
|
|
4945
|
-
|
|
4995
|
+
let effectiveMode;
|
|
4996
|
+
if (options?.mode !== undefined) {
|
|
4997
|
+
effectiveMode = options.mode;
|
|
4998
|
+
} else {
|
|
4999
|
+
const diagnosis = await diagnoseCodeMode(client);
|
|
5000
|
+
if (diagnosis.available) {
|
|
5001
|
+
effectiveMode = "code";
|
|
5002
|
+
} else {
|
|
5003
|
+
warnCodeModeFallback(diagnosis.reason);
|
|
5004
|
+
effectiveMode = "tools";
|
|
5005
|
+
}
|
|
5006
|
+
}
|
|
5007
|
+
const openaiTools = effectiveMode === "code" ? (() => {
|
|
4946
5008
|
const codeTool = buildCodeModeTool(client, {
|
|
4947
5009
|
tools: mcpTools,
|
|
4948
5010
|
providerTokens,
|
package/dist/ai/vercel-ai.d.ts
CHANGED
|
@@ -25,14 +25,14 @@ export interface VercelAIToolsOptions extends AIToolsOptions {
|
|
|
25
25
|
/**
|
|
26
26
|
* How to expose MCP tools to the model.
|
|
27
27
|
*
|
|
28
|
-
* - `'code'
|
|
28
|
+
* - `'code'`: Returns a single `execute_code` tool. The model writes
|
|
29
29
|
* a TypeScript snippet that calls the typed `client.<integration>.<method>()`
|
|
30
30
|
* API; the snippet runs in an isolated Vercel Sandbox and calls back into
|
|
31
31
|
* `/api/integrate/mcp`. Chains multiple operations in one round-trip.
|
|
32
32
|
* - `'tools'`: Legacy behavior — returns one AI tool per MCP tool. Use this
|
|
33
33
|
* if you can't run `@vercel/sandbox` or need the model to see every tool.
|
|
34
34
|
*
|
|
35
|
-
* @default 'code'
|
|
35
|
+
* @default auto-detects `'code'` when sandbox + public URL are available, otherwise `'tools'`
|
|
36
36
|
*/
|
|
37
37
|
mode?: 'code' | 'tools';
|
|
38
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-ai.d.ts","sourceRoot":"","sources":["../../../src/ai/vercel-ai.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"vercel-ai.d.ts","sourceRoot":"","sources":["../../../src/ai/vercel-ai.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AASpB;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,kDAAkD;IAClD,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACzB;AA+BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EACtB,OAAO,CAAC,EAAE,oBAAoB,gCAkE/B"}
|
package/dist/ai/vercel-ai.js
CHANGED
|
@@ -4621,6 +4621,7 @@ function pascalCase(id) {
|
|
|
4621
4621
|
var RUNTIME_STUB_SOURCE = `// runtime.mjs — generated by integrate-sdk code mode
|
|
4622
4622
|
const MCP_URL = process.env.INTEGRATE_MCP_URL;
|
|
4623
4623
|
const SESSION_TOKEN = process.env.INTEGRATE_SESSION_TOKEN;
|
|
4624
|
+
const API_KEY = process.env.INTEGRATE_API_KEY || '';
|
|
4624
4625
|
const PROVIDER_TOKENS = process.env.INTEGRATE_PROVIDER_TOKENS || '';
|
|
4625
4626
|
const INTEGRATIONS_HEADER = process.env.INTEGRATE_INTEGRATIONS || '';
|
|
4626
4627
|
const CONTEXT_JSON = process.env.INTEGRATE_CONTEXT || '';
|
|
@@ -4639,6 +4640,7 @@ async function callTool(toolName, args) {
|
|
|
4639
4640
|
'x-integrate-code-mode': '1',
|
|
4640
4641
|
};
|
|
4641
4642
|
if (SESSION_TOKEN) headers['Authorization'] = 'Bearer ' + SESSION_TOKEN;
|
|
4643
|
+
if (API_KEY) headers['x-integrate-api-key'] = API_KEY;
|
|
4642
4644
|
if (PROVIDER_TOKENS) headers['x-integrate-tokens'] = PROVIDER_TOKENS;
|
|
4643
4645
|
if (INTEGRATIONS_HEADER) headers['x-integrations'] = INTEGRATIONS_HEADER;
|
|
4644
4646
|
if (CONTEXT_JSON) headers['x-integrate-context'] = CONTEXT_JSON;
|
|
@@ -4689,6 +4691,29 @@ export { callTool };
|
|
|
4689
4691
|
|
|
4690
4692
|
// ../code-mode/executor.ts
|
|
4691
4693
|
var sandboxFactoryOverride = null;
|
|
4694
|
+
var _sandboxAvailableCache = null;
|
|
4695
|
+
var _sandboxForcedUnavailableForTests = false;
|
|
4696
|
+
async function isSandboxAvailable() {
|
|
4697
|
+
if (_sandboxAvailableCache !== null)
|
|
4698
|
+
return _sandboxAvailableCache;
|
|
4699
|
+
if (_sandboxForcedUnavailableForTests) {
|
|
4700
|
+
_sandboxAvailableCache = false;
|
|
4701
|
+
return false;
|
|
4702
|
+
}
|
|
4703
|
+
if (sandboxFactoryOverride) {
|
|
4704
|
+
_sandboxAvailableCache = true;
|
|
4705
|
+
return true;
|
|
4706
|
+
}
|
|
4707
|
+
try {
|
|
4708
|
+
const dynamicImport = new Function("specifier", "return import(specifier)");
|
|
4709
|
+
await dynamicImport("@" + "vercel/sandbox");
|
|
4710
|
+
_sandboxAvailableCache = true;
|
|
4711
|
+
return true;
|
|
4712
|
+
} catch {
|
|
4713
|
+
_sandboxAvailableCache = false;
|
|
4714
|
+
return false;
|
|
4715
|
+
}
|
|
4716
|
+
}
|
|
4692
4717
|
async function loadSandboxFactory() {
|
|
4693
4718
|
if (sandboxFactoryOverride)
|
|
4694
4719
|
return sandboxFactoryOverride;
|
|
@@ -4775,6 +4800,8 @@ async function executeSandboxCode(options) {
|
|
|
4775
4800
|
const env = {
|
|
4776
4801
|
INTEGRATE_MCP_URL: options.mcpUrl
|
|
4777
4802
|
};
|
|
4803
|
+
if (options.apiKey)
|
|
4804
|
+
env.INTEGRATE_API_KEY = options.apiKey;
|
|
4778
4805
|
if (options.sessionToken)
|
|
4779
4806
|
env.INTEGRATE_SESSION_TOKEN = options.sessionToken;
|
|
4780
4807
|
if (options.providerTokens && Object.keys(options.providerTokens).length > 0) {
|
|
@@ -4866,6 +4893,28 @@ function resolveCodeModeClientConfig(client) {
|
|
|
4866
4893
|
const oauthConfig = client.__oauthConfig;
|
|
4867
4894
|
return oauthConfig?.codeMode ?? {};
|
|
4868
4895
|
}
|
|
4896
|
+
async function diagnoseCodeMode(client) {
|
|
4897
|
+
if (!await isSandboxAvailable()) {
|
|
4898
|
+
return { available: false, reason: "sandbox-missing" };
|
|
4899
|
+
}
|
|
4900
|
+
const serverConfig = resolveCodeModeClientConfig(client);
|
|
4901
|
+
const publicUrl = serverConfig.publicUrl ?? getEnv("INTEGRATE_PUBLIC_URL");
|
|
4902
|
+
if (!publicUrl) {
|
|
4903
|
+
return { available: false, reason: "no-public-url" };
|
|
4904
|
+
}
|
|
4905
|
+
return { available: true };
|
|
4906
|
+
}
|
|
4907
|
+
var CODE_MODE_UNAVAILABLE_MESSAGES = {
|
|
4908
|
+
"sandbox-missing": "[integrate-sdk] Code Mode unavailable (reason: sandbox-missing) — falling back to tool mode. " + "Install `@vercel/sandbox` (e.g. `bun add @vercel/sandbox`) to enable Code Mode.",
|
|
4909
|
+
"no-public-url": "[integrate-sdk] Code Mode unavailable (reason: no-public-url) — falling back to tool mode. " + "Set `codeMode.publicUrl` on your server config or the `INTEGRATE_PUBLIC_URL` env var."
|
|
4910
|
+
};
|
|
4911
|
+
var warnedCodeModeReasons = new Set;
|
|
4912
|
+
function warnCodeModeFallback(reason) {
|
|
4913
|
+
if (warnedCodeModeReasons.has(reason))
|
|
4914
|
+
return;
|
|
4915
|
+
warnedCodeModeReasons.add(reason);
|
|
4916
|
+
console.warn(CODE_MODE_UNAVAILABLE_MESSAGES[reason]);
|
|
4917
|
+
}
|
|
4869
4918
|
function buildCodeModeTool(client, options) {
|
|
4870
4919
|
const { tools, providerTokens, context, integrationIds } = options;
|
|
4871
4920
|
const generated = generateCodeModeTypes(tools);
|
|
@@ -4878,6 +4927,7 @@ ${generated.source}
|
|
|
4878
4927
|
\`\`\``;
|
|
4879
4928
|
const execute = async ({ code }) => {
|
|
4880
4929
|
const publicUrl = sandboxOverrides.publicUrl ?? serverCodeModeConfig.publicUrl ?? getEnv("INTEGRATE_PUBLIC_URL");
|
|
4930
|
+
const apiKey = client.__oauthConfig?.apiKey;
|
|
4881
4931
|
if (!publicUrl) {
|
|
4882
4932
|
return {
|
|
4883
4933
|
success: false,
|
|
@@ -4892,6 +4942,7 @@ ${generated.source}
|
|
|
4892
4942
|
return executeSandboxCode({
|
|
4893
4943
|
code,
|
|
4894
4944
|
mcpUrl,
|
|
4945
|
+
apiKey,
|
|
4895
4946
|
providerTokens,
|
|
4896
4947
|
context,
|
|
4897
4948
|
integrationsHeader: integrationIds && integrationIds.length > 0 ? integrationIds.join(",") : undefined,
|
|
@@ -4943,8 +4994,19 @@ async function getVercelAITools(client, options) {
|
|
|
4943
4994
|
await ensureClientConnected(client);
|
|
4944
4995
|
const mcpTools = await client.getEnabledToolsAsync();
|
|
4945
4996
|
const vercelTools = {};
|
|
4946
|
-
|
|
4947
|
-
if (mode
|
|
4997
|
+
let effectiveMode;
|
|
4998
|
+
if (options?.mode !== undefined) {
|
|
4999
|
+
effectiveMode = options.mode;
|
|
5000
|
+
} else {
|
|
5001
|
+
const diagnosis = await diagnoseCodeMode(client);
|
|
5002
|
+
if (diagnosis.available) {
|
|
5003
|
+
effectiveMode = "code";
|
|
5004
|
+
} else {
|
|
5005
|
+
warnCodeModeFallback(diagnosis.reason);
|
|
5006
|
+
effectiveMode = "tools";
|
|
5007
|
+
}
|
|
5008
|
+
}
|
|
5009
|
+
if (effectiveMode === "code") {
|
|
4948
5010
|
const codeTool = buildCodeModeTool(client, {
|
|
4949
5011
|
tools: mcpTools,
|
|
4950
5012
|
providerTokens,
|
|
@@ -43,11 +43,16 @@ interface SandboxFactory {
|
|
|
43
43
|
}
|
|
44
44
|
/** @internal — used by unit tests to stub the sandbox SDK. */
|
|
45
45
|
export declare function __setSandboxFactoryForTests(factory: SandboxFactory | null): void;
|
|
46
|
+
/** @internal — used by unit tests to simulate missing @vercel/sandbox. */
|
|
47
|
+
export declare function __setSandboxUnavailableForTests(force: boolean): void;
|
|
48
|
+
export declare function isSandboxAvailable(): Promise<boolean>;
|
|
46
49
|
export interface ExecuteSandboxCodeOptions {
|
|
47
50
|
/** Source code the LLM produced. Treated as an async function body. */
|
|
48
51
|
code: string;
|
|
49
52
|
/** Fully-qualified MCP route URL, e.g. `https://myapp.com/api/integrate/mcp`. */
|
|
50
53
|
mcpUrl: string;
|
|
54
|
+
/** Server API key forwarded to trusted sandbox callbacks. */
|
|
55
|
+
apiKey?: string;
|
|
51
56
|
/** Session token forwarded as `Authorization: Bearer <token>` by the stub. */
|
|
52
57
|
sessionToken?: string;
|
|
53
58
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/code-mode/executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD;;;;GAIG;AACH,UAAU,WAAW;IACnB,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,UAAU,CACR,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,GACA,OAAO,CAAC;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1B,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;KAC3B,CAAC,CAAC;IACH,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1B;AAED,UAAU,cAAc;IACtB,MAAM,CAAC,OAAO,EAAE;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC1B;
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/code-mode/executor.ts"],"names":[],"mappings":"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"}
|