@midscene/visualizer 0.30.10 → 1.0.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 (123) hide show
  1. package/dist/es/component/blackboard/index.css +8 -0
  2. package/dist/es/component/blackboard/index.mjs +137 -68
  3. package/dist/es/component/config-selector/index.mjs +102 -4
  4. package/dist/es/component/context-preview/index.mjs +1 -2
  5. package/dist/es/component/env-config/index.mjs +1 -2
  6. package/dist/es/component/env-config-reminder/index.css +8 -0
  7. package/dist/es/component/env-config-reminder/index.mjs +1 -2
  8. package/dist/es/component/form-field/index.mjs +5 -10
  9. package/dist/es/component/history-selector/index.css +38 -1
  10. package/dist/es/component/history-selector/index.mjs +1 -2
  11. package/dist/es/component/logo/index.mjs +7 -3
  12. package/dist/es/component/misc/index.mjs +1 -4
  13. package/dist/es/component/nav-actions/index.mjs +1 -2
  14. package/dist/es/component/nav-actions/style.css +1 -1
  15. package/dist/es/component/player/index.css +26 -0
  16. package/dist/es/component/player/index.mjs +376 -364
  17. package/dist/es/component/playground/index.css +291 -31
  18. package/dist/es/component/playground-result/index.css +10 -0
  19. package/dist/es/component/playground-result/index.mjs +129 -10
  20. package/dist/es/component/prompt-input/index.css +281 -31
  21. package/dist/es/component/prompt-input/index.mjs +83 -25
  22. package/dist/es/component/screenshot-viewer/index.css +214 -0
  23. package/dist/es/component/screenshot-viewer/index.mjs +282 -0
  24. package/dist/es/component/service-mode-control/index.mjs +1 -2
  25. package/dist/es/component/shiny-text/index.css +35 -3
  26. package/dist/es/component/shiny-text/index.mjs +3 -3
  27. package/dist/es/component/universal-playground/index.css +61 -1
  28. package/dist/es/component/universal-playground/index.mjs +106 -83
  29. package/dist/es/component/universal-playground/providers/context-provider.mjs +56 -18
  30. package/dist/es/component/universal-playground/providers/indexeddb-storage-provider.mjs +213 -139
  31. package/dist/es/component/universal-playground/providers/storage-provider.mjs +199 -121
  32. package/dist/es/hooks/usePlaygroundExecution.mjs +297 -146
  33. package/dist/es/hooks/usePlaygroundState.mjs +141 -75
  34. package/dist/es/hooks/useSafeOverrideAIConfig.mjs +2 -6
  35. package/dist/es/hooks/useServerValid.mjs +37 -12
  36. package/dist/es/hooks/useTheme.mjs +25 -0
  37. package/dist/es/icons/avatar.mjs +46 -4
  38. package/dist/es/icons/close.mjs +46 -4
  39. package/dist/es/icons/global-perspective.mjs +47 -5
  40. package/dist/es/icons/history.mjs +48 -6
  41. package/dist/es/icons/magnifying-glass.mjs +47 -5
  42. package/dist/es/icons/player-setting.mjs +48 -6
  43. package/dist/es/icons/setting.mjs +47 -5
  44. package/dist/es/icons/show-marker.mjs +47 -5
  45. package/dist/es/index.mjs +4 -4
  46. package/dist/es/store/history.mjs +46 -7
  47. package/dist/es/store/store.mjs +68 -2
  48. package/dist/es/types.mjs +1 -1
  49. package/dist/es/utils/constants.mjs +7 -3
  50. package/dist/es/utils/index.mjs +4 -1
  51. package/dist/es/utils/pixi-loader.mjs +37 -11
  52. package/dist/es/utils/replay-scripts.mjs +160 -111
  53. package/dist/lib/component/blackboard/index.css +8 -0
  54. package/dist/lib/component/blackboard/index.js +139 -70
  55. package/dist/lib/component/config-selector/index.js +103 -5
  56. package/dist/lib/component/context-preview/index.js +3 -4
  57. package/dist/lib/component/env-config/index.js +3 -4
  58. package/dist/lib/component/env-config-reminder/index.css +8 -0
  59. package/dist/lib/component/env-config-reminder/index.js +3 -4
  60. package/dist/lib/component/form-field/index.js +10 -15
  61. package/dist/lib/component/history-selector/index.css +38 -1
  62. package/dist/lib/component/history-selector/index.js +3 -4
  63. package/dist/lib/component/index.js +6 -8
  64. package/dist/lib/component/logo/index.js +9 -5
  65. package/dist/lib/component/misc/index.js +6 -9
  66. package/dist/lib/component/nav-actions/index.js +3 -4
  67. package/dist/lib/component/nav-actions/style.css +1 -1
  68. package/dist/lib/component/player/index.css +26 -0
  69. package/dist/lib/component/player/index.js +376 -365
  70. package/dist/lib/component/playground/index.css +291 -31
  71. package/dist/lib/component/playground/index.js +31 -33
  72. package/dist/lib/component/playground-result/index.css +10 -0
  73. package/dist/lib/component/playground-result/index.js +131 -12
  74. package/dist/lib/component/prompt-input/index.css +281 -31
  75. package/dist/lib/component/prompt-input/index.js +84 -26
  76. package/dist/lib/component/screenshot-viewer/index.css +214 -0
  77. package/dist/lib/component/screenshot-viewer/index.js +316 -0
  78. package/dist/lib/component/service-mode-control/index.js +3 -4
  79. package/dist/lib/component/shiny-text/index.css +35 -3
  80. package/dist/lib/component/shiny-text/index.js +5 -5
  81. package/dist/lib/component/universal-playground/index.css +61 -1
  82. package/dist/lib/component/universal-playground/index.js +108 -84
  83. package/dist/lib/component/universal-playground/providers/context-provider.js +58 -20
  84. package/dist/lib/component/universal-playground/providers/indexeddb-storage-provider.js +217 -143
  85. package/dist/lib/component/universal-playground/providers/storage-provider.js +207 -129
  86. package/dist/lib/hooks/usePlaygroundExecution.js +299 -148
  87. package/dist/lib/hooks/usePlaygroundState.js +143 -77
  88. package/dist/lib/hooks/useSafeOverrideAIConfig.js +4 -8
  89. package/dist/lib/hooks/useServerValid.js +39 -14
  90. package/dist/lib/hooks/useTheme.js +59 -0
  91. package/dist/lib/icons/avatar.js +48 -6
  92. package/dist/lib/icons/close.js +48 -6
  93. package/dist/lib/icons/global-perspective.js +49 -7
  94. package/dist/lib/icons/history.js +50 -8
  95. package/dist/lib/icons/magnifying-glass.js +49 -7
  96. package/dist/lib/icons/player-setting.js +50 -8
  97. package/dist/lib/icons/setting.js +49 -7
  98. package/dist/lib/icons/show-marker.js +49 -7
  99. package/dist/lib/index.js +44 -34
  100. package/dist/lib/store/history.js +48 -9
  101. package/dist/lib/store/store.js +74 -8
  102. package/dist/lib/types.js +3 -3
  103. package/dist/lib/utils/color.js +2 -2
  104. package/dist/lib/utils/constants.js +20 -4
  105. package/dist/lib/utils/index.js +10 -4
  106. package/dist/lib/utils/pixi-loader.js +41 -15
  107. package/dist/lib/utils/playground-utils.js +4 -4
  108. package/dist/lib/utils/replay-scripts.js +164 -115
  109. package/dist/types/component/config-selector/index.d.ts +2 -0
  110. package/dist/types/component/player/index.d.ts +0 -1
  111. package/dist/types/component/playground-result/index.d.ts +1 -0
  112. package/dist/types/component/prompt-input/index.d.ts +2 -1
  113. package/dist/types/component/screenshot-viewer/index.d.ts +15 -0
  114. package/dist/types/hooks/usePlaygroundExecution.d.ts +1 -1
  115. package/dist/types/hooks/usePlaygroundState.d.ts +3 -3
  116. package/dist/types/hooks/useTheme.d.ts +7 -0
  117. package/dist/types/index.d.ts +3 -3
  118. package/dist/types/store/store.d.ts +18 -1
  119. package/dist/types/types.d.ts +14 -4
  120. package/dist/types/utils/constants.d.ts +5 -1
  121. package/dist/types/utils/index.d.ts +1 -0
  122. package/dist/types/utils/replay-scripts.d.ts +1 -1
  123. package/package.json +12 -22
