@godscene/visualizer 1.7.11

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 (221) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +9 -0
  3. package/dist/es/component/blackboard/highlights.mjs +47 -0
  4. package/dist/es/component/blackboard/index.css +118 -0
  5. package/dist/es/component/blackboard/index.mjs +122 -0
  6. package/dist/es/component/config-selector/index.mjs +251 -0
  7. package/dist/es/component/context-preview/index.mjs +37 -0
  8. package/dist/es/component/env-config/index.mjs +237 -0
  9. package/dist/es/component/env-config-reminder/index.css +30 -0
  10. package/dist/es/component/env-config-reminder/index.mjs +27 -0
  11. package/dist/es/component/form-field/index.mjs +158 -0
  12. package/dist/es/component/history-selector/index.css +237 -0
  13. package/dist/es/component/history-selector/index.mjs +197 -0
  14. package/dist/es/component/index.mjs +1 -0
  15. package/dist/es/component/logo/index.css +19 -0
  16. package/dist/es/component/logo/index.mjs +20 -0
  17. package/dist/es/component/logo/logo.mjs +2 -0
  18. package/dist/es/component/misc/index.mjs +96 -0
  19. package/dist/es/component/nav-actions/index.mjs +14 -0
  20. package/dist/es/component/nav-actions/style.css +35 -0
  21. package/dist/es/component/player/index.css +296 -0
  22. package/dist/es/component/player/index.mjs +702 -0
  23. package/dist/es/component/player/playback-controls.mjs +4 -0
  24. package/dist/es/component/player/report-download.mjs +61 -0
  25. package/dist/es/component/player/scenes/StepScene.mjs +194 -0
  26. package/dist/es/component/player/scenes/derive-frame-state.mjs +229 -0
  27. package/dist/es/component/player/scenes/export-branded-video.mjs +360 -0
  28. package/dist/es/component/player/scenes/frame-calculator.mjs +149 -0
  29. package/dist/es/component/player/scenes/playback-frame.mjs +6 -0
  30. package/dist/es/component/player/scenes/playback-layout.mjs +12 -0
  31. package/dist/es/component/player/scenes/pointer-layout.mjs +36 -0
  32. package/dist/es/component/player/use-frame-player.mjs +87 -0
  33. package/dist/es/component/playground/index.css +930 -0
  34. package/dist/es/component/playground/playground-demo-ui-context.json +290 -0
  35. package/dist/es/component/playground-result/index.css +92 -0
  36. package/dist/es/component/playground-result/index.mjs +232 -0
  37. package/dist/es/component/prompt-input/index.css +832 -0
  38. package/dist/es/component/prompt-input/index.mjs +959 -0
  39. package/dist/es/component/screenshot-viewer/index.css +237 -0
  40. package/dist/es/component/screenshot-viewer/index.mjs +319 -0
  41. package/dist/es/component/service-mode-control/index.mjs +107 -0
  42. package/dist/es/component/shiny-text/index.css +107 -0
  43. package/dist/es/component/shiny-text/index.mjs +15 -0
  44. package/dist/es/component/universal-playground/empty-state.mjs +5 -0
  45. package/dist/es/component/universal-playground/index.css +619 -0
  46. package/dist/es/component/universal-playground/index.mjs +558 -0
  47. package/dist/es/component/universal-playground/providers/context-provider.mjs +90 -0
  48. package/dist/es/component/universal-playground/providers/indexeddb-storage-provider.mjs +280 -0
  49. package/dist/es/component/universal-playground/providers/storage-provider.mjs +279 -0
  50. package/dist/es/component/universal-playground/universal-playground-electron.mjs +668 -0
  51. package/dist/es/hooks/useMinimalTypeGate.mjs +47 -0
  52. package/dist/es/hooks/usePlaygroundExecution.mjs +435 -0
  53. package/dist/es/hooks/usePlaygroundState.mjs +278 -0
  54. package/dist/es/hooks/useSafeOverrideAIConfig.mjs +20 -0
  55. package/dist/es/hooks/useServerValid.mjs +55 -0
  56. package/dist/es/hooks/useTheme.mjs +25 -0
  57. package/dist/es/icons/action-chevron.mjs +61 -0
  58. package/dist/es/icons/avatar.mjs +70 -0
  59. package/dist/es/icons/close.mjs +61 -0
  60. package/dist/es/icons/global-perspective.mjs +58 -0
  61. package/dist/es/icons/history.mjs +72 -0
  62. package/dist/es/icons/magnifying-glass.mjs +81 -0
  63. package/dist/es/icons/player-setting.mjs +68 -0
  64. package/dist/es/icons/prompt-history.mjs +70 -0
  65. package/dist/es/icons/setting.mjs +62 -0
  66. package/dist/es/icons/show-marker.mjs +58 -0
  67. package/dist/es/index.mjs +26 -0
  68. package/dist/es/static/image/logo.png +0 -0
  69. package/dist/es/store/history.mjs +128 -0
  70. package/dist/es/store/store.mjs +277 -0
  71. package/dist/es/types.mjs +73 -0
  72. package/dist/es/utils/action-label.mjs +15 -0
  73. package/dist/es/utils/color.mjs +35 -0
  74. package/dist/es/utils/constants.mjs +99 -0
  75. package/dist/es/utils/device-capabilities.mjs +13 -0
  76. package/dist/es/utils/empty-state-scroll.mjs +8 -0
  77. package/dist/es/utils/highlight-element.mjs +62 -0
  78. package/dist/es/utils/index.mjs +13 -0
  79. package/dist/es/utils/playground-utils.mjs +43 -0
  80. package/dist/es/utils/progress-action-icon.mjs +30 -0
  81. package/dist/es/utils/prompt-input-utils.mjs +49 -0
  82. package/dist/es/utils/prompt-placeholder.mjs +19 -0
  83. package/dist/es/utils/replay-scripts.mjs +428 -0
  84. package/dist/lib/component/blackboard/highlights.js +84 -0
  85. package/dist/lib/component/blackboard/index.css +118 -0
  86. package/dist/lib/component/blackboard/index.js +169 -0
  87. package/dist/lib/component/config-selector/index.js +295 -0
  88. package/dist/lib/component/context-preview/index.js +82 -0
  89. package/dist/lib/component/env-config/index.js +271 -0
  90. package/dist/lib/component/env-config-reminder/index.css +30 -0
  91. package/dist/lib/component/env-config-reminder/index.js +61 -0
  92. package/dist/lib/component/form-field/index.js +204 -0
  93. package/dist/lib/component/history-selector/index.css +237 -0
  94. package/dist/lib/component/history-selector/index.js +243 -0
  95. package/dist/lib/component/index.js +58 -0
  96. package/dist/lib/component/logo/index.css +19 -0
  97. package/dist/lib/component/logo/index.js +67 -0
  98. package/dist/lib/component/logo/logo.js +24 -0
  99. package/dist/lib/component/misc/index.js +152 -0
  100. package/dist/lib/component/nav-actions/index.js +48 -0
  101. package/dist/lib/component/nav-actions/style.css +35 -0
  102. package/dist/lib/component/player/index.css +296 -0
  103. package/dist/lib/component/player/index.js +747 -0
  104. package/dist/lib/component/player/playback-controls.js +38 -0
  105. package/dist/lib/component/player/report-download.js +98 -0
  106. package/dist/lib/component/player/scenes/StepScene.js +228 -0
  107. package/dist/lib/component/player/scenes/derive-frame-state.js +266 -0
  108. package/dist/lib/component/player/scenes/export-branded-video.js +403 -0
  109. package/dist/lib/component/player/scenes/frame-calculator.js +186 -0
  110. package/dist/lib/component/player/scenes/playback-frame.js +40 -0
  111. package/dist/lib/component/player/scenes/playback-layout.js +46 -0
  112. package/dist/lib/component/player/scenes/pointer-layout.js +88 -0
  113. package/dist/lib/component/player/use-frame-player.js +121 -0
  114. package/dist/lib/component/playground/index.css +930 -0
  115. package/dist/lib/component/playground/playground-demo-ui-context.json +290 -0
  116. package/dist/lib/component/playground-result/index.css +92 -0
  117. package/dist/lib/component/playground-result/index.js +276 -0
  118. package/dist/lib/component/prompt-input/index.css +832 -0
  119. package/dist/lib/component/prompt-input/index.js +1005 -0
  120. package/dist/lib/component/screenshot-viewer/index.css +237 -0
  121. package/dist/lib/component/screenshot-viewer/index.js +353 -0
  122. package/dist/lib/component/service-mode-control/index.js +141 -0
  123. package/dist/lib/component/shiny-text/index.css +107 -0
  124. package/dist/lib/component/shiny-text/index.js +49 -0
  125. package/dist/lib/component/universal-playground/empty-state.js +39 -0
  126. package/dist/lib/component/universal-playground/index.css +619 -0
  127. package/dist/lib/component/universal-playground/index.js +607 -0
  128. package/dist/lib/component/universal-playground/providers/context-provider.js +133 -0
  129. package/dist/lib/component/universal-playground/providers/indexeddb-storage-provider.js +320 -0
  130. package/dist/lib/component/universal-playground/providers/storage-provider.js +337 -0
  131. package/dist/lib/component/universal-playground/universal-playground-electron.js +717 -0
  132. package/dist/lib/hooks/useMinimalTypeGate.js +81 -0
  133. package/dist/lib/hooks/usePlaygroundExecution.js +478 -0
  134. package/dist/lib/hooks/usePlaygroundState.js +312 -0
  135. package/dist/lib/hooks/useSafeOverrideAIConfig.js +57 -0
  136. package/dist/lib/hooks/useServerValid.js +89 -0
  137. package/dist/lib/hooks/useTheme.js +59 -0
  138. package/dist/lib/icons/action-chevron.js +95 -0
  139. package/dist/lib/icons/avatar.js +104 -0
  140. package/dist/lib/icons/close.js +95 -0
  141. package/dist/lib/icons/global-perspective.js +92 -0
  142. package/dist/lib/icons/history.js +106 -0
  143. package/dist/lib/icons/magnifying-glass.js +115 -0
  144. package/dist/lib/icons/player-setting.js +102 -0
  145. package/dist/lib/icons/prompt-history.js +104 -0
  146. package/dist/lib/icons/setting.js +96 -0
  147. package/dist/lib/icons/show-marker.js +92 -0
  148. package/dist/lib/index.js +204 -0
  149. package/dist/lib/static/image/logo.png +0 -0
  150. package/dist/lib/store/history.js +135 -0
  151. package/dist/lib/store/store.js +287 -0
  152. package/dist/lib/types.js +119 -0
  153. package/dist/lib/utils/action-label.js +52 -0
  154. package/dist/lib/utils/color.js +75 -0
  155. package/dist/lib/utils/constants.js +172 -0
  156. package/dist/lib/utils/device-capabilities.js +50 -0
  157. package/dist/lib/utils/empty-state-scroll.js +42 -0
  158. package/dist/lib/utils/highlight-element.js +99 -0
  159. package/dist/lib/utils/index.js +69 -0
  160. package/dist/lib/utils/playground-utils.js +86 -0
  161. package/dist/lib/utils/progress-action-icon.js +67 -0
  162. package/dist/lib/utils/prompt-input-utils.js +89 -0
  163. package/dist/lib/utils/prompt-placeholder.js +53 -0
  164. package/dist/lib/utils/replay-scripts.js +474 -0
  165. package/dist/types/component/blackboard/highlights.d.ts +11 -0
  166. package/dist/types/component/blackboard/index.d.ts +10 -0
  167. package/dist/types/component/config-selector/index.d.ts +15 -0
  168. package/dist/types/component/context-preview/index.d.ts +9 -0
  169. package/dist/types/component/env-config/index.d.ts +8 -0
  170. package/dist/types/component/env-config-reminder/index.d.ts +6 -0
  171. package/dist/types/component/form-field/index.d.ts +17 -0
  172. package/dist/types/component/history-selector/index.d.ts +13 -0
  173. package/dist/types/component/index.d.ts +1 -0
  174. package/dist/types/component/logo/index.d.ts +5 -0
  175. package/dist/types/component/misc/index.d.ts +6 -0
  176. package/dist/types/component/nav-actions/index.d.ts +12 -0
  177. package/dist/types/component/player/index.d.ts +15 -0
  178. package/dist/types/component/player/playback-controls.d.ts +1 -0
  179. package/dist/types/component/player/report-download.d.ts +32 -0
  180. package/dist/types/component/player/scenes/StepScene.d.ts +9 -0
  181. package/dist/types/component/player/scenes/derive-frame-state.d.ts +40 -0
  182. package/dist/types/component/player/scenes/export-branded-video.d.ts +33 -0
  183. package/dist/types/component/player/scenes/frame-calculator.d.ts +40 -0
  184. package/dist/types/component/player/scenes/playback-frame.d.ts +3 -0
  185. package/dist/types/component/player/scenes/playback-layout.d.ts +7 -0
  186. package/dist/types/component/player/scenes/pointer-layout.d.ts +20 -0
  187. package/dist/types/component/player/use-frame-player.d.ts +17 -0
  188. package/dist/types/component/playground-result/index.d.ts +22 -0
  189. package/dist/types/component/prompt-input/index.d.ts +23 -0
  190. package/dist/types/component/screenshot-viewer/index.d.ts +23 -0
  191. package/dist/types/component/service-mode-control/index.d.ts +6 -0
  192. package/dist/types/component/shiny-text/index.d.ts +12 -0
  193. package/dist/types/component/universal-playground/empty-state.d.ts +3 -0
  194. package/dist/types/component/universal-playground/index.d.ts +4 -0
  195. package/dist/types/component/universal-playground/providers/context-provider.d.ts +37 -0
  196. package/dist/types/component/universal-playground/providers/indexeddb-storage-provider.d.ts +71 -0
  197. package/dist/types/component/universal-playground/providers/storage-provider.d.ts +58 -0
  198. package/dist/types/component/universal-playground/universal-playground-electron.d.ts +4 -0
  199. package/dist/types/hooks/useMinimalTypeGate.d.ts +72 -0
  200. package/dist/types/hooks/usePlaygroundExecution.d.ts +40 -0
  201. package/dist/types/hooks/usePlaygroundState.d.ts +26 -0
  202. package/dist/types/hooks/useSafeOverrideAIConfig.d.ts +16 -0
  203. package/dist/types/hooks/useServerValid.d.ts +1 -0
  204. package/dist/types/hooks/useTheme.d.ts +7 -0
  205. package/dist/types/index.d.ts +29 -0
  206. package/dist/types/store/history.d.ts +16 -0
  207. package/dist/types/store/store.d.ts +57 -0
  208. package/dist/types/types.d.ts +278 -0
  209. package/dist/types/utils/action-label.d.ts +11 -0
  210. package/dist/types/utils/color.d.ts +4 -0
  211. package/dist/types/utils/constants.d.ts +80 -0
  212. package/dist/types/utils/device-capabilities.d.ts +9 -0
  213. package/dist/types/utils/empty-state-scroll.d.ts +11 -0
  214. package/dist/types/utils/highlight-element.d.ts +3 -0
  215. package/dist/types/utils/index.d.ts +5 -0
  216. package/dist/types/utils/playground-utils.d.ts +11 -0
  217. package/dist/types/utils/progress-action-icon.d.ts +12 -0
  218. package/dist/types/utils/prompt-input-utils.d.ts +24 -0
  219. package/dist/types/utils/prompt-placeholder.d.ts +1 -0
  220. package/dist/types/utils/replay-scripts.d.ts +50 -0
  221. package/package.json +82 -0
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ getAvailablePromptActionTypes: ()=>getAvailablePromptActionTypes,
28
+ shouldOffsetEmptyStateForPromptInput: ()=>shouldOffsetEmptyStateForPromptInput,
29
+ getInlineStructuredFieldConfig: ()=>getInlineStructuredFieldConfig
30
+ });
31
+ const external_types_js_namespaceObject = require("../types.js");
32
+ const external_constants_js_namespaceObject = require("./constants.js");
33
+ const getAvailablePromptActionTypes = (actionSpace)=>{
34
+ const metadataMethods = Object.keys(external_constants_js_namespaceObject.apiMetadata);
35
+ if (!(null == actionSpace ? void 0 : actionSpace.length)) return metadataMethods;
36
+ const availableMethods = actionSpace.map((action)=>action.interfaceAlias || action.name);
37
+ const finalMethods = new Set();
38
+ metadataMethods.forEach((method)=>{
39
+ const methodInfo = external_constants_js_namespaceObject.apiMetadata[method];
40
+ if ('aiAct' === method) return void finalMethods.add(method);
41
+ if ((null == methodInfo ? void 0 : methodInfo.group) === 'extraction' || (null == methodInfo ? void 0 : methodInfo.group) === 'validation') return void finalMethods.add(method);
42
+ if (availableMethods.includes(method)) finalMethods.add(method);
43
+ });
44
+ availableMethods.forEach((method)=>{
45
+ finalMethods.add(method);
46
+ });
47
+ return Array.from(finalMethods);
48
+ };
49
+ const getInlineStructuredFieldConfig = (actionSpace, selectedType)=>{
50
+ var _actualField__def, _actualField__def1;
51
+ if (!(null == actionSpace ? void 0 : actionSpace.length) || !selectedType) return null;
52
+ const action = actionSpace.find((item)=>item.interfaceAlias === selectedType || item.name === selectedType);
53
+ if (!(null == action ? void 0 : action.paramSchema) || !(0, external_types_js_namespaceObject.isZodObjectSchema)(action.paramSchema)) return null;
54
+ const schema = action.paramSchema;
55
+ const shape = schema.shape || {};
56
+ const keys = Object.keys(shape);
57
+ if (1 !== keys.length) return null;
58
+ const [name] = keys;
59
+ const field = shape[name];
60
+ const { actualField } = (0, external_types_js_namespaceObject.unwrapZodType)(field);
61
+ const isLocate = (0, external_types_js_namespaceObject.isLocateField)(actualField);
62
+ const fieldType = null == (_actualField__def = actualField._def) ? void 0 : _actualField__def.typeName;
63
+ const isInlineField = 'ZodString' === fieldType || isLocate;
64
+ if (!isInlineField) return null;
65
+ const placeholder = (null == (_actualField__def1 = actualField._def) ? void 0 : _actualField__def1.description) || actualField.description || (isLocate ? 'Describe the element you want to interact with' : `Enter ${name}`);
66
+ return {
67
+ name,
68
+ placeholder
69
+ };
70
+ };
71
+ const shouldOffsetEmptyStateForPromptInput = (actionSpace, selectedType)=>{
72
+ if (!(null == actionSpace ? void 0 : actionSpace.length) || !selectedType) return false;
73
+ if (getInlineStructuredFieldConfig(actionSpace, selectedType)) return false;
74
+ const action = actionSpace.find((item)=>item.interfaceAlias === selectedType || item.name === selectedType);
75
+ if (!(null == action ? void 0 : action.paramSchema) || !(0, external_types_js_namespaceObject.isZodObjectSchema)(action.paramSchema)) return false;
76
+ const schema = action.paramSchema;
77
+ return Object.keys(schema.shape || {}).length > 1;
78
+ };
79
+ exports.getAvailablePromptActionTypes = __webpack_exports__.getAvailablePromptActionTypes;
80
+ exports.getInlineStructuredFieldConfig = __webpack_exports__.getInlineStructuredFieldConfig;
81
+ exports.shouldOffsetEmptyStateForPromptInput = __webpack_exports__.shouldOffsetEmptyStateForPromptInput;
82
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
83
+ "getAvailablePromptActionTypes",
84
+ "getInlineStructuredFieldConfig",
85
+ "shouldOffsetEmptyStateForPromptInput"
86
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
87
+ Object.defineProperty(exports, '__esModule', {
88
+ value: true
89
+ });
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ getPlaceholderForType: ()=>getPlaceholderForType
28
+ });
29
+ const getPlaceholderForType = (type)=>{
30
+ if ('aiQuery' === type) return 'What do you want to query?';
31
+ if ('aiAssert' === type) return 'What do you want to assert?';
32
+ if ('aiTap' === type) return 'What element do you want to tap?';
33
+ if ('aiDoubleClick' === type) return 'What element do you want to double-click?';
34
+ if ('aiHover' === type) return 'What element do you want to hover over?';
35
+ if ('aiInput' === type) return 'Format: <value> | <element>\nExample: hello world | search box';
36
+ if ('aiRightClick' === type) return 'What element do you want to right-click?';
37
+ if ('aiKeyboardPress' === type) return 'Format: <key> | <element (optional)>\nExample: Enter | text field';
38
+ if ('aiScroll' === type) return 'Format: <direction> <amount> | <element (optional)>\nExample: down 500 | main content';
39
+ if ('aiLocate' === type) return 'What element do you want to locate?';
40
+ if ('aiBoolean' === type) return 'What do you want to check (returns true/false)?';
41
+ if ('aiNumber' === type) return 'What number do you want to extract?';
42
+ if ('aiString' === type) return 'What text do you want to extract?';
43
+ if ('aiAsk' === type) return 'What do you want to ask?';
44
+ if ('aiWaitFor' === type) return 'What condition do you want to wait for?';
45
+ return 'What do you want to do?';
46
+ };
47
+ exports.getPlaceholderForType = __webpack_exports__.getPlaceholderForType;
48
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
49
+ "getPlaceholderForType"
50
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
51
+ Object.defineProperty(exports, '__esModule', {
52
+ value: true
53
+ });
@@ -0,0 +1,474 @@
1
+ "use strict";
2
+ "use client";
3
+ var __webpack_require__ = {};
4
+ (()=>{
5
+ __webpack_require__.d = (exports1, definition)=>{
6
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ get: definition[key]
9
+ });
10
+ };
11
+ })();
12
+ (()=>{
13
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.r = (exports1)=>{
17
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
18
+ value: 'Module'
19
+ });
20
+ Object.defineProperty(exports1, '__esModule', {
21
+ value: true
22
+ });
23
+ };
24
+ })();
25
+ var __webpack_exports__ = {};
26
+ __webpack_require__.r(__webpack_exports__);
27
+ __webpack_require__.d(__webpack_exports__, {
28
+ generateAnimationScripts: ()=>generateAnimationScripts,
29
+ mergeTwoCameraState: ()=>mergeTwoCameraState,
30
+ cameraStateForRect: ()=>cameraStateForRect,
31
+ extractDumpMetaInfo: ()=>extractDumpMetaInfo,
32
+ allScriptsFromDump: ()=>allScriptsFromDump
33
+ });
34
+ const external_index_js_namespaceObject = require("./index.js");
35
+ const agent_namespaceObject = require("@godscene/core/agent");
36
+ const external_highlight_element_js_namespaceObject = require("./highlight-element.js");
37
+ function _define_property(obj, key, value) {
38
+ if (key in obj) Object.defineProperty(obj, key, {
39
+ value: value,
40
+ enumerable: true,
41
+ configurable: true,
42
+ writable: true
43
+ });
44
+ else obj[key] = value;
45
+ return obj;
46
+ }
47
+ function _object_spread(target) {
48
+ for(var i = 1; i < arguments.length; i++){
49
+ var source = null != arguments[i] ? arguments[i] : {};
50
+ var ownKeys = Object.keys(source);
51
+ if ("function" == typeof Object.getOwnPropertySymbols) ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
52
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
53
+ }));
54
+ ownKeys.forEach(function(key) {
55
+ _define_property(target, key, source[key]);
56
+ });
57
+ }
58
+ return target;
59
+ }
60
+ function replay_scripts_ownKeys(object, enumerableOnly) {
61
+ var keys = Object.keys(object);
62
+ if (Object.getOwnPropertySymbols) {
63
+ var symbols = Object.getOwnPropertySymbols(object);
64
+ if (enumerableOnly) symbols = symbols.filter(function(sym) {
65
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
66
+ });
67
+ keys.push.apply(keys, symbols);
68
+ }
69
+ return keys;
70
+ }
71
+ function _object_spread_props(target, source) {
72
+ source = null != source ? source : {};
73
+ if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
74
+ else replay_scripts_ownKeys(Object(source)).forEach(function(key) {
75
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
76
+ });
77
+ return target;
78
+ }
79
+ const stillDuration = 900;
80
+ const actionSpinningPointerDuration = 300;
81
+ const stillAfterInsightDuration = 300;
82
+ const locateDuration = 800;
83
+ const actionDuration = 500;
84
+ const clearInsightDuration = 200;
85
+ const lastFrameDuration = 200;
86
+ const cameraStateForRect = (rect, imageWidth, imageHeight)=>{
87
+ const canvasRatio = imageWidth / imageHeight;
88
+ const rectRatio = rect.width / rect.height;
89
+ let rectWidthOnPage;
90
+ rectWidthOnPage = rectRatio >= canvasRatio ? rect.width : rect.height / imageHeight * imageWidth;
91
+ const cameraPaddingRatio = rectWidthOnPage > 400 ? 0.1 : rectWidthOnPage > 50 ? 0.2 : 0.3;
92
+ const cameraWidth = Math.min(imageWidth, rectWidthOnPage + imageWidth * cameraPaddingRatio * 2);
93
+ const cameraHeight = imageHeight / imageWidth * cameraWidth;
94
+ let left = Math.min(rect.left - imageWidth * cameraPaddingRatio, imageWidth - cameraWidth);
95
+ left = Math.max(left, 0);
96
+ let top = Math.min(rect.top - imageHeight * cameraPaddingRatio, imageHeight - cameraHeight);
97
+ top = Math.max(top, 0);
98
+ return {
99
+ left: Math.round(left),
100
+ top: Math.round(top),
101
+ width: Math.round(cameraWidth)
102
+ };
103
+ };
104
+ const createFullPageCameraState = (imageWidth, imageHeight)=>cameraStateForRect({
105
+ left: 0,
106
+ top: 0,
107
+ width: imageWidth,
108
+ height: imageHeight
109
+ }, imageWidth, imageHeight);
110
+ const resolveTaskShotSize = (task, fallbackWidth, fallbackHeight)=>{
111
+ var _task_uiContext_shotSize, _task_uiContext, _task_uiContext_shotSize1, _task_uiContext1;
112
+ return {
113
+ width: (null == task ? void 0 : null == (_task_uiContext = task.uiContext) ? void 0 : null == (_task_uiContext_shotSize = _task_uiContext.shotSize) ? void 0 : _task_uiContext_shotSize.width) || fallbackWidth,
114
+ height: (null == task ? void 0 : null == (_task_uiContext1 = task.uiContext) ? void 0 : null == (_task_uiContext_shotSize1 = _task_uiContext1.shotSize) ? void 0 : _task_uiContext_shotSize1.height) || fallbackHeight
115
+ };
116
+ };
117
+ const mergeTwoCameraState = (cameraState1, cameraState2)=>{
118
+ const newLeft = Math.min(cameraState1.left, cameraState2.left);
119
+ const newTop = Math.min(cameraState1.top, cameraState2.top);
120
+ const newRight = Math.max(cameraState1.left + cameraState1.width, cameraState2.left + cameraState2.width);
121
+ const newWidth = newRight - newLeft;
122
+ return {
123
+ left: newLeft,
124
+ top: newTop,
125
+ width: newWidth
126
+ };
127
+ };
128
+ const isSameModelBrief = (a, b)=>a.intent === b.intent && a.name === b.name && a.modelDescription === b.modelDescription;
129
+ const pushModelBriefIfNotExists = (list, candidate)=>{
130
+ if (!list.some((brief)=>isSameModelBrief(brief, candidate))) list.push(candidate);
131
+ };
132
+ const normalizeDump = (dump)=>{
133
+ if (!dump) return null;
134
+ return Array.isArray(dump.executions) ? dump : {
135
+ sdkVersion: '',
136
+ groupName: 'Execution',
137
+ modelBriefs: [],
138
+ executions: [
139
+ dump
140
+ ]
141
+ };
142
+ };
143
+ const extractMetaFromNormalized = (normalizedDump)=>{
144
+ var _normalizedDump_executions;
145
+ let firstWidth;
146
+ let firstHeight;
147
+ const sdkVersion = normalizedDump.sdkVersion;
148
+ const modelBriefs = [];
149
+ null == (_normalizedDump_executions = normalizedDump.executions) || _normalizedDump_executions.filter(Boolean).forEach((execution)=>{
150
+ execution.tasks.forEach((task)=>{
151
+ var _task_uiContext_shotSize, _task_uiContext;
152
+ if (null == (_task_uiContext = task.uiContext) ? void 0 : null == (_task_uiContext_shotSize = _task_uiContext.shotSize) ? void 0 : _task_uiContext_shotSize.width) {
153
+ const w = task.uiContext.shotSize.width;
154
+ const h = task.uiContext.shotSize.height;
155
+ if (!firstWidth) {
156
+ firstWidth = w;
157
+ firstHeight = h;
158
+ }
159
+ }
160
+ if (task.usage) {
161
+ const { model_name, model_description, intent } = task.usage;
162
+ const brief = {
163
+ intent,
164
+ name: model_name,
165
+ modelDescription: model_description
166
+ };
167
+ pushModelBriefIfNotExists(modelBriefs, brief);
168
+ }
169
+ });
170
+ });
171
+ if (!firstWidth || !firstHeight) {
172
+ console.warn('width or height is missing in dump file');
173
+ return null;
174
+ }
175
+ return {
176
+ width: firstWidth,
177
+ height: firstHeight,
178
+ sdkVersion,
179
+ modelBriefs,
180
+ deviceType: normalizedDump.deviceType
181
+ };
182
+ };
183
+ const extractDumpMetaInfo = (dump)=>{
184
+ const normalizedDump = normalizeDump(dump);
185
+ if (!normalizedDump) return null;
186
+ return extractMetaFromNormalized(normalizedDump);
187
+ };
188
+ const allScriptsFromDump = (dump)=>{
189
+ var _normalizedDump_executions;
190
+ const normalizedDump = normalizeDump(dump);
191
+ if (!normalizedDump) {
192
+ console.warn('[allScriptsFromDump] dump is empty');
193
+ return {
194
+ scripts: [],
195
+ modelBriefs: []
196
+ };
197
+ }
198
+ const metaInfo = extractMetaFromNormalized(normalizedDump);
199
+ if (!metaInfo) return {
200
+ scripts: [],
201
+ sdkVersion: normalizedDump.sdkVersion,
202
+ modelBriefs: []
203
+ };
204
+ const { width: firstWidth, height: firstHeight } = metaInfo;
205
+ const allScripts = [];
206
+ const executions = (null == (_normalizedDump_executions = normalizedDump.executions) ? void 0 : _normalizedDump_executions.filter(Boolean)) || [];
207
+ for(let execIndex = 0; execIndex < executions.length; execIndex++){
208
+ const execution = executions[execIndex];
209
+ const scripts = generateAnimationScripts(execution, -1, firstWidth, firstHeight, execIndex);
210
+ if (scripts) allScripts.push(...scripts);
211
+ }
212
+ const allScriptsWithoutIntermediateDoneFrame = allScripts.filter((script, index)=>{
213
+ if (index !== allScripts.length - 1 && 'Done' === script.title) return false;
214
+ return true;
215
+ });
216
+ return {
217
+ scripts: allScriptsWithoutIntermediateDoneFrame,
218
+ width: firstWidth,
219
+ height: firstHeight,
220
+ sdkVersion: metaInfo.sdkVersion,
221
+ modelBriefs: metaInfo.modelBriefs,
222
+ deviceType: metaInfo.deviceType
223
+ };
224
+ };
225
+ const generateAnimationScripts = (execution, task, imageWidth, imageHeight, executionIndex = 0)=>{
226
+ if (!execution || !execution.tasks.length) return null;
227
+ if (0 === imageWidth || 0 === imageHeight) return null;
228
+ let tasksIncluded = [];
229
+ if (-1 === task) tasksIncluded = execution.tasks;
230
+ else {
231
+ const startIndex = execution.tasks.findIndex((t)=>t === task);
232
+ if (-1 === startIndex) {
233
+ console.error("task not found, cannot generate animation scripts");
234
+ return null;
235
+ }
236
+ if (startIndex === execution.tasks.length - 1) return null;
237
+ for(let i = startIndex; i < execution.tasks.length; i++){
238
+ if (i > startIndex && 'Planning' === execution.tasks[i].type && 'Plan' === execution.tasks[i].subType) break;
239
+ tasksIncluded.push(execution.tasks[i]);
240
+ }
241
+ }
242
+ if (0 === tasksIncluded.length) return null;
243
+ const getTaskId = (taskIndex)=>{
244
+ var _tasksIncluded_taskIndex;
245
+ return null == (_tasksIncluded_taskIndex = tasksIncluded[taskIndex]) ? void 0 : _tasksIncluded_taskIndex.taskId;
246
+ };
247
+ const setPointerScript = (img, title, subTitle, taskId)=>({
248
+ type: 'pointer',
249
+ img,
250
+ duration: 0,
251
+ title,
252
+ subTitle,
253
+ taskId
254
+ });
255
+ const asScreenshot = (s)=>s;
256
+ const createScript = (base, screenshot)=>{
257
+ if (!screenshot) return base;
258
+ const script = _object_spread({}, base);
259
+ let cachedImg = null;
260
+ Object.defineProperty(script, 'img', {
261
+ get () {
262
+ if (null === cachedImg) cachedImg = screenshot.base64;
263
+ return cachedImg;
264
+ },
265
+ enumerable: true
266
+ });
267
+ return script;
268
+ };
269
+ const scripts = [];
270
+ let insightCameraState;
271
+ let insightOnTop = false;
272
+ let initSubTitle = '';
273
+ let lastTaskId;
274
+ tasksIncluded.forEach((task, index)=>{
275
+ const currentTaskId = getTaskId(index);
276
+ lastTaskId = currentTaskId;
277
+ if (0 === index) initSubTitle = (0, agent_namespaceObject.paramStr)(task);
278
+ if ('Planning' === task.type) {
279
+ var _task_output;
280
+ let locateElements = [];
281
+ if ('Plan' === task.subType) {
282
+ var _planTask_output;
283
+ const planTask = task;
284
+ const actions = (null == (_planTask_output = planTask.output) ? void 0 : _planTask_output.actions) || [];
285
+ if (actions.length > 0) {
286
+ const action = actions[0];
287
+ const knownFields = [
288
+ 'locate',
289
+ 'start',
290
+ 'end'
291
+ ];
292
+ if (action.param) {
293
+ knownFields.forEach((field)=>{
294
+ if (action.param[field] && 'object' == typeof action.param[field] && 'center' in (action.param[field] || {})) locateElements.push(action.param[field]);
295
+ });
296
+ for(const key in action.param)if (!knownFields.includes(key)) {
297
+ if ('object' == typeof action.param[key] && 'center' in (action.param[key] || {})) locateElements.push(action.param[key]);
298
+ }
299
+ }
300
+ }
301
+ } else if ('Locate' === task.subType && (null == (_task_output = task.output) ? void 0 : _task_output.element)) {
302
+ const locateTask = task;
303
+ locateElements = [
304
+ locateTask.output.element
305
+ ];
306
+ }
307
+ const title = (0, agent_namespaceObject.typeStr)(task);
308
+ const subTitle = (0, agent_namespaceObject.paramStr)(task);
309
+ const context = task.uiContext;
310
+ if (null == context ? void 0 : context.screenshot) {
311
+ var _context_shotSize, _context_shotSize1;
312
+ const width = (null == (_context_shotSize = context.shotSize) ? void 0 : _context_shotSize.width) || imageWidth;
313
+ const height = (null == (_context_shotSize1 = context.shotSize) ? void 0 : _context_shotSize1.height) || imageHeight;
314
+ const contextScreenshot = asScreenshot(context.screenshot);
315
+ scripts.push(createScript({
316
+ type: 'img',
317
+ duration: stillAfterInsightDuration,
318
+ title,
319
+ subTitle,
320
+ imageWidth: width,
321
+ imageHeight: height,
322
+ taskId: currentTaskId
323
+ }, contextScreenshot));
324
+ locateElements.forEach((element)=>{
325
+ var _task_log_taskInfo, _task_log, _context_shotSize, _context_shotSize1;
326
+ const highlightElement = (0, external_highlight_element_js_namespaceObject.normalizeHighlightElementForReport)(element);
327
+ const highlightBox = (0, external_highlight_element_js_namespaceObject.getCenterHighlightBox)(highlightElement);
328
+ insightCameraState = _object_spread_props(_object_spread({}, cameraStateForRect(highlightBox, width, height)), {
329
+ pointerLeft: highlightElement.center[0],
330
+ pointerTop: highlightElement.center[1]
331
+ });
332
+ const newCameraState = insightCameraState;
333
+ scripts.push(createScript({
334
+ type: 'insight',
335
+ context: context,
336
+ camera: newCameraState,
337
+ highlightElement,
338
+ searchArea: null == (_task_log = task.log) ? void 0 : null == (_task_log_taskInfo = _task_log.taskInfo) ? void 0 : _task_log_taskInfo.searchArea,
339
+ duration: 0.5 * locateDuration,
340
+ insightCameraDuration: locateDuration,
341
+ title,
342
+ subTitle: highlightElement.description || subTitle,
343
+ imageWidth: (null == (_context_shotSize = context.shotSize) ? void 0 : _context_shotSize.width) || imageWidth,
344
+ imageHeight: (null == (_context_shotSize1 = context.shotSize) ? void 0 : _context_shotSize1.height) || imageHeight,
345
+ taskId: currentTaskId
346
+ }, contextScreenshot));
347
+ insightOnTop = true;
348
+ });
349
+ }
350
+ const planningTask = task;
351
+ if (planningTask.recorder && planningTask.recorder.length > 0) {
352
+ var _planningTask_recorder_, _task_uiContext_shotSize, _task_uiContext, _task_uiContext_shotSize1, _task_uiContext1;
353
+ const screenshot = null == (_planningTask_recorder_ = planningTask.recorder[0]) ? void 0 : _planningTask_recorder_.screenshot;
354
+ scripts.push(createScript({
355
+ type: 'img',
356
+ duration: stillDuration,
357
+ title: (0, agent_namespaceObject.typeStr)(task),
358
+ subTitle: (0, agent_namespaceObject.paramStr)(task),
359
+ imageWidth: (null == (_task_uiContext = task.uiContext) ? void 0 : null == (_task_uiContext_shotSize = _task_uiContext.shotSize) ? void 0 : _task_uiContext_shotSize.width) || imageWidth,
360
+ imageHeight: (null == (_task_uiContext1 = task.uiContext) ? void 0 : null == (_task_uiContext_shotSize1 = _task_uiContext1.shotSize) ? void 0 : _task_uiContext_shotSize1.height) || imageHeight,
361
+ taskId: currentTaskId
362
+ }, asScreenshot(screenshot)));
363
+ }
364
+ } else if ('Action Space' === task.type) {
365
+ var _task_recorder_, _task_recorder;
366
+ const title = (0, agent_namespaceObject.typeStr)(task);
367
+ const subTitle = (0, agent_namespaceObject.paramStr)(task);
368
+ scripts.push({
369
+ type: 'spinning-pointer',
370
+ duration: actionSpinningPointerDuration,
371
+ title,
372
+ subTitle,
373
+ taskId: currentTaskId
374
+ });
375
+ if (insightOnTop) {
376
+ scripts.push({
377
+ type: 'clear-insight',
378
+ duration: clearInsightDuration,
379
+ title,
380
+ subTitle,
381
+ taskId: currentTaskId
382
+ });
383
+ insightOnTop = false;
384
+ }
385
+ scripts.push(setPointerScript(external_index_js_namespaceObject.mousePointer, title, subTitle, currentTaskId));
386
+ const screenshot = null == (_task_recorder = task.recorder) ? void 0 : null == (_task_recorder_ = _task_recorder[0]) ? void 0 : _task_recorder_.screenshot;
387
+ const { width, height } = resolveTaskShotSize(task, imageWidth, imageHeight);
388
+ scripts.push(createScript({
389
+ type: 'img',
390
+ duration: actionDuration,
391
+ camera: 'Sleep' === task.subType ? createFullPageCameraState(width, height) : void 0,
392
+ title,
393
+ subTitle,
394
+ imageWidth: width,
395
+ imageHeight: height,
396
+ taskId: currentTaskId
397
+ }, asScreenshot(screenshot)));
398
+ } else {
399
+ var _task_recorder_1, _task_recorder1;
400
+ const title = (0, agent_namespaceObject.typeStr)(task);
401
+ const subTitle = (0, agent_namespaceObject.paramStr)(task);
402
+ const screenshot = null == (_task_recorder1 = task.recorder) ? void 0 : null == (_task_recorder_1 = _task_recorder1[task.recorder.length - 1]) ? void 0 : _task_recorder_1.screenshot;
403
+ if (screenshot) {
404
+ const { width, height } = resolveTaskShotSize(task, imageWidth, imageHeight);
405
+ scripts.push(createScript({
406
+ type: 'img',
407
+ duration: stillDuration,
408
+ camera: createFullPageCameraState(width, height),
409
+ title,
410
+ subTitle,
411
+ imageWidth: width,
412
+ imageHeight: height,
413
+ taskId: currentTaskId
414
+ }, asScreenshot(screenshot)));
415
+ }
416
+ }
417
+ if ('finished' !== task.status) {
418
+ var _task_recorder_2, _task_recorder2;
419
+ const errorTitle = (0, agent_namespaceObject.typeStr)(task);
420
+ const errorMsg = task.errorMessage || 'unknown error';
421
+ const errorSubTitle = errorMsg.indexOf('NOT_IMPLEMENTED_AS_DESIGNED') > 0 ? 'Further actions cannot be performed in the current environment' : errorMsg;
422
+ const screenshot = null == (_task_recorder2 = task.recorder) ? void 0 : null == (_task_recorder_2 = _task_recorder2[task.recorder.length - 1]) ? void 0 : _task_recorder_2.screenshot;
423
+ const { width, height } = resolveTaskShotSize(task, imageWidth, imageHeight);
424
+ scripts.push(createScript({
425
+ type: 'img',
426
+ camera: createFullPageCameraState(width, height),
427
+ duration: stillDuration,
428
+ title: errorTitle,
429
+ subTitle: errorSubTitle,
430
+ imageWidth: width,
431
+ imageHeight: height,
432
+ taskId: currentTaskId
433
+ }, asScreenshot(screenshot)));
434
+ }
435
+ });
436
+ if (insightOnTop) {
437
+ scripts.push({
438
+ type: 'clear-insight',
439
+ duration: clearInsightDuration,
440
+ title: '',
441
+ subTitle: '',
442
+ taskId: lastTaskId
443
+ });
444
+ insightOnTop = false;
445
+ }
446
+ const lastTaskShotSize = tasksIncluded.length > 0 ? resolveTaskShotSize(tasksIncluded[tasksIncluded.length - 1], imageWidth, imageHeight) : {
447
+ width: imageWidth,
448
+ height: imageHeight
449
+ };
450
+ scripts.push({
451
+ title: 'End',
452
+ subTitle: initSubTitle,
453
+ type: 'img',
454
+ duration: lastFrameDuration,
455
+ camera: createFullPageCameraState(lastTaskShotSize.width, lastTaskShotSize.height),
456
+ taskId: void 0
457
+ });
458
+ return scripts;
459
+ };
460
+ exports.allScriptsFromDump = __webpack_exports__.allScriptsFromDump;
461
+ exports.cameraStateForRect = __webpack_exports__.cameraStateForRect;
462
+ exports.extractDumpMetaInfo = __webpack_exports__.extractDumpMetaInfo;
463
+ exports.generateAnimationScripts = __webpack_exports__.generateAnimationScripts;
464
+ exports.mergeTwoCameraState = __webpack_exports__.mergeTwoCameraState;
465
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
466
+ "allScriptsFromDump",
467
+ "cameraStateForRect",
468
+ "extractDumpMetaInfo",
469
+ "generateAnimationScripts",
470
+ "mergeTwoCameraState"
471
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
472
+ Object.defineProperty(exports, '__esModule', {
473
+ value: true
474
+ });
@@ -0,0 +1,11 @@
1
+ import type { BaseElement, LocateResultElement, Rect } from '@godscene/core';
2
+ type HighlightLikeElement = (Pick<BaseElement, 'center' | 'rect'> & Partial<Pick<BaseElement, 'content' | 'id'>>) | LocateResultElement;
3
+ export interface BlackboardHighlightOverlay {
4
+ key: string;
5
+ label?: string;
6
+ center: [number, number];
7
+ rect: Rect;
8
+ }
9
+ export declare function normalizeBlackboardHighlights(elements: HighlightLikeElement[] | undefined): BlackboardHighlightOverlay[];
10
+ export declare function formatBlackboardHighlightSummary(highlight: BlackboardHighlightOverlay): string;
11
+ export {};
@@ -0,0 +1,10 @@
1
+ import type { BaseElement, Rect, UIContext } from '@godscene/core';
2
+ import React from 'react';
3
+ import './index.less';
4
+ export declare const Blackboard: (props: {
5
+ uiContext: UIContext | undefined | null;
6
+ highlightElements?: BaseElement[];
7
+ highlightRect?: Rect;
8
+ hideController?: boolean;
9
+ }) => React.JSX.Element;
10
+ export default Blackboard;
@@ -0,0 +1,15 @@
1
+ import type React from 'react';
2
+ import type { ReactNode } from 'react';
3
+ import type { DeviceType } from '../../types';
4
+ interface ConfigSelectorProps {
5
+ showDeepLocateOption: boolean;
6
+ showDeepThinkOption: boolean;
7
+ enableTracking: boolean;
8
+ showDataExtractionOptions: boolean;
9
+ hideDomAndScreenshotOptions?: boolean;
10
+ deviceType?: DeviceType;
11
+ trigger?: ReactNode;
12
+ popupPlacement?: 'topRight' | 'bottomRight';
13
+ }
14
+ export declare const ConfigSelector: React.FC<ConfigSelectorProps>;
15
+ export {};
@@ -0,0 +1,9 @@
1
+ import type { UIContext } from '@godscene/core';
2
+ import type React from 'react';
3
+ interface ContextPreviewProps {
4
+ uiContextPreview: UIContext | undefined;
5
+ setUiContextPreview: (context: UIContext) => void;
6
+ showContextPreview: boolean;
7
+ }
8
+ export declare const ContextPreview: React.FC<ContextPreviewProps>;
9
+ export {};
@@ -0,0 +1,8 @@
1
+ import type { PlaygroundSDKLike } from '../../types';
2
+ export declare function EnvConfig({ showTooltipWhenEmpty, showModelName, tooltipPlacement, mode, playgroundSDK, }: {
3
+ showTooltipWhenEmpty?: boolean;
4
+ showModelName?: boolean;
5
+ tooltipPlacement?: 'bottom' | 'top';
6
+ mode?: 'icon' | 'text';
7
+ playgroundSDK?: PlaygroundSDKLike | null;
8
+ }): import("react").JSX.Element;