integrate-sdk 0.9.22-dev.0 → 0.9.23
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 +0 -6
- package/dist/adapters/base-handler.d.ts.map +1 -1
- package/dist/adapters/base-handler.js +0 -6
- package/dist/adapters/index.js +1 -23
- package/dist/adapters/nextjs.d.ts.map +1 -1
- package/dist/adapters/nextjs.js +1 -23
- package/dist/adapters/solid-start.js +1 -23
- package/dist/adapters/svelte-kit.js +1 -23
- package/dist/ai/anthropic.js +0 -46
- package/dist/ai/google.js +0 -46
- package/dist/ai/index.js +0 -46
- package/dist/ai/openai.js +0 -46
- package/dist/ai/vercel-ai.js +0 -46
- package/dist/code-mode/executor.d.ts.map +1 -1
- package/dist/code-mode/executor.js +0 -34
- package/dist/code-mode/index.js +0 -46
- 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 +0 -24
- package/dist/code-mode/tool-builder.d.ts.map +1 -1
- package/dist/code-mode/tool-builder.js +0 -46
- package/dist/index.js +1 -23
- package/dist/oauth.js +0 -6
- package/dist/server.js +2 -112
- package/dist/src/adapters/base-handler.d.ts.map +1 -1
- package/dist/src/adapters/nextjs.d.ts.map +1 -1
- package/dist/src/code-mode/executor.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.map +1 -1
- package/dist/src/server.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/ai/vercel-ai.js
CHANGED
|
@@ -4677,21 +4677,6 @@ if (!MCP_URL) {
|
|
|
4677
4677
|
throw new Error('INTEGRATE_MCP_URL is not set — the sandbox cannot reach the MCP route.');
|
|
4678
4678
|
}
|
|
4679
4679
|
|
|
4680
|
-
// Diagnostic: log sandbox env summary to stderr so it shows up in the
|
|
4681
|
-
// execute_code result's stderr field for debugging auth issues.
|
|
4682
|
-
console.error('[sandbox-diag] MCP_URL=' + MCP_URL);
|
|
4683
|
-
console.error('[sandbox-diag] HAS_API_KEY=' + !!API_KEY);
|
|
4684
|
-
console.error('[sandbox-diag] HAS_SESSION_TOKEN=' + !!SESSION_TOKEN);
|
|
4685
|
-
console.error('[sandbox-diag] HAS_PROVIDER_TOKENS=' + !!PROVIDER_TOKENS);
|
|
4686
|
-
if (PROVIDER_TOKENS) {
|
|
4687
|
-
try {
|
|
4688
|
-
const _parsed = JSON.parse(PROVIDER_TOKENS);
|
|
4689
|
-
const _keys = Object.keys(_parsed);
|
|
4690
|
-
console.error('[sandbox-diag] PROVIDER_TOKEN_KEYS=' + _keys.join(','));
|
|
4691
|
-
console.error('[sandbox-diag] TOKEN_LENGTHS=' + _keys.map(k => k + ':' + (typeof _parsed[k] === 'string' ? _parsed[k].length : typeof _parsed[k])).join(','));
|
|
4692
|
-
} catch { console.error('[sandbox-diag] PROVIDER_TOKENS is not valid JSON'); }
|
|
4693
|
-
}
|
|
4694
|
-
|
|
4695
4680
|
function camelToSnake(str) {
|
|
4696
4681
|
return str.replace(/[A-Z]/g, (letter) => '_' + letter.toLowerCase());
|
|
4697
4682
|
}
|
|
@@ -4707,14 +4692,6 @@ async function callTool(toolName, args) {
|
|
|
4707
4692
|
if (INTEGRATIONS_HEADER) headers['x-integrations'] = INTEGRATIONS_HEADER;
|
|
4708
4693
|
if (CONTEXT_JSON) headers['x-integrate-context'] = CONTEXT_JSON;
|
|
4709
4694
|
|
|
4710
|
-
console.error('[sandbox-diag] callTool: ' + toolName + ' → ' + MCP_URL);
|
|
4711
|
-
console.error('[sandbox-diag] headers: ' + JSON.stringify({
|
|
4712
|
-
hasAuth: !!headers['Authorization'],
|
|
4713
|
-
hasApiKey: !!headers['x-integrate-api-key'],
|
|
4714
|
-
hasTokens: !!headers['x-integrate-tokens'],
|
|
4715
|
-
hasCodeMode: !!headers['x-integrate-code-mode'],
|
|
4716
|
-
}));
|
|
4717
|
-
|
|
4718
4695
|
const res = await fetch(MCP_URL, {
|
|
4719
4696
|
method: 'POST',
|
|
4720
4697
|
headers,
|
|
@@ -4722,7 +4699,6 @@ async function callTool(toolName, args) {
|
|
|
4722
4699
|
});
|
|
4723
4700
|
|
|
4724
4701
|
const text = await res.text();
|
|
4725
|
-
console.error('[sandbox-diag] response: HTTP ' + res.status + ' len=' + text.length);
|
|
4726
4702
|
|
|
4727
4703
|
let payload;
|
|
4728
4704
|
try {
|
|
@@ -4901,16 +4877,6 @@ async function executeSandboxCode(options) {
|
|
|
4901
4877
|
env.INTEGRATE_INTEGRATIONS = options.integrationsHeader;
|
|
4902
4878
|
if (options.context)
|
|
4903
4879
|
env.INTEGRATE_CONTEXT = JSON.stringify(options.context);
|
|
4904
|
-
console.debug("[integrate-sdk] Sandbox env:", JSON.stringify({
|
|
4905
|
-
mcpUrl: options.mcpUrl,
|
|
4906
|
-
hasApiKey: !!options.apiKey,
|
|
4907
|
-
hasSessionToken: !!options.sessionToken,
|
|
4908
|
-
providerTokenKeys: options.providerTokens ? Object.keys(options.providerTokens) : [],
|
|
4909
|
-
hasIntegrations: !!options.integrationsHeader,
|
|
4910
|
-
hasContext: !!options.context,
|
|
4911
|
-
runtime,
|
|
4912
|
-
timeoutMs
|
|
4913
|
-
}));
|
|
4914
4880
|
const cmd = await sandbox.runCommand({
|
|
4915
4881
|
cmd: "node",
|
|
4916
4882
|
args: ["user.mjs"],
|
|
@@ -5037,13 +5003,9 @@ ${generated.compact}`;
|
|
|
5037
5003
|
}
|
|
5038
5004
|
const mcpUrl = publicUrl.replace(/\/$/, "") + "/api/integrate/mcp";
|
|
5039
5005
|
let resolvedTokens = providerTokens;
|
|
5040
|
-
let tokenSource = resolvedTokens && Object.keys(resolvedTokens).length > 0 ? "build-time" : "none";
|
|
5041
5006
|
if (!resolvedTokens || Object.keys(resolvedTokens).length === 0) {
|
|
5042
5007
|
try {
|
|
5043
5008
|
resolvedTokens = await getProviderTokens();
|
|
5044
|
-
if (resolvedTokens && Object.keys(resolvedTokens).length > 0) {
|
|
5045
|
-
tokenSource = "request-header";
|
|
5046
|
-
}
|
|
5047
5009
|
} catch {}
|
|
5048
5010
|
}
|
|
5049
5011
|
if (!resolvedTokens || Object.keys(resolvedTokens).length === 0) {
|
|
@@ -5064,17 +5026,9 @@ ${generated.compact}`;
|
|
|
5064
5026
|
}
|
|
5065
5027
|
if (Object.keys(resolvedTokens).length === 0) {
|
|
5066
5028
|
resolvedTokens = undefined;
|
|
5067
|
-
} else {
|
|
5068
|
-
tokenSource = "oauthManager";
|
|
5069
5029
|
}
|
|
5070
5030
|
}
|
|
5071
5031
|
}
|
|
5072
|
-
console.debug("[integrate-sdk] execute_code token resolution:", JSON.stringify({
|
|
5073
|
-
source: tokenSource,
|
|
5074
|
-
keys: resolvedTokens ? Object.keys(resolvedTokens) : [],
|
|
5075
|
-
hasApiKey: !!apiKey,
|
|
5076
|
-
mcpUrl
|
|
5077
|
-
}));
|
|
5078
5032
|
return executeSandboxCode({
|
|
5079
5033
|
code,
|
|
5080
5034
|
mcpUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/code-mode/executor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/code-mode/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,21 +30,6 @@ if (!MCP_URL) {
|
|
|
30
30
|
throw new Error('INTEGRATE_MCP_URL is not set — the sandbox cannot reach the MCP route.');
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
// Diagnostic: log sandbox env summary to stderr so it shows up in the
|
|
34
|
-
// execute_code result's stderr field for debugging auth issues.
|
|
35
|
-
console.error('[sandbox-diag] MCP_URL=' + MCP_URL);
|
|
36
|
-
console.error('[sandbox-diag] HAS_API_KEY=' + !!API_KEY);
|
|
37
|
-
console.error('[sandbox-diag] HAS_SESSION_TOKEN=' + !!SESSION_TOKEN);
|
|
38
|
-
console.error('[sandbox-diag] HAS_PROVIDER_TOKENS=' + !!PROVIDER_TOKENS);
|
|
39
|
-
if (PROVIDER_TOKENS) {
|
|
40
|
-
try {
|
|
41
|
-
const _parsed = JSON.parse(PROVIDER_TOKENS);
|
|
42
|
-
const _keys = Object.keys(_parsed);
|
|
43
|
-
console.error('[sandbox-diag] PROVIDER_TOKEN_KEYS=' + _keys.join(','));
|
|
44
|
-
console.error('[sandbox-diag] TOKEN_LENGTHS=' + _keys.map(k => k + ':' + (typeof _parsed[k] === 'string' ? _parsed[k].length : typeof _parsed[k])).join(','));
|
|
45
|
-
} catch { console.error('[sandbox-diag] PROVIDER_TOKENS is not valid JSON'); }
|
|
46
|
-
}
|
|
47
|
-
|
|
48
33
|
function camelToSnake(str) {
|
|
49
34
|
return str.replace(/[A-Z]/g, (letter) => '_' + letter.toLowerCase());
|
|
50
35
|
}
|
|
@@ -60,14 +45,6 @@ async function callTool(toolName, args) {
|
|
|
60
45
|
if (INTEGRATIONS_HEADER) headers['x-integrations'] = INTEGRATIONS_HEADER;
|
|
61
46
|
if (CONTEXT_JSON) headers['x-integrate-context'] = CONTEXT_JSON;
|
|
62
47
|
|
|
63
|
-
console.error('[sandbox-diag] callTool: ' + toolName + ' → ' + MCP_URL);
|
|
64
|
-
console.error('[sandbox-diag] headers: ' + JSON.stringify({
|
|
65
|
-
hasAuth: !!headers['Authorization'],
|
|
66
|
-
hasApiKey: !!headers['x-integrate-api-key'],
|
|
67
|
-
hasTokens: !!headers['x-integrate-tokens'],
|
|
68
|
-
hasCodeMode: !!headers['x-integrate-code-mode'],
|
|
69
|
-
}));
|
|
70
|
-
|
|
71
48
|
const res = await fetch(MCP_URL, {
|
|
72
49
|
method: 'POST',
|
|
73
50
|
headers,
|
|
@@ -75,7 +52,6 @@ async function callTool(toolName, args) {
|
|
|
75
52
|
});
|
|
76
53
|
|
|
77
54
|
const text = await res.text();
|
|
78
|
-
console.error('[sandbox-diag] response: HTTP ' + res.status + ' len=' + text.length);
|
|
79
55
|
|
|
80
56
|
let payload;
|
|
81
57
|
try {
|
|
@@ -265,16 +241,6 @@ async function executeSandboxCode(options) {
|
|
|
265
241
|
env.INTEGRATE_INTEGRATIONS = options.integrationsHeader;
|
|
266
242
|
if (options.context)
|
|
267
243
|
env.INTEGRATE_CONTEXT = JSON.stringify(options.context);
|
|
268
|
-
console.debug("[integrate-sdk] Sandbox env:", JSON.stringify({
|
|
269
|
-
mcpUrl: options.mcpUrl,
|
|
270
|
-
hasApiKey: !!options.apiKey,
|
|
271
|
-
hasSessionToken: !!options.sessionToken,
|
|
272
|
-
providerTokenKeys: options.providerTokens ? Object.keys(options.providerTokens) : [],
|
|
273
|
-
hasIntegrations: !!options.integrationsHeader,
|
|
274
|
-
hasContext: !!options.context,
|
|
275
|
-
runtime,
|
|
276
|
-
timeoutMs
|
|
277
|
-
}));
|
|
278
244
|
const cmd = await sandbox.runCommand({
|
|
279
245
|
cmd: "node",
|
|
280
246
|
args: ["user.mjs"],
|
package/dist/code-mode/index.js
CHANGED
|
@@ -275,21 +275,6 @@ if (!MCP_URL) {
|
|
|
275
275
|
throw new Error('INTEGRATE_MCP_URL is not set — the sandbox cannot reach the MCP route.');
|
|
276
276
|
}
|
|
277
277
|
|
|
278
|
-
// Diagnostic: log sandbox env summary to stderr so it shows up in the
|
|
279
|
-
// execute_code result's stderr field for debugging auth issues.
|
|
280
|
-
console.error('[sandbox-diag] MCP_URL=' + MCP_URL);
|
|
281
|
-
console.error('[sandbox-diag] HAS_API_KEY=' + !!API_KEY);
|
|
282
|
-
console.error('[sandbox-diag] HAS_SESSION_TOKEN=' + !!SESSION_TOKEN);
|
|
283
|
-
console.error('[sandbox-diag] HAS_PROVIDER_TOKENS=' + !!PROVIDER_TOKENS);
|
|
284
|
-
if (PROVIDER_TOKENS) {
|
|
285
|
-
try {
|
|
286
|
-
const _parsed = JSON.parse(PROVIDER_TOKENS);
|
|
287
|
-
const _keys = Object.keys(_parsed);
|
|
288
|
-
console.error('[sandbox-diag] PROVIDER_TOKEN_KEYS=' + _keys.join(','));
|
|
289
|
-
console.error('[sandbox-diag] TOKEN_LENGTHS=' + _keys.map(k => k + ':' + (typeof _parsed[k] === 'string' ? _parsed[k].length : typeof _parsed[k])).join(','));
|
|
290
|
-
} catch { console.error('[sandbox-diag] PROVIDER_TOKENS is not valid JSON'); }
|
|
291
|
-
}
|
|
292
|
-
|
|
293
278
|
function camelToSnake(str) {
|
|
294
279
|
return str.replace(/[A-Z]/g, (letter) => '_' + letter.toLowerCase());
|
|
295
280
|
}
|
|
@@ -305,14 +290,6 @@ async function callTool(toolName, args) {
|
|
|
305
290
|
if (INTEGRATIONS_HEADER) headers['x-integrations'] = INTEGRATIONS_HEADER;
|
|
306
291
|
if (CONTEXT_JSON) headers['x-integrate-context'] = CONTEXT_JSON;
|
|
307
292
|
|
|
308
|
-
console.error('[sandbox-diag] callTool: ' + toolName + ' → ' + MCP_URL);
|
|
309
|
-
console.error('[sandbox-diag] headers: ' + JSON.stringify({
|
|
310
|
-
hasAuth: !!headers['Authorization'],
|
|
311
|
-
hasApiKey: !!headers['x-integrate-api-key'],
|
|
312
|
-
hasTokens: !!headers['x-integrate-tokens'],
|
|
313
|
-
hasCodeMode: !!headers['x-integrate-code-mode'],
|
|
314
|
-
}));
|
|
315
|
-
|
|
316
293
|
const res = await fetch(MCP_URL, {
|
|
317
294
|
method: 'POST',
|
|
318
295
|
headers,
|
|
@@ -320,7 +297,6 @@ async function callTool(toolName, args) {
|
|
|
320
297
|
});
|
|
321
298
|
|
|
322
299
|
const text = await res.text();
|
|
323
|
-
console.error('[sandbox-diag] response: HTTP ' + res.status + ' len=' + text.length);
|
|
324
300
|
|
|
325
301
|
let payload;
|
|
326
302
|
try {
|
|
@@ -510,16 +486,6 @@ async function executeSandboxCode(options) {
|
|
|
510
486
|
env.INTEGRATE_INTEGRATIONS = options.integrationsHeader;
|
|
511
487
|
if (options.context)
|
|
512
488
|
env.INTEGRATE_CONTEXT = JSON.stringify(options.context);
|
|
513
|
-
console.debug("[integrate-sdk] Sandbox env:", JSON.stringify({
|
|
514
|
-
mcpUrl: options.mcpUrl,
|
|
515
|
-
hasApiKey: !!options.apiKey,
|
|
516
|
-
hasSessionToken: !!options.sessionToken,
|
|
517
|
-
providerTokenKeys: options.providerTokens ? Object.keys(options.providerTokens) : [],
|
|
518
|
-
hasIntegrations: !!options.integrationsHeader,
|
|
519
|
-
hasContext: !!options.context,
|
|
520
|
-
runtime,
|
|
521
|
-
timeoutMs
|
|
522
|
-
}));
|
|
523
489
|
const cmd = await sandbox.runCommand({
|
|
524
490
|
cmd: "node",
|
|
525
491
|
args: ["user.mjs"],
|
|
@@ -705,13 +671,9 @@ ${generated.compact}`;
|
|
|
705
671
|
}
|
|
706
672
|
const mcpUrl = publicUrl.replace(/\/$/, "") + "/api/integrate/mcp";
|
|
707
673
|
let resolvedTokens = providerTokens;
|
|
708
|
-
let tokenSource = resolvedTokens && Object.keys(resolvedTokens).length > 0 ? "build-time" : "none";
|
|
709
674
|
if (!resolvedTokens || Object.keys(resolvedTokens).length === 0) {
|
|
710
675
|
try {
|
|
711
676
|
resolvedTokens = await getProviderTokens();
|
|
712
|
-
if (resolvedTokens && Object.keys(resolvedTokens).length > 0) {
|
|
713
|
-
tokenSource = "request-header";
|
|
714
|
-
}
|
|
715
677
|
} catch {}
|
|
716
678
|
}
|
|
717
679
|
if (!resolvedTokens || Object.keys(resolvedTokens).length === 0) {
|
|
@@ -732,17 +694,9 @@ ${generated.compact}`;
|
|
|
732
694
|
}
|
|
733
695
|
if (Object.keys(resolvedTokens).length === 0) {
|
|
734
696
|
resolvedTokens = undefined;
|
|
735
|
-
} else {
|
|
736
|
-
tokenSource = "oauthManager";
|
|
737
697
|
}
|
|
738
698
|
}
|
|
739
699
|
}
|
|
740
|
-
console.debug("[integrate-sdk] execute_code token resolution:", JSON.stringify({
|
|
741
|
-
source: tokenSource,
|
|
742
|
-
keys: resolvedTokens ? Object.keys(resolvedTokens) : [],
|
|
743
|
-
hasApiKey: !!apiKey,
|
|
744
|
-
mcpUrl
|
|
745
|
-
}));
|
|
746
700
|
return executeSandboxCode({
|
|
747
701
|
code,
|
|
748
702
|
mcpUrl,
|
|
@@ -12,5 +12,5 @@
|
|
|
12
12
|
* dependencies. It is NOT imported by the host SDK — it only ships as a
|
|
13
13
|
* literal payload to the sandbox.
|
|
14
14
|
*/
|
|
15
|
-
export declare const RUNTIME_STUB_SOURCE = "// runtime.mjs \u2014 generated by integrate-sdk code mode\nconst MCP_URL = process.env.INTEGRATE_MCP_URL;\nconst SESSION_TOKEN = process.env.INTEGRATE_SESSION_TOKEN;\nconst API_KEY = process.env.INTEGRATE_API_KEY || '';\nconst PROVIDER_TOKENS = process.env.INTEGRATE_PROVIDER_TOKENS || '';\nconst INTEGRATIONS_HEADER = process.env.INTEGRATE_INTEGRATIONS || '';\nconst CONTEXT_JSON = process.env.INTEGRATE_CONTEXT || '';\n\nif (!MCP_URL) {\n throw new Error('INTEGRATE_MCP_URL is not set \u2014 the sandbox cannot reach the MCP route.');\n}\n\
|
|
15
|
+
export declare const RUNTIME_STUB_SOURCE = "// runtime.mjs \u2014 generated by integrate-sdk code mode\nconst MCP_URL = process.env.INTEGRATE_MCP_URL;\nconst SESSION_TOKEN = process.env.INTEGRATE_SESSION_TOKEN;\nconst API_KEY = process.env.INTEGRATE_API_KEY || '';\nconst PROVIDER_TOKENS = process.env.INTEGRATE_PROVIDER_TOKENS || '';\nconst INTEGRATIONS_HEADER = process.env.INTEGRATE_INTEGRATIONS || '';\nconst CONTEXT_JSON = process.env.INTEGRATE_CONTEXT || '';\n\nif (!MCP_URL) {\n throw new Error('INTEGRATE_MCP_URL is not set \u2014 the sandbox cannot reach the MCP route.');\n}\n\nfunction camelToSnake(str) {\n return str.replace(/[A-Z]/g, (letter) => '_' + letter.toLowerCase());\n}\n\nasync function callTool(toolName, args) {\n const headers = {\n 'Content-Type': 'application/json',\n 'x-integrate-code-mode': '1',\n };\n if (SESSION_TOKEN) headers['Authorization'] = 'Bearer ' + SESSION_TOKEN;\n if (API_KEY) headers['x-integrate-api-key'] = API_KEY;\n if (PROVIDER_TOKENS) headers['x-integrate-tokens'] = PROVIDER_TOKENS;\n if (INTEGRATIONS_HEADER) headers['x-integrations'] = INTEGRATIONS_HEADER;\n if (CONTEXT_JSON) headers['x-integrate-context'] = CONTEXT_JSON;\n\n const res = await fetch(MCP_URL, {\n method: 'POST',\n headers,\n body: JSON.stringify({ name: toolName, arguments: args || {} }),\n });\n\n const text = await res.text();\n\n let payload;\n try {\n payload = text ? JSON.parse(text) : null;\n } catch {\n payload = { content: [{ type: 'text', text }] };\n }\n\n if (!res.ok) {\n let message = (payload && (payload.error || payload.message)) || 'Tool call failed: HTTP ' + res.status;\n if ((res.status === 401 || res.status === 403) && typeof text === 'string' && text.indexOf('Authorization header') !== -1) {\n message =\n 'Code Mode callback was rejected by the MCP server (HTTP ' + res.status + '). ' +\n 'The SDK route could not synthesize an Authorization header. Check the host-side ' +\n 'createMCPServer config (apiKey, getProviderToken) or pass providerTokens to the ' +\n 'AI helper. Original upstream message: ' + text;\n }\n const err = new Error(message);\n err.status = res.status;\n err.toolName = toolName;\n throw err;\n }\n\n return payload;\n}\n\nfunction createIntegrationProxy(integrationId) {\n return new Proxy({}, {\n get(_target, methodName) {\n if (typeof methodName !== 'string') return undefined;\n return (args) => callTool(integrationId + '_' + camelToSnake(methodName), args);\n },\n });\n}\n\nexport const client = new Proxy({}, {\n get(_target, integrationId) {\n if (typeof integrationId !== 'string') return undefined;\n return createIntegrationProxy(integrationId);\n },\n});\n\nexport { callTool };\n";
|
|
16
16
|
//# sourceMappingURL=runtime-stub.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-stub.d.ts","sourceRoot":"","sources":["../../../src/code-mode/runtime-stub.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"runtime-stub.d.ts","sourceRoot":"","sources":["../../../src/code-mode/runtime-stub.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,mBAAmB,gsFA6E/B,CAAC"}
|
|
@@ -30,21 +30,6 @@ if (!MCP_URL) {
|
|
|
30
30
|
throw new Error('INTEGRATE_MCP_URL is not set — the sandbox cannot reach the MCP route.');
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
// Diagnostic: log sandbox env summary to stderr so it shows up in the
|
|
34
|
-
// execute_code result's stderr field for debugging auth issues.
|
|
35
|
-
console.error('[sandbox-diag] MCP_URL=' + MCP_URL);
|
|
36
|
-
console.error('[sandbox-diag] HAS_API_KEY=' + !!API_KEY);
|
|
37
|
-
console.error('[sandbox-diag] HAS_SESSION_TOKEN=' + !!SESSION_TOKEN);
|
|
38
|
-
console.error('[sandbox-diag] HAS_PROVIDER_TOKENS=' + !!PROVIDER_TOKENS);
|
|
39
|
-
if (PROVIDER_TOKENS) {
|
|
40
|
-
try {
|
|
41
|
-
const _parsed = JSON.parse(PROVIDER_TOKENS);
|
|
42
|
-
const _keys = Object.keys(_parsed);
|
|
43
|
-
console.error('[sandbox-diag] PROVIDER_TOKEN_KEYS=' + _keys.join(','));
|
|
44
|
-
console.error('[sandbox-diag] TOKEN_LENGTHS=' + _keys.map(k => k + ':' + (typeof _parsed[k] === 'string' ? _parsed[k].length : typeof _parsed[k])).join(','));
|
|
45
|
-
} catch { console.error('[sandbox-diag] PROVIDER_TOKENS is not valid JSON'); }
|
|
46
|
-
}
|
|
47
|
-
|
|
48
33
|
function camelToSnake(str) {
|
|
49
34
|
return str.replace(/[A-Z]/g, (letter) => '_' + letter.toLowerCase());
|
|
50
35
|
}
|
|
@@ -60,14 +45,6 @@ async function callTool(toolName, args) {
|
|
|
60
45
|
if (INTEGRATIONS_HEADER) headers['x-integrations'] = INTEGRATIONS_HEADER;
|
|
61
46
|
if (CONTEXT_JSON) headers['x-integrate-context'] = CONTEXT_JSON;
|
|
62
47
|
|
|
63
|
-
console.error('[sandbox-diag] callTool: ' + toolName + ' → ' + MCP_URL);
|
|
64
|
-
console.error('[sandbox-diag] headers: ' + JSON.stringify({
|
|
65
|
-
hasAuth: !!headers['Authorization'],
|
|
66
|
-
hasApiKey: !!headers['x-integrate-api-key'],
|
|
67
|
-
hasTokens: !!headers['x-integrate-tokens'],
|
|
68
|
-
hasCodeMode: !!headers['x-integrate-code-mode'],
|
|
69
|
-
}));
|
|
70
|
-
|
|
71
48
|
const res = await fetch(MCP_URL, {
|
|
72
49
|
method: 'POST',
|
|
73
50
|
headers,
|
|
@@ -75,7 +52,6 @@ async function callTool(toolName, args) {
|
|
|
75
52
|
});
|
|
76
53
|
|
|
77
54
|
const text = await res.text();
|
|
78
|
-
console.error('[sandbox-diag] response: HTTP ' + res.status + ' len=' + text.length);
|
|
79
55
|
|
|
80
56
|
let payload;
|
|
81
57
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-builder.d.ts","sourceRoot":"","sources":["../../../src/code-mode/tool-builder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tool-builder.d.ts","sourceRoot":"","sources":["../../../src/code-mode/tool-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -275,21 +275,6 @@ if (!MCP_URL) {
|
|
|
275
275
|
throw new Error('INTEGRATE_MCP_URL is not set — the sandbox cannot reach the MCP route.');
|
|
276
276
|
}
|
|
277
277
|
|
|
278
|
-
// Diagnostic: log sandbox env summary to stderr so it shows up in the
|
|
279
|
-
// execute_code result's stderr field for debugging auth issues.
|
|
280
|
-
console.error('[sandbox-diag] MCP_URL=' + MCP_URL);
|
|
281
|
-
console.error('[sandbox-diag] HAS_API_KEY=' + !!API_KEY);
|
|
282
|
-
console.error('[sandbox-diag] HAS_SESSION_TOKEN=' + !!SESSION_TOKEN);
|
|
283
|
-
console.error('[sandbox-diag] HAS_PROVIDER_TOKENS=' + !!PROVIDER_TOKENS);
|
|
284
|
-
if (PROVIDER_TOKENS) {
|
|
285
|
-
try {
|
|
286
|
-
const _parsed = JSON.parse(PROVIDER_TOKENS);
|
|
287
|
-
const _keys = Object.keys(_parsed);
|
|
288
|
-
console.error('[sandbox-diag] PROVIDER_TOKEN_KEYS=' + _keys.join(','));
|
|
289
|
-
console.error('[sandbox-diag] TOKEN_LENGTHS=' + _keys.map(k => k + ':' + (typeof _parsed[k] === 'string' ? _parsed[k].length : typeof _parsed[k])).join(','));
|
|
290
|
-
} catch { console.error('[sandbox-diag] PROVIDER_TOKENS is not valid JSON'); }
|
|
291
|
-
}
|
|
292
|
-
|
|
293
278
|
function camelToSnake(str) {
|
|
294
279
|
return str.replace(/[A-Z]/g, (letter) => '_' + letter.toLowerCase());
|
|
295
280
|
}
|
|
@@ -305,14 +290,6 @@ async function callTool(toolName, args) {
|
|
|
305
290
|
if (INTEGRATIONS_HEADER) headers['x-integrations'] = INTEGRATIONS_HEADER;
|
|
306
291
|
if (CONTEXT_JSON) headers['x-integrate-context'] = CONTEXT_JSON;
|
|
307
292
|
|
|
308
|
-
console.error('[sandbox-diag] callTool: ' + toolName + ' → ' + MCP_URL);
|
|
309
|
-
console.error('[sandbox-diag] headers: ' + JSON.stringify({
|
|
310
|
-
hasAuth: !!headers['Authorization'],
|
|
311
|
-
hasApiKey: !!headers['x-integrate-api-key'],
|
|
312
|
-
hasTokens: !!headers['x-integrate-tokens'],
|
|
313
|
-
hasCodeMode: !!headers['x-integrate-code-mode'],
|
|
314
|
-
}));
|
|
315
|
-
|
|
316
293
|
const res = await fetch(MCP_URL, {
|
|
317
294
|
method: 'POST',
|
|
318
295
|
headers,
|
|
@@ -320,7 +297,6 @@ async function callTool(toolName, args) {
|
|
|
320
297
|
});
|
|
321
298
|
|
|
322
299
|
const text = await res.text();
|
|
323
|
-
console.error('[sandbox-diag] response: HTTP ' + res.status + ' len=' + text.length);
|
|
324
300
|
|
|
325
301
|
let payload;
|
|
326
302
|
try {
|
|
@@ -510,16 +486,6 @@ async function executeSandboxCode(options) {
|
|
|
510
486
|
env.INTEGRATE_INTEGRATIONS = options.integrationsHeader;
|
|
511
487
|
if (options.context)
|
|
512
488
|
env.INTEGRATE_CONTEXT = JSON.stringify(options.context);
|
|
513
|
-
console.debug("[integrate-sdk] Sandbox env:", JSON.stringify({
|
|
514
|
-
mcpUrl: options.mcpUrl,
|
|
515
|
-
hasApiKey: !!options.apiKey,
|
|
516
|
-
hasSessionToken: !!options.sessionToken,
|
|
517
|
-
providerTokenKeys: options.providerTokens ? Object.keys(options.providerTokens) : [],
|
|
518
|
-
hasIntegrations: !!options.integrationsHeader,
|
|
519
|
-
hasContext: !!options.context,
|
|
520
|
-
runtime,
|
|
521
|
-
timeoutMs
|
|
522
|
-
}));
|
|
523
489
|
const cmd = await sandbox.runCommand({
|
|
524
490
|
cmd: "node",
|
|
525
491
|
args: ["user.mjs"],
|
|
@@ -705,13 +671,9 @@ ${generated.compact}`;
|
|
|
705
671
|
}
|
|
706
672
|
const mcpUrl = publicUrl.replace(/\/$/, "") + "/api/integrate/mcp";
|
|
707
673
|
let resolvedTokens = providerTokens;
|
|
708
|
-
let tokenSource = resolvedTokens && Object.keys(resolvedTokens).length > 0 ? "build-time" : "none";
|
|
709
674
|
if (!resolvedTokens || Object.keys(resolvedTokens).length === 0) {
|
|
710
675
|
try {
|
|
711
676
|
resolvedTokens = await getProviderTokens();
|
|
712
|
-
if (resolvedTokens && Object.keys(resolvedTokens).length > 0) {
|
|
713
|
-
tokenSource = "request-header";
|
|
714
|
-
}
|
|
715
677
|
} catch {}
|
|
716
678
|
}
|
|
717
679
|
if (!resolvedTokens || Object.keys(resolvedTokens).length === 0) {
|
|
@@ -732,17 +694,9 @@ ${generated.compact}`;
|
|
|
732
694
|
}
|
|
733
695
|
if (Object.keys(resolvedTokens).length === 0) {
|
|
734
696
|
resolvedTokens = undefined;
|
|
735
|
-
} else {
|
|
736
|
-
tokenSource = "oauthManager";
|
|
737
697
|
}
|
|
738
698
|
}
|
|
739
699
|
}
|
|
740
|
-
console.debug("[integrate-sdk] execute_code token resolution:", JSON.stringify({
|
|
741
|
-
source: tokenSource,
|
|
742
|
-
keys: resolvedTokens ? Object.keys(resolvedTokens) : [],
|
|
743
|
-
hasApiKey: !!apiKey,
|
|
744
|
-
mcpUrl
|
|
745
|
-
}));
|
|
746
700
|
return executeSandboxCode({
|
|
747
701
|
code,
|
|
748
702
|
mcpUrl,
|
package/dist/index.js
CHANGED
|
@@ -3396,12 +3396,6 @@ class OAuthHandler {
|
|
|
3396
3396
|
arguments: request.arguments || {}
|
|
3397
3397
|
}
|
|
3398
3398
|
};
|
|
3399
|
-
console.warn("[integrate-sdk] handleToolCall →", url, JSON.stringify({
|
|
3400
|
-
tool: request.name,
|
|
3401
|
-
hasAuth: !!headers["Authorization"],
|
|
3402
|
-
hasApiKey: !!headers["X-API-KEY"],
|
|
3403
|
-
headerKeys: Object.keys(headers)
|
|
3404
|
-
}));
|
|
3405
3399
|
let response = await fetch(url, {
|
|
3406
3400
|
method: "POST",
|
|
3407
3401
|
headers,
|
|
@@ -3575,13 +3569,6 @@ function createNextOAuthHandler(config) {
|
|
|
3575
3569
|
const codeModeHeader = req.headers.get("x-integrate-code-mode");
|
|
3576
3570
|
const tokensHeader = req.headers.get("x-integrate-tokens");
|
|
3577
3571
|
const toolName = typeof body?.name === "string" ? body.name : "";
|
|
3578
|
-
console.warn("[integrate-sdk] nextjs mcp() handler:", JSON.stringify({
|
|
3579
|
-
toolName,
|
|
3580
|
-
hasAuth: !!authHeader,
|
|
3581
|
-
codeModeHeader,
|
|
3582
|
-
hasTokensHeader: !!tokensHeader,
|
|
3583
|
-
tokensHeaderLength: tokensHeader?.length ?? 0
|
|
3584
|
-
}));
|
|
3585
3572
|
if (codeModeHeader === "1" && tokensHeader && toolName) {
|
|
3586
3573
|
try {
|
|
3587
3574
|
const tokens = JSON.parse(tokensHeader);
|
|
@@ -3594,19 +3581,10 @@ function createNextOAuthHandler(config) {
|
|
|
3594
3581
|
best = candidate;
|
|
3595
3582
|
}
|
|
3596
3583
|
}
|
|
3597
|
-
console.warn("[integrate-sdk] nextjs mcp() token resolution:", JSON.stringify({
|
|
3598
|
-
toolName,
|
|
3599
|
-
tokenKeys: Object.keys(tokens),
|
|
3600
|
-
bestMatch: best,
|
|
3601
|
-
hasToken: best ? !!tokens[best] : false,
|
|
3602
|
-
willSetAuth: !!(best && tokens[best])
|
|
3603
|
-
}));
|
|
3604
3584
|
if (best && tokens[best]) {
|
|
3605
3585
|
authHeader = `Bearer ${tokens[best]}`;
|
|
3606
3586
|
}
|
|
3607
|
-
} catch
|
|
3608
|
-
console.warn("[integrate-sdk] nextjs mcp() token parse error:", e instanceof Error ? e.message : e);
|
|
3609
|
-
}
|
|
3587
|
+
} catch {}
|
|
3610
3588
|
}
|
|
3611
3589
|
const result = await handler.handleToolCall(body, authHeader, integrationsHeader);
|
|
3612
3590
|
return Response.json(result);
|
package/dist/oauth.js
CHANGED
|
@@ -831,12 +831,6 @@ class OAuthHandler {
|
|
|
831
831
|
arguments: request.arguments || {}
|
|
832
832
|
}
|
|
833
833
|
};
|
|
834
|
-
console.warn("[integrate-sdk] handleToolCall →", url, JSON.stringify({
|
|
835
|
-
tool: request.name,
|
|
836
|
-
hasAuth: !!headers["Authorization"],
|
|
837
|
-
hasApiKey: !!headers["X-API-KEY"],
|
|
838
|
-
headerKeys: Object.keys(headers)
|
|
839
|
-
}));
|
|
840
834
|
let response = await fetch(url, {
|
|
841
835
|
method: "POST",
|
|
842
836
|
headers,
|