@@ -37,18 +37,19 @@ __webpack_require__.d(__webpack_exports__, {
37
37
  });
38
38
  const jsx_runtime_namespaceObject = require("react/jsx-runtime");
39
39
  const icons_namespaceObject = require("@ant-design/icons");
40
+ const playground_namespaceObject = require("@midscene/playground");
40
41
  const external_antd_namespaceObject = require("antd");
41
42
  const index_js_namespaceObject = require("../misc/index.js");
42
43
  const external_player_index_js_namespaceObject = require("../player/index.js");
43
44
  const external_shiny_text_index_js_namespaceObject = require("../shiny-text/index.js");
44
45
  var external_shiny_text_index_js_default = /*#__PURE__*/ __webpack_require__.n(external_shiny_text_index_js_namespaceObject);
45
46
  require("./index.css");
46
- const PlaygroundResultView = (param)=>{
47
- let { result, loading, serverValid, serviceMode, replayScriptsInfo, replayCounter, loadingProgressText, verticalMode = false, notReadyMessage, fitMode, autoZoom } = param;
47
+ const PlaygroundResultView = ({ result, loading, serverValid, serviceMode, replayScriptsInfo, replayCounter, loadingProgressText, verticalMode = false, notReadyMessage, fitMode, autoZoom, actionType })=>{
48
48
  let resultWrapperClassName = 'result-wrapper';
49
49
  if (verticalMode) resultWrapperClassName += ' vertical-mode-result';
50
50
  if (replayScriptsInfo && verticalMode) resultWrapperClassName += ' result-wrapper-compact';
51
51
  let resultDataToShow = index_js_namespaceObject.emptyResultTip;
52
+ const shouldPrioritizeResult = actionType && playground_namespaceObject.noReplayAPIs.includes(actionType);
52
53
  if (serverValid || 'Server' !== serviceMode) {
53
54
  if (loading) resultDataToShow = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
54
55
  className: "loading-container",
@@ -68,17 +69,135 @@ const PlaygroundResultView = (param)=>{
68
69
  })
69
70
  ]
70
71
  });
