@midscene/computer-playground 1.2.2-beta-20260115120150.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +37 -0
  2. package/bin/computer-playground +3 -0
  3. package/dist/es/bin.mjs +122 -0
  4. package/dist/lib/bin.js +151 -0
  5. package/dist/types/bin.d.ts +1 -0
  6. package/package.json +41 -0
  7. package/static/favicon.ico +0 -0
  8. package/static/index.html +1 -0
  9. package/static/static/css/index.8c7d2d44.css +2 -0
  10. package/static/static/css/index.8c7d2d44.css.map +1 -0
  11. package/static/static/js/119.b7e19680.js +611 -0
  12. package/static/static/js/119.b7e19680.js.LICENSE.txt +138 -0
  13. package/static/static/js/119.b7e19680.js.map +1 -0
  14. package/static/static/js/async/195.00f72727.js +3 -0
  15. package/static/static/js/async/195.00f72727.js.map +1 -0
  16. package/static/static/js/async/199.a69d9256.js +231 -0
  17. package/static/static/js/async/199.a69d9256.js.map +1 -0
  18. package/static/static/js/async/221.f0ba098c.js +21 -0
  19. package/static/static/js/async/221.f0ba098c.js.map +1 -0
  20. package/static/static/js/async/271.d601f1d0.js +30 -0
  21. package/static/static/js/async/271.d601f1d0.js.map +1 -0
  22. package/static/static/js/async/35.8dee5a46.js +1 -0
  23. package/static/static/js/async/467.e055a37e.js +1 -0
  24. package/static/static/js/async/652.5ace83f7.js +3 -0
  25. package/static/static/js/async/652.5ace83f7.js.map +1 -0
  26. package/static/static/js/async/856.e2c33220.js +158 -0
  27. package/static/static/js/async/856.e2c33220.js.map +1 -0
  28. package/static/static/js/async/860.377c27af.js +2 -0
  29. package/static/static/js/async/860.377c27af.js.map +1 -0
  30. package/static/static/js/async/990.0bb9a664.js +26 -0
  31. package/static/static/js/async/990.0bb9a664.js.map +1 -0
  32. package/static/static/js/index.cb35be56.js +10 -0
  33. package/static/static/js/index.cb35be56.js.LICENSE.txt +7 -0
  34. package/static/static/js/index.cb35be56.js.map +1 -0
  35. package/static/static/js/lib-react.e13cc2e0.js +3 -0
  36. package/static/static/js/lib-react.e13cc2e0.js.LICENSE.txt +39 -0
  37. package/static/static/js/lib-react.e13cc2e0.js.map +1 -0
  38. package/static/static/wasm/9e906fbf.module.wasm +0 -0
