sunpeak 0.20.23 → 0.20.28
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/README.md +29 -4
- package/bin/commands/inspect.mjs +18 -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/embed.css +2 -0
- 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/app-flatten.d.ts +7 -0
- package/dist/inspector/app-types.d.ts +83 -0
- package/dist/inspector/iframe-resource.d.ts +19 -1
- package/dist/inspector/index.cjs +3 -1
- package/dist/inspector/index.cjs.map +1 -1
- package/dist/inspector/index.d.ts +2 -0
- package/dist/inspector/index.js +3 -2
- package/dist/inspector/index.js.map +1 -1
- package/dist/inspector/inline-helper-script.d.ts +22 -0
- package/dist/inspector/inspector.d.ts +14 -1
- package/dist/inspector/simple-sidebar.d.ts +13 -1
- package/dist/inspector/use-inspector-state.d.ts +1 -0
- package/dist/{inspector-DtEighD9.cjs → inspector-DSX76Z-W.cjs} +340 -28
- package/dist/inspector-DSX76Z-W.cjs.map +1 -0
- package/dist/{inspector-CJNvLoHo.js → inspector-tIphAHtK.js} +336 -30
- package/dist/inspector-tIphAHtK.js.map +1 -0
- 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/sandbox-proxy.html +173 -0
- package/dist/style.css +9 -1
- package/dist/types/simulation.d.ts +3 -8
- package/dist/{use-app-cSBm5Pjl.js → use-app-C2pGHlnF.js} +2 -2
- package/dist/{use-app-cSBm5Pjl.js.map → use-app-C2pGHlnF.js.map} +1 -1
- package/dist/{use-app-CxtSfkSF.cjs → use-app-DIWh7-3f.cjs} +2 -2
- package/dist/{use-app-CxtSfkSF.cjs.map → use-app-DIWh7-3f.cjs.map} +1 -1
- package/package.json +6 -3
- package/template/dist/albums/albums.html +1 -1
- package/template/dist/albums/albums.json +1 -1
- package/template/dist/carousel/carousel.html +1 -1
- package/template/dist/carousel/carousel.json +1 -1
- package/template/dist/map/map.html +1 -1
- package/template/dist/map/map.json +1 -1
- package/template/dist/review/review.html +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-page-light-claude-linux.png +0 -0
- package/dist/inspector-CJNvLoHo.js.map +0 -1
- package/dist/inspector-DtEighD9.cjs.map +0 -1
package/README.md
CHANGED
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
[](https://www.typescriptlang.org/)
|
|
17
17
|
[](https://reactjs.org/)
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
Server-agnostic MCP testing framework and full-stack MCP App framework.
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
MCP Apps are cross-platform, meaning sunpeak is a ChatGPT App framework, Claude Connector framework, and more.
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
24
|
npx sunpeak new
|
|
@@ -30,7 +30,30 @@ npx sunpeak new
|
|
|
30
30
|
[Documentation](https://sunpeak.ai/docs) ~
|
|
31
31
|
[GitHub](https://github.com/Sunpeak-AI/sunpeak)
|
|
32
32
|
|
|
33
|
-
## sunpeak
|
|
33
|
+
## Why sunpeak
|
|
34
|
+
|
|
35
|
+
Building an MCP App today means testing in ChatGPT and Claude by hand. Every code change costs a 4-click refresh in each host, every teammate needs a $20/month account per host, and every test burns credits.
|
|
36
|
+
|
|
37
|
+
sunpeak replicates the ChatGPT and Claude runtimes locally so you can:
|
|
38
|
+
|
|
39
|
+
- Run e2e and visual tests in CI across every host, theme, and data combo, without accounts or API credits.
|
|
40
|
+
- Iterate with HMR in ChatGPT and automatic rebuilds in Claude, instead of manual refreshes.
|
|
41
|
+
- Pin tool states with simulation fixtures so UI regressions can't ship.
|
|
42
|
+
- Automate the real-host loop with live tests: scripts that open your browser, prompt ChatGPT, and assert against the rendered app so you stop click-testing by hand.
|
|
43
|
+
|
|
44
|
+
sunpeak also runs evals against your MCP server across multiple models (GPT-4o, GPT-4o-mini, o4-mini, Claude Sonnet, Gemini 2.0 Flash) via the Vercel AI SDK. Each case runs N times per model, so you can prove your tool descriptions and schemas hold up on cheaper models, not just the flagship ones.
|
|
45
|
+
|
|
46
|
+
<div align="center">
|
|
47
|
+
<a href="https://sunpeak.ai/docs/testing/evals">
|
|
48
|
+
<picture>
|
|
49
|
+
<img alt="Sunpeak logo" src="https://cdn.sunpeak.ai/sunpeak-eval.png">
|
|
50
|
+
</picture>
|
|
51
|
+
</a>
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
The same foundation powers an app framework for multi-platform MCP Apps and a standalone inspector that works with any MCP server in any language.
|
|
55
|
+
|
|
56
|
+
## sunpeak has three use cases
|
|
34
57
|
|
|
35
58
|
### 1. App Framework
|
|
36
59
|
|
|
@@ -68,7 +91,7 @@ sunpeak replicates these host runtimes and provides simulation fixtures (JSON fi
|
|
|
68
91
|
npx sunpeak test init --server http://localhost:8000/mcp
|
|
69
92
|
```
|
|
70
93
|
|
|
71
|
-
This scaffolds E2E tests, visual regression, live
|
|
94
|
+
This scaffolds E2E tests, visual regression, live tests, and multi-model evals. Then run them:
|
|
72
95
|
|
|
73
96
|
```bash
|
|
74
97
|
npx sunpeak test
|
|
@@ -76,6 +99,8 @@ npx sunpeak test
|
|
|
76
99
|
|
|
77
100
|
Playwright fixtures handle inspector startup, MCP connection, iframe traversal, and host switching. Works with Python, Go, TypeScript, Rust, or any language.
|
|
78
101
|
|
|
102
|
+
Evals add a second dimension: model compatibility. The eval framework connects to your MCP server via the MCP protocol, discovers its tools, and sends prompts to multiple models (GPT-4o, GPT-4o-mini, o4-mini, Claude Sonnet, Gemini 2.0 Flash) via the Vercel AI SDK. Each case runs N times per model and reports pass/fail counts, so you can measure whether your tool descriptions and schemas work reliably across smaller and cheaper models, not just the flagship ones.
|
|
103
|
+
|
|
79
104
|
```ts
|
|
80
105
|
import { test, expect } from 'sunpeak/test';
|
|
81
106
|
|
package/bin/commands/inspect.mjs
CHANGED
|
@@ -211,6 +211,13 @@ async function negotiateOAuth(serverUrl) {
|
|
|
211
211
|
if (!authUrl) {
|
|
212
212
|
throw new Error('OAuth flow returned REDIRECT but no authorization URL was captured');
|
|
213
213
|
}
|
|
214
|
+
// A malicious MCP server can publish OAuth metadata whose
|
|
215
|
+
// `authorization_endpoint` is a `javascript:` (or other non-http) URL.
|
|
216
|
+
// Refuse to follow or open anything that isn't http(s) so we never feed a
|
|
217
|
+
// `javascript:` URL to the OS opener or assign it to a popup location.
|
|
218
|
+
if (authUrl.protocol !== 'http:' && authUrl.protocol !== 'https:') {
|
|
219
|
+
throw new Error(`OAuth authorization URL has unsupported scheme: ${authUrl.protocol}`);
|
|
220
|
+
}
|
|
214
221
|
|
|
215
222
|
// Try the anonymous/auto-approved path first: follow the authorization URL
|
|
216
223
|
// without a browser and see if it immediately redirects with a code.
|
|
@@ -1062,6 +1069,17 @@ function sunpeakInspectEndpointsPlugin(getClient, setClient, pluginOpts = {}) {
|
|
|
1062
1069
|
if (!authUrl) {
|
|
1063
1070
|
throw new Error('OAuth flow requested redirect but no authorization URL was generated');
|
|
1064
1071
|
}
|
|
1072
|
+
// Reject non-http(s) authorization URLs. A malicious MCP server can
|
|
1073
|
+
// publish OAuth metadata whose `authorization_endpoint` is a
|
|
1074
|
+
// `javascript:` URL; if we forwarded that to the client, the popup
|
|
1075
|
+
// navigation would execute attacker JS in the inspector's origin.
|
|
1076
|
+
if (authUrl.protocol !== 'http:' && authUrl.protocol !== 'https:') {
|
|
1077
|
+
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
1078
|
+
res.end(JSON.stringify({
|
|
1079
|
+
error: `OAuth authorization URL has unsupported scheme: ${authUrl.protocol}`,
|
|
1080
|
+
}));
|
|
1081
|
+
return;
|
|
1082
|
+
}
|
|
1065
1083
|
// Register the state parameter so the callback can find the right provider.
|
|
1066
1084
|
// Clean up any stale pending flows for the same server URL first
|
|
1067
1085
|
// (e.g., user closed the popup without completing the previous attempt).
|
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-CoPdw6nB.cjs");
|
|
3
|
-
const require_inspector = require("../inspector-
|
|
3
|
+
const require_inspector = require("../inspector-DSX76Z-W.cjs");
|
|
4
4
|
const require_inspector_url = require("../inspector-url-CCgv8H74.cjs");
|
|
5
5
|
const require_discovery = require("../discovery-C9fQVb1u.cjs");
|
|
6
6
|
//#region src/chatgpt/index.ts
|
package/dist/chatgpt/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { I as __exportAll } from "../v4-Bvhoa4sV.js";
|
|
2
|
-
import { _ as
|
|
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-tIphAHtK.js";
|
|
3
3
|
import { t as createInspectorUrl } from "../inspector-url-CyQcuBI9.js";
|
|
4
4
|
import { c as toPascalCase, i as findResourceKey, n as extractSimulationKey, r as findResourceDirs, s as getComponentName, t as extractResourceKey } from "../discovery-Cgoegt62.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-CoPdw6nB.cjs");
|
|
3
|
-
const require_inspector = require("../inspector-
|
|
3
|
+
const require_inspector = require("../inspector-DSX76Z-W.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-tIphAHtK.js";
|
|
2
2
|
export { Inspector };
|
package/dist/embed.css
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{.sunpeak-inspector-root{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--leading-tight:1.25;--leading-normal:1.5;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--shadow-sm:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer base{.sunpeak-inspector-root,.sunpeak-inspector-root *,.sunpeak-inspector-root :before,.sunpeak-inspector-root :after{box-sizing:border-box;border:0 solid}.sunpeak-inspector-root{-webkit-text-size-adjust:100%;tab-size:4;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;line-height:1.5}.sunpeak-inspector-root h1,.sunpeak-inspector-root h2,.sunpeak-inspector-root h3,.sunpeak-inspector-root h4,.sunpeak-inspector-root h5,.sunpeak-inspector-root h6{font-size:inherit;font-weight:inherit;margin:0}.sunpeak-inspector-root p,.sunpeak-inspector-root pre,.sunpeak-inspector-root blockquote,.sunpeak-inspector-root figure,.sunpeak-inspector-root hr{margin:0}.sunpeak-inspector-root ul,.sunpeak-inspector-root ol,.sunpeak-inspector-root menu{margin:0;padding:0;list-style:none}.sunpeak-inspector-root a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}.sunpeak-inspector-root button,.sunpeak-inspector-root input,.sunpeak-inspector-root select,.sunpeak-inspector-root optgroup,.sunpeak-inspector-root textarea{font:inherit;color:inherit;background-color:#0000;margin:0;padding:0}.sunpeak-inspector-root button,.sunpeak-inspector-root [type=button],.sunpeak-inspector-root [type=reset],.sunpeak-inspector-root [type=submit]{-webkit-appearance:button;background-image:none}.sunpeak-inspector-root img,.sunpeak-inspector-root svg,.sunpeak-inspector-root video,.sunpeak-inspector-root canvas,.sunpeak-inspector-root audio,.sunpeak-inspector-root iframe,.sunpeak-inspector-root embed,.sunpeak-inspector-root object{vertical-align:middle;display:block}.sunpeak-inspector-root img,.sunpeak-inspector-root video{max-width:100%;height:auto}.sunpeak-inspector-root code,.sunpeak-inspector-root kbd,.sunpeak-inspector-root samp,.sunpeak-inspector-root pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}.sunpeak-inspector-root [disabled]{cursor:default}.sunpeak-inspector-root summary{cursor:pointer}.sunpeak-inspector-root dialog{background-color:inherit;color:inherit;border:0;margin:0;padding:0}.sunpeak-inspector-root :focus-visible{outline-color:currentColor}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.-start-2{inset-inline-start:calc(var(--spacing) * -2)}.start-0{inset-inline-start:calc(var(--spacing) * 0)}.start-4{inset-inline-start:calc(var(--spacing) * 4)}.end-0{inset-inline-end:calc(var(--spacing) * 0)}.end-4{inset-inline-end:calc(var(--spacing) * 4)}.-top-1\.5{top:calc(var(--spacing) * -1.5)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-4{top:calc(var(--spacing) * 4)}.top-12{top:calc(var(--spacing) * 12)}.top-18{top:calc(var(--spacing) * 18)}.top-\[3\.25rem\]{top:3.25rem}.top-\[3rem\]{top:3rem}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.right-auto{right:auto}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-2{bottom:calc(var(--spacing) * 2)}.bottom-4{bottom:calc(var(--spacing) * 4)}.left-0{left:calc(var(--spacing) * 0)}.left-2{left:calc(var(--spacing) * 2)}.left-4{left:calc(var(--spacing) * 4)}.left-\[340px\]{left:340px}.-z-10{z-index:calc(10 * -1)}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[51\]{z-index:51}.z-\[200\]{z-index:200}.col-span-3{grid-column:span 3/span 3}.col-span-4{grid-column:span 4/span 4}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-0{margin-inline:calc(var(--spacing) * 0)}.mx-auto{margin-inline:auto}.my-3{margin-block:calc(var(--spacing) * 3)}.my-auto{margin-block:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-auto{margin-top:auto}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-1{margin-left:calc(var(--spacing) * 1)}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-\[4\/3\]{aspect-ratio:4/3}.aspect-\[5\/3\]{aspect-ratio:5/3}.aspect-square{aspect-ratio:1}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-80{height:calc(var(--spacing) * 80)}.h-\[3\.25rem\]{height:3.25rem}.h-\[18px\]{height:18px}.h-\[22px\]{height:22px}.h-\[calc\(100\%-11rem\)\]{height:calc(100% - 11rem)}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-full{max-height:100%}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-8{min-height:calc(var(--spacing) * 8)}.w-1{width:calc(var(--spacing) * 1)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-40{width:calc(var(--spacing) * 40)}.w-\[18px\]{width:18px}.w-\[340px\]{width:340px}.w-full{width:100%}.w-screen{width:100vw}.max-w-\[40rem\]{max-width:40rem}.max-w-\[48rem\]{max-width:48rem}.max-w-\[70\%\]{max-width:70%}.max-w-\[75\%\]{max-width:75%}.max-w-\[85\%\]{max-width:85%}.max-w-\[330px\]{max-width:330px}.max-w-full{max-width:100%}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-8{min-width:calc(var(--spacing) * 8)}.flex-1{flex:1}.flex-none{flex:none}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-pointer{cursor:pointer}.touch-pan-y{--tw-pan-y:pan-y;touch-action:var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)}.resize{resize:both}.resize-y{resize:vertical}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[2fr_1fr\]{grid-template-columns:2fr 1fr}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-black\/5>:not(:last-child)){border-color:#0000000d}@supports (color:color-mix(in lab, red, red)){:where(.divide-black\/5>:not(:last-child)){border-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[10px\]{border-radius:10px}.rounded-\[20px\]{border-radius:20px}.rounded-\[22px\]{border-radius:22px}.rounded-\[28px\]{border-radius:28px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-xl{border-radius:var(--radius-xl)}.rounded-r-md{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-\[var\(--color-border-danger\)\]{border-color:var(--color-border-danger)}.border-\[var\(--color-border-primary\)\]{border-color:var(--color-border-primary)}.border-\[var\(--color-border-tertiary\)\]{border-color:var(--color-border-tertiary)}.border-\[var\(--color-border-warning\)\]{border-color:var(--color-border-warning)}.border-\[var\(--color-ring-primary\)\],.border-\[var\(--color-ring-primary\)\]\/10{border-color:var(--color-ring-primary)}@supports (color:color-mix(in lab, red, red)){.border-\[var\(--color-ring-primary\)\]\/10{border-color:color-mix(in oklab, var(--color-ring-primary) 10%, transparent)}}.border-current{border-color:currentColor}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.bg-\[\#3a3a3a\]{background-color:#3a3a3a}.bg-\[var\(--color-background-danger\)\]{background-color:var(--color-background-danger)}.bg-\[var\(--color-background-info\)\]{background-color:var(--color-background-info)}.bg-\[var\(--color-background-inverse\)\]{background-color:var(--color-background-inverse)}.bg-\[var\(--color-background-primary\)\],.bg-\[var\(--color-background-primary\)\]\/95{background-color:var(--color-background-primary)}@supports (color:color-mix(in lab, red, red)){.bg-\[var\(--color-background-primary\)\]\/95{background-color:color-mix(in oklab, var(--color-background-primary) 95%, transparent)}}.bg-\[var\(--color-background-secondary\)\]{background-color:var(--color-background-secondary)}.bg-\[var\(--color-background-tertiary\)\]{background-color:var(--color-background-tertiary)}.bg-\[var\(--color-background-warning\)\]{background-color:var(--color-background-warning)}.bg-\[var\(--color-ring-primary\)\]{background-color:var(--color-ring-primary)}.bg-\[var\(--color-text-danger\)\]{background-color:var(--color-text-danger)}.bg-\[var\(--color-text-warning\)\]{background-color:var(--color-text-warning)}.bg-black\/5{background-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.bg-black\/5{background-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.bg-black\/10{background-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-sidebar{background-color:var(--sim-bg-sidebar,var(--color-background-secondary))}.bg-transparent{background-color:#0000}.bg-gradient-to-l{--tw-gradient-position:to left in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-black\/15{--tw-gradient-from:#00000026}@supports (color:color-mix(in lab, red, red)){.from-black\/15{--tw-gradient-from:color-mix(in oklab, var(--color-black) 15%, transparent)}}.from-black\/15{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.bg-\[length\:12px\]{background-size:12px}.bg-\[right_6px_center\]{background-position:right 6px center}.bg-no-repeat{background-repeat:no-repeat}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-1\.25{padding:calc(var(--spacing) * 1.25)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-8{padding:calc(var(--spacing) * 8)}.p-\[1px\]{padding:1px}.p-\[3px\]{padding:3px}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-12{padding-right:calc(var(--spacing) * 12)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-10{padding-bottom:calc(var(--spacing) * 10)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-left{text-align:left}.text-start{text-align:start}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words{overflow-wrap:break-word}.text-ellipsis{text-overflow:ellipsis}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--color-border-tertiary\)\]{color:var(--color-border-tertiary)}.text-\[var\(--color-text-danger\)\]{color:var(--color-text-danger)}.text-\[var\(--color-text-info\)\]{color:var(--color-text-info)}.text-\[var\(--color-text-inverse\)\]{color:var(--color-text-inverse)}.text-\[var\(--color-text-primary\)\]{color:var(--color-text-primary)}.text-\[var\(--color-text-secondary\)\]{color:var(--color-text-secondary)}.text-\[var\(--color-text-warning\)\]{color:var(--color-text-warning)}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0px_0px_0px_1px_var\(--color-border-primary\)\,0px_4px_12px_rgba\(0\,0\,0\,0\.12\)\]{--tw-shadow:0px 0px 0px 1px var(--tw-shadow-color,var(--color-border-primary)), 0px 4px 12px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0px_0px_0px_1px_var\(--color-border-primary\)\,0px_6px_20px_rgba\(0\,0\,0\,0\.1\)\]{--tw-shadow:0px 0px 0px 1px var(--tw-shadow-color,var(--color-border-primary)), 0px 6px 20px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-black\/10{--tw-ring-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.ring-black\/10{--tw-ring-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.empty\:hidden:empty{display:none}@media (hover:hover){.hover\:border-\[var\(--color-ring-primary\)\]\/30:hover{border-color:var(--color-ring-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-\[var\(--color-ring-primary\)\]\/30:hover{border-color:color-mix(in oklab, var(--color-ring-primary) 30%, transparent)}}.hover\:border-transparent:hover{border-color:#0000}.hover\:bg-\[\#6a6a6a\]:hover{background-color:#6a6a6a}.hover\:bg-\[var\(--color-background-danger\)\]:hover{background-color:var(--color-background-danger)}.hover\:bg-\[var\(--color-background-secondary\)\]:hover{background-color:var(--color-background-secondary)}.hover\:bg-\[var\(--color-background-warning\)\]:hover{background-color:var(--color-background-warning)}.hover\:bg-black\/5:hover{background-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-black\/5:hover{background-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.hover\:bg-black\/10:hover{background-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-black\/10:hover{background-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.hover\:bg-transparent:hover{background-color:#0000}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-75:hover{opacity:.75}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-85:hover{opacity:.85}.hover\:opacity-100:hover{opacity:1}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\:bg-\[var\(--color-background-tertiary\)\]:active{background-color:var(--color-background-tertiary)}.active\:bg-black\/20:active{background-color:#0003}@supports (color:color-mix(in lab, red, red)){.active\:bg-black\/20:active{background-color:color-mix(in oklab, var(--color-black) 20%, transparent)}}.active\:opacity-65:active{opacity:.65}.active\:opacity-70:active{opacity:.7}.active\:opacity-75:active{opacity:.75}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}@media not all and (min-width:48rem){.max-md\:fixed{position:fixed}.max-md\:inset-y-0{inset-block:calc(var(--spacing) * 0)}.max-md\:left-0{left:calc(var(--spacing) * 0)}.max-md\:z-\[100\]{z-index:100}.max-md\:\!w-2\/3{width:66.6667%!important}.max-md\:-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.max-md\:translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.max-md\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.max-md\:duration-300{--tw-duration:.3s;transition-duration:.3s}}@media not all and (min-width:40rem){.max-sm\:-mx-\[1rem\]{margin-inline:-1rem}.max-sm\:w-\[100cqw\]{width:100cqw}.max-sm\:overflow-hidden{overflow:hidden}}@media (min-width:1280px){.min-\[1280px\]\:max-w-\[48rem\]{max-width:48rem}}@media (min-width:40rem){.sm\:start-0{inset-inline-start:calc(var(--spacing) * 0)}.sm\:end-0{inset-inline-end:calc(var(--spacing) * 0)}.sm\:top-\[3\.25rem\]{top:3.25rem}.sm\:top-\[3rem\]{top:3rem}.sm\:h-\[calc\(100\%-14rem\)\]{height:calc(100% - 14rem)}.sm\:w-full{width:100%}.sm\:rounded-3xl{border-radius:var(--radius-3xl)}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:px-5{padding-inline:calc(var(--spacing) * 5)}}@media (min-width:48rem){.md\:-start-6{inset-inline-start:calc(var(--spacing) * -6)}.md\:z-20{z-index:20}.md\:z-auto{z-index:auto}.md\:-mx-4{margin-inline:calc(var(--spacing) * -4)}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:p-10{padding:calc(var(--spacing) * 10)}.md\:pt-8{padding-top:calc(var(--spacing) * 8)}}@media (min-width:64rem){.lg\:max-w-\[48rem\]{max-width:48rem}}@media (min-width:80rem){.xl\:top-4{top:calc(var(--spacing) * 4)}.xl\:top-6{top:calc(var(--spacing) * 6)}.xl\:right-6{right:calc(var(--spacing) * 6)}.xl\:bottom-8{bottom:calc(var(--spacing) * 8)}.xl\:left-4{left:calc(var(--spacing) * 4)}.xl\:left-auto{left:auto}.xl\:mt-0{margin-top:calc(var(--spacing) * 0)}.xl\:w-\[360px\]{width:360px}.xl\:rounded-3xl{border-radius:var(--radius-3xl)}.xl\:rounded-none{border-radius:0}.xl\:rounded-t-2xl{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.xl\:px-0{padding-inline:calc(var(--spacing) * 0)}.xl\:shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.xl\:ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}:where(.dark\:divide-white\/5:where([data-theme=dark],[data-theme=dark] *)>:not(:last-child)){border-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){:where(.dark\:divide-white\/5:where([data-theme=dark],[data-theme=dark] *)>:not(:last-child)){border-color:color-mix(in oklab, var(--color-white) 5%, transparent)}}.dark\:bg-white\/5:where([data-theme=dark],[data-theme=dark] *){background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/5:where([data-theme=dark],[data-theme=dark] *){background-color:color-mix(in oklab, var(--color-white) 5%, transparent)}}.dark\:bg-white\/10:where([data-theme=dark],[data-theme=dark] *){background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/10:where([data-theme=dark],[data-theme=dark] *){background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.dark\:from-white\/15:where([data-theme=dark],[data-theme=dark] *){--tw-gradient-from:#ffffff26}@supports (color:color-mix(in lab, red, red)){.dark\:from-white\/15:where([data-theme=dark],[data-theme=dark] *){--tw-gradient-from:color-mix(in oklab, var(--color-white) 15%, transparent)}}.dark\:from-white\/15:where([data-theme=dark],[data-theme=dark] *){--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:ring-white\/10:where([data-theme=dark],[data-theme=dark] *){--tw-ring-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.dark\:ring-white\/10:where([data-theme=dark],[data-theme=dark] *){--tw-ring-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}@media (hover:hover){.dark\:hover\:bg-white\/5:where([data-theme=dark],[data-theme=dark] *):hover{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-white\/5:where([data-theme=dark],[data-theme=dark] *):hover{background-color:color-mix(in oklab, var(--color-white) 5%, transparent)}}.dark\:hover\:bg-white\/10:where([data-theme=dark],[data-theme=dark] *):hover{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-white\/10:where([data-theme=dark],[data-theme=dark] *):hover{background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}}.dark\:active\:bg-white\/20:where([data-theme=dark],[data-theme=dark] *):active{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.dark\:active\:bg-white\/20:where([data-theme=dark],[data-theme=dark] *):active{background-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.\[\&\:hover\]\:bg-transparent:hover{background-color:#0000}}.sunpeak-inspector-root select,.sunpeak-inspector-root input:not([type=checkbox]),.sunpeak-inspector-root textarea{box-shadow:inset 0 0 0 1px var(--color-border-primary);border:0;transition:box-shadow .15s,color .15s,background-color .15s}.sunpeak-inspector-root select:hover,.sunpeak-inspector-root input:not([type=checkbox]):hover,.sunpeak-inspector-root textarea:hover{box-shadow:inset 0 0 0 1px var(--color-border-secondary)}.sunpeak-inspector-root select:focus-visible,.sunpeak-inspector-root input:not([type=checkbox]):focus-visible,.sunpeak-inspector-root textarea:focus-visible{box-shadow:inset 0 0 0 1px var(--color-border-secondary);outline:2px solid var(--color-ring-primary);outline-offset:-1px}.sunpeak-inspector-root button:focus-visible{outline:2px solid var(--color-ring-primary);outline-offset:-1px}.sunpeak-inspector-root input[type=checkbox]{appearance:none;border:1px solid var(--color-border-secondary);cursor:pointer;background-color:#0000;background-position:50%;background-repeat:no-repeat;background-size:10px;border-radius:4px;flex-shrink:0;width:16px;height:16px;transition:border-color .15s,background-color .15s}.sunpeak-inspector-root input[type=checkbox]:hover{border-color:var(--color-text-tertiary)}.sunpeak-inspector-root input[type=checkbox]:checked{border-color:var(--color-background-inverse);background-color:var(--color-background-inverse);background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 10 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M2 5L4.25 7L8 3' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e%3c/svg%3e")}.sunpeak-inspector-root[data-theme=dark] input[type=checkbox]:checked,[data-theme=dark] .sunpeak-inspector-root input[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 10 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M2 5L4.25 7L8 3' stroke='%23111' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3e%3c/svg%3e")}.sunpeak-inspector-root input[type=checkbox]:focus-visible{outline:2px solid var(--color-ring-primary);outline-offset:2px}.sunpeak-inspector-root input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.sunpeak-inspector-root input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.sunpeak-inspector-root input[type=number]{-moz-appearance:textfield}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
require("../../chunk-CoPdw6nB.cjs");
|
|
3
|
-
const require_use_app = require("../../use-app-
|
|
3
|
+
const require_use_app = require("../../use-app-DIWh7-3f.cjs");
|
|
4
4
|
let react = require("react");
|
|
5
5
|
//#region src/host/chatgpt/openai-types.ts
|
|
6
6
|
/**
|
package/dist/index.cjs
CHANGED
|
@@ -2,15 +2,15 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
2
2
|
const require_chunk = require("./chunk-CoPdw6nB.cjs");
|
|
3
3
|
const require_protocol = require("./protocol-DUYcEQSv.cjs");
|
|
4
4
|
const require_v4 = require("./v4-Bgte15Jv.cjs");
|
|
5
|
-
const require_use_app = require("./use-app-
|
|
6
|
-
const require_inspector = require("./inspector-
|
|
5
|
+
const require_use_app = require("./use-app-DIWh7-3f.cjs");
|
|
6
|
+
const require_inspector = require("./inspector-DSX76Z-W.cjs");
|
|
7
7
|
const require_host_index = require("./host/index.cjs");
|
|
8
8
|
const require_inspector_index = require("./inspector/index.cjs");
|
|
9
9
|
const require_chatgpt_index = require("./chatgpt/index.cjs");
|
|
10
10
|
let react = require("react");
|
|
11
11
|
react = require_chunk.__toESM(react, 1);
|
|
12
12
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
13
|
-
//#region ../../node_modules/.pnpm/@modelcontextprotocol+ext-apps@1.7.
|
|
13
|
+
//#region ../../node_modules/.pnpm/@modelcontextprotocol+ext-apps@1.7.2_@modelcontextprotocol+sdk@1.29.0_zod@4.4.3__react-_f5b843da9146ebea748e10ad8dfce46a/node_modules/@modelcontextprotocol/ext-apps/dist/src/react/index.js
|
|
14
14
|
((K) => typeof require < "u" ? require : typeof Proxy < "u" ? new Proxy(K, { get: (Q, X) => (typeof require < "u" ? require : Q)[X] }) : K)(function(K) {
|
|
15
15
|
if (typeof require < "u") return require.apply(this, arguments);
|
|
16
16
|
throw Error("Dynamic require of \"" + K + "\" is not supported");
|