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.
Files changed (55) hide show
  1. package/dist/adapters/auto-routes.js +76 -16
  2. package/dist/adapters/index.js +76 -16
  3. package/dist/adapters/nextjs.js +76 -16
  4. package/dist/adapters/node.js +76 -16
  5. package/dist/adapters/svelte-kit.js +76 -16
  6. package/dist/adapters/tanstack-start.js +76 -16
  7. package/dist/ai/anthropic.d.ts +2 -2
  8. package/dist/ai/anthropic.d.ts.map +1 -1
  9. package/dist/ai/anthropic.js +45 -9
  10. package/dist/ai/google.d.ts +2 -2
  11. package/dist/ai/google.d.ts.map +1 -1
  12. package/dist/ai/google.js +45 -9
  13. package/dist/ai/index.js +51 -15
  14. package/dist/ai/openai.d.ts +2 -2
  15. package/dist/ai/openai.d.ts.map +1 -1
  16. package/dist/ai/openai.js +45 -9
  17. package/dist/ai/trigger-tools.d.ts +7 -7
  18. package/dist/ai/trigger-tools.js +7 -7
  19. package/dist/ai/vercel-ai.d.ts +2 -2
  20. package/dist/ai/vercel-ai.d.ts.map +1 -1
  21. package/dist/ai/vercel-ai.js +45 -9
  22. package/dist/code-mode/executor.d.ts +5 -0
  23. package/dist/code-mode/executor.d.ts.map +1 -1
  24. package/dist/code-mode/executor.js +35 -0
  25. package/dist/code-mode/index.d.ts +1 -1
  26. package/dist/code-mode/index.d.ts.map +1 -1
  27. package/dist/code-mode/index.js +43 -0
  28. package/dist/code-mode/runtime-stub.d.ts +1 -1
  29. package/dist/code-mode/runtime-stub.d.ts.map +1 -1
  30. package/dist/code-mode/runtime-stub.js +2 -0
  31. package/dist/code-mode/tool-builder.d.ts +1 -0
  32. package/dist/code-mode/tool-builder.d.ts.map +1 -1
  33. package/dist/code-mode/tool-builder.js +43 -0
  34. package/dist/index.js +76 -16
  35. package/dist/oauth.js +76 -16
  36. package/dist/server.js +76 -16
  37. package/dist/src/ai/anthropic.d.ts +2 -2
  38. package/dist/src/ai/anthropic.d.ts.map +1 -1
  39. package/dist/src/ai/google.d.ts +2 -2
  40. package/dist/src/ai/google.d.ts.map +1 -1
  41. package/dist/src/ai/openai.d.ts +2 -2
  42. package/dist/src/ai/openai.d.ts.map +1 -1
  43. package/dist/src/ai/trigger-tools.d.ts +7 -7
  44. package/dist/src/ai/vercel-ai.d.ts +2 -2
  45. package/dist/src/ai/vercel-ai.d.ts.map +1 -1
  46. package/dist/src/code-mode/executor.d.ts +5 -0
  47. package/dist/src/code-mode/executor.d.ts.map +1 -1
  48. package/dist/src/code-mode/index.d.ts +1 -1
  49. package/dist/src/code-mode/index.d.ts.map +1 -1
  50. package/dist/src/code-mode/runtime-stub.d.ts +1 -1
  51. package/dist/src/code-mode/runtime-stub.d.ts.map +1 -1
  52. package/dist/src/code-mode/tool-builder.d.ts +1 -0
  53. package/dist/src/code-mode/tool-builder.d.ts.map +1 -1
  54. package/dist/src/server.d.ts.map +1 -1
  55. package/package.json +3 -6