package/README.md ADDED
@@ -0,0 +1,37 @@
1
+ # @midscene/computer-playground
2
+
3
+ Midscene Computer Playground - PC desktop automation playground for Windows, macOS, and Linux.
4
+
5
+ ## Usage
6
+
7
+ ```bash
8
+ npx @midscene/computer-playground
9
+ ```
10
+
11
+ Or install globally:
12
+
13
+ ```bash
14
+ npm install -g @midscene/computer-playground
15
+ midscene-computer-playground
16
+ ```
17
+
18
+ ## Features
19
+
20
+ - Simple web UI for PC desktop automation
21
+ - Supports Windows, macOS, and Linux
22
+ - AI-powered natural language commands
23
+ - Real-time execution feedback
24
+ - Automatic window minimization during task execution (restores after completion)
25
+
26
+ ## How It Works
27
+
28
+ When you start the playground, a browser window will open with a simple interface. When you execute a task:
29
+
30
+ 1. The browser window automatically minimizes to stay out of the way
31
+ 2. Midscene controls your desktop (mouse, keyboard, screenshots)
32
+ 3. After the task completes (success or error), the window automatically restores
33
+
34
+ **Platform Notes:**
35
+ - **macOS**: Uses AppleScript for window control
36
+ - **Windows**: Uses PowerShell for minimization
37
+ - **Linux**: Requires `xdotool` for window control (`sudo apt install xdotool`)
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ require('../dist/lib/bin.js');
@@ -0,0 +1,122 @@
1
+ import { createServer } from "node:net";
2
+ import node_path from "node:path";
3
+ import { ComputerDevice, agentFromComputer } from "@midscene/computer";
4
+ import { PlaygroundServer } from "@midscene/playground";
5
+ import { PLAYGROUND_SERVER_PORT } from "@midscene/shared/constants";
6
+ import puppeteer from "puppeteer";
7
+ async function isPortAvailable(port) {
8
+ return new Promise((resolve)=>{
9
+ const server = createServer();
10
+ server.on('error', ()=>resolve(false));
11
+ server.listen(port, ()=>{
12
+ server.close(()=>resolve(true));
13
+ });
14
+ });
15
+ }
16
+ async function findAvailablePort(startPort) {
17
+ let port = startPort;
18
+ let attempts = 0;
19
+ const maxAttempts = 15;
20
+ while(!await isPortAvailable(port)){
21
+ attempts++;
22
+ if (attempts >= maxAttempts) {
23
+ console.error(`Unable to find available port after ${maxAttempts} attempts starting from ${startPort}`);
24
+ process.exit(1);
25
+ }
26
+ port++;
27
+ }
28
+ return port;
29
+ }
30
+ const staticDir = node_path.join(__dirname, '../../static');
31
+ const main = async ()=>{
32
+ try {
33
+ const displays = await ComputerDevice.listDisplays();
34
+ if (displays.length > 0) {
35
+ console.log('Available displays:');
36
+ for (const display of displays)console.log(` - ${display.name} (${display.id})${display.primary ? ' [Primary]' : ''}`);
37
+ }
38
+ const playgroundServer = new PlaygroundServer(async ()=>await agentFromComputer(), staticDir);
39
+ let windowController = null;
40
+ playgroundServer.app.use('/execute', async (_req, res, next)=>{
41
+ if (!windowController) {
42
+ console.warn('Window controller not initialized yet, skipping window control');
43
+ next();
44
+ return;
45
+ }
46
+ const { session, page, windowId } = windowController;
47
+ await new Promise((resolve)=>setTimeout(resolve, 1500));
48
+ try {
49
+ await session.send('Browser.setWindowBounds', {
50
+ windowId,
51
+ bounds: {
52
+ windowState: 'minimized'
53
+ }
54
+ });
55
+ console.log('Window minimized via CDP, starting task execution...');
56
+ } catch (error) {
57
+ console.warn('Failed to minimize window:', error);
58
+ }
59
+ const originalSend = res.send.bind(res);
60
+ res.send = (body)=>{
61
+ Promise.all([
62
+ session.send('Browser.setWindowBounds', {
63
+ windowId,
64
+ bounds: {
65
+ windowState: 'normal'
66
+ }
67
+ }),
68
+ page.bringToFront()
69
+ ]).then(()=>{
70
+ console.log('Window restored via CDP');
71
+ }).catch((error)=>{
72
+ console.warn('Failed to restore window:', error);
73
+ });
74
+ return originalSend(body);
75
+ };
76
+ next();
77
+ });
78
+ console.log('Starting server...');
79
+ const availablePort = await findAvailablePort(PLAYGROUND_SERVER_PORT);
80
+ if (availablePort !== PLAYGROUND_SERVER_PORT) console.log(`Port ${PLAYGROUND_SERVER_PORT} is busy, using port ${availablePort} instead`);
81
+ await playgroundServer.launch(availablePort);
82
+ console.log('');
83
+ console.log('Midscene Computer Playground is ready!');
84
+ console.log(`Playground: http://localhost:${playgroundServer.port}`);
85
+ console.log(`Server ID: ${playgroundServer.id}`);
86
+ console.log('');
87
+ const url = `http://localhost:${playgroundServer.port}`;
88
+ console.log('Launching browser in standalone window mode...');
89
+ const browser = await puppeteer.launch({
90
+ headless: false,
91
+ defaultViewport: null,
92
+ args: [
93
+ `--app=${url}`,
94
+ '--window-size=1400,1000',
95
+ '--no-first-run',
96
+ '--no-default-browser-check'
97
+ ]
98
+ });
99
+ console.log('Browser launched successfully.');
100
+ const pages = await browser.pages();
101
+ const page = pages[0];
102
+ const session = await page.createCDPSession();
103
+ const windowInfo = await session.send('Browser.getWindowForTarget');
104
+ const windowId = windowInfo.windowId;
105
+ console.log(`Window ID: ${windowId}`);
106
+ windowController = {
107
+ session,
108
+ page,
109
+ windowId
110
+ };
111
+ console.log('Window controller initialized');
112
+ process.on('SIGINT', async ()=>{
113
+ console.log('\nShutting down...');
114
+ await browser.close();
115
+ process.exit(0);
116
+ });
117
+ } catch (error) {
118
+ console.error('Failed to start server:', error);
119
+ process.exit(1);
120
+ }
121
+ };
122
+ main();
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.n = (module)=>{
5
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
6
+ __webpack_require__.d(getter, {
7
+ a: getter
8
+ });
9
+ return getter;
10
+ };
11
+ })();
12
+ (()=>{
13
+ __webpack_require__.d = (exports1, definition)=>{
14
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
+ enumerable: true,
16
+ get: definition[key]
17
+ });
18
+ };
19
+ })();
20
+ (()=>{
21
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
22
+ })();
23
+ var __webpack_exports__ = {};
24
+ const external_node_net_namespaceObject = require("node:net");
25
+ const external_node_path_namespaceObject = require("node:path");
26
+ var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
27
+ const computer_namespaceObject = require("@midscene/computer");
28
+ const playground_namespaceObject = require("@midscene/playground");
29
+ const constants_namespaceObject = require("@midscene/shared/constants");
30
+ const external_puppeteer_namespaceObject = require("puppeteer");
31
+ var external_puppeteer_default = /*#__PURE__*/ __webpack_require__.n(external_puppeteer_namespaceObject);
32
+ async function isPortAvailable(port) {
33
+ return new Promise((resolve)=>{
34
+ const server = (0, external_node_net_namespaceObject.createServer)();
35
+ server.on('error', ()=>resolve(false));
36
+ server.listen(port, ()=>{
37
+ server.close(()=>resolve(true));
38
+ });
39
+ });
40
+ }
41
+ async function findAvailablePort(startPort) {
42
+ let port = startPort;
43
+ let attempts = 0;
44
+ const maxAttempts = 15;
45
+ while(!await isPortAvailable(port)){
46
+ attempts++;
47
+ if (attempts >= maxAttempts) {
48
+ console.error(`Unable to find available port after ${maxAttempts} attempts starting from ${startPort}`);
49
+ process.exit(1);
50
+ }
51
+ port++;
52
+ }
53
+ return port;
54
+ }
55
+ const staticDir = external_node_path_default().join(__dirname, '../../static');
56
+ const main = async ()=>{
57
+ try {
58
+ const displays = await computer_namespaceObject.ComputerDevice.listDisplays();
59
+ if (displays.length > 0) {
60
+ console.log('Available displays:');
61
+ for (const display of displays)console.log(` - ${display.name} (${display.id})${display.primary ? ' [Primary]' : ''}`);
62
+ }
63
+ const playgroundServer = new playground_namespaceObject.PlaygroundServer(async ()=>await (0, computer_namespaceObject.agentFromComputer)(), staticDir);
64
+ let windowController = null;
65
+ playgroundServer.app.use('/execute', async (_req, res, next)=>{
66
+ if (!windowController) {
67
+ console.warn('Window controller not initialized yet, skipping window control');
68
+ next();
69
+ return;
70
+ }
71
+ const { session, page, windowId } = windowController;
72
+ await new Promise((resolve)=>setTimeout(resolve, 1500));
73
+ try {
74
+ await session.send('Browser.setWindowBounds', {
75
+ windowId,
76
+ bounds: {
77
+ windowState: 'minimized'
78
+ }
79
+ });
80
+ console.log('Window minimized via CDP, starting task execution...');
81
+ } catch (error) {
82
+ console.warn('Failed to minimize window:', error);
83
+ }
84
+ const originalSend = res.send.bind(res);
85
+ res.send = (body)=>{
86
+ Promise.all([
87
+ session.send('Browser.setWindowBounds', {
88
+ windowId,
89
+ bounds: {
90
+ windowState: 'normal'
91
+ }
92
+ }),
93
+ page.bringToFront()
94
+ ]).then(()=>{
95
+ console.log('Window restored via CDP');
96
+ }).catch((error)=>{
97
+ console.warn('Failed to restore window:', error);
98
+ });
99
+ return originalSend(body);
100
+ };
101
+ next();
102
+ });
103
+ console.log('Starting server...');
104
+ const availablePort = await findAvailablePort(constants_namespaceObject.PLAYGROUND_SERVER_PORT);
105
+ if (availablePort !== constants_namespaceObject.PLAYGROUND_SERVER_PORT) console.log(`Port ${constants_namespaceObject.PLAYGROUND_SERVER_PORT} is busy, using port ${availablePort} instead`);
106
+ await playgroundServer.launch(availablePort);
107
+ console.log('');
108
+ console.log('Midscene Computer Playground is ready!');
109
+ console.log(`Playground: http://localhost:${playgroundServer.port}`);
110
+ console.log(`Server ID: ${playgroundServer.id}`);
111
+ console.log('');
112
+ const url = `http://localhost:${playgroundServer.port}`;
113
+ console.log('Launching browser in standalone window mode...');
114
+ const browser = await external_puppeteer_default().launch({
115
+ headless: false,
116
+ defaultViewport: null,
117
+ args: [
118
+ `--app=${url}`,
119
+ '--window-size=1400,1000',
120
+ '--no-first-run',
121
+ '--no-default-browser-check'
122
+ ]
123
+ });
124
+ console.log('Browser launched successfully.');
125
+ const pages = await browser.pages();
126
+ const page = pages[0];
127
+ const session = await page.createCDPSession();
128
+ const windowInfo = await session.send('Browser.getWindowForTarget');
129
+ const windowId = windowInfo.windowId;
130
+ console.log(`Window ID: ${windowId}`);
131
+ windowController = {
132
+ session,
133
+ page,
134
+ windowId
135
+ };
136
+ console.log('Window controller initialized');
137
+ process.on('SIGINT', async ()=>{
138
+ console.log('\nShutting down...');
139
+ await browser.close();
140
+ process.exit(0);
141
+ });
142
+ } catch (error) {
143
+ console.error('Failed to start server:', error);
144
+ process.exit(1);
145
+ }
146
+ };
147
+ main();
148
+ for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
149
+ Object.defineProperty(exports, '__esModule', {
150
+ value: true
151
+ });
@@ -0,0 +1 @@
1
+ export { }
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@midscene/computer-playground",
3
+ "version": "1.2.2-beta-20260115120150.0",
4
+ "description": "Computer playground for Midscene - PC desktop automation",
5
+ "main": "./dist/lib/index.js",
6
+ "types": "./dist/types/index.d.ts",
7
+ "module": "./dist/es/index.mjs",
8
+ "files": [
9
+ "dist",
10
+ "static",
11
+ "bin",
12
+ "README.md"
13
+ ],
14
+ "bin": {
15
+ "midscene-computer-playground": "./bin/computer-playground",
16
+ "@midscene/computer-playground": "./bin/computer-playground"
17
+ },
18
+ "dependencies": {
19
+ "cors": "^2.8.5",
20
+ "express": "^4.21.2",
21
+ "puppeteer": "24.6.0",
22
+ "@midscene/computer": "1.2.2-beta-20260115120150.0",
23
+ "@midscene/core": "1.2.2-beta-20260115120150.0",
24
+ "@midscene/playground": "1.2.2-beta-20260115120150.0",
25
+ "@midscene/shared": "1.2.2-beta-20260115120150.0"
26
+ },
27
+ "devDependencies": {
28
+ "@rslib/core": "^0.18.3",
29
+ "@types/cors": "^2.8.17",
30
+ "@types/express": "^4.17.21",
31
+ "@types/node": "^18.0.0",
32
+ "typescript": "^5.8.3"
33
+ },
34
+ "license": "MIT",
35
+ "scripts": {
36
+ "dev": "npm run build:watch",
37
+ "dev:server": "npm run build && ./bin/computer-playground",
38
+ "build": "rslib build",
39
+ "build:watch": "rslib build --watch --no-clean"
40
+ }
41
+ }
Binary file
@@ -0,0 +1 @@
1
+ <!doctype html><html><head><title>Midscene Computer Playground</title><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><script defer src="/static/js/lib-react.e13cc2e0.js"></script><script defer src="/static/js/119.b7e19680.js"></script><script defer src="/static/js/index.cb35be56.js"></script><link href="/static/css/index.8c7d2d44.css" rel="stylesheet"></head><body><div id="root"></div></body></html>
@@ -0,0 +1,2 @@
1
+ body{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;font-size:14px}.app-container{background-color:#fff;flex-direction:column;width:100%;height:100vh;display:flex}.app-content{justify-content:center;height:100vh;padding:32px;display:flex;overflow:hidden}.playground-panel{background-color:#fff;flex-direction:column;width:100%;max-width:1200px;height:100%;padding:32px;display:flex;box-shadow:0 1px 2px #0000000d}.playground-panel-header{border-bottom:1px solid #f0f0f0;padding:16px 24px}.playground-panel-header .header-row{justify-content:space-between;align-items:center;display:flex}.playground-panel-playground{flex-direction:column;flex:1;display:flex;overflow:hidden}.playground-container{height:100%}.logo img{vertical-align:baseline;height:30px;vertical-align:-webkit-baseline-middle;line-height:30px}.logo-with-star-wrapper{flex-direction:row;justify-content:space-between;display:flex}.nav-actions{align-items:center;gap:8px;display:flex}.nav-actions .nav-icon{color:#000000a6;cursor:pointer;font-size:16px;transition:color .3s}.nav-actions .nav-icon:hover{color:#2b83ff}.nav-actions a{align-items:center;text-decoration:none;display:flex}.nav-actions a:hover .nav-icon{color:#2b83ff}[data-theme=dark] .nav-actions .nav-icon{color:#f8fafd}[data-theme=dark] .nav-actions .nav-icon:hover{color:#2b83ff}.blackboard .footer{color:#aaa}.blackboard ul{padding-left:0}.blackboard li{list-style:none}.blackboard .bottom-tip{height:30px}.blackboard .bottom-tip-item{color:#aaa;text-overflow:ellipsis;word-wrap:break-word;max-width:500px}.blackboard-filter{margin:10px 0}.blackboard-main-content canvas{box-sizing:border-box;border:1px solid #888;width:100%}[data-theme=dark] .blackboard .footer,[data-theme=dark] .blackboard .bottom-tip-item{color:#ffffff73}[data-theme=dark] .blackboard-main-content canvas{border-color:#ffffff1f}.shiny-text{color:#0000;letter-spacing:.5px;text-shadow:0 1px 2px #0000000d;background-image:linear-gradient(45deg,#2b83ff,#6a11cb,#2575fc,#4481eb);background-size:300%;-webkit-background-clip:text;background-clip:text;font-weight:600;animation:8s infinite textGradient;display:inline-block;position:relative;overflow:hidden}.shiny-text.theme-blue{background-image:linear-gradient(45deg,#2b83ff,#6a11cb,#2575fc,#4481eb)}.shiny-text.theme-purple{background-image:linear-gradient(45deg,#667eea,#764ba2,#b06ab3,#9d50bb)}.shiny-text.theme-green{background-image:linear-gradient(45deg,#11998e,#38ef7d,#2dd4bf,#10b981)}.shiny-text.theme-rainbow{background-image:linear-gradient(45deg,#ff0080,#ff8c00,#40e0d0,#9d50bb,#ff0080);background-size:400%}.shiny-text:after{content:"";width:120%;height:120%;animation:shine var(--animation-duration,5s)cubic-bezier(.25,.1,.25,1)infinite;z-index:1;pointer-events:none;background:linear-gradient(90deg,#fff0 0%,#ffffff1a 10%,#fff9 50%,#ffffff1a 90%,#fff0 100%);position:absolute;top:-10%;left:-150%;transform:skew(-20deg)translateY(0)}.shiny-text.disabled{color:#000;background:0 0;font-weight:400;animation:none}.shiny-text.disabled:after{animation:none;display:none}[data-theme=dark] .shiny-text{color:#0000;-webkit-text-fill-color:transparent;text-shadow:none;background-image:linear-gradient(45deg,#a78bfa,#c084fc,#e879f9,#c084fc);background-size:300%;-webkit-background-clip:text;background-clip:text;animation:8s infinite textGradient}[data-theme=dark] .shiny-text:after{background:linear-gradient(90deg,#c5b8ff00 0%,#c5b8ff0d 10%,#c5b8ff26 50%,#c5b8ff0d 90%,#c5b8ff00 100%)}@keyframes shine{0%{opacity:.7;left:-150%}20%{opacity:1}80%{opacity:1}to{opacity:.7;left:250%}}@keyframes textGradient{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}.env-config-reminder{background:#fff2e8;border-radius:12px;align-items:center;gap:12px;margin-bottom:12px;padding:12px 16px;display:flex}.env-config-reminder .reminder-icon{color:#fa541c;width:16px;height:16px}.env-config-reminder .reminder-text{color:#000;flex:1;font-size:14px}[data-theme=dark] .env-config-reminder{background:#5226074d}[data-theme=dark] .env-config-reminder .reminder-text{color:#f8fafd}.player-container{box-sizing:border-box;background:#f2f4f7;border:1px solid #f2f4f7;border-radius:8px;flex-direction:column;width:100%;max-width:100%;height:100%;min-height:300px;max-height:100%;margin:0 auto;padding:12px;line-height:100%;display:flex;position:relative;overflow:visible}.player-container[data-fit-mode=height]{background:#fff}.player-container[data-fit-mode=height] .canvas-container{background-color:#f2f4f7}.player-container .canvas-container{width:100%;min-height:200px;aspect-ratio:var(--canvas-aspect-ratio,16/9);background-color:#fff;border-top-left-radius:4px;border-top-right-radius:4px;flex:none;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.player-container .canvas-container canvas{box-sizing:border-box;object-fit:contain;border:none;width:100%;max-width:100%;height:auto;max-height:100%;margin:0 auto;display:block}.player-container .canvas-container[data-fit-mode=height]{aspect-ratio:unset;flex:auto;height:auto;min-height:0}.player-container .canvas-container[data-fit-mode=height] canvas{width:auto;max-width:100%;height:100%;max-height:100%}.player-container .canvas-container[data-fit-mode=width]{aspect-ratio:var(--canvas-aspect-ratio,16/9)}.player-container .canvas-container[data-fit-mode=width] canvas{width:100%;height:auto}.player-container .player-timeline-wrapper{flex:none;width:100%;height:4px;margin-bottom:2px;position:relative}.player-container .player-timeline{background:#666;flex-shrink:0;width:100%;height:4px;position:relative}.player-container .player-timeline .player-timeline-progress{background:#2b83ff;height:4px;transition-timing-function:linear;position:absolute;top:0;left:0}.player-container .player-tools-wrapper{box-sizing:border-box;flex:none;width:100%;height:72px;padding:15px 16px;position:relative}.player-container .player-tools{color:#000;box-sizing:border-box;flex-direction:row;flex-shrink:0;justify-content:space-between;width:100%;max-width:100%;height:42px;font-size:14px;display:flex;overflow:hidden}.player-container .player-tools .ant-spin{color:#333}.player-container .player-tools .player-control{flex-direction:row;flex-grow:1;align-items:center;display:flex;overflow:hidden}.player-container .player-tools .status-icon{border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;margin-left:10px;transition:all .2s;display:flex}.player-container .player-tools .status-icon:hover{cursor:pointer;background:#f0f0f0}.player-container .player-tools .status-text{flex-direction:column;flex-grow:1;flex-shrink:1;justify-content:space-between;width:0;min-width:0;height:100%;display:flex;position:relative;overflow:hidden}.player-container .player-tools .title{font-weight:600}.player-container .player-tools .title,.player-container .player-tools .subtitle{text-overflow:ellipsis;white-space:nowrap;width:100%;overflow:hidden}.player-container .player-tools .player-tools-item{flex-direction:column;justify-content:center;height:100%;display:flex}[data-theme=dark] .player-container{background:#141414;border-color:#292929}[data-theme=dark] .player-container[data-fit-mode=height]{background:#292929;border-color:#292929}[data-theme=dark] .player-container[data-fit-mode=height] .canvas-container{background-color:#141414}[data-theme=dark] .player-container .canvas-container{background-color:#1f1f1f}[data-theme=dark] .player-container .player-tools,[data-theme=dark] .player-container .player-tools .ant-spin,[data-theme=dark] .player-container .player-tools .status-icon svg{color:#f8fafd}[data-theme=dark] .player-container .player-tools .status-icon:hover{background:#ffffff14}.result-wrapper{justify-content:center;height:100%;margin:4px 0;display:flex}.result-wrapper .loading-container{flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.result-wrapper .loading-container .loading-progress-text{color:#888;margin-top:8px;font-size:12px}.result-wrapper pre{white-space:pre-wrap;text-wrap:unset;word-wrap:break-word;overflow-wrap:break-word;background:#f2f4f7;border-radius:8px;margin:0;padding:14px;overflow:scroll}[data-theme=dark] .result-wrapper .loading-container .loading-progress-text{color:#ffffff73}[data-theme=dark] .result-wrapper pre{color:#f8fafd;background:#ffffff14;border:1px solid #ffffff1f}.playground-container{background:#fff;flex-direction:column;width:100%;height:100vh;display:flex;position:relative}.playground-container .command-form{flex-direction:column;width:100%;height:100%;display:flex}.playground-container .context-preview-section{border-bottom:1px solid #f0f0f0;flex-shrink:0;padding:16px}.playground-container .middle-dialog-area{flex-direction:column;flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.playground-container .middle-dialog-area .clear-button-container{z-index:10;position:absolute;top:16px;right:0}.playground-container .middle-dialog-area .clear-button-container .clear-button{opacity:.7;transition:opacity .2s}.playground-container .middle-dialog-area .clear-button-container .clear-button:hover{opacity:1}.playground-container .middle-dialog-area .info-list-container{scrollbar-width:none;flex:1;padding-top:16px;padding-bottom:16px;overflow:hidden auto}.playground-container .middle-dialog-area .info-list-container .ant-list .ant-list-item{border-bottom:none;padding:0}.playground-container .middle-dialog-area .info-list-container .ant-list .ant-list-item .ant-card{border:1px solid #f0f0f0;border-radius:8px;box-shadow:0 1px 3px #0000001a}.playground-container .middle-dialog-area .info-list-container .ant-list .ant-list-item .ant-card:hover{box-shadow:0 2px 6px #00000026}.playground-container .middle-dialog-area .info-list-container .ant-list .ant-list-item .ant-card .ant-card-body{padding:12px}.playground-container .middle-dialog-area .info-list-container .ant-list .ant-list-empty-text{color:#999;font-style:italic}.playground-container .middle-dialog-area .info-list-container::-webkit-scrollbar{display:none}.playground-container .middle-dialog-area .info-list-container .list-item{background:0 0;border:none;padding:0}.playground-container .middle-dialog-area .scroll-to-bottom-button{z-index:10;background:#fff;border:1px solid #00000014;position:absolute;bottom:10px;right:0}.playground-container .middle-dialog-area .scroll-to-bottom-button:hover{background:#1890ff}.playground-container .middle-dialog-area .scroll-to-bottom-button:hover .anticon{color:#fff}.playground-container .middle-dialog-area .scroll-to-bottom-button .anticon{color:#333;font-size:16px}.playground-container .user-message-container{justify-content:flex-end;width:100%;margin:20px 0 30px;display:flex}.playground-container .user-message-container .user-message-bubble{color:#000000d9;text-align:left;background:#f2f4f7;border-radius:12px;max-width:80%;padding:12px 16px;font-size:14px;font-weight:400;display:inline-block}.playground-container .progress-action-item{color:#000;background:#f2f4f7;border-radius:8px;justify-content:space-between;height:36px;margin:4px 0;padding:0 12px;font-size:14px;line-height:36px;display:flex}.playground-container .progress-action-item .progress-status-icon{margin-left:4px}.playground-container .progress-action-item .progress-status-icon.loading{color:#1890ff}.playground-container .progress-action-item .progress-status-icon.completed{color:#52c41a}.playground-container .progress-action-item .progress-status-icon.error{color:#ff4d4f;font-weight:700}.playground-container .progress-description{padding:8px 0;font-size:14px;line-height:22px;display:inline-block}.playground-container .system-message-container{flex-direction:column;display:flex}.playground-container .system-message-container .system-message-header{align-items:center;gap:8px;margin:12px 0;display:flex}.playground-container .system-message-container .system-message-header .system-message-title{font-size:12px;font-weight:400;line-height:100%}.playground-container .system-message-container .system-message-content{color:#000000d9;font-size:14px}.playground-container .system-message-container .system-message-content .system-message-text{color:#000000d9;font-size:14px;line-height:25px}.playground-container .system-message-container .system-message-content .error-message{color:#e51723;word-break:break-word;background-color:#fff;border:none;border-radius:0;align-items:flex-start;margin-bottom:16px;padding:0;font-size:14px;display:flex}.playground-container .system-message-container .system-message-content .error-message .divider{background-color:#e6e8eb;flex-shrink:0;align-self:stretch;width:1px;min-height:20px;margin:0 8px 0 0}.playground-container .system-message-container .system-message-content .loading-progress-text{color:#666;background:#f6f8fa;border-left:3px solid #1890ff;border-radius:4px;margin-top:8px;padding:8px 12px;font-size:13px}.playground-container .new-conversation-separator{flex-shrink:0;justify-content:center;align-items:center;padding:20px 0;display:flex;position:relative}.playground-container .new-conversation-separator .separator-line{background-color:#e8e8e8;height:1px;position:absolute;top:50%;left:0;right:0}.playground-container .new-conversation-separator .separator-text-container{z-index:1;background-color:#fff;padding:0 16px;position:relative}.playground-container .new-conversation-separator .separator-text-container .separator-text{color:#999;background-color:#fff;font-size:12px}.playground-container .bottom-input-section{background-color:#fff;flex-shrink:0;padding:16px 0 0}.playground-container .version-info-section{flex-shrink:0;justify-content:center;align-items:center;height:38px;display:flex}.playground-container .version-text{color:#999;text-align:center;font-size:12px}.playground-container .hidden-result-ref{display:none}.playground-container .playground-description{margin-bottom:32px}.playground-container .playground-description .description-zh{color:#333;margin:0 0 8px;font-size:16px;line-height:1.5}.playground-container .playground-description .description-en{color:#666;margin:0;font-size:14px;line-height:1.5}.playground-container .config-section{margin-bottom:24px}.playground-container .config-section .config-title{color:#333;margin:0 0 16px;font-size:18px;font-weight:600}.playground-container .config-section .config-item{align-items:center;gap:8px;margin-bottom:12px;display:flex}.playground-container .config-section .config-item .config-check{color:#52c41a;font-size:16px}.playground-container .config-section .config-item .config-label{color:#333;font-size:14px}.playground-container .config-section .config-link{color:#1890ff;font-size:14px;text-decoration:none}.playground-container .config-section .config-link:hover{text-decoration:underline}[data-theme=dark] .universal-playground .error-hint{color:#ffffff73}[data-theme=dark] .universal-playground .status-indicator{color:#f8fafd}[data-theme=dark] .universal-playground .status-indicator.error{color:#ff4d4f}[data-theme=dark] .universal-playground .status-indicator.success{color:#52c41a}[data-theme=dark] .universal-playground .operation-label{color:#f8fafd}[data-theme=dark] .universal-playground .alert-message{color:#f8fafd;background-color:#5226074d}[data-theme=dark] .universal-playground .operation-item .operation-icon-wrapper{background-color:#ffffff14}[data-theme=dark] .universal-playground .operation-item .operation-content{background-color:#0000}[data-theme=dark] .universal-playground .operation-item .operation-content .operation-title{color:#ffffff73}[data-theme=dark] .universal-playground .playground-footer{background-color:#ffffff0a}[data-theme=dark] .universal-playground .playground-footer .status-text{color:#f8fafd}[data-theme=dark] .universal-playground .results-info{color:#ffffff73}[data-theme=dark] .universal-playground .result-section .result-title,[data-theme=dark] .universal-playground .result-section .result-details,[data-theme=dark] .universal-playground .result-section .result-value{color:#f8fafd}[data-theme=dark] .universal-playground .result-section .result-value.success{color:#52c41a}[data-theme=dark] .universal-playground .result-section .result-value.error{color:#ff4d4f}.prompt-input-wrapper{box-sizing:border-box;width:100%;padding:0 4px}.prompt-input-wrapper .mode-radio-group-wrapper{align-items:center;gap:8px;display:flex;position:relative}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group{scrollbar-width:thin;flex:1;align-items:center;gap:8px;min-width:0;height:100%;margin-right:60px;display:flex;overflow:auto hidden}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group::-webkit-scrollbar{height:6px}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-form-item{flex-shrink:0;margin:0!important}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-form-item .ant-radio-group{flex-wrap:nowrap;gap:8px;display:flex}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper{height:24px;box-shadow:none;white-space:nowrap;background-color:#f7f7f7;border:none;border-radius:11px;flex-shrink:0;margin-right:0;padding:0 8px;font-size:12px;line-height:24px}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper:before{display:none}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper:focus-within{outline:none}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{color:#fff;background-color:#2b83ff;border-color:#2b83ff}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked:hover{color:#fff}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-dropdown-trigger{flex-shrink:0}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button{height:24px;box-shadow:none;white-space:nowrap;background-color:#f7f7f7;border:none;border-radius:11px;flex-shrink:0;align-items:center;gap:2px;max-width:160px;padding:0 8px;font-size:12px;display:inline-flex}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button .ant-btn-content{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button:hover{background-color:#e6e6e6}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button.selected-from-dropdown{color:#fff;background-color:#2b83ff;font-weight:500}.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button.selected-from-dropdown:hover{background-color:#2b83ff}.prompt-input-wrapper .mode-radio-group-wrapper .action-icons{z-index:10;pointer-events:none;background:linear-gradient(90deg,#0000 0%,#ffffff80 20%,#fffc 40%,#fffffff2 60%,#fff 70%);flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;width:80px;padding-left:20px;display:flex;position:absolute;top:50%;right:0;transform:translateY(-50%)}.prompt-input-wrapper .mode-radio-group-wrapper .action-icons>*{pointer-events:auto}.prompt-input-wrapper .main-side-console-input{z-index:1;background:linear-gradient(#fff,#fff) padding-box padding-box,linear-gradient(135deg,#4285f4 0%,#06f 25%,#7b02c5 50%,#ea4335 75%,#ff7043 100%) border-box;border:1px solid #0000;border-radius:12px;margin-top:10px;padding-bottom:48px;position:relative}@keyframes hue-shift{0%{filter:hue-rotate()}to{filter:hue-rotate(360deg)}}.prompt-input-wrapper .main-side-console-input:focus-within{z-index:10;box-shadow:0 0 0 3px #2b83ff29}.prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea{resize:none;white-space:pre-wrap;scrollbar-width:thin;background:0 0;border:none;border-radius:0;outline:none;min-height:120px;padding:12px 16px;line-height:21px;transition:background-color .2s;position:relative;overflow-y:auto}.prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea:focus{box-shadow:none;border:none;outline:none}.prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea:focus-visible{box-shadow:none;border:none;outline:none}.prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea:after{display:none}.prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea::-webkit-scrollbar{width:6px}.prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea::-webkit-scrollbar-thumb{background-color:#0003;border-radius:3px}.prompt-input-wrapper .main-side-console-input.loading{background:linear-gradient(#fff,#fff) padding-box padding-box,linear-gradient(135deg,#4285f4 0%,#06f 25%,#7b02c5 50%,#ea4335 75%,#ff7043 100%) border-box;border:1px solid #0000}.prompt-input-wrapper .main-side-console-input.loading:before{content:"";-webkit-mask-composite:xor;pointer-events:none;z-index:-1;-webkit-mask-composite:xor;-webkit-mask-source-type:auto,auto;-webkit-mask-composite:xor;-webkit-mask-source-type:auto,auto;background:linear-gradient(135deg,#4285f4 0%,#06f 25%,#7b02c5 50%,#ea4335 75%,#ff7043 100%);border-radius:12px;padding:1px;animation:5s linear infinite hue-shift;position:absolute;top:-1px;bottom:-1px;left:-1px;right:-1px;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.prompt-input-wrapper .main-side-console-input.disabled .form-controller-wrapper{background-color:#0000}.prompt-input-wrapper .ant-form-item-with-help+.form-controller-wrapper{bottom:14px}.prompt-input-wrapper .ant-input{padding-bottom:40px}.prompt-input-wrapper .form-controller-wrapper{box-sizing:border-box;z-index:1000;pointer-events:none;background-color:#0000;flex-direction:row;justify-content:flex-end;align-items:flex-end;gap:8px;width:calc(100% - 32px);height:56px;padding:12px 0;line-height:32px;transition:background-color .2s;display:flex;position:absolute;bottom:0;left:16px}.prompt-input-wrapper .form-controller-wrapper>*{pointer-events:auto}.prompt-input-wrapper .settings-wrapper{color:#777;flex-flow:wrap;gap:2px;display:flex}.prompt-input-wrapper .settings-wrapper.settings-wrapper-hover{color:#3b3b3b}.prompt-input-wrapper .structured-params-container{box-sizing:border-box;padding:16px 16px 56px;overflow:hidden}.prompt-input-wrapper .structured-params-container .structured-params{width:100%;min-width:0}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item{flex-direction:column;display:flex}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label{text-align:left;flex-basis:auto;padding-bottom:4px}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label>label{color:#000000d9;height:auto;font-size:12px;font-weight:500;line-height:1.5}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label>label:after{color:#ff4d4f;font-family:SimSun,sans-serif;font-size:12px;line-height:1;display:inline-block}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label>label:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))):after{margin-left:4px}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label>label:not(:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))):after{margin-left:4px}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label>label:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))):after{margin-left:4px}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label>label:not(:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))):after{margin-left:4px}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label>label:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))):after{margin-left:4px}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label>label:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)):after{margin-right:4px}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label>label:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)):after{margin-right:4px}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label>label:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)):after{margin-right:4px}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-control{flex:1;margin-top:0}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-row{flex-direction:column}.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-control-input{min-height:auto}.prompt-input-wrapper .structured-params-container .structured-params .ant-input,.prompt-input-wrapper .structured-params-container .structured-params .ant-input-number,.prompt-input-wrapper .structured-params-container .structured-params .ant-select{border:1px solid #e1e5e9;border-radius:6px;width:100%}.prompt-input-wrapper .structured-params-container .structured-params .ant-input:hover,.prompt-input-wrapper .structured-params-container .structured-params .ant-input-number:hover,.prompt-input-wrapper .structured-params-container .structured-params .ant-select:hover{border-color:#40a9ff}.prompt-input-wrapper .structured-params-container .structured-params textarea.ant-input{padding-bottom:5px}.prompt-input-wrapper .structured-params-container .structured-params .ant-input-number .ant-input-number-input{box-shadow:none;border:none}.prompt-input-wrapper .structured-params-container .structured-params .ant-input-number:hover .ant-input-number-input{box-shadow:none}.prompt-input-wrapper .structured-params-container .structured-params .ant-select{min-width:120px}.prompt-input-wrapper .structured-params-container .structured-params .ant-select .ant-select-selector{box-shadow:none;border:none}.prompt-input-wrapper .structured-params-container .structured-params .ant-select:hover .ant-select-selector,.prompt-input-wrapper .structured-params-container .structured-params .ant-select.ant-select-focused .ant-select-selector{box-shadow:none}.prompt-input-wrapper .structured-params-container .structured-params .ant-radio-group{width:100%}.prompt-input-wrapper .structured-params-container .structured-params .ant-radio-group .ant-radio-button-wrapper{border:1px solid #e1e5e9;border-radius:6px;height:32px;margin-right:4px;font-size:12px;line-height:30px}.prompt-input-wrapper .structured-params-container .structured-params .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{color:#fff;background-color:#2b83ff;border-color:#2b83ff}.selector-trigger{cursor:pointer;width:24px;height:24px;transition:all .2s}.selector-trigger .action-icon{color:#000000d9;font-size:14px;transition:all .2s}.selector-trigger .action-icon:hover{color:#2b83ff}.more-apis-dropdown .ant-dropdown-menu{scrollbar-width:thin;max-height:400px;overflow-y:auto}.more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar{width:6px}.more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-thumb:hover{background:#a8a8a8}[data-theme=dark] .prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper{color:#f8fafd!important;background-color:#ffffff14!important}[data-theme=dark] .prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{color:#fff!important;background-color:#2b83ff!important;border-color:#2b83ff!important}[data-theme=dark] .prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button{color:#f8fafd!important;background-color:#ffffff14!important}[data-theme=dark] .prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button:hover{background-color:#ffffff1f!important}[data-theme=dark] .prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button.selected-from-dropdown{color:#fff!important;background-color:#2b83ff!important}[data-theme=dark] .prompt-input-wrapper .mode-radio-group-wrapper .action-icons{background:linear-gradient(90deg,#0000 0%,#1f1f1f80 20%,#1f1f1fcc 40%,#1f1f1ff2 60%,#1f1f1f 70%)!important}[data-theme=dark] .prompt-input-wrapper .main-side-console-input{background:#1f1f1f!important;border-color:#ffffff1f!important}[data-theme=dark] .prompt-input-wrapper .main-side-console-input:focus-within{background:linear-gradient(#1f1f1f,#1f1f1f) padding-box padding-box,linear-gradient(135deg,#4285f4 0%,#06f 25%,#7b02c5 50%,#ea4335 75%,#ff7043 100%) border-box!important;border:1px solid #0000!important}[data-theme=dark] .prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea{color:#f8fafd!important}[data-theme=dark] .prompt-input-wrapper .main-side-console-input.loading{background:linear-gradient(#1f1f1f,#1f1f1f) padding-box padding-box,linear-gradient(135deg,#4285f4 0%,#06f 25%,#7b02c5 50%,#ea4335 75%,#ff7043 100%) border-box!important;border:1px solid #0000!important}[data-theme=dark] .prompt-input-wrapper .ant-form-item-control-input-content .ant-input,[data-theme=dark] .prompt-input-wrapper .ant-form-item-control-input-content textarea.ant-input{color:#f8fafd!important;background:#ffffff0a!important;border-color:#ffffff1f!important}[data-theme=dark] .prompt-input-wrapper .ant-form-item-control-input-content .ant-btn{color:#f8fafd!important;background-color:#ffffff14!important;border-color:#ffffff1f!important}[data-theme=dark] .prompt-input-wrapper .ant-form-item-control-input-content .ant-btn.ant-btn-primary{color:#fff!important;background-color:#2b83ff!important;border-color:#2b83ff!important}[data-theme=dark] .prompt-input-wrapper .form-controller-wrapper{background-color:#0000!important}[data-theme=dark] .prompt-input-wrapper .structured-params-container{background:linear-gradient(#1f1f1f,#1f1f1f) padding-box padding-box,linear-gradient(135deg,#4285f4 0%,#06f 25%,#7b02c5 50%,#ea4335 75%,#ff7043 100%) border-box!important}[data-theme=dark] .prompt-input-wrapper .structured-params-container .structured-params .ant-form-item-label>label{color:#f8fafd!important}[data-theme=dark] .prompt-input-wrapper .structured-params-container .structured-params .ant-input,[data-theme=dark] .prompt-input-wrapper .structured-params-container .structured-params .ant-input-number,[data-theme=dark] .prompt-input-wrapper .structured-params-container .structured-params .ant-select,[data-theme=dark] .prompt-input-wrapper .structured-params-container .structured-params .ant-radio-group .ant-radio-button-wrapper{color:#f8fafd!important;background-color:#ffffff0a!important;border-color:#ffffff1f!important}[data-theme=dark] .prompt-input-wrapper .structured-params-container .structured-params .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked{color:#fff!important;background-color:#2b83ff!important;border-color:#2b83ff!important}[data-theme=dark] .prompt-input .tip-button{background-color:#ffffff14}[data-theme=dark] .prompt-input .tip-button.active{color:#fff;background-color:#2b83ff}[data-theme=dark] .prompt-input .prompt-textarea-wrapper{background-color:#ffffff0a}[data-theme=dark] .prompt-input .prompt-textarea-wrapper:hover,[data-theme=dark] .prompt-input .prompt-textarea-wrapper.focused{background-color:#ffffff14}[data-theme=dark] .prompt-input .btn-wrapper .btn-item{color:#fff;background-color:#2b83ff}[data-theme=dark] .prompt-input .btn-wrapper .btn-item:hover{background-color:#2b83ff}[data-theme=dark] .prompt-input .dropdown-content{background-color:#1f1f1f;border-color:#ffffff1f}[data-theme=dark] .prompt-input .param-label{color:#f8fafd}[data-theme=dark] .prompt-input .error-message{color:#ff4d4f}[data-theme=dark] .prompt-input .send-button-text{color:#2b83ff}[data-theme=dark] .more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-track{background:#ffffff14}[data-theme=dark] .more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-thumb{background:#fff3}[data-theme=dark] .more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.history-selector-wrapper{position:relative}.history-modal-overlay{z-index:9999;background:#fff;border:1px solid #00000014;border-radius:12px;width:320px;height:400px;position:fixed;top:auto;bottom:20px;right:20px;box-shadow:0 8px 24px #0000001f}.history-modal-container{border-radius:12px;flex-direction:column;width:100%;height:100%;display:flex;overflow:hidden}.history-modal-container .history-modal-header{justify-content:space-between;align-items:center;height:48px;padding:0 25px;line-height:48px;display:flex}.history-modal-container .history-modal-header .close-button{justify-content:center;align-items:center;margin-right:-4px;padding:4px;display:flex}.history-modal-container .history-modal-header .close-button .anticon{color:#999;font-size:18px}.history-modal-container .history-modal-header .close-button:hover .anticon{color:#666}.history-modal-container .history-search-section{background:#fff;padding:16px 20px}.history-modal-container .history-search-section .search-input-wrapper{color:#00000040;align-items:center;gap:12px;display:flex}.history-modal-container .history-search-section .search-input-wrapper .search-input{background:#f1f2f3;border:none;border-radius:16px;flex:1;height:36px}.history-modal-container .history-search-section .search-input-wrapper .search-input .ant-input{box-shadow:none;background:0 0;border:none}.history-modal-container .history-search-section .search-input-wrapper .search-input:hover,.history-modal-container .history-search-section .search-input-wrapper .search-input:focus-within{background:#fff;border-color:#d9d9d9}.history-modal-container .history-search-section .search-input-wrapper .clear-button{color:#1890ff;height:auto;padding:0}.history-modal-container .history-search-section .search-input-wrapper .clear-button:hover{color:#40a9ff}.history-modal-container .history-content{flex:1;padding:0 25px 25px;overflow-y:auto}.history-modal-container .history-content .history-group{margin-bottom:10px}.history-modal-container .history-content .history-group .history-group-title{color:#00000073;height:40px;font-size:12px;font-weight:400;line-height:40px}.history-modal-container .history-content .history-group .history-item{cursor:pointer;color:#000000d9;white-space:nowrap;text-overflow:ellipsis;height:40px;font-size:14px;line-height:40px;overflow:hidden}.history-modal-container .history-content .history-group .history-item:hover{background:#f2f4f7;margin:0 -8px;padding:0 8px}.history-modal-container .history-content .no-results{text-align:center;color:#999;padding:40px 20px}[data-theme=dark] .history-selector .history-timestamp,[data-theme=dark] .history-selector .history-path{color:#ffffff73}[data-theme=dark] .history-selector .history-description{color:#f8fafd}[data-theme=dark] .history-selector .history-no-items{color:#ffffff73}[data-theme=dark] .history-selector .history-item:hover{background:#ffffff14}[data-theme=dark] .history-selector .history-item .history-clear-icon{border-color:#ffffff1f}[data-theme=dark] .history-selector .history-item .history-clear-icon:hover{border-color:#40a9ff}[data-theme=dark] .history-selector .history-load-more{color:#1890ff}[data-theme=dark] .history-selector .history-load-more:hover{color:#40a9ff}
2
+ /*# sourceMappingURL=index.8c7d2d44.css.map*/
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static/css/index.8c7d2d44.css","sources":["../../../home/runner/work/midscene/midscene/apps/computer-playground/src/App.less","../../../src/App.less","../../../../../packages/visualizer/dist/es/component/logo/index.css","../../../../../packages/visualizer/dist/es/component/nav-actions/style.css","../../../../../packages/visualizer/dist/es/component/blackboard/index.css","../../../../../packages/visualizer/dist/es/component/shiny-text/index.css","../../../../../packages/visualizer/dist/es/component/env-config-reminder/index.css","../../../../../packages/visualizer/dist/es/component/player/index.css","../../../../../packages/visualizer/dist/es/component/playground-result/index.css","../../../../../packages/visualizer/dist/es/component/universal-playground/index.css","../../../../../packages/visualizer/dist/es/component/prompt-input/index.css","../../../../../packages/visualizer/dist/es/component/history-selector/index.css"],"sourcesContent":["body {\n margin: 0;\n padding: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';\n font-size: 14px;\n}\n.app-container {\n width: 100%;\n height: 100vh;\n display: flex;\n flex-direction: column;\n background-color: #ffffff;\n}\n.app-content {\n height: 100vh;\n overflow: hidden;\n display: flex;\n justify-content: center;\n padding: 32px;\n}\n.playground-panel {\n width: 100%;\n max-width: 1200px;\n height: 100%;\n display: flex;\n flex-direction: column;\n background-color: #fff;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n padding: 32px;\n}\n.playground-panel-header {\n padding: 16px 24px;\n border-bottom: 1px solid #f0f0f0;\n}\n.playground-panel-header .header-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.playground-panel-playground {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n.playground-container {\n height: 100%;\n}\n","body {\n margin: 0;\n padding: 0;\n font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Noto Sans, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji;\n font-size: 14px;\n}\n\n.app-container {\n background-color: #fff;\n flex-direction: column;\n width: 100%;\n height: 100vh;\n display: flex;\n}\n\n.app-content {\n justify-content: center;\n height: 100vh;\n padding: 32px;\n display: flex;\n overflow: hidden;\n}\n\n.playground-panel {\n background-color: #fff;\n flex-direction: column;\n width: 100%;\n max-width: 1200px;\n height: 100%;\n padding: 32px;\n display: flex;\n box-shadow: 0 1px 2px #0000000d;\n}\n\n.playground-panel-header {\n border-bottom: 1px solid #f0f0f0;\n padding: 16px 24px;\n}\n\n.playground-panel-header .header-row {\n justify-content: space-between;\n align-items: center;\n display: flex;\n}\n\n.playground-panel-playground {\n flex-direction: column;\n flex: 1;\n display: flex;\n overflow: hidden;\n}\n\n.playground-container {\n height: 100%;\n}\n",".logo img {\n vertical-align: baseline;\n height: 30px;\n vertical-align: -webkit-baseline-middle;\n line-height: 30px;\n}\n\n.logo-with-star-wrapper {\n flex-direction: row;\n justify-content: space-between;\n display: flex;\n}\n\n",".nav-actions {\n align-items: center;\n gap: 8px;\n display: flex;\n}\n\n.nav-actions .nav-icon {\n color: rgba(0, 0, 0, .65);\n cursor: pointer;\n font-size: 16px;\n transition: color .3s;\n}\n\n.nav-actions .nav-icon:hover {\n color: #2b83ff;\n}\n\n.nav-actions a {\n align-items: center;\n text-decoration: none;\n display: flex;\n}\n\n.nav-actions a:hover .nav-icon {\n color: #2b83ff;\n}\n\n[data-theme=\"dark\"] .nav-actions .nav-icon {\n color: #f8fafd;\n}\n\n[data-theme=\"dark\"] .nav-actions .nav-icon:hover {\n color: #2b83ff;\n}\n\n",".blackboard .footer {\n color: #aaa;\n}\n\n.blackboard ul {\n padding-left: 0;\n}\n\n.blackboard li {\n list-style: none;\n}\n\n.blackboard .bottom-tip {\n height: 30px;\n}\n\n.blackboard .bottom-tip-item {\n color: #aaa;\n text-overflow: ellipsis;\n word-wrap: break-word;\n max-width: 500px;\n}\n\n.blackboard-filter {\n margin: 10px 0;\n}\n\n.blackboard-main-content canvas {\n box-sizing: border-box;\n border: 1px solid #888;\n width: 100%;\n}\n\n[data-theme=\"dark\"] .blackboard .footer, [data-theme=\"dark\"] .blackboard .bottom-tip-item {\n color: rgba(255, 255, 255, .45);\n}\n\n[data-theme=\"dark\"] .blackboard-main-content canvas {\n border-color: rgba(255, 255, 255, .12);\n}\n\n",".shiny-text {\n color: rgba(0, 0, 0, 0);\n letter-spacing: .5px;\n text-shadow: 0 1px 2px rgba(0, 0, 0, .05);\n background-image: linear-gradient(45deg, #2b83ff, #6a11cb, #2575fc, #4481eb);\n background-size: 300%;\n -webkit-background-clip: text;\n background-clip: text;\n font-weight: 600;\n animation: 8s infinite textGradient;\n display: inline-block;\n position: relative;\n overflow: hidden;\n}\n\n.shiny-text.theme-blue {\n background-image: linear-gradient(45deg, #2b83ff, #6a11cb, #2575fc, #4481eb);\n}\n\n.shiny-text.theme-purple {\n background-image: linear-gradient(45deg, #667eea, #764ba2, #b06ab3, #9d50bb);\n}\n\n.shiny-text.theme-green {\n background-image: linear-gradient(45deg, #11998e, #38ef7d, #2dd4bf, #10b981);\n}\n\n.shiny-text.theme-rainbow {\n background-image: linear-gradient(45deg, #ff0080, #ff8c00, #40e0d0, #9d50bb, #ff0080);\n background-size: 400%;\n}\n\n.shiny-text:after {\n content: \"\";\n width: 120%;\n height: 120%;\n animation: shine var(--animation-duration, 5s) cubic-bezier(.25, .1, .25, 1) infinite;\n z-index: 1;\n pointer-events: none;\n background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, .1) 10%, rgba(255, 255, 255, .6) 50%, rgba(255, 255, 255, .1) 90%, rgba(255, 255, 255, 0) 100%);\n position: absolute;\n top: -10%;\n left: -150%;\n transform: skewX(-20deg)translateY(0);\n}\n\n.shiny-text.disabled {\n color: #000;\n background: none;\n font-weight: normal;\n animation: none;\n}\n\n.shiny-text.disabled:after {\n animation: none;\n display: none;\n}\n\n[data-theme=\"dark\"] .shiny-text {\n color: rgba(0, 0, 0, 0);\n -webkit-text-fill-color: transparent;\n text-shadow: none;\n background-image: linear-gradient(45deg, #a78bfa, #c084fc, #e879f9, #c084fc);\n background-size: 300%;\n -webkit-background-clip: text;\n background-clip: text;\n animation: 8s infinite textGradient;\n}\n\n[data-theme=\"dark\"] .shiny-text:after {\n background: linear-gradient(90deg, rgba(197, 184, 255, 0) 0%, rgba(197, 184, 255, .05) 10%, rgba(197, 184, 255, .15) 50%, rgba(197, 184, 255, .05) 90%, rgba(197, 184, 255, 0) 100%);\n}\n\n@keyframes shine {\n 0% {\n opacity: .7;\n left: -150%;\n }\n\n 20% {\n opacity: 1;\n }\n\n 80% {\n opacity: 1;\n }\n\n 100% {\n opacity: .7;\n left: 250%;\n }\n}\n\n@keyframes textGradient {\n 0% {\n background-position: 0%;\n }\n\n 50% {\n background-position: 100%;\n }\n\n 100% {\n background-position: 0%;\n }\n}\n\n",".env-config-reminder {\n background: #fff2e8;\n border-radius: 12px;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n padding: 12px 16px;\n display: flex;\n}\n\n.env-config-reminder .reminder-icon {\n color: #fa541c;\n width: 16px;\n height: 16px;\n}\n\n.env-config-reminder .reminder-text {\n color: #000;\n flex: 1;\n font-size: 14px;\n}\n\n[data-theme=\"dark\"] .env-config-reminder {\n background: rgba(82, 38, 7, .3);\n}\n\n[data-theme=\"dark\"] .env-config-reminder .reminder-text {\n color: #f8fafd;\n}\n\n",".player-container {\n box-sizing: border-box;\n background: #f2f4f7;\n border: 1px solid #f2f4f7;\n border-radius: 8px;\n flex-direction: column;\n width: 100%;\n max-width: 100%;\n height: 100%;\n min-height: 300px;\n max-height: 100%;\n margin: 0 auto;\n padding: 12px;\n line-height: 100%;\n display: flex;\n position: relative;\n overflow: visible;\n}\n\n.player-container[data-fit-mode=\"height\"] {\n background: #fff;\n}\n\n.player-container[data-fit-mode=\"height\"] .canvas-container {\n background-color: #f2f4f7;\n}\n\n.player-container .canvas-container {\n width: 100%;\n min-height: 200px;\n aspect-ratio: var(--canvas-aspect-ratio, 16 / 9);\n background-color: #fff;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n flex: none;\n justify-content: center;\n align-items: center;\n display: flex;\n position: relative;\n overflow: hidden;\n}\n\n.player-container .canvas-container canvas {\n box-sizing: border-box;\n object-fit: contain;\n border: none;\n width: 100%;\n max-width: 100%;\n height: auto;\n max-height: 100%;\n margin: 0 auto;\n display: block;\n}\n\n.player-container .canvas-container[data-fit-mode=\"height\"] {\n aspect-ratio: unset;\n flex: auto;\n height: auto;\n min-height: 0;\n}\n\n.player-container .canvas-container[data-fit-mode=\"height\"] canvas {\n width: auto;\n max-width: 100%;\n height: 100%;\n max-height: 100%;\n}\n\n.player-container .canvas-container[data-fit-mode=\"width\"] {\n aspect-ratio: var(--canvas-aspect-ratio, 16 / 9);\n}\n\n.player-container .canvas-container[data-fit-mode=\"width\"] canvas {\n width: 100%;\n height: auto;\n}\n\n.player-container .player-timeline-wrapper {\n flex: none;\n width: 100%;\n height: 4px;\n margin-bottom: 2px;\n position: relative;\n}\n\n.player-container .player-timeline {\n background: #666;\n flex-shrink: 0;\n width: 100%;\n height: 4px;\n position: relative;\n}\n\n.player-container .player-timeline .player-timeline-progress {\n background: #2b83ff;\n height: 4px;\n transition-timing-function: linear;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.player-container .player-tools-wrapper {\n box-sizing: border-box;\n flex: none;\n width: 100%;\n height: 72px;\n padding: 15px 16px;\n position: relative;\n}\n\n.player-container .player-tools {\n color: #000;\n box-sizing: border-box;\n flex-direction: row;\n flex-shrink: 0;\n justify-content: space-between;\n width: 100%;\n max-width: 100%;\n height: 42px;\n font-size: 14px;\n display: flex;\n overflow: hidden;\n}\n\n.player-container .player-tools .ant-spin {\n color: #333;\n}\n\n.player-container .player-tools .player-control {\n flex-direction: row;\n flex-grow: 1;\n align-items: center;\n display: flex;\n overflow: hidden;\n}\n\n.player-container .player-tools .status-icon {\n border-radius: 8px;\n flex-shrink: 0;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n margin-left: 10px;\n transition: all .2s;\n display: flex;\n}\n\n.player-container .player-tools .status-icon:hover {\n cursor: pointer;\n background: #f0f0f0;\n}\n\n.player-container .player-tools .status-text {\n flex-direction: column;\n flex-grow: 1;\n flex-shrink: 1;\n justify-content: space-between;\n width: 0;\n min-width: 0;\n height: 100%;\n display: flex;\n position: relative;\n overflow: hidden;\n}\n\n.player-container .player-tools .title {\n font-weight: 600;\n}\n\n.player-container .player-tools .title, .player-container .player-tools .subtitle {\n text-overflow: ellipsis;\n white-space: nowrap;\n width: 100%;\n overflow: hidden;\n}\n\n.player-container .player-tools .player-tools-item {\n flex-direction: column;\n justify-content: center;\n height: 100%;\n display: flex;\n}\n\n[data-theme=\"dark\"] .player-container {\n background: #141414;\n border-color: #292929;\n}\n\n[data-theme=\"dark\"] .player-container[data-fit-mode=\"height\"] {\n background: #292929;\n border-color: #292929;\n}\n\n[data-theme=\"dark\"] .player-container[data-fit-mode=\"height\"] .canvas-container {\n background-color: #141414;\n}\n\n[data-theme=\"dark\"] .player-container .canvas-container {\n background-color: #1f1f1f;\n}\n\n[data-theme=\"dark\"] .player-container .player-tools, [data-theme=\"dark\"] .player-container .player-tools .ant-spin, [data-theme=\"dark\"] .player-container .player-tools .status-icon svg {\n color: #f8fafd;\n}\n\n[data-theme=\"dark\"] .player-container .player-tools .status-icon:hover {\n background: rgba(255, 255, 255, .08);\n}\n\n",".result-wrapper {\n justify-content: center;\n height: 100%;\n margin: 4px 0;\n display: flex;\n}\n\n.result-wrapper .loading-container {\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n display: flex;\n}\n\n.result-wrapper .loading-container .loading-progress-text {\n color: #888;\n margin-top: 8px;\n font-size: 12px;\n}\n\n.result-wrapper pre {\n white-space: pre-wrap;\n text-wrap: unset;\n word-wrap: break-word;\n overflow-wrap: break-word;\n background: #f2f4f7;\n border-radius: 8px;\n margin: 0;\n padding: 14px;\n overflow: scroll;\n}\n\n[data-theme=\"dark\"] .result-wrapper .loading-container .loading-progress-text {\n color: rgba(255, 255, 255, .45);\n}\n\n[data-theme=\"dark\"] .result-wrapper pre {\n color: #f8fafd;\n background: rgba(255, 255, 255, .08);\n border: 1px solid rgba(255, 255, 255, .12);\n}\n\n",".playground-container {\n background: #fff;\n flex-direction: column;\n width: 100%;\n height: 100vh;\n display: flex;\n position: relative;\n}\n\n.playground-container .command-form {\n flex-direction: column;\n width: 100%;\n height: 100%;\n display: flex;\n}\n\n.playground-container .context-preview-section {\n border-bottom: 1px solid #f0f0f0;\n flex-shrink: 0;\n padding: 16px;\n}\n\n.playground-container .middle-dialog-area {\n flex-direction: column;\n flex: 1;\n min-height: 0;\n display: flex;\n position: relative;\n overflow: hidden;\n}\n\n.playground-container .middle-dialog-area .clear-button-container {\n z-index: 10;\n position: absolute;\n top: 16px;\n right: 0;\n}\n\n.playground-container .middle-dialog-area .clear-button-container .clear-button {\n opacity: .7;\n transition: opacity .2s;\n}\n\n.playground-container .middle-dialog-area .clear-button-container .clear-button:hover {\n opacity: 1;\n}\n\n.playground-container .middle-dialog-area .info-list-container {\n scrollbar-width: none;\n flex: 1;\n padding-top: 16px;\n padding-bottom: 16px;\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.playground-container .middle-dialog-area .info-list-container .ant-list .ant-list-item {\n border-bottom: none;\n padding: 0;\n}\n\n.playground-container .middle-dialog-area .info-list-container .ant-list .ant-list-item .ant-card {\n border: 1px solid #f0f0f0;\n border-radius: 8px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, .1);\n}\n\n.playground-container .middle-dialog-area .info-list-container .ant-list .ant-list-item .ant-card:hover {\n box-shadow: 0 2px 6px rgba(0, 0, 0, .15);\n}\n\n.playground-container .middle-dialog-area .info-list-container .ant-list .ant-list-item .ant-card .ant-card-body {\n padding: 12px;\n}\n\n.playground-container .middle-dialog-area .info-list-container .ant-list .ant-list-empty-text {\n color: #999;\n font-style: italic;\n}\n\n.playground-container .middle-dialog-area .info-list-container::-webkit-scrollbar {\n display: none;\n}\n\n.playground-container .middle-dialog-area .info-list-container .list-item {\n background: none;\n border: none;\n padding: 0;\n}\n\n.playground-container .middle-dialog-area .scroll-to-bottom-button {\n z-index: 10;\n background: #fff;\n border: 1px solid rgba(0, 0, 0, .08);\n position: absolute;\n bottom: 10px;\n right: 0;\n}\n\n.playground-container .middle-dialog-area .scroll-to-bottom-button:hover {\n background: #1890ff;\n}\n\n.playground-container .middle-dialog-area .scroll-to-bottom-button:hover .anticon {\n color: #fff;\n}\n\n.playground-container .middle-dialog-area .scroll-to-bottom-button .anticon {\n color: #333;\n font-size: 16px;\n}\n\n.playground-container .user-message-container {\n justify-content: flex-end;\n width: 100%;\n margin: 20px 0 30px;\n display: flex;\n}\n\n.playground-container .user-message-container .user-message-bubble {\n color: rgba(0, 0, 0, .85);\n text-align: left;\n background: #f2f4f7;\n border-radius: 12px;\n max-width: 80%;\n padding: 12px 16px;\n font-size: 14px;\n font-weight: 400;\n display: inline-block;\n}\n\n.playground-container .progress-action-item {\n color: #000;\n background: #f2f4f7;\n border-radius: 8px;\n justify-content: space-between;\n height: 36px;\n margin: 4px 0;\n padding: 0 12px;\n font-size: 14px;\n line-height: 36px;\n display: flex;\n}\n\n.playground-container .progress-action-item .progress-status-icon {\n margin-left: 4px;\n}\n\n.playground-container .progress-action-item .progress-status-icon.loading {\n color: #1890ff;\n}\n\n.playground-container .progress-action-item .progress-status-icon.completed {\n color: #52c41a;\n}\n\n.playground-container .progress-action-item .progress-status-icon.error {\n color: #ff4d4f;\n font-weight: bold;\n}\n\n.playground-container .progress-description {\n padding: 8px 0;\n font-size: 14px;\n line-height: 22px;\n display: inline-block;\n}\n\n.playground-container .system-message-container {\n flex-direction: column;\n display: flex;\n}\n\n.playground-container .system-message-container .system-message-header {\n align-items: center;\n gap: 8px;\n margin: 12px 0;\n display: flex;\n}\n\n.playground-container .system-message-container .system-message-header .system-message-title {\n font-size: 12px;\n font-weight: 400;\n line-height: 100%;\n}\n\n.playground-container .system-message-container .system-message-content {\n color: rgba(0, 0, 0, .85);\n font-size: 14px;\n}\n\n.playground-container .system-message-container .system-message-content .system-message-text {\n color: rgba(0, 0, 0, .85);\n font-size: 14px;\n line-height: 25px;\n}\n\n.playground-container .system-message-container .system-message-content .error-message {\n color: #e51723;\n word-break: break-word;\n background-color: #fff;\n border: none;\n border-radius: 0;\n align-items: flex-start;\n margin-bottom: 16px;\n padding: 0;\n font-size: 14px;\n display: flex;\n}\n\n.playground-container .system-message-container .system-message-content .error-message .divider {\n background-color: #e6e8eb;\n flex-shrink: 0;\n align-self: stretch;\n width: 1px;\n min-height: 20px;\n margin: 0 8px 0 0;\n}\n\n.playground-container .system-message-container .system-message-content .loading-progress-text {\n color: #666;\n background: #f6f8fa;\n border-left: 3px solid #1890ff;\n border-radius: 4px;\n margin-top: 8px;\n padding: 8px 12px;\n font-size: 13px;\n}\n\n.playground-container .new-conversation-separator {\n flex-shrink: 0;\n justify-content: center;\n align-items: center;\n padding: 20px 0;\n display: flex;\n position: relative;\n}\n\n.playground-container .new-conversation-separator .separator-line {\n background-color: #e8e8e8;\n height: 1px;\n position: absolute;\n top: 50%;\n left: 0;\n right: 0;\n}\n\n.playground-container .new-conversation-separator .separator-text-container {\n z-index: 1;\n background-color: #fff;\n padding: 0 16px;\n position: relative;\n}\n\n.playground-container .new-conversation-separator .separator-text-container .separator-text {\n color: #999;\n background-color: #fff;\n font-size: 12px;\n}\n\n.playground-container .bottom-input-section {\n background-color: #fff;\n flex-shrink: 0;\n padding: 16px 0 0;\n}\n\n.playground-container .version-info-section {\n flex-shrink: 0;\n justify-content: center;\n align-items: center;\n height: 38px;\n display: flex;\n}\n\n.playground-container .version-text {\n color: #999;\n text-align: center;\n font-size: 12px;\n}\n\n.playground-container .hidden-result-ref {\n display: none;\n}\n\n.playground-container .playground-description {\n margin-bottom: 32px;\n}\n\n.playground-container .playground-description .description-zh {\n color: #333;\n margin: 0 0 8px;\n font-size: 16px;\n line-height: 1.5;\n}\n\n.playground-container .playground-description .description-en {\n color: #666;\n margin: 0;\n font-size: 14px;\n line-height: 1.5;\n}\n\n.playground-container .config-section {\n margin-bottom: 24px;\n}\n\n.playground-container .config-section .config-title {\n color: #333;\n margin: 0 0 16px;\n font-size: 18px;\n font-weight: 600;\n}\n\n.playground-container .config-section .config-item {\n align-items: center;\n gap: 8px;\n margin-bottom: 12px;\n display: flex;\n}\n\n.playground-container .config-section .config-item .config-check {\n color: #52c41a;\n font-size: 16px;\n}\n\n.playground-container .config-section .config-item .config-label {\n color: #333;\n font-size: 14px;\n}\n\n.playground-container .config-section .config-link {\n color: #1890ff;\n font-size: 14px;\n text-decoration: none;\n}\n\n.playground-container .config-section .config-link:hover {\n text-decoration: underline;\n}\n\n[data-theme=\"dark\"] .universal-playground .error-hint {\n color: rgba(255, 255, 255, .45);\n}\n\n[data-theme=\"dark\"] .universal-playground .status-indicator {\n color: #f8fafd;\n}\n\n[data-theme=\"dark\"] .universal-playground .status-indicator.error {\n color: #ff4d4f;\n}\n\n[data-theme=\"dark\"] .universal-playground .status-indicator.success {\n color: #52c41a;\n}\n\n[data-theme=\"dark\"] .universal-playground .operation-label {\n color: #f8fafd;\n}\n\n[data-theme=\"dark\"] .universal-playground .alert-message {\n color: #f8fafd;\n background-color: rgba(82, 38, 7, .3);\n}\n\n[data-theme=\"dark\"] .universal-playground .operation-item .operation-icon-wrapper {\n background-color: rgba(255, 255, 255, .08);\n}\n\n[data-theme=\"dark\"] .universal-playground .operation-item .operation-content {\n background-color: rgba(0, 0, 0, 0);\n}\n\n[data-theme=\"dark\"] .universal-playground .operation-item .operation-content .operation-title {\n color: rgba(255, 255, 255, .45);\n}\n\n[data-theme=\"dark\"] .universal-playground .playground-footer {\n background-color: rgba(255, 255, 255, .04);\n}\n\n[data-theme=\"dark\"] .universal-playground .playground-footer .status-text {\n color: #f8fafd;\n}\n\n[data-theme=\"dark\"] .universal-playground .results-info {\n color: rgba(255, 255, 255, .45);\n}\n\n[data-theme=\"dark\"] .universal-playground .result-section .result-title, [data-theme=\"dark\"] .universal-playground .result-section .result-details, [data-theme=\"dark\"] .universal-playground .result-section .result-value {\n color: #f8fafd;\n}\n\n[data-theme=\"dark\"] .universal-playground .result-section .result-value.success {\n color: #52c41a;\n}\n\n[data-theme=\"dark\"] .universal-playground .result-section .result-value.error {\n color: #ff4d4f;\n}\n\n",".prompt-input-wrapper {\n box-sizing: border-box;\n width: 100%;\n padding: 0 4px;\n}\n\n.prompt-input-wrapper .mode-radio-group-wrapper {\n align-items: center;\n gap: 8px;\n display: flex;\n position: relative;\n}\n\n.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group {\n scrollbar-width: thin;\n flex: 1;\n align-items: center;\n gap: 8px;\n min-width: 0;\n height: 100%;\n margin-right: 60px;\n display: flex;\n overflow-x: auto;\n overflow-y: hidden;\n}\n\n.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group::-webkit-scrollbar {\n height: 6px;\n}\n\n.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group::-webkit-scrollbar-track {\n background: #f1f1f1;\n border-radius: 3px;\n}\n\n.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group::-webkit-scrollbar-thumb {\n background: #c1c1c1;\n border-radius: 3px;\n}\n\n.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group::-webkit-scrollbar-thumb:hover {\n background: #a8a8a8;\n}\n\n.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-form-item {\n flex-shrink: 0;\n margin: 0 !important;\n}\n\n.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-form-item .ant-radio-group {\n flex-wrap: nowrap;\n gap: 8px;\n display: flex;\n}\n\n.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper {\n height: 24px;\n box-shadow: none;\n white-space: nowrap;\n background-color: #f7f7f7;\n border: none;\n border-radius: 11px;\n flex-shrink: 0;\n margin-right: 0;\n padding: 0 8px;\n font-size: 12px;\n line-height: 24px;\n}\n\n.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper:before {\n display: none;\n}\n\n.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper:focus-within {\n outline: none;\n}\n\n.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked {\n color: #fff;\n background-color: #2b83ff;\n border-color: #2b83ff;\n}\n\n.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked:hover {\n color: #fff;\n}\n\n.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-dropdown-trigger {\n flex-shrink: 0;\n}\n\n.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button {\n height: 24px;\n box-shadow: none;\n white-space: nowrap;\n background-color: #f7f7f7;\n border: none;\n border-radius: 11px;\n flex-shrink: 0;\n align-items: center;\n gap: 2px;\n max-width: 160px;\n padding: 0 8px;\n font-size: 12px;\n display: inline-flex;\n}\n\n.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button .ant-btn-content {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button:hover {\n background-color: #e6e6e6;\n}\n\n.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button.selected-from-dropdown {\n color: #fff;\n background-color: #2b83ff;\n font-weight: 500;\n}\n\n.prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button.selected-from-dropdown:hover {\n background-color: #2b83ff;\n}\n\n.prompt-input-wrapper .mode-radio-group-wrapper .action-icons {\n z-index: 10;\n pointer-events: none;\n background: linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgba(255, 255, 255, .5) 20%, rgba(255, 255, 255, .8) 40%, rgba(255, 255, 255, .95) 60%, #fff 70%);\n flex-shrink: 0;\n justify-content: flex-end;\n align-items: center;\n gap: 8px;\n width: 80px;\n padding-left: 20px;\n display: flex;\n position: absolute;\n top: 50%;\n right: 0;\n transform: translateY(-50%);\n}\n\n.prompt-input-wrapper .mode-radio-group-wrapper .action-icons > * {\n pointer-events: auto;\n}\n\n.prompt-input-wrapper .main-side-console-input {\n z-index: 1;\n background: linear-gradient(#fff, #fff) padding-box padding-box, linear-gradient(135deg, #4285f4 0%, #06f 25%, #7b02c5 50%, #ea4335 75%, #ff7043 100%) border-box;\n border: 1px solid rgba(0, 0, 0, 0);\n border-radius: 12px;\n margin-top: 10px;\n padding-bottom: 48px;\n position: relative;\n}\n\n@keyframes hue-shift {\n 0% {\n -webkit-filter: hue-rotate();\n filter: hue-rotate();\n }\n\n 100% {\n -webkit-filter: hue-rotate(360deg);\n filter: hue-rotate(360deg);\n }\n}\n\n.prompt-input-wrapper .main-side-console-input:focus-within {\n z-index: 10;\n box-shadow: 0 0 0 3px rgba(43, 131, 255, .16);\n}\n\n.prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea {\n resize: none;\n white-space: pre-wrap;\n scrollbar-width: thin;\n background: none;\n border: none;\n border-radius: 0;\n outline: none;\n min-height: 120px;\n padding: 12px 16px;\n line-height: 21px;\n transition: background-color .2s;\n position: relative;\n overflow-y: auto;\n}\n\n.prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea:focus {\n box-shadow: none;\n border: none;\n outline: none;\n}\n\n.prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea:focus-visible {\n box-shadow: none;\n border: none;\n outline: none;\n}\n\n.prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea:after {\n display: none;\n}\n\n.prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea::-webkit-scrollbar {\n width: 6px;\n}\n\n.prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea::-webkit-scrollbar-thumb {\n background-color: rgba(0, 0, 0, .2);\n border-radius: 3px;\n}\n\n.prompt-input-wrapper .main-side-console-input.loading {\n background: linear-gradient(#fff, #fff) padding-box padding-box, linear-gradient(135deg, #4285f4 0%, #06f 25%, #7b02c5 50%, #ea4335 75%, #ff7043 100%) border-box;\n border: 1px solid rgba(0, 0, 0, 0);\n}\n\n.prompt-input-wrapper .main-side-console-input.loading:before {\n content: \"\";\n -webkit-mask-composite: xor;\n pointer-events: none;\n z-index: -1;\n background: linear-gradient(135deg, #4285f4 0%, #06f 25%, #7b02c5 50%, #ea4335 75%, #ff7043 100%);\n border-radius: 12px;\n padding: 1px;\n animation: 5s linear infinite hue-shift;\n position: absolute;\n top: -1px;\n bottom: -1px;\n left: -1px;\n right: -1px;\n -webkit-mask-image: linear-gradient(#fff 0, #fff 0), linear-gradient(#fff 0, #fff 0);\n -webkit-mask-position: 0 0, 0 0;\n -webkit-mask-size: auto, auto;\n -webkit-mask-repeat: repeat, repeat;\n -webkit-mask-clip: content-box, border-box;\n -webkit-mask-origin: content-box, border-box;\n -webkit-mask-composite: xor;\n mask-composite: exclude;\n -webkit-mask-source-type: auto, auto;\n mask-mode: match-source, match-source;\n}\n\n.prompt-input-wrapper .main-side-console-input.disabled .form-controller-wrapper {\n background-color: rgba(0, 0, 0, 0);\n}\n\n.prompt-input-wrapper .ant-form-item-with-help + .form-controller-wrapper {\n bottom: 14px;\n}\n\n.prompt-input-wrapper .ant-input {\n padding-bottom: 40px;\n}\n\n.prompt-input-wrapper .form-controller-wrapper {\n box-sizing: border-box;\n z-index: 1000;\n pointer-events: none;\n background-color: rgba(0, 0, 0, 0);\n flex-direction: row;\n justify-content: flex-end;\n align-items: flex-end;\n gap: 8px;\n width: calc(100% - 32px);\n height: 56px;\n padding: 12px 0;\n line-height: 32px;\n transition: background-color .2s;\n display: flex;\n position: absolute;\n bottom: 0;\n left: 16px;\n}\n\n.prompt-input-wrapper .form-controller-wrapper > * {\n pointer-events: auto;\n}\n\n.prompt-input-wrapper .settings-wrapper {\n color: #777;\n flex-flow: wrap;\n gap: 2px;\n display: flex;\n}\n\n.prompt-input-wrapper .settings-wrapper.settings-wrapper-hover {\n color: #3b3b3b;\n}\n\n.prompt-input-wrapper .structured-params-container {\n box-sizing: border-box;\n padding: 16px 16px 56px;\n overflow: hidden;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params {\n width: 100%;\n min-width: 0;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item {\n flex-direction: column;\n display: flex;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label {\n text-align: left;\n flex-basis: auto;\n padding-bottom: 4px;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label > label {\n color: rgba(0, 0, 0, .85);\n height: auto;\n font-size: 12px;\n font-weight: 500;\n line-height: 1.5;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label > label:after {\n color: #ff4d4f;\n font-family: SimSun, sans-serif;\n font-size: 12px;\n line-height: 1;\n display: inline-block;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label > label:not(:-webkit-any(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))):after {\n margin-left: 4px;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label > label:not(:-moz-any(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))):after {\n margin-left: 4px;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label > label:not(:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))):after {\n margin-left: 4px;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label > label:-webkit-any(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi)):after {\n margin-right: 4px;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label > label:-moz-any(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi)):after {\n margin-right: 4px;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-label > label:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi)):after {\n margin-right: 4px;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-control {\n flex: 1;\n margin-top: 0;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-row {\n flex-direction: column;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-form-item .ant-form-item-control-input {\n min-height: auto;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-input, .prompt-input-wrapper .structured-params-container .structured-params .ant-input-number, .prompt-input-wrapper .structured-params-container .structured-params .ant-select {\n border: 1px solid #e1e5e9;\n border-radius: 6px;\n width: 100%;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-input:hover, .prompt-input-wrapper .structured-params-container .structured-params .ant-input-number:hover, .prompt-input-wrapper .structured-params-container .structured-params .ant-select:hover {\n border-color: #40a9ff;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params textarea.ant-input {\n padding-bottom: 5px;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-input-number .ant-input-number-input {\n box-shadow: none;\n border: none;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-input-number:hover .ant-input-number-input {\n box-shadow: none;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-select {\n min-width: 120px;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-select .ant-select-selector {\n box-shadow: none;\n border: none;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-select:hover .ant-select-selector, .prompt-input-wrapper .structured-params-container .structured-params .ant-select.ant-select-focused .ant-select-selector {\n box-shadow: none;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-radio-group {\n width: 100%;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-radio-group .ant-radio-button-wrapper {\n border: 1px solid #e1e5e9;\n border-radius: 6px;\n height: 32px;\n margin-right: 4px;\n font-size: 12px;\n line-height: 30px;\n}\n\n.prompt-input-wrapper .structured-params-container .structured-params .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked {\n color: #fff;\n background-color: #2b83ff;\n border-color: #2b83ff;\n}\n\n.selector-trigger {\n cursor: pointer;\n width: 24px;\n height: 24px;\n transition: all .2s;\n}\n\n.selector-trigger .action-icon {\n color: rgba(0, 0, 0, .85);\n font-size: 14px;\n transition: all .2s;\n}\n\n.selector-trigger .action-icon:hover {\n color: #2b83ff;\n}\n\n.more-apis-dropdown .ant-dropdown-menu {\n scrollbar-width: thin;\n max-height: 400px;\n overflow-y: auto;\n}\n\n.more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar {\n width: 6px;\n}\n\n.more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-track {\n background: #f1f1f1;\n border-radius: 3px;\n}\n\n.more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-thumb {\n background: #c1c1c1;\n border-radius: 3px;\n}\n\n.more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-thumb:hover {\n background: #a8a8a8;\n}\n\n[data-theme=\"dark\"] .prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper {\n color: #f8fafd !important;\n background-color: rgba(255, 255, 255, .08) !important;\n}\n\n[data-theme=\"dark\"] .prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked {\n color: #fff !important;\n background-color: #2b83ff !important;\n border-color: #2b83ff !important;\n}\n\n[data-theme=\"dark\"] .prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button {\n color: #f8fafd !important;\n background-color: rgba(255, 255, 255, .08) !important;\n}\n\n[data-theme=\"dark\"] .prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button:hover {\n background-color: rgba(255, 255, 255, .12) !important;\n}\n\n[data-theme=\"dark\"] .prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button.selected-from-dropdown {\n color: #fff !important;\n background-color: #2b83ff !important;\n}\n\n[data-theme=\"dark\"] .prompt-input-wrapper .mode-radio-group-wrapper .action-icons {\n background: linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgba(31, 31, 31, .5) 20%, rgba(31, 31, 31, .8) 40%, rgba(31, 31, 31, .95) 60%, #1f1f1f 70%) !important;\n}\n\n[data-theme=\"dark\"] .prompt-input-wrapper .main-side-console-input {\n background: #1f1f1f !important;\n border-color: rgba(255, 255, 255, .12) !important;\n}\n\n[data-theme=\"dark\"] .prompt-input-wrapper .main-side-console-input:focus-within {\n background: linear-gradient(#1f1f1f, #1f1f1f) padding-box padding-box, linear-gradient(135deg, #4285f4 0%, #06f 25%, #7b02c5 50%, #ea4335 75%, #ff7043 100%) border-box !important;\n border: 1px solid rgba(0, 0, 0, 0) !important;\n}\n\n[data-theme=\"dark\"] .prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea {\n color: #f8fafd !important;\n}\n\n[data-theme=\"dark\"] .prompt-input-wrapper .main-side-console-input.loading {\n background: linear-gradient(#1f1f1f, #1f1f1f) padding-box padding-box, linear-gradient(135deg, #4285f4 0%, #06f 25%, #7b02c5 50%, #ea4335 75%, #ff7043 100%) border-box !important;\n border: 1px solid rgba(0, 0, 0, 0) !important;\n}\n\n[data-theme=\"dark\"] .prompt-input-wrapper .ant-form-item-control-input-content .ant-input, [data-theme=\"dark\"] .prompt-input-wrapper .ant-form-item-control-input-content textarea.ant-input {\n color: #f8fafd !important;\n background: rgba(255, 255, 255, .04) !important;\n border-color: rgba(255, 255, 255, .12) !important;\n}\n\n[data-theme=\"dark\"] .prompt-input-wrapper .ant-form-item-control-input-content .ant-btn {\n color: #f8fafd !important;\n background-color: rgba(255, 255, 255, .08) !important;\n border-color: rgba(255, 255, 255, .12) !important;\n}\n\n[data-theme=\"dark\"] .prompt-input-wrapper .ant-form-item-control-input-content .ant-btn.ant-btn-primary {\n color: #fff !important;\n background-color: #2b83ff !important;\n border-color: #2b83ff !important;\n}\n\n[data-theme=\"dark\"] .prompt-input-wrapper .form-controller-wrapper {\n background-color: rgba(0, 0, 0, 0) !important;\n}\n\n[data-theme=\"dark\"] .prompt-input-wrapper .structured-params-container {\n background: linear-gradient(#1f1f1f, #1f1f1f) padding-box padding-box, linear-gradient(135deg, #4285f4 0%, #06f 25%, #7b02c5 50%, #ea4335 75%, #ff7043 100%) border-box !important;\n}\n\n[data-theme=\"dark\"] .prompt-input-wrapper .structured-params-container .structured-params .ant-form-item-label > label {\n color: #f8fafd !important;\n}\n\n[data-theme=\"dark\"] .prompt-input-wrapper .structured-params-container .structured-params .ant-input, [data-theme=\"dark\"] .prompt-input-wrapper .structured-params-container .structured-params .ant-input-number, [data-theme=\"dark\"] .prompt-input-wrapper .structured-params-container .structured-params .ant-select, [data-theme=\"dark\"] .prompt-input-wrapper .structured-params-container .structured-params .ant-radio-group .ant-radio-button-wrapper {\n color: #f8fafd !important;\n background-color: rgba(255, 255, 255, .04) !important;\n border-color: rgba(255, 255, 255, .12) !important;\n}\n\n[data-theme=\"dark\"] .prompt-input-wrapper .structured-params-container .structured-params .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked {\n color: #fff !important;\n background-color: #2b83ff !important;\n border-color: #2b83ff !important;\n}\n\n[data-theme=\"dark\"] .prompt-input .tip-button {\n background-color: rgba(255, 255, 255, .08);\n}\n\n[data-theme=\"dark\"] .prompt-input .tip-button.active {\n color: #fff;\n background-color: #2b83ff;\n}\n\n[data-theme=\"dark\"] .prompt-input .prompt-textarea-wrapper {\n background-color: rgba(255, 255, 255, .04);\n}\n\n[data-theme=\"dark\"] .prompt-input .prompt-textarea-wrapper:hover, [data-theme=\"dark\"] .prompt-input .prompt-textarea-wrapper.focused {\n background-color: rgba(255, 255, 255, .08);\n}\n\n[data-theme=\"dark\"] .prompt-input .btn-wrapper .btn-item {\n color: #fff;\n background-color: #2b83ff;\n}\n\n[data-theme=\"dark\"] .prompt-input .btn-wrapper .btn-item:hover {\n background-color: #2b83ff;\n}\n\n[data-theme=\"dark\"] .prompt-input .dropdown-content {\n background-color: #1f1f1f;\n border-color: rgba(255, 255, 255, .12);\n}\n\n[data-theme=\"dark\"] .prompt-input .param-label {\n color: #f8fafd;\n}\n\n[data-theme=\"dark\"] .prompt-input .error-message {\n color: #ff4d4f;\n}\n\n[data-theme=\"dark\"] .prompt-input .send-button-text {\n color: #2b83ff;\n}\n\n[data-theme=\"dark\"] .more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-track {\n background: rgba(255, 255, 255, .08);\n}\n\n[data-theme=\"dark\"] .more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, .2);\n}\n\n[data-theme=\"dark\"] .more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-thumb:hover {\n background: rgba(255, 255, 255, .3);\n}\n\n",".history-selector-wrapper {\n position: relative;\n}\n\n.history-modal-overlay {\n z-index: 9999;\n background: #fff;\n border: 1px solid rgba(0, 0, 0, .08);\n border-radius: 12px;\n width: 320px;\n height: 400px;\n position: fixed;\n top: auto;\n bottom: 20px;\n right: 20px;\n box-shadow: 0 8px 24px rgba(0, 0, 0, .12);\n}\n\n.history-modal-container {\n border-radius: 12px;\n flex-direction: column;\n width: 100%;\n height: 100%;\n display: flex;\n overflow: hidden;\n}\n\n.history-modal-container .history-modal-header {\n justify-content: space-between;\n align-items: center;\n height: 48px;\n padding: 0 25px;\n line-height: 48px;\n display: flex;\n}\n\n.history-modal-container .history-modal-header .close-button {\n justify-content: center;\n align-items: center;\n margin-right: -4px;\n padding: 4px;\n display: flex;\n}\n\n.history-modal-container .history-modal-header .close-button .anticon {\n color: #999;\n font-size: 18px;\n}\n\n.history-modal-container .history-modal-header .close-button:hover .anticon {\n color: #666;\n}\n\n.history-modal-container .history-search-section {\n background: #fff;\n padding: 16px 20px;\n}\n\n.history-modal-container .history-search-section .search-input-wrapper {\n color: rgba(0, 0, 0, .25);\n align-items: center;\n gap: 12px;\n display: flex;\n}\n\n.history-modal-container .history-search-section .search-input-wrapper .search-input {\n background: #f1f2f3;\n border: none;\n border-radius: 16px;\n flex: 1;\n height: 36px;\n}\n\n.history-modal-container .history-search-section .search-input-wrapper .search-input .ant-input {\n box-shadow: none;\n background: none;\n border: none;\n}\n\n.history-modal-container .history-search-section .search-input-wrapper .search-input:hover {\n background: #fff;\n border-color: #d9d9d9;\n}\n\n.history-modal-container .history-search-section .search-input-wrapper .search-input:focus-within {\n background: #fff;\n border-color: #d9d9d9;\n}\n\n.history-modal-container .history-search-section .search-input-wrapper .clear-button {\n color: #1890ff;\n height: auto;\n padding: 0;\n}\n\n.history-modal-container .history-search-section .search-input-wrapper .clear-button:hover {\n color: #40a9ff;\n}\n\n.history-modal-container .history-content {\n flex: 1;\n padding: 0 25px 25px;\n overflow-y: auto;\n}\n\n.history-modal-container .history-content .history-group {\n margin-bottom: 10px;\n}\n\n.history-modal-container .history-content .history-group .history-group-title {\n color: rgba(0, 0, 0, .45);\n height: 40px;\n font-size: 12px;\n font-weight: 400;\n line-height: 40px;\n}\n\n.history-modal-container .history-content .history-group .history-item {\n cursor: pointer;\n color: rgba(0, 0, 0, .85);\n white-space: nowrap;\n text-overflow: ellipsis;\n height: 40px;\n font-size: 14px;\n line-height: 40px;\n overflow: hidden;\n}\n\n.history-modal-container .history-content .history-group .history-item:hover {\n background: #f2f4f7;\n margin: 0 -8px;\n padding: 0 8px;\n}\n\n.history-modal-container .history-content .no-results {\n text-align: center;\n color: #999;\n padding: 40px 20px;\n}\n\n[data-theme=\"dark\"] .history-selector .history-timestamp, [data-theme=\"dark\"] .history-selector .history-path {\n color: rgba(255, 255, 255, .45);\n}\n\n[data-theme=\"dark\"] .history-selector .history-description {\n color: #f8fafd;\n}\n\n[data-theme=\"dark\"] .history-selector .history-no-items {\n color: rgba(255, 255, 255, .45);\n}\n\n[data-theme=\"dark\"] .history-selector .history-item:hover {\n background: rgba(255, 255, 255, .08);\n}\n\n[data-theme=\"dark\"] .history-selector .history-item .history-clear-icon {\n border-color: rgba(255, 255, 255, .12);\n}\n\n[data-theme=\"dark\"] .history-selector .history-item .history-clear-icon:hover {\n border-color: #40a9ff;\n}\n\n[data-theme=\"dark\"] .history-selector .history-load-more {\n color: #1890ff;\n}\n\n[data-theme=\"dark\"] .history-selector .history-load-more:hover {\n color: #40a9ff;\n}\n\n"],"names":[],"mappings":"AADA,mKCQA,gGAQA,2FAQA,+JAWA,2EAKA,mGAMA,uFAOA,kCCrDA,sGAQA,sFCRA,qDAOA,0FAOA,2CAIA,oEAMA,6CAIA,uDAIA,6DChCA,+BAKA,8BAIA,+BAIA,oCAIA,oGAOA,iCAIA,uFAMA,qGAIA,yECtCA,qUAgBA,+FAIA,iGAIA,gGAIA,+HAKA,uUAcA,8EAOA,uDAKA,iRAWA,4IAIA,+FAoBA,0GC9FA,yIAWA,yEAMA,qEAMA,4DAIA,oEC3BA,+RAoBA,wDAIA,mFAIA,6RAeA,kLAYA,gHAOA,uHAOA,sGAIA,uFAKA,+GAQA,yGAQA,4JASA,mIASA,kNAcA,qDAIA,+HAQA,+LAYA,qFAKA,0MAaA,uDAIA,sJAOA,yHAOA,4EAKA,kGAKA,qGAIA,+EAIA,+LAIA,0FChNA,6EAQA,uIASA,mGAMA,kLAYA,4FAIA,oGCvCA,mHAUA,8FAOA,0GAMA,mIASA,gHAOA,kHAKA,gGAIA,qJAQA,qHAKA,4KAMA,uIAIA,8HAIA,2HAKA,+FAIA,+GAMA,+JASA,4FAIA,6FAIA,sGAKA,kHAOA,6NAYA,+MAaA,kFAIA,wFAIA,0FAIA,sGAKA,+GAOA,mFAKA,6HAOA,6IAMA,uGAKA,6IAMA,6PAaA,qMASA,4NAUA,wJASA,+IASA,6IAOA,4IAMA,iGAMA,6HAQA,gFAMA,sDAIA,iEAIA,uHAOA,iHAOA,yDAIA,8GAOA,8GAOA,8FAKA,2FAKA,qGAMA,mFAIA,oEAIA,wEAIA,8EAIA,gFAIA,uEAIA,gGAKA,2GAIA,kGAIA,4GAIA,sFAIA,sFAIA,sEAIA,kOAIA,4FAIA,0FC7YA,qEAOA,0GAOA,qMAYA,gGAIA,gIAKA,gIAKA,oHAIA,kHAKA,wIAMA,8QAcA,gHAIA,sHAIA,sLAMA,8IAIA,sGAIA,qSAgBA,+JAMA,mHAIA,+JAMA,0IAIA,gWAiBA,oFAIA,mTAUA,0EAUA,sGAKA,qTAgBA,gIAMA,wIAMA,oGAIA,8GAIA,mJAKA,wOAKA,60BA4BA,wGAIA,oFAIA,qDAIA,4VAoBA,qEAIA,uFAOA,6EAIA,gHAMA,6FAKA,wHAKA,6JAMA,2LAQA,oNAgBA,+VAIA,4VAIA,ihCAIA,kgCAYA,gIAKA,8HAIA,kIAIA,iTAMA,kSAIA,4GAIA,4IAKA,sIAIA,kGAIA,mIAKA,uPAIA,kGAIA,yNASA,2MAMA,2EAOA,iFAMA,mDAIA,6FAMA,oEAIA,qGAKA,qGAKA,yFAIA,2KAKA,sOAMA,mKAKA,iJAIA,qLAKA,2LAIA,+HAKA,yRAKA,2HAIA,oRAKA,gRAMA,oLAMA,6LAMA,kGAIA,+OAIA,2IAIA,khBAMA,2PAMA,uEAIA,uFAKA,oFAIA,2JAIA,2FAKA,sFAIA,kGAKA,2DAIA,6DAIA,gEAIA,uGAIA,mGAIA,6GCtmBA,4CAKA,0MAcA,sHASA,yJASA,kJAQA,gGAKA,uFAIA,mFAKA,gIAOA,0JAQA,2IAMA,kOAKA,yHAMA,yGAIA,qFAMA,4EAIA,0JAQA,4MAWA,4HAMA,qGAMA,yHAIA,uEAIA,sEAIA,6EAIA,6FAIA,iGAIA,qEAIA"}