71
- else if (replayScriptsInfo) resultDataToShow = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_player_index_js_namespaceObject.Player, {
72
- replayScripts: replayScriptsInfo.scripts,
73
- imageWidth: replayScriptsInfo.width,
74
- imageHeight: replayScriptsInfo.height,
75
- reportFileContent: ('In-Browser-Extension' === serviceMode || 'Server' === serviceMode) && (null == result ? void 0 : result.reportHTML) ? null == result ? void 0 : result.reportHTML : null,
76
- fitMode: fitMode,
77
- autoZoom: autoZoom
78
- }, replayCounter);
79
72
  else if (null == result ? void 0 : result.error) resultDataToShow = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("pre", {
80
73
  children: null == result ? void 0 : result.error
81
74
  });
75
+ else if (shouldPrioritizeResult && (null == result ? void 0 : result.result) !== void 0 && replayScriptsInfo) {
76
+ const resultOutput = 'string' == typeof (null == result ? void 0 : result.result) ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("pre", {
77
+ children: null == result ? void 0 : result.result
78
+ }) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("pre", {
79
+ children: JSON.stringify(null == result ? void 0 : result.result, null, 2)
80
+ });
81
+ const reportContent = (null == result ? void 0 : result.reportHTML) || null;
82
+ resultDataToShow = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
83
+ style: {
84
+ display: 'flex',
85
+ flexDirection: 'column',
86
+ gap: '16px',
87
+ height: '100%'
88
+ },
89
+ children: [
90
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
91
+ style: {
92
+ flex: '0 0 auto'
93
+ },
94
+ children: [
95
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
96
+ style: {
97
+ fontWeight: 'bold',
98
+ marginBottom: '8px'
99
+ },
100
+ children: "Output:"
101
+ }),
102
+ resultOutput
103
+ ]
104
+ }),
105
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
106
+ style: {
107
+ flex: '1 1 auto',
108
+ minHeight: 0
109
+ },
110
+ children: [
111
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
112
+ style: {
113
+ fontWeight: 'bold',
114
+ marginBottom: '8px'
115
+ },
116
+ children: "Report:"
117
+ }),
118
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_player_index_js_namespaceObject.Player, {
119
+ replayScripts: replayScriptsInfo.scripts,
120
+ imageWidth: replayScriptsInfo.width,
121
+ imageHeight: replayScriptsInfo.height,
122
+ reportFileContent: reportContent,
123
+ fitMode: fitMode,
124
+ autoZoom: autoZoom
125
+ }, replayCounter)
126
+ ]
127
+ })
128
+ ]
129
+ });
130
+ } else if (replayScriptsInfo) {
131
+ const reportContent = (null == result ? void 0 : result.reportHTML) || null;
132
+ resultDataToShow = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_player_index_js_namespaceObject.Player, {
133
+ replayScripts: replayScriptsInfo.scripts,
134
+ imageWidth: replayScriptsInfo.width,
135
+ imageHeight: replayScriptsInfo.height,
136
+ reportFileContent: reportContent,
137
+ fitMode: fitMode,
138
+ autoZoom: autoZoom
139
+ }, replayCounter);
140
+ } else if (shouldPrioritizeResult && (null == result ? void 0 : result.result) !== void 0 && (null == result ? void 0 : result.reportHTML)) {
141
+ const resultOutput = 'string' == typeof (null == result ? void 0 : result.result) ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("pre", {
142
+ children: null == result ? void 0 : result.result
143
+ }) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("pre", {
144
+ children: JSON.stringify(null == result ? void 0 : result.result, null, 2)
145
+ });
146
+ resultDataToShow = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
147
+ style: {
148
+ display: 'flex',
149
+ flexDirection: 'column',
150
+ gap: '16px',
151
+ height: '100%'
152
+ },
153
+ children: [
154
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
155
+ style: {
156
+ flex: '0 0 auto'
157
+ },
158
+ children: [
159
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
160
+ style: {
161
+ fontWeight: 'bold',
162
+ marginBottom: '8px'
163
+ },
164
+ children: "Output:"
165
+ }),
166
+ resultOutput
167
+ ]
168
+ }),
169
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
170
+ style: {
171
+ flex: '1 1 auto',
172
+ minHeight: 0
173
+ },
174
+ children: [
175
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
176
+ style: {
177
+ fontWeight: 'bold',
178
+ marginBottom: '8px'
179
+ },
180
+ children: "Report:"
181
+ }),
182
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_player_index_js_namespaceObject.Player, {
183
+ reportFileContent: result.reportHTML,
184
+ fitMode: fitMode,
185
+ autoZoom: autoZoom
186
+ }, replayCounter)
187
+ ]
188
+ })
189
+ ]
190
+ });
191
+ } else if (shouldPrioritizeResult && (null == result ? void 0 : result.result) !== void 0) resultDataToShow = 'string' == typeof (null == result ? void 0 : result.result) ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("pre", {
192
+ children: null == result ? void 0 : result.result
193
+ }) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("pre", {
194
+ children: JSON.stringify(null == result ? void 0 : result.result, null, 2)
195
+ });
196
+ else if (null == result ? void 0 : result.reportHTML) resultDataToShow = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_player_index_js_namespaceObject.Player, {
197
+ reportFileContent: result.reportHTML,
198
+ fitMode: fitMode,
199
+ autoZoom: autoZoom
200
+ }, replayCounter);
82
201
  else if ((null == result ? void 0 : result.result) !== void 0) resultDataToShow = 'string' == typeof (null == result ? void 0 : result.result) ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("pre", {
83
202
  children: null == result ? void 0 : result.result
84
203
  }) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("pre", {
@@ -98,9 +217,9 @@ const PlaygroundResultView = (param)=>{
98
217
  });
99
218
  };