package/dist/index.js CHANGED
@@ -8575,7 +8575,7 @@ var init_utils2 = __esm(() => {
8575
8575
  function createTriggerTools(config, context) {
8576
8576
  const { callbacks } = config;
8577
8577
  return {
8578
- create_trigger: {
8578
+ trigger_create: {
8579
8579
  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.",
8580
8580
  inputSchema: exports_external.object({
8581
8581
  name: exports_external.string().optional().describe("Human-readable trigger name"),
@@ -8609,7 +8609,7 @@ function createTriggerTools(config, context) {
8609
8609
  return callbacks.create(trigger, context);
8610
8610
  }
8611
8611
  },
8612
- list_triggers: {
8612
+ trigger_list: {
8613
8613
  description: "List all scheduled triggers with optional filtering by status or tool name",
8614
8614
  inputSchema: exports_external.object({
8615
8615
  status: exports_external.enum(["active", "paused", "completed", "failed"]).optional().describe("Filter by trigger status"),
@@ -8633,7 +8633,7 @@ function createTriggerTools(config, context) {
8633
8633
  };
8634
8634
  }
8635
8635
  },
8636
- get_trigger: {
8636
+ trigger_get: {
8637
8637
  description: "Get details of a specific trigger by its ID",
8638
8638
  inputSchema: exports_external.object({
8639
8639
  triggerId: exports_external.string().describe("The trigger ID to retrieve")
@@ -8646,7 +8646,7 @@ function createTriggerTools(config, context) {
8646
8646
  return trigger;
8647
8647
  }
8648
8648
  },
8649
- update_trigger: {
8649
+ trigger_update: {
8650
8650
  description: "Update a trigger's properties like name, description, arguments, or schedule",
8651
8651
  inputSchema: exports_external.object({
8652
8652
  triggerId: exports_external.string().describe("The trigger ID to update"),
@@ -8673,7 +8673,7 @@ function createTriggerTools(config, context) {
8673
8673
  return callbacks.update(triggerId, updatesWithTimestamp, context);
8674
8674
  }
8675
8675
  },
8676
- delete_trigger: {
8676
+ trigger_delete: {
8677
8677
  description: "Delete a trigger permanently. This cannot be undone.",
8678
8678
  inputSchema: exports_external.object({
8679
8679
  triggerId: exports_external.string().describe("The trigger ID to delete")
@@ -8683,7 +8683,7 @@ function createTriggerTools(config, context) {
8683
8683
  return { success: true, message: `Trigger ${args.triggerId} deleted` };
8684
8684
  }
8685
8685
  },
8686
- pause_trigger: {
8686
+ trigger_pause: {
8687
8687
  description: "Pause a trigger to temporarily stop it from executing. Can be resumed later.",
8688
8688
  inputSchema: exports_external.object({
8689
8689
  triggerId: exports_external.string().describe("The trigger ID to pause")
@@ -8703,7 +8703,7 @@ function createTriggerTools(config, context) {
8703
8703
  }, context);
8704
8704
  }
8705
8705
  },
8706
- resume_trigger: {
8706
+ trigger_resume: {
8707
8707
  description: "Resume a paused trigger to start executing it again on schedule",
8708
8708
  inputSchema: exports_external.object({
8709
8709
  triggerId: exports_external.string().describe("The trigger ID to resume")
@@ -8943,6 +8943,7 @@ var init_type_generator = __esm(() => {
8943
8943
  var RUNTIME_STUB_SOURCE = `// runtime.mjs — generated by integrate-sdk code mode
8944
8944
  const MCP_URL = process.env.INTEGRATE_MCP_URL;
8945
8945
  const SESSION_TOKEN = process.env.INTEGRATE_SESSION_TOKEN;
8946
+ const API_KEY = process.env.INTEGRATE_API_KEY || '';
8946
8947
  const PROVIDER_TOKENS = process.env.INTEGRATE_PROVIDER_TOKENS || '';
8947
8948
  const INTEGRATIONS_HEADER = process.env.INTEGRATE_INTEGRATIONS || '';
8948
8949
  const CONTEXT_JSON = process.env.INTEGRATE_CONTEXT || '';
@@ -8961,6 +8962,7 @@ async function callTool(toolName, args) {
8961
8962
  'x-integrate-code-mode': '1',
8962
8963
  };
8963
8964
  if (SESSION_TOKEN) headers['Authorization'] = 'Bearer ' + SESSION_TOKEN;
8965
+ if (API_KEY) headers['x-integrate-api-key'] = API_KEY;
8964
8966
  if (PROVIDER_TOKENS) headers['x-integrate-tokens'] = PROVIDER_TOKENS;
8965
8967
  if (INTEGRATIONS_HEADER) headers['x-integrations'] = INTEGRATIONS_HEADER;
8966
8968
  if (CONTEXT_JSON) headers['x-integrate-context'] = CONTEXT_JSON;
@@ -9012,11 +9014,40 @@ export { callTool };
9012
9014
  // src/code-mode/executor.ts
9013
9015
  var exports_executor = {};
9014
9016
  __export(exports_executor, {
9017
+ isSandboxAvailable: () => isSandboxAvailable,
9015
9018
  executeSandboxCode: () => executeSandboxCode,
9019
+ __setSandboxUnavailableForTests: () => __setSandboxUnavailableForTests,
9016
9020
  __setSandboxFactoryForTests: () => __setSandboxFactoryForTests
9017
9021
  });
9018
9022
  function __setSandboxFactoryForTests(factory) {
9019
9023
  sandboxFactoryOverride = factory;
9024
+ _sandboxForcedUnavailableForTests = false;
9025
+ _sandboxAvailableCache = null;
9026
+ }
9027
+ function __setSandboxUnavailableForTests(force) {
9028
+ _sandboxForcedUnavailableForTests = force;
9029
+ _sandboxAvailableCache = null;
9030
+ }
9031
+ async function isSandboxAvailable() {
9032
+ if (_sandboxAvailableCache !== null)
9033
+ return _sandboxAvailableCache;
9034
+ if (_sandboxForcedUnavailableForTests) {
9035
+ _sandboxAvailableCache = false;
9036
+ return false;
9037
+ }
9038
+ if (sandboxFactoryOverride) {
9039
+ _sandboxAvailableCache = true;
9040
+ return true;
9041
+ }
9042
+ try {
9043
+ const dynamicImport = new Function("specifier", "return import(specifier)");
9044
+ await dynamicImport("@" + "vercel/sandbox");
9045
+ _sandboxAvailableCache = true;
9046
+ return true;
9047
+ } catch {
9048
+ _sandboxAvailableCache = false;
9049
+ return false;
9050
+ }
9020
9051
  }
9021
9052
  async function loadSandboxFactory() {
9022
9053
  if (sandboxFactoryOverride)
@@ -9103,6 +9134,8 @@ async function executeSandboxCode(options) {
9103
9134
  const env = {
9104
9135
  INTEGRATE_MCP_URL: options.mcpUrl
9105
9136
  };
9137
+ if (options.apiKey)
9138
+ env.INTEGRATE_API_KEY = options.apiKey;
9106
9139
  if (options.sessionToken)
9107
9140
  env.INTEGRATE_SESSION_TOKEN = options.sessionToken;
9108
9141
  if (options.providerTokens && Object.keys(options.providerTokens).length > 0) {
@@ -9145,7 +9178,7 @@ async function executeSandboxCode(options) {
9145
9178
  }
9146
9179
  }
9147
9180
  }
9148
- var sandboxFactoryOverride = null, RESULT_SENTINEL = "__INTEGRATE_RESULT__";
9181
+ var sandboxFactoryOverride = null, _sandboxAvailableCache = null, _sandboxForcedUnavailableForTests = false, RESULT_SENTINEL = "__INTEGRATE_RESULT__";
9149
9182
  var init_executor = () => {};
9150
9183
 
9151
9184
  // src/code-mode/tool-builder.ts
@@ -9153,6 +9186,13 @@ function resolveCodeModeClientConfig(client) {
9153
9186
  const oauthConfig = client.__oauthConfig;
9154
9187
  return oauthConfig?.codeMode ?? {};
9155
9188
  }
9189
+ async function canUseCodeMode(client) {
9190
+ if (!await isSandboxAvailable())
9191
+ return false;
9192
+ const serverConfig = resolveCodeModeClientConfig(client);
9193
+ const publicUrl = serverConfig.publicUrl ?? getEnv("INTEGRATE_PUBLIC_URL");
9194
+ return !!publicUrl;
9195
+ }
9156
9196
  function buildCodeModeTool(client, options) {
9157
9197
  const { tools, providerTokens, context, integrationIds } = options;
9158
9198
  const generated = generateCodeModeTypes(tools);
@@ -9165,6 +9205,7 @@ ${generated.source}
9165
9205
  \`\`\``;
9166
9206
  const execute = async ({ code }) => {
9167
9207
  const publicUrl = sandboxOverrides.publicUrl ?? serverCodeModeConfig.publicUrl ?? getEnv("INTEGRATE_PUBLIC_URL");
9208
+ const apiKey = client.__oauthConfig?.apiKey;
9168
9209
  if (!publicUrl) {
9169
9210
  return {
9170
9211
  success: false,
@@ -9179,6 +9220,7 @@ ${generated.source}
9179
9220
  return executeSandboxCode({
9180
9221
  code,
9181
9222
  mcpUrl,
9223
+ apiKey,
9182
9224
  providerTokens,
9183
9225
  context,
9184
9226
  integrationsHeader: integrationIds && integrationIds.length > 0 ? integrationIds.join(",") : undefined,
@@ -9256,8 +9298,8 @@ async function getVercelAITools(client, options) {
9256
9298
  await ensureClientConnected(client);
9257
9299
  const mcpTools = await client.getEnabledToolsAsync();
9258
9300
  const vercelTools = {};
9259
- const mode = options?.mode ?? "code";
9260
- if (mode === "code") {
9301
+ const effectiveMode = options?.mode !== undefined ? options.mode : await canUseCodeMode(client) ? "code" : "tools";
9302
+ if (effectiveMode === "code") {
9261
9303
  const codeTool = buildCodeModeTool(client, {
9262
9304
  tools: mcpTools,
9263
9305
  providerTokens,
@@ -10715,8 +10757,8 @@ async function getOpenAITools(client, options) {
10715
10757
  const finalOptions = providerTokens ? { ...options, providerTokens } : options;
10716
10758
  await ensureClientConnected(client);
10717
10759
  const mcpTools = await client.getEnabledToolsAsync();
10718
- const mode = options?.mode ?? "code";
10719
- const openaiTools = mode === "code" ? (() => {
10760
+ const effectiveMode = options?.mode !== undefined ? options.mode : await canUseCodeMode(client) ? "code" : "tools";
10761
+ const openaiTools = effectiveMode === "code" ? (() => {
10720
10762
  const codeTool = buildCodeModeTool(client, {
10721
10763
  tools: mcpTools,
10722
10764
  providerTokens,
@@ -10895,8 +10937,8 @@ async function getAnthropicTools(client, options) {
10895
10937
  const finalOptions = providerTokens ? { ...options, providerTokens } : options;
10896
10938
  await ensureClientConnected(client);
10897
10939
  const mcpTools = await client.getEnabledToolsAsync();
10898
- const mode = options?.mode ?? "code";
10899
- const anthropicTools = mode === "code" ? (() => {
10940
+ const effectiveMode = options?.mode !== undefined ? options.mode : await canUseCodeMode(client) ? "code" : "tools";
10941
+ const anthropicTools = effectiveMode === "code" ? (() => {
10900
10942
  const codeTool = buildCodeModeTool(client, {
10901
10943
  tools: mcpTools,
10902
10944
  providerTokens,
@@ -11084,9 +11126,9 @@ async function getGoogleTools(client, options) {
11084
11126
  const finalOptions = providerTokens ? { ...options, providerTokens } : options;
11085
11127
  await ensureClientConnected(client);
11086
11128
  const mcpTools = await client.getEnabledToolsAsync();
11087
- const mode = options?.mode ?? "code";
11129
+ const effectiveMode = options?.mode !== undefined ? options.mode : await canUseCodeMode(client) ? "code" : "tools";
11088
11130
  let googleTools;
11089
- if (mode === "code") {
11131
+ if (effectiveMode === "code") {
11090
11132
  const TypeEnum = await getGoogleType();
11091
11133
  const codeTool = buildCodeModeTool(client, {
11092
11134
  tools: mcpTools,
@@ -11633,6 +11675,24 @@ function createMCPServer(config) {
11633
11675
  } catch {}
11634
11676
  }
11635
11677
  }
11678
+ if (!authHeader && config.getProviderToken) {
11679
+ const codeModeHeader = webRequest.headers.get("x-integrate-code-mode");
11680
+ const contextHeader = webRequest.headers.get("x-integrate-context");
11681
+ const callbackApiKey = webRequest.headers.get("x-integrate-api-key");
11682
+ const toolName = typeof body?.name === "string" ? body.name : "";
11683
+ if (codeModeHeader === "1" && contextHeader && toolName && config.apiKey && callbackApiKey === config.apiKey) {
11684
+ try {
11685
+ const context2 = JSON.parse(contextHeader);
11686
+ const provider = toolName.split("_")[0];
11687
+ if (provider) {
11688
+ const tokenData = await config.getProviderToken(provider, undefined, context2);
11689
+ if (tokenData?.accessToken) {
11690
+ authHeader = `Bearer ${tokenData.accessToken}`;
11691
+ }
11692
+ }
11693
+ } catch {}
11694
+ }
11695
+ }
11636
11696
  const { OAuthHandler: OAuthHandler2 } = await Promise.resolve().then(() => (init_base_handler(), exports_base_handler));
11637
11697
  const oauthHandler = new OAuthHandler2({
11638
11698
  providers,
package/dist/oauth.js CHANGED
@@ -8409,7 +8409,7 @@ var init_utils2 = __esm(() => {
8409
8409
  function createTriggerTools(config, context) {
8410
8410
  const { callbacks } = config;
8411
8411
  return {
8412
- create_trigger: {
8412
+ trigger_create: {
8413
8413
  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.",
8414
8414
  inputSchema: exports_external.object({
8415
8415
  name: exports_external.string().optional().describe("Human-readable trigger name"),
@@ -8443,7 +8443,7 @@ function createTriggerTools(config, context) {
8443
8443
  return callbacks.create(trigger, context);
8444
8444
  }
8445
8445
  },
8446
- list_triggers: {
8446
+ trigger_list: {
8447
8447
  description: "List all scheduled triggers with optional filtering by status or tool name",
8448
8448
  inputSchema: exports_external.object({
8449
8449
  status: exports_external.enum(["active", "paused", "completed", "failed"]).optional().describe("Filter by trigger status"),
@@ -8467,7 +8467,7 @@ function createTriggerTools(config, context) {
8467
8467
  };
8468
8468
  }
8469
8469
  },
8470
- get_trigger: {
8470
+ trigger_get: {
8471
8471
  description: "Get details of a specific trigger by its ID",
8472
8472
  inputSchema: exports_external.object({
8473
8473
  triggerId: exports_external.string().describe("The trigger ID to retrieve")
@@ -8480,7 +8480,7 @@ function createTriggerTools(config, context) {
8480
8480
  return trigger;
8481
8481
  }
8482
8482
  },
8483
- update_trigger: {
8483
+ trigger_update: {
8484
8484
  description: "Update a trigger's properties like name, description, arguments, or schedule",
8485
8485
  inputSchema: exports_external.object({
8486
8486
  triggerId: exports_external.string().describe("The trigger ID to update"),
@@ -8507,7 +8507,7 @@ function createTriggerTools(config, context) {
8507
8507
  return callbacks.update(triggerId, updatesWithTimestamp, context);
8508
8508
  }
8509
8509
  },
8510
- delete_trigger: {
8510
+ trigger_delete: {
8511
8511
  description: "Delete a trigger permanently. This cannot be undone.",
8512
8512
  inputSchema: exports_external.object({
8513
8513
  triggerId: exports_external.string().describe("The trigger ID to delete")
@@ -8517,7 +8517,7 @@ function createTriggerTools(config, context) {
8517
8517
  return { success: true, message: `Trigger ${args.triggerId} deleted` };
8518
8518
  }
8519
8519
  },
8520
- pause_trigger: {
8520
+ trigger_pause: {
8521
8521
  description: "Pause a trigger to temporarily stop it from executing. Can be resumed later.",
8522
8522
  inputSchema: exports_external.object({
8523
8523
  triggerId: exports_external.string().describe("The trigger ID to pause")
@@ -8537,7 +8537,7 @@ function createTriggerTools(config, context) {
8537
8537
  }, context);
8538
8538
  }
8539
8539
  },
8540
- resume_trigger: {
8540
+ trigger_resume: {
8541
8541
  description: "Resume a paused trigger to start executing it again on schedule",
8542
8542
  inputSchema: exports_external.object({
8543
8543
  triggerId: exports_external.string().describe("The trigger ID to resume")
@@ -8777,6 +8777,7 @@ var init_type_generator = __esm(() => {
8777
8777
  var RUNTIME_STUB_SOURCE = `// runtime.mjs — generated by integrate-sdk code mode
8778
8778
  const MCP_URL = process.env.INTEGRATE_MCP_URL;
8779
8779
  const SESSION_TOKEN = process.env.INTEGRATE_SESSION_TOKEN;
8780
+ const API_KEY = process.env.INTEGRATE_API_KEY || '';
8780
8781
  const PROVIDER_TOKENS = process.env.INTEGRATE_PROVIDER_TOKENS || '';
8781
8782
  const INTEGRATIONS_HEADER = process.env.INTEGRATE_INTEGRATIONS || '';
8782
8783
  const CONTEXT_JSON = process.env.INTEGRATE_CONTEXT || '';
@@ -8795,6 +8796,7 @@ async function callTool(toolName, args) {
8795
8796
  'x-integrate-code-mode': '1',
8796
8797
  };
8797
8798
  if (SESSION_TOKEN) headers['Authorization'] = 'Bearer ' + SESSION_TOKEN;
8799
+ if (API_KEY) headers['x-integrate-api-key'] = API_KEY;
8798
8800
  if (PROVIDER_TOKENS) headers['x-integrate-tokens'] = PROVIDER_TOKENS;
8799
8801
  if (INTEGRATIONS_HEADER) headers['x-integrations'] = INTEGRATIONS_HEADER;
8800
8802
  if (CONTEXT_JSON) headers['x-integrate-context'] = CONTEXT_JSON;
@@ -8846,11 +8848,40 @@ export { callTool };
8846
8848
  // src/code-mode/executor.ts
8847
8849
  var exports_executor = {};
8848
8850
  __export(exports_executor, {
8851
+ isSandboxAvailable: () => isSandboxAvailable,
8849
8852
  executeSandboxCode: () => executeSandboxCode,
8853
+ __setSandboxUnavailableForTests: () => __setSandboxUnavailableForTests,
8850
8854
  __setSandboxFactoryForTests: () => __setSandboxFactoryForTests
8851
8855
  });
8852
8856
  function __setSandboxFactoryForTests(factory) {
8853
8857
  sandboxFactoryOverride = factory;
8858
+ _sandboxForcedUnavailableForTests = false;
8859
+ _sandboxAvailableCache = null;
8860
+ }
8861
+ function __setSandboxUnavailableForTests(force) {
8862
+ _sandboxForcedUnavailableForTests = force;
8863
+ _sandboxAvailableCache = null;
8864
+ }
8865
+ async function isSandboxAvailable() {
8866
+ if (_sandboxAvailableCache !== null)
8867
+ return _sandboxAvailableCache;
8868
+ if (_sandboxForcedUnavailableForTests) {
8869
+ _sandboxAvailableCache = false;
8870
+ return false;
8871
+ }
8872
+ if (sandboxFactoryOverride) {
8873
+ _sandboxAvailableCache = true;
8874
+ return true;
8875
+ }
8876
+ try {
8877
+ const dynamicImport = new Function("specifier", "return import(specifier)");
8878
+ await dynamicImport("@" + "vercel/sandbox");
8879
+ _sandboxAvailableCache = true;
8880
+ return true;
8881
+ } catch {
8882
+ _sandboxAvailableCache = false;
8883
+ return false;
8884
+ }
8854
8885
  }
8855
8886
  async function loadSandboxFactory() {
8856
8887
  if (sandboxFactoryOverride)
@@ -8937,6 +8968,8 @@ async function executeSandboxCode(options) {
8937
8968
  const env = {
8938
8969
  INTEGRATE_MCP_URL: options.mcpUrl
8939
8970
  };
8971
+ if (options.apiKey)
8972
+ env.INTEGRATE_API_KEY = options.apiKey;
8940
8973
  if (options.sessionToken)
8941
8974
  env.INTEGRATE_SESSION_TOKEN = options.sessionToken;
8942
8975
  if (options.providerTokens && Object.keys(options.providerTokens).length > 0) {
@@ -8979,7 +9012,7 @@ async function executeSandboxCode(options) {
8979
9012
  }
8980
9013
  }
8981
9014
  }
8982
- var sandboxFactoryOverride = null, RESULT_SENTINEL = "__INTEGRATE_RESULT__";
9015
+ var sandboxFactoryOverride = null, _sandboxAvailableCache = null, _sandboxForcedUnavailableForTests = false, RESULT_SENTINEL = "__INTEGRATE_RESULT__";
8983
9016
  var init_executor = () => {};
8984
9017
 
8985
9018
  // src/code-mode/tool-builder.ts
@@ -8987,6 +9020,13 @@ function resolveCodeModeClientConfig(client) {
8987
9020
  const oauthConfig = client.__oauthConfig;
8988
9021
  return oauthConfig?.codeMode ?? {};
8989
9022
  }
9023
+ async function canUseCodeMode(client) {
9024
+ if (!await isSandboxAvailable())
9025
+ return false;
9026
+ const serverConfig = resolveCodeModeClientConfig(client);
9027
+ const publicUrl = serverConfig.publicUrl ?? getEnv("INTEGRATE_PUBLIC_URL");
9028
+ return !!publicUrl;
9029
+ }
8990
9030
  function buildCodeModeTool(client, options) {
8991
9031
  const { tools, providerTokens, context, integrationIds } = options;
8992
9032
  const generated = generateCodeModeTypes(tools);
@@ -8999,6 +9039,7 @@ ${generated.source}
8999
9039
  \`\`\``;
9000
9040
  const execute = async ({ code }) => {
9001
9041
  const publicUrl = sandboxOverrides.publicUrl ?? serverCodeModeConfig.publicUrl ?? getEnv("INTEGRATE_PUBLIC_URL");
9042
+ const apiKey = client.__oauthConfig?.apiKey;
9002
9043
  if (!publicUrl) {
9003
9044
  return {
9004
9045
  success: false,
@@ -9013,6 +9054,7 @@ ${generated.source}
9013
9054
  return executeSandboxCode({
9014
9055
  code,
9015
9056
  mcpUrl,
9057
+ apiKey,
9016
9058
  providerTokens,
9017
9059
  context,
9018
9060
  integrationsHeader: integrationIds && integrationIds.length > 0 ? integrationIds.join(",") : undefined,
@@ -9090,8 +9132,8 @@ async function getVercelAITools(client, options) {
9090
9132
  await ensureClientConnected(client);
9091
9133
  const mcpTools = await client.getEnabledToolsAsync();
9092
9134
  const vercelTools = {};
9093
- const mode = options?.mode ?? "code";
9094
- if (mode === "code") {
9135
+ const effectiveMode = options?.mode !== undefined ? options.mode : await canUseCodeMode(client) ? "code" : "tools";
9136
+ if (effectiveMode === "code") {
9095
9137
  const codeTool = buildCodeModeTool(client, {
9096
9138
  tools: mcpTools,
9097
9139
  providerTokens,
@@ -10549,8 +10591,8 @@ async function getOpenAITools(client, options) {
10549
10591
  const finalOptions = providerTokens ? { ...options, providerTokens } : options;
10550
10592
  await ensureClientConnected(client);
10551
10593
  const mcpTools = await client.getEnabledToolsAsync();
10552
- const mode = options?.mode ?? "code";
10553
- const openaiTools = mode === "code" ? (() => {
10594
+ const effectiveMode = options?.mode !== undefined ? options.mode : await canUseCodeMode(client) ? "code" : "tools";
10595
+ const openaiTools = effectiveMode === "code" ? (() => {
10554
10596
  const codeTool = buildCodeModeTool(client, {
10555
10597
  tools: mcpTools,
10556
10598
  providerTokens,
@@ -10729,8 +10771,8 @@ async function getAnthropicTools(client, options) {
10729
10771
  const finalOptions = providerTokens ? { ...options, providerTokens } : options;
10730
10772
  await ensureClientConnected(client);
10731
10773
  const mcpTools = await client.getEnabledToolsAsync();
10732
- const mode = options?.mode ?? "code";
10733
- const anthropicTools = mode === "code" ? (() => {
10774
+ const effectiveMode = options?.mode !== undefined ? options.mode : await canUseCodeMode(client) ? "code" : "tools";
10775
+ const anthropicTools = effectiveMode === "code" ? (() => {
10734
10776
  const codeTool = buildCodeModeTool(client, {
10735
10777
  tools: mcpTools,
10736
10778
  providerTokens,
@@ -10918,9 +10960,9 @@ async function getGoogleTools(client, options) {
10918
10960
  const finalOptions = providerTokens ? { ...options, providerTokens } : options;
10919
10961
  await ensureClientConnected(client);
10920
10962
  const mcpTools = await client.getEnabledToolsAsync();
10921
- const mode = options?.mode ?? "code";
10963
+ const effectiveMode = options?.mode !== undefined ? options.mode : await canUseCodeMode(client) ? "code" : "tools";
10922
10964
  let googleTools;
10923
- if (mode === "code") {
10965
+ if (effectiveMode === "code") {
10924
10966
  const TypeEnum = await getGoogleType();
10925
10967
  const codeTool = buildCodeModeTool(client, {
10926
10968
  tools: mcpTools,
@@ -11467,6 +11509,24 @@ function createMCPServer(config) {
11467
11509
  } catch {}
11468
11510
  }
11469
11511
  }
11512
+ if (!authHeader && config.getProviderToken) {
11513
+ const codeModeHeader = webRequest.headers.get("x-integrate-code-mode");
11514
+ const contextHeader = webRequest.headers.get("x-integrate-context");
11515
+ const callbackApiKey = webRequest.headers.get("x-integrate-api-key");
11516
+ const toolName = typeof body?.name === "string" ? body.name : "";
11517
+ if (codeModeHeader === "1" && contextHeader && toolName && config.apiKey && callbackApiKey === config.apiKey) {
11518
+ try {
11519
+ const context2 = JSON.parse(contextHeader);
11520
+ const provider = toolName.split("_")[0];
11521
+ if (provider) {
11522
+ const tokenData = await config.getProviderToken(provider, undefined, context2);
11523
+ if (tokenData?.accessToken) {
11524
+ authHeader = `Bearer ${tokenData.accessToken}`;
11525
+ }
11526
+ }
11527
+ } catch {}
11528
+ }
11529
+ }
11470
11530
  const { OAuthHandler: OAuthHandler2 } = await Promise.resolve().then(() => (init_base_handler(), exports_base_handler));
11471
11531
  const oauthHandler = new OAuthHandler2({
11472
11532
  providers,