sunpeak 0.20.47 → 0.20.49
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/bin/commands/inspect.mjs +76 -10
- package/bin/lib/inspect/inspect-config.d.mts +8 -0
- package/bin/lib/inspect/inspect-config.mjs +9 -0
- package/bin/lib/inspect/inspect-server.d.mts +2 -0
- package/bin/lib/test/test-config.d.mts +6 -0
- package/bin/lib/test/test-config.mjs +11 -0
- package/bin/sunpeak.js +1 -0
- package/dist/chatgpt/index.cjs +1 -1
- package/dist/chatgpt/index.js +1 -1
- package/dist/claude/index.cjs +1 -1
- package/dist/claude/index.js +1 -1
- package/dist/host/chatgpt/index.cjs +1 -1
- package/dist/host/chatgpt/index.js +1 -1
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/inspector/index.cjs +1 -1
- package/dist/inspector/index.js +1 -1
- package/dist/{inspector-Chhc2GNO.cjs → inspector-BGnxpdOn.cjs} +2 -2
- package/dist/{inspector-Chhc2GNO.cjs.map → inspector-BGnxpdOn.cjs.map} +1 -1
- package/dist/{inspector-BSha-CAW.js → inspector-DvduUVNG.js} +2 -2
- package/dist/{inspector-BSha-CAW.js.map → inspector-DvduUVNG.js.map} +1 -1
- package/dist/mcp/index.cjs +1 -1
- package/dist/mcp/index.cjs.map +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/{use-app-CtKy52kw.js → use-app-CmrLc3wz.js} +2 -2
- package/dist/{use-app-CtKy52kw.js.map → use-app-CmrLc3wz.js.map} +1 -1
- package/dist/{use-app-xaiN0HAd.cjs → use-app-fizR-zbu.cjs} +2 -2
- package/dist/{use-app-xaiN0HAd.cjs.map → use-app-fizR-zbu.cjs.map} +1 -1
- package/package.json +2 -2
- package/template/dist/albums/albums.json +1 -1
- package/template/dist/carousel/carousel.json +1 -1
- package/template/dist/map/map.json +1 -1
- package/template/dist/review/review.json +1 -1
- package/template/node_modules/.vite/deps/_metadata.json +3 -3
- package/template/node_modules/.vite-mcp/deps/@modelcontextprotocol_ext-apps.js +1 -1
- package/template/node_modules/.vite-mcp/deps/@modelcontextprotocol_ext-apps.js.map +1 -1
- package/template/node_modules/.vite-mcp/deps/@modelcontextprotocol_ext-apps_app-bridge.js +1 -1
- package/template/node_modules/.vite-mcp/deps/@modelcontextprotocol_ext-apps_app-bridge.js.map +1 -1
- package/template/node_modules/.vite-mcp/deps/@modelcontextprotocol_ext-apps_react.js +1 -1
- package/template/node_modules/.vite-mcp/deps/@modelcontextprotocol_ext-apps_react.js.map +1 -1
- package/template/node_modules/.vite-mcp/deps/_metadata.json +22 -22
- package/template/tests/e2e/visual.spec.ts-snapshots/albums-dark-chatgpt-linux.png +0 -0
- package/template/tests/e2e/visual.spec.ts-snapshots/albums-dark-claude-linux.png +0 -0
- package/template/tests/e2e/visual.spec.ts-snapshots/albums-fullscreen-chatgpt-linux.png +0 -0
- package/template/tests/e2e/visual.spec.ts-snapshots/albums-fullscreen-claude-linux.png +0 -0
- package/template/tests/e2e/visual.spec.ts-snapshots/albums-light-chatgpt-linux.png +0 -0
- package/template/tests/e2e/visual.spec.ts-snapshots/albums-light-claude-linux.png +0 -0
package/bin/commands/inspect.mjs
CHANGED
|
@@ -44,6 +44,7 @@ function parseArgs(args) {
|
|
|
44
44
|
name: undefined,
|
|
45
45
|
env: undefined,
|
|
46
46
|
cwd: undefined,
|
|
47
|
+
headers: undefined,
|
|
47
48
|
};
|
|
48
49
|
|
|
49
50
|
for (let i = 0; i < args.length; i++) {
|
|
@@ -66,6 +67,10 @@ function parseArgs(args) {
|
|
|
66
67
|
}
|
|
67
68
|
} else if (arg === '--cwd' && i + 1 < args.length) {
|
|
68
69
|
opts.cwd = args[++i];
|
|
70
|
+
} else if ((arg === '--header' || arg === '-H') && i + 1 < args.length) {
|
|
71
|
+
opts.headers = opts.headers || {};
|
|
72
|
+
const [name, value] = parseHttpHeader(args[++i]);
|
|
73
|
+
setHttpHeader(opts.headers, name, value);
|
|
69
74
|
} else if (arg === '--help' || arg === '-h') {
|
|
70
75
|
printHelp();
|
|
71
76
|
process.exit(0);
|
|
@@ -89,16 +94,52 @@ Options:
|
|
|
89
94
|
--name <string> App name in inspector chrome
|
|
90
95
|
--env <KEY=VALUE> Environment variable for stdio servers (repeatable)
|
|
91
96
|
--cwd <path> Working directory for stdio servers
|
|
97
|
+
--header, -H <Name: value> HTTP header for HTTP MCP servers (repeatable)
|
|
92
98
|
--help, -h Show this help
|
|
93
99
|
|
|
94
100
|
Examples:
|
|
95
101
|
sunpeak inspect --server http://localhost:8000/mcp
|
|
102
|
+
sunpeak inspect --server http://localhost:8000/mcp -H "Authorization: Bearer $TOKEN"
|
|
96
103
|
sunpeak inspect --server "python my_server.py"
|
|
97
104
|
sunpeak inspect --server "python server.py" --env API_KEY=sk-123 --cwd ./backend
|
|
98
105
|
sunpeak inspect --server http://localhost:8000/mcp --simulations tests/simulations
|
|
99
106
|
`);
|
|
100
107
|
}
|
|
101
108
|
|
|
109
|
+
function setHttpHeader(headers, name, value) {
|
|
110
|
+
const lowerName = name.toLowerCase();
|
|
111
|
+
for (const existingName of Object.keys(headers)) {
|
|
112
|
+
if (existingName.toLowerCase() === lowerName) {
|
|
113
|
+
delete headers[existingName];
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
headers[name] = value;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function parseHttpHeader(raw) {
|
|
120
|
+
if (typeof raw !== 'string') {
|
|
121
|
+
throw new Error('Invalid --header value. Expected "Name: value".');
|
|
122
|
+
}
|
|
123
|
+
const separator = raw.indexOf(':');
|
|
124
|
+
if (separator <= 0) {
|
|
125
|
+
throw new Error('Invalid --header value. Expected "Name: value".');
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
const name = raw.slice(0, separator).trim();
|
|
129
|
+
const value = raw.slice(separator + 1).trim();
|
|
130
|
+
if (!/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/.test(name)) {
|
|
131
|
+
throw new Error(`Invalid HTTP header name: ${name || '(empty)'}`);
|
|
132
|
+
}
|
|
133
|
+
if (/[\u0000-\u001f\u007f]/.test(value)) {
|
|
134
|
+
throw new Error(`Invalid HTTP header value for ${name}: control characters are not allowed`);
|
|
135
|
+
}
|
|
136
|
+
return [name, value];
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function hasAuthorizationHeader(headers) {
|
|
140
|
+
return Object.keys(headers || {}).some((name) => name.toLowerCase() === 'authorization');
|
|
141
|
+
}
|
|
142
|
+
|
|
102
143
|
/**
|
|
103
144
|
* Create an in-memory OAuth client provider for the inspector.
|
|
104
145
|
* The provider stores tokens, client info, and code verifier in memory.
|
|
@@ -503,6 +544,9 @@ function isAuthError(err) {
|
|
|
503
544
|
// StreamableHTTPError includes a status code in its message.
|
|
504
545
|
// Check for the specific "401" HTTP status pattern, not substring matches.
|
|
505
546
|
const msg = err.message || '';
|
|
547
|
+
if (/"statusCode"\s*:\s*401\b/.test(msg)) return true;
|
|
548
|
+
if (/\bstatus(?:Code)?\s*[:=]\s*401\b/i.test(msg)) return true;
|
|
549
|
+
if (/\bHTTP\s+401\b/i.test(msg)) return true;
|
|
506
550
|
if (msg.includes('invalid_token')) return true;
|
|
507
551
|
|
|
508
552
|
// Connection errors (ECONNREFUSED, ETIMEDOUT, etc.) are never auth errors.
|
|
@@ -693,11 +737,15 @@ async function assertHttpServerUrlAllowed(
|
|
|
693
737
|
|
|
694
738
|
async function resolveHttpRedirectsForMcp(
|
|
695
739
|
serverArg,
|
|
696
|
-
{ enforcePublicHttpUrl = false, fetchFn = fetch, lookupFn = dnsLookup } = {}
|
|
740
|
+
{ enforcePublicHttpUrl = false, fetchFn = fetch, lookupFn = dnsLookup, requestInit } = {}
|
|
697
741
|
) {
|
|
698
742
|
if (!enforcePublicHttpUrl) {
|
|
699
743
|
try {
|
|
700
|
-
const probeResponse = await fetchFn(serverArg, {
|
|
744
|
+
const probeResponse = await fetchFn(serverArg, {
|
|
745
|
+
...(requestInit ?? {}),
|
|
746
|
+
method: 'HEAD',
|
|
747
|
+
redirect: 'follow',
|
|
748
|
+
});
|
|
701
749
|
await probeResponse.body?.cancel?.();
|
|
702
750
|
return probeResponse.url && probeResponse.url !== serverArg ? probeResponse.url : serverArg;
|
|
703
751
|
} catch {
|
|
@@ -710,7 +758,11 @@ async function resolveHttpRedirectsForMcp(
|
|
|
710
758
|
for (let i = 0; i < maxRedirects; i++) {
|
|
711
759
|
let probeResponse;
|
|
712
760
|
try {
|
|
713
|
-
probeResponse = await fetchFn(currentUrl, {
|
|
761
|
+
probeResponse = await fetchFn(currentUrl, {
|
|
762
|
+
...(requestInit ?? {}),
|
|
763
|
+
method: 'HEAD',
|
|
764
|
+
redirect: 'manual',
|
|
765
|
+
});
|
|
714
766
|
} catch {
|
|
715
767
|
return currentUrl;
|
|
716
768
|
}
|
|
@@ -733,7 +785,7 @@ async function resolveHttpRedirectsForMcp(
|
|
|
733
785
|
/**
|
|
734
786
|
* Create an MCP client connection.
|
|
735
787
|
* @param {string} serverArg - URL or command string
|
|
736
|
-
* @param {{ type?: 'none' | 'bearer' | 'oauth', bearerToken?: string, authProvider?: import('@modelcontextprotocol/sdk/client/auth.js').OAuthClientProvider, env?: Record<string, string>, cwd?: string, enforcePublicHttpUrl?: boolean }} [authConfig]
|
|
788
|
+
* @param {{ type?: 'none' | 'bearer' | 'oauth', bearerToken?: string, authProvider?: import('@modelcontextprotocol/sdk/client/auth.js').OAuthClientProvider, headers?: Record<string, string>, env?: Record<string, string>, cwd?: string, enforcePublicHttpUrl?: boolean }} [authConfig]
|
|
737
789
|
* @returns {Promise<{ client: import('@modelcontextprotocol/sdk/client/index.js').Client, transport: import('@modelcontextprotocol/sdk/types.js').Transport, serverUrl?: string, stderrOutput?: string[] }>}
|
|
738
790
|
*/
|
|
739
791
|
async function createMcpConnection(serverArg, authConfig) {
|
|
@@ -749,10 +801,18 @@ async function createMcpConnection(serverArg, authConfig) {
|
|
|
749
801
|
const { StreamableHTTPClientTransport } =
|
|
750
802
|
await import('@modelcontextprotocol/sdk/client/streamableHttp.js');
|
|
751
803
|
|
|
804
|
+
const requestHeaders = { ...(authConfig?.headers ?? {}) };
|
|
805
|
+
if (authConfig?.type === 'bearer' && authConfig.bearerToken) {
|
|
806
|
+
requestHeaders.Authorization = `Bearer ${authConfig.bearerToken}`;
|
|
807
|
+
}
|
|
808
|
+
|
|
752
809
|
// Follow redirects (e.g. /mcp → /mcp/) before creating the transport.
|
|
753
810
|
// The MCP SDK transport doesn't follow redirects on its own.
|
|
754
811
|
const finalUrl = await resolveHttpRedirectsForMcp(serverArg, {
|
|
755
812
|
enforcePublicHttpUrl: !!authConfig?.enforcePublicHttpUrl,
|
|
813
|
+
...(Object.keys(requestHeaders).length > 0
|
|
814
|
+
? { requestInit: { headers: requestHeaders } }
|
|
815
|
+
: {}),
|
|
756
816
|
});
|
|
757
817
|
|
|
758
818
|
if (authConfig?.enforcePublicHttpUrl) {
|
|
@@ -763,11 +823,6 @@ async function createMcpConnection(serverArg, authConfig) {
|
|
|
763
823
|
if (authConfig?.enforcePublicHttpUrl) {
|
|
764
824
|
transportOpts.requestInit = { redirect: 'manual' };
|
|
765
825
|
}
|
|
766
|
-
|
|
767
|
-
const requestHeaders = {};
|
|
768
|
-
if (authConfig?.type === 'bearer' && authConfig.bearerToken) {
|
|
769
|
-
requestHeaders.Authorization = `Bearer ${authConfig.bearerToken}`;
|
|
770
|
-
}
|
|
771
826
|
if (Object.keys(requestHeaders).length > 0) {
|
|
772
827
|
transportOpts.requestInit = {
|
|
773
828
|
...(transportOpts.requestInit ?? {}),
|
|
@@ -2907,6 +2962,9 @@ export const _securityTestExports = {
|
|
|
2907
2962
|
normalizeModelId,
|
|
2908
2963
|
normalizeModelProviderModelId,
|
|
2909
2964
|
quoteSecurityInteractiveArg,
|
|
2965
|
+
parseHttpHeader,
|
|
2966
|
+
hasAuthorizationHeader,
|
|
2967
|
+
isAuthError,
|
|
2910
2968
|
readRequestBody,
|
|
2911
2969
|
resolveHttpRedirectsForMcp,
|
|
2912
2970
|
shouldAllowPrivateServerUrls,
|
|
@@ -2970,6 +3028,7 @@ function readRequestBody(req, { maxBytes = Infinity } = {}) {
|
|
|
2970
3028
|
* @param {object} [opts.viteCssConfig] - Vite css config override (e.g., lightningcss customAtRules)
|
|
2971
3029
|
* @param {Record<string, string>} [opts.env] - Extra environment variables for stdio server processes
|
|
2972
3030
|
* @param {string} [opts.cwd] - Working directory for stdio server processes
|
|
3031
|
+
* @param {Record<string, string>} [opts.headers] - Extra HTTP headers for HTTP MCP server requests
|
|
2973
3032
|
*/
|
|
2974
3033
|
export async function inspectServer(opts) {
|
|
2975
3034
|
const {
|
|
@@ -2990,6 +3049,7 @@ export async function inspectServer(opts) {
|
|
|
2990
3049
|
viteCssConfig,
|
|
2991
3050
|
env: serverEnv,
|
|
2992
3051
|
cwd: serverCwd,
|
|
3052
|
+
headers: serverHeaders,
|
|
2993
3053
|
} = opts;
|
|
2994
3054
|
|
|
2995
3055
|
// Load favicon from sunpeak package for the inspector UI.
|
|
@@ -3017,6 +3077,7 @@ export async function inspectServer(opts) {
|
|
|
3017
3077
|
const connectionOpts = {};
|
|
3018
3078
|
if (serverEnv) connectionOpts.env = serverEnv;
|
|
3019
3079
|
if (serverCwd) connectionOpts.cwd = serverCwd;
|
|
3080
|
+
if (serverHeaders) connectionOpts.headers = serverHeaders;
|
|
3020
3081
|
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
3021
3082
|
try {
|
|
3022
3083
|
mcpConnection = await createMcpConnection(resolvedServerUrl, connectionOpts);
|
|
@@ -3029,7 +3090,11 @@ export async function inspectServer(opts) {
|
|
|
3029
3090
|
}
|
|
3030
3091
|
|
|
3031
3092
|
// If the server requires OAuth, negotiate it and retry once.
|
|
3032
|
-
if (
|
|
3093
|
+
if (
|
|
3094
|
+
isAuthError(err) &&
|
|
3095
|
+
resolvedServerUrl.startsWith('http') &&
|
|
3096
|
+
!hasAuthorizationHeader(connectionOpts.headers)
|
|
3097
|
+
) {
|
|
3033
3098
|
console.log('Server requires authentication. Negotiating OAuth...');
|
|
3034
3099
|
try {
|
|
3035
3100
|
const authProvider = await negotiateOAuth(resolvedServerUrl);
|
|
@@ -3416,5 +3481,6 @@ export async function inspect(args) {
|
|
|
3416
3481
|
name: opts.name,
|
|
3417
3482
|
env: opts.env,
|
|
3418
3483
|
cwd: opts.cwd,
|
|
3484
|
+
headers: opts.headers,
|
|
3419
3485
|
});
|
|
3420
3486
|
}
|
|
@@ -15,6 +15,14 @@ export interface InspectConfigOptions {
|
|
|
15
15
|
use?: Record<string, unknown>;
|
|
16
16
|
/** Visual regression testing configuration */
|
|
17
17
|
visual?: VisualConfig;
|
|
18
|
+
/** HTTP headers for HTTP MCP server requests */
|
|
19
|
+
headers?: Record<string, string>;
|
|
20
|
+
/** Server startup timeout in ms */
|
|
21
|
+
timeout?: number;
|
|
22
|
+
/** Environment variables for stdio servers */
|
|
23
|
+
env?: Record<string, string>;
|
|
24
|
+
/** Working directory for stdio servers */
|
|
25
|
+
cwd?: string;
|
|
18
26
|
}
|
|
19
27
|
|
|
20
28
|
/**
|
|
@@ -30,6 +30,7 @@ import { resolveSunpeakBin } from '../resolve-bin.mjs';
|
|
|
30
30
|
* @param {number} [options.timeout] - Server startup timeout in ms (default: 60000)
|
|
31
31
|
* @param {Record<string, string>} [options.env] - Environment variables for stdio servers
|
|
32
32
|
* @param {string} [options.cwd] - Working directory for stdio servers
|
|
33
|
+
* @param {Record<string, string>} [options.headers] - HTTP headers for HTTP MCP server requests
|
|
33
34
|
* @returns {import('@playwright/test').PlaywrightTestConfig}
|
|
34
35
|
*/
|
|
35
36
|
export function defineInspectConfig(options) {
|
|
@@ -44,6 +45,7 @@ export function defineInspectConfig(options) {
|
|
|
44
45
|
timeout,
|
|
45
46
|
env,
|
|
46
47
|
cwd,
|
|
48
|
+
headers,
|
|
47
49
|
} = options;
|
|
48
50
|
|
|
49
51
|
if (!server) {
|
|
@@ -65,6 +67,9 @@ export function defineInspectConfig(options) {
|
|
|
65
67
|
})
|
|
66
68
|
: []),
|
|
67
69
|
...(cwd ? [cwd.includes(' ') ? `--cwd "${cwd}"` : `--cwd ${cwd}`] : []),
|
|
70
|
+
...(headers
|
|
71
|
+
? Object.entries(headers).map(([k, v]) => `--header ${shellQuote(`${k}: ${v}`)}`)
|
|
72
|
+
: []),
|
|
68
73
|
...(simulationsDir ? [`--simulations ${simulationsDir}`] : []),
|
|
69
74
|
`--port ${port}`,
|
|
70
75
|
...(name ? [`--name "${name}"`] : []),
|
|
@@ -83,3 +88,7 @@ export function defineInspectConfig(options) {
|
|
|
83
88
|
},
|
|
84
89
|
});
|
|
85
90
|
}
|
|
91
|
+
|
|
92
|
+
function shellQuote(value) {
|
|
93
|
+
return `'${String(value).replace(/'/g, "'\\''")}'`;
|
|
94
|
+
}
|
|
@@ -12,6 +12,10 @@ export interface ServerConfig {
|
|
|
12
12
|
url?: string;
|
|
13
13
|
/** Environment variables for the server process. */
|
|
14
14
|
env?: Record<string, string>;
|
|
15
|
+
/** Working directory for the server process. */
|
|
16
|
+
cwd?: string;
|
|
17
|
+
/** HTTP headers for HTTP MCP server requests. */
|
|
18
|
+
headers?: Record<string, string>;
|
|
15
19
|
}
|
|
16
20
|
|
|
17
21
|
/**
|
|
@@ -55,6 +59,8 @@ export interface TestConfigOptions {
|
|
|
55
59
|
use?: Record<string, unknown>;
|
|
56
60
|
/** Visual regression testing configuration. */
|
|
57
61
|
visual?: VisualConfig;
|
|
62
|
+
/** Server startup timeout in ms. */
|
|
63
|
+
timeout?: number;
|
|
58
64
|
}
|
|
59
65
|
|
|
60
66
|
/**
|
|
@@ -28,6 +28,7 @@ import { resolveSunpeakBin } from '../resolve-bin.mjs';
|
|
|
28
28
|
* @param {string} [options.server.url] - HTTP server URL (alternative to command)
|
|
29
29
|
* @param {Record<string, string>} [options.server.env] - Environment variables
|
|
30
30
|
* @param {string} [options.server.cwd] - Working directory for the server process
|
|
31
|
+
* @param {Record<string, string>} [options.server.headers] - HTTP headers for HTTP MCP server requests
|
|
31
32
|
* @param {string[]} [options.hosts] - Host shells to test (default: ['chatgpt', 'claude'])
|
|
32
33
|
* @param {string} [options.testDir] - Test directory
|
|
33
34
|
* @param {string} [options.simulationsDir] - Simulations directory for mock data
|
|
@@ -126,6 +127,12 @@ function buildInspectCommand({ server, port, sandboxPort, simulationsDir }) {
|
|
|
126
127
|
parts.push(server.cwd.includes(' ') ? `--cwd "${server.cwd}"` : `--cwd ${server.cwd}`);
|
|
127
128
|
}
|
|
128
129
|
|
|
130
|
+
if (server.headers) {
|
|
131
|
+
for (const [key, value] of Object.entries(server.headers)) {
|
|
132
|
+
parts.push(`--header ${shellQuote(`${key}: ${value}`)}`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
129
136
|
if (simulationsDir) {
|
|
130
137
|
parts.push(`--simulations ${simulationsDir}`);
|
|
131
138
|
}
|
|
@@ -134,3 +141,7 @@ function buildInspectCommand({ server, port, sandboxPort, simulationsDir }) {
|
|
|
134
141
|
|
|
135
142
|
return parts.join(' ');
|
|
136
143
|
}
|
|
144
|
+
|
|
145
|
+
function shellQuote(value) {
|
|
146
|
+
return `'${String(value).replace(/'/g, "'\\''")}'`;
|
|
147
|
+
}
|
package/bin/sunpeak.js
CHANGED
|
@@ -131,6 +131,7 @@ Inspector (works with any MCP server):
|
|
|
131
131
|
sunpeak inspect Inspect any MCP server in the inspector
|
|
132
132
|
--server, -s <url|cmd> MCP server URL or stdio command (required)
|
|
133
133
|
--simulations <dir> Simulation JSON directory
|
|
134
|
+
--header, -H <header> HTTP header for HTTP MCP servers (repeatable)
|
|
134
135
|
|
|
135
136
|
sunpeak --version Show version number
|
|
136
137
|
Resources: ${resources.join(', ')} (comma/space separated)
|
package/dist/chatgpt/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_chunk = require("../chunk-Cek0wNdY.cjs");
|
|
3
|
-
const require_inspector = require("../inspector-
|
|
3
|
+
const require_inspector = require("../inspector-BGnxpdOn.cjs");
|
|
4
4
|
const require_inspector_url = require("../inspector-url-BxScdDag.cjs");
|
|
5
5
|
const require_discovery = require("../discovery-31_n0zcu.cjs");
|
|
6
6
|
//#region src/chatgpt/index.ts
|
package/dist/chatgpt/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Ct as __exportAll } from "../protocol-bhrz2H_E.js";
|
|
2
|
-
import { _ as extractResourceCSP, f as ThemeProvider, g as IframeResource, p as useThemeContext, r as resolveServerToolResult, t as Inspector, v as McpAppHost, y as SCREEN_WIDTHS } from "../inspector-
|
|
2
|
+
import { _ as extractResourceCSP, f as ThemeProvider, g as IframeResource, p as useThemeContext, r as resolveServerToolResult, t as Inspector, v as McpAppHost, y as SCREEN_WIDTHS } from "../inspector-DvduUVNG.js";
|
|
3
3
|
import { t as createInspectorUrl } from "../inspector-url-xUMGbWis.js";
|
|
4
4
|
import { c as toPascalCase, i as findResourceKey, n as extractSimulationKey, r as findResourceDirs, s as getComponentName, t as extractResourceKey } from "../discovery-DOVner--.js";
|
|
5
5
|
//#region src/chatgpt/index.ts
|
package/dist/claude/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
require("../chunk-Cek0wNdY.cjs");
|
|
3
|
-
const require_inspector = require("../inspector-
|
|
3
|
+
const require_inspector = require("../inspector-BGnxpdOn.cjs");
|
|
4
4
|
exports.Inspector = require_inspector.Inspector;
|
package/dist/claude/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as Inspector } from "../inspector-
|
|
1
|
+
import { t as Inspector } from "../inspector-DvduUVNG.js";
|
|
2
2
|
export { Inspector };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
require("../../chunk-Cek0wNdY.cjs");
|
|
3
|
-
const require_use_app = require("../../use-app-
|
|
3
|
+
const require_use_app = require("../../use-app-fizR-zbu.cjs");
|
|
4
4
|
let react = require("react");
|
|
5
5
|
//#region src/host/chatgpt/openai-types.ts
|
|
6
6
|
/**
|
package/dist/index.cjs
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_chunk = require("./chunk-Cek0wNdY.cjs");
|
|
3
3
|
const require_protocol = require("./protocol-Cafvpf0x.cjs");
|
|
4
|
-
const require_use_app = require("./use-app-
|
|
5
|
-
const require_inspector = require("./inspector-
|
|
4
|
+
const require_use_app = require("./use-app-fizR-zbu.cjs");
|
|
5
|
+
const require_inspector = require("./inspector-BGnxpdOn.cjs");
|
|
6
6
|
const require_host_index = require("./host/index.cjs");
|
|
7
7
|
const require_inspector_index = require("./inspector/index.cjs");
|
|
8
8
|
const require_chatgpt_index = require("./chatgpt/index.cjs");
|
|
9
9
|
let react = require("react");
|
|
10
10
|
react = require_chunk.__toESM(react, 1);
|
|
11
11
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
12
|
-
//#region ../../node_modules/.pnpm/@modelcontextprotocol+ext-apps@1.7.
|
|
12
|
+
//#region ../../node_modules/.pnpm/@modelcontextprotocol+ext-apps@1.7.3_@modelcontextprotocol+sdk@1.29.0_zod@4.4.3__react-_198afb8973c94867da191e43eebfe140/node_modules/@modelcontextprotocol/ext-apps/dist/src/react/index.js
|
|
13
13
|
((K) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(K, { get: (Q, X) => (typeof require < "u" ? require : Q)[X] }) : K)(function(K) {
|
|
14
14
|
if (typeof require < "u") return require.apply(this, arguments);
|
|
15
15
|
throw Error("Dynamic require of \"" + K + "\" is not supported");
|