100
219
  exports.PlaygroundResultView = __webpack_exports__.PlaygroundResultView;
101
- for(var __webpack_i__ in __webpack_exports__)if (-1 === [
220
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
102
221
  "PlaygroundResultView"
103
- ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
222
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
104
223
  Object.defineProperty(exports, '__esModule', {
105
224
  value: true
106
225
  });
@@ -1,5 +1,7 @@
1
1
  .prompt-input-wrapper {
2
+ box-sizing: border-box;
2
3
  width: 100%;
4
+ padding: 0 4px;
3
5
  }
4
6
 
5
7
  .prompt-input-wrapper .mode-radio-group-wrapper {
@@ -145,35 +147,62 @@
145
147
  }
146
148
 
147
149
  .prompt-input-wrapper .main-side-console-input {
150
+ z-index: 1;
151
+ background: linear-gradient(#fff, #fff) padding-box padding-box, linear-gradient(135deg, #4285f4 0%, #06f 25%, #7b02c5 50%, #ea4335 75%, #ff7043 100%) border-box;
152
+ border: 1px solid rgba(0, 0, 0, 0);
153
+ border-radius: 12px;
148
154
  margin-top: 10px;
155
+ padding-bottom: 56px;
149
156
  position: relative;
150
157
  }
151
158
 
159
+ @keyframes hue-shift {
160
+ 0% {
161
+ -webkit-filter: hue-rotate();
162
+ filter: hue-rotate();
163
+ }
164
+
165
+ 100% {
166
+ -webkit-filter: hue-rotate(360deg);
167
+ filter: hue-rotate(360deg);
168
+ }
169
+ }
170
+
171
+ .prompt-input-wrapper .main-side-console-input:focus-within {
172
+ z-index: 10;
173
+ box-shadow: 0 0 0 3px rgba(43, 131, 255, .16);
174
+ }
175
+
152
176
  .prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea {
177
+ resize: none;
153
178
  white-space: pre-wrap;
154
179
  scrollbar-width: thin;
155
- background: #fff;
156
- border: 1px solid #f2f4f7;
157
- border-radius: 12px;
180
+ background: none;
181
+ border: none;
182
+ border-radius: 0;
183
+ outline: none;
184
+ min-height: 120px;
158
185
  padding: 12px 16px;
159
186
  line-height: 21px;
160
187
  transition: background-color .2s;
188
+ position: relative;
161
189
  overflow-y: auto;
162
190
  }
163
191
 
164
- @keyframes hue-shift {
165
- 0% {
166
- filter: hue-rotate();
167
- }
192
+ .prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea:focus {
193
+ box-shadow: none;
194
+ border: none;
195
+ outline: none;
196
+ }
168
197
 
169
- 100% {
170
- filter: hue-rotate(360deg);
171
- }
198
+ .prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea:focus-visible {
199
+ box-shadow: none;
200
+ border: none;
201
+ outline: none;
172
202
  }
173
203
 
174
- .prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea:focus-within {
175
- background: linear-gradient(#fff, #fff) padding-box padding-box, linear-gradient(135deg, #4285f4 0%, #06f 25%, #7b02c5 50%, #ea4335 75%, #ff7043 100%) border-box;
176
- border: 1px solid rgba(0, 0, 0, 0);
204
+ .prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea:after {
205
+ display: none;
177
206
  }
178
207
 
179
208
  .prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea::-webkit-scrollbar {
@@ -185,20 +214,35 @@
185
214
  border-radius: 3px;
186
215
  }
187
216
 
188
- .prompt-input-wrapper .main-side-console-input.loading .main-side-console-input-textarea {
217
+ .prompt-input-wrapper .main-side-console-input.loading {
189
218
  background: linear-gradient(#fff, #fff) padding-box padding-box, linear-gradient(135deg, #4285f4 0%, #06f 25%, #7b02c5 50%, #ea4335 75%, #ff7043 100%) border-box;
190
219
  border: 1px solid rgba(0, 0, 0, 0);
191
- animation: 5s linear infinite hue-shift;
192
220
  }
193
221
 
194
- .prompt-input-wrapper .main-side-console-input .ant-form-item-control-input-content {
195
- z-index: 999;
196
- border: 3px solid rgba(0, 0, 0, 0);
197
- border-radius: 14px;
198
- }
199
-
200
- .prompt-input-wrapper .main-side-console-input:focus-within .ant-form-item-control-input-content {
201
- border-color: rgba(43, 131, 255, .16);
222
+ .prompt-input-wrapper .main-side-console-input.loading:before {
223
+ content: "";
224
+ -webkit-mask-composite: xor;
225
+ pointer-events: none;
226
+ z-index: -1;
227
+ background: linear-gradient(135deg, #4285f4 0%, #06f 25%, #7b02c5 50%, #ea4335 75%, #ff7043 100%);
228
+ border-radius: 12px;
229
+ padding: 1px;
230
+ animation: 5s linear infinite hue-shift;
231
+ position: absolute;
232
+ top: -1px;
233
+ bottom: -1px;
234
+ left: -1px;
235
+ right: -1px;
236
+ -webkit-mask-image: linear-gradient(#fff 0, #fff 0), linear-gradient(#fff 0, #fff 0);
237
+ -webkit-mask-position: 0 0, 0 0;
238
+ -webkit-mask-size: auto, auto;
239
+ -webkit-mask-repeat: repeat, repeat;
240
+ -webkit-mask-clip: content-box, border-box;
241
+ -webkit-mask-origin: content-box, border-box;
242
+ -webkit-mask-composite: xor;
243
+ mask-composite: exclude;
244
+ -webkit-mask-source-type: auto, auto;
245
+ mask-mode: match-source, match-source;
202
246
  }
203
247
 
204
248
  .prompt-input-wrapper .main-side-console-input.disabled .form-controller-wrapper {
@@ -206,7 +250,7 @@
206
250
  }
207
251
 
208
252
  .prompt-input-wrapper .ant-form-item-with-help + .form-controller-wrapper {
209
- bottom: 22px;
253
+ bottom: 14px;
210
254
  }
211
255
 
212
256
  .prompt-input-wrapper .ant-input {
@@ -215,21 +259,50 @@
215
259
 
216
260
  .prompt-input-wrapper .form-controller-wrapper {
217
261
  box-sizing: border-box;
218
- background-color: #fff;
262
+ z-index: 1000;
263
+ pointer-events: none;
264
+ background-color: rgba(0, 0, 0, 0);
219
265
  flex-direction: row;
220
266
  justify-content: flex-end;
221
267
  align-items: flex-end;
222
268
  gap: 8px;
223
269
  width: calc(100% - 32px);
270
+ height: 56px;
224
271
  padding: 12px 0;
225
272
  line-height: 32px;
226
273
  transition: background-color .2s;
227
274
  display: flex;
228
275
  position: absolute;
229
- bottom: 1px;
276
+ bottom: 0;
230
277
  left: 16px;
231
278
  }
232
279
 
280
+ .prompt-input-wrapper .form-controller-wrapper > * {
281
+ pointer-events: auto;
282
+ }
283
+
284
+ .prompt-input-wrapper .form-controller-wrapper.with-strategy {
285
+ justify-content: space-between;
286
+ }
287
+
288
+ .prompt-input-wrapper .planning-strategy-selector {
289
+ color: #2b83ff;
290
+ cursor: pointer;
291
+ align-items: center;
292
+ font-size: 13px;
293
+ transition: opacity .2s;
294
+ display: inline-flex;
295
+ }
296
+
297
+ .prompt-input-wrapper .planning-strategy-selector:hover {
298
+ opacity: .8;
299
+ }
300
+
301
+ .prompt-input-wrapper .ant-dropdown-menu-item-selected {
302
+ color: #2b83ff !important;
303
+ background-color: #e6f4ff !important;
304
+ }
305
+
233
306
  .prompt-input-wrapper .settings-wrapper {
234
307
  color: #777;
235
308
  flex-flow: wrap;
@@ -322,11 +395,6 @@
322
395
  border-color: #40a9ff;
323
396
  }
324
397
 
325
- .prompt-input-wrapper .structured-params-container .structured-params .ant-input:focus, .prompt-input-wrapper .structured-params-container .structured-params .ant-input-number:focus, .prompt-input-wrapper .structured-params-container .structured-params .ant-select:focus, .prompt-input-wrapper .structured-params-container .structured-params .ant-input:focus-within, .prompt-input-wrapper .structured-params-container .structured-params .ant-input-number:focus-within, .prompt-input-wrapper .structured-params-container .structured-params .ant-select:focus-within {
326
- border-color: #40a9ff;
327
- box-shadow: 0 0 0 2px rgba(24, 144, 255, .2);
328
- }
329
-
330
398
  .prompt-input-wrapper .structured-params-container .structured-params textarea.ant-input {
331
399
  padding-bottom: 5px;
332
400
  }
@@ -389,3 +457,185 @@
389
457
  color: #2b83ff;
390
458
  }
391
459
 
460
+ .more-apis-dropdown .ant-dropdown-menu {
461
+ scrollbar-width: thin;
462
+ max-height: 400px;
463
+ overflow-y: auto;
464
+ }
465
+
466
+ .more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar {
467
+ width: 6px;
468
+ }
469
+
470
+ .more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-track {
471
+ background: #f1f1f1;
472
+ border-radius: 3px;
473
+ }
474
+
475
+ .more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-thumb {
476
+ background: #c1c1c1;
477
+ border-radius: 3px;
478
+ }
479
+
480
+ .more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-thumb:hover {
481
+ background: #a8a8a8;
482
+ }
483
+
484
+ [data-theme="dark"] .prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper {
485
+ color: #f8fafd !important;
486
+ background-color: rgba(255, 255, 255, .08) !important;
487
+ }
488
+
489
+ [data-theme="dark"] .prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked {
490
+ color: #fff !important;
491
+ background-color: #2b83ff !important;
492
+ border-color: #2b83ff !important;
493
+ }
494
+
495
+ [data-theme="dark"] .prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button {
496
+ color: #f8fafd !important;
497
+ background-color: rgba(255, 255, 255, .08) !important;
498
+ }
499
+
500
+ [data-theme="dark"] .prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button:hover {
501
+ background-color: rgba(255, 255, 255, .12) !important;
502
+ }
503
+
504
+ [data-theme="dark"] .prompt-input-wrapper .mode-radio-group-wrapper .mode-radio-group .more-apis-button.selected-from-dropdown {
505
+ color: #fff !important;
506
+ background-color: #2b83ff !important;
507
+ }
508
+
509
+ [data-theme="dark"] .prompt-input-wrapper .mode-radio-group-wrapper .action-icons {
510
+ 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;
511
+ }
512
+
513
+ [data-theme="dark"] .prompt-input-wrapper .main-side-console-input {
514
+ background: #1f1f1f !important;
515
+ border-color: rgba(255, 255, 255, .12) !important;
516
+ }
517
+
518
+ [data-theme="dark"] .prompt-input-wrapper .main-side-console-input:focus-within {
519
+ 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;
520
+ border: 1px solid rgba(0, 0, 0, 0) !important;
521
+ }
522
+
523
+ [data-theme="dark"] .prompt-input-wrapper .main-side-console-input .main-side-console-input-textarea {
524
+ color: #f8fafd !important;
525
+ }
526
+
527
+ [data-theme="dark"] .prompt-input-wrapper .main-side-console-input.loading {
528
+ 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;
529
+ border: 1px solid rgba(0, 0, 0, 0) !important;
530
+ }
531
+
532
+ [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 {
533
+ color: #f8fafd !important;
534
+ background: rgba(255, 255, 255, .04) !important;
535
+ border-color: rgba(255, 255, 255, .12) !important;
536
+ }
537
+
538
+ [data-theme="dark"] .prompt-input-wrapper .ant-form-item-control-input-content .ant-btn {
539
+ color: #f8fafd !important;
540
+ background-color: rgba(255, 255, 255, .08) !important;
541
+ border-color: rgba(255, 255, 255, .12) !important;
542
+ }
543
+
544
+ [data-theme="dark"] .prompt-input-wrapper .ant-form-item-control-input-content .ant-btn.ant-btn-primary {
545
+ color: #fff !important;
546
+ background-color: #2b83ff !important;
547
+ border-color: #2b83ff !important;
548
+ }
549
+
550
+ [data-theme="dark"] .prompt-input-wrapper .form-controller-wrapper {
551
+ background-color: rgba(0, 0, 0, 0) !important;
552
+ }
553
+
554
+ [data-theme="dark"] .prompt-input-wrapper .planning-strategy-selector {
555
+ color: #2b83ff !important;
556
+ }
557
+
558
+ [data-theme="dark"] .prompt-input-wrapper .planning-strategy-selector:hover {
559
+ opacity: .8;
560
+ }
561
+
562
+ [data-theme="dark"] .prompt-input-wrapper .ant-dropdown-menu-item-selected {
563
+ color: #2b83ff !important;
564
+ background-color: rgba(43, 131, 255, .15) !important;
565
+ }
566
+
567
+ [data-theme="dark"] .prompt-input-wrapper .structured-params-container {
568
+ 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;
569
+ }
570
+
571
+ [data-theme="dark"] .prompt-input-wrapper .structured-params-container .structured-params .ant-form-item-label > label {
572
+ color: #f8fafd !important;
573
+ }
574
+
575
+ [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 {
576
+ color: #f8fafd !important;
577
+ background-color: rgba(255, 255, 255, .04) !important;
578
+ border-color: rgba(255, 255, 255, .12) !important;
579
+ }
580
+
581
+ [data-theme="dark"] .prompt-input-wrapper .structured-params-container .structured-params .ant-radio-group .ant-radio-button-wrapper.ant-radio-button-wrapper-checked {
582
+ color: #fff !important;
583
+ background-color: #2b83ff !important;
584
+ border-color: #2b83ff !important;
585
+ }
586
+
587
+ [data-theme="dark"] .prompt-input .tip-button {
588
+ background-color: rgba(255, 255, 255, .08);
589
+ }
590
+
591
+ [data-theme="dark"] .prompt-input .tip-button.active {
592
+ color: #fff;
593
+ background-color: #2b83ff;
594
+ }
595
+
596
+ [data-theme="dark"] .prompt-input .prompt-textarea-wrapper {
597
+ background-color: rgba(255, 255, 255, .04);
598
+ }
599
+
600
+ [data-theme="dark"] .prompt-input .prompt-textarea-wrapper:hover, [data-theme="dark"] .prompt-input .prompt-textarea-wrapper.focused {
601
+ background-color: rgba(255, 255, 255, .08);
602
+ }
603
+
604
+ [data-theme="dark"] .prompt-input .btn-wrapper .btn-item {
605
+ color: #fff;
606
+ background-color: #2b83ff;
607
+ }
608
+
609
+ [data-theme="dark"] .prompt-input .btn-wrapper .btn-item:hover {
610
+ background-color: #2b83ff;
611
+ }
612
+
613
+ [data-theme="dark"] .prompt-input .dropdown-content {
614
+ background-color: #1f1f1f;
615
+ border-color: rgba(255, 255, 255, .12);
616
+ }
617
+
618
+ [data-theme="dark"] .prompt-input .param-label {
619
+ color: #f8fafd;
620
+ }
621
+
622
+ [data-theme="dark"] .prompt-input .error-message {
623
+ color: #ff4d4f;
624
+ }
625
+
626
+ [data-theme="dark"] .prompt-input .send-button-text {
627
+ color: #2b83ff;
628
+ }
629
+
630
+ [data-theme="dark"] .more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-track {
631
+ background: rgba(255, 255, 255, .08);
632
+ }
633
+
634
+ [data-theme="dark"] .more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-thumb {
635
+ background: rgba(255, 255, 255, .2);
636
+ }
637
+
638
+ [data-theme="dark"] .more-apis-dropdown .ant-dropdown-menu::-webkit-scrollbar-thumb:hover {
639
+ background: rgba(255, 255, 255, .3);
640
+ }
641
+