@midscene/visualizer 0.28.1-beta-20250909063633.0 → 0.28.2-beta-20250909133629.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 (133) hide show
  1. package/dist/es/browser.mjs +18 -0
  2. package/dist/es/component/{blackboard.mjs → blackboard/index.mjs} +3 -3
  3. package/dist/es/component/{playground/ConfigSelector.mjs → config-selector/index.mjs} +2 -3
  4. package/dist/es/component/{playground/ContextPreview.mjs → context-preview/index.mjs} +3 -4
  5. package/dist/es/component/{env-config.mjs → env-config/index.mjs} +1 -1
  6. package/dist/es/component/{github-star.mjs → github-star/index.mjs} +1 -1
  7. package/dist/es/component/history-selector/index.css +132 -0
  8. package/dist/es/component/{playground/HistorySelector.mjs → history-selector/index.mjs} +1 -1
  9. package/dist/es/component/index.mjs +1 -0
  10. package/dist/es/component/{logo.mjs → logo/index.mjs} +1 -1
  11. package/dist/es/component/{misc.mjs → misc/index.mjs} +42 -2
  12. package/dist/es/component/{player.mjs → player/index.mjs} +8 -8
  13. package/dist/es/component/playground/index.css +29 -161
  14. package/dist/es/component/playground/index.mjs +8 -0
  15. package/dist/es/component/playground-result/index.css +29 -0
  16. package/dist/es/component/{playground/PlaygroundResult.mjs → playground-result/index.mjs} +3 -4
  17. package/dist/es/component/prompt-input/index.css +330 -0
  18. package/dist/es/component/{playground/PromptInput.mjs → prompt-input/index.mjs} +9 -9
  19. package/dist/es/component/{playground/ServiceModeControl.mjs → service-mode-control/index.mjs} +4 -5
  20. package/dist/es/component/{shiny-text.mjs → shiny-text/index.mjs} +1 -1
  21. package/dist/es/component/universal-playground/index.css +341 -0
  22. package/dist/es/component/universal-playground/index.mjs +273 -0
  23. package/dist/es/component/universal-playground/providers/context-provider.mjs +52 -0
  24. package/dist/es/component/universal-playground/providers/storage-provider.mjs +107 -0
  25. package/dist/es/hooks/usePlaygroundExecution.mjs +170 -0
  26. package/dist/es/hooks/usePlaygroundState.mjs +173 -0
  27. package/dist/es/icons/avatar.mjs +14 -0
  28. package/dist/es/index.mjs +22 -18
  29. package/dist/es/{component/playground/types.mjs → types.mjs} +23 -1
  30. package/dist/es/{component/playground/playground-constants.mjs → utils/constants.mjs} +1 -2
  31. package/dist/es/{component/playground → utils}/playground-utils.mjs +1 -1
  32. package/dist/es/{component → utils}/replay-scripts.mjs +1 -2
  33. package/dist/lib/browser.js +132 -0
  34. package/dist/lib/component/{blackboard.js → blackboard/index.js} +5 -5
  35. package/dist/lib/component/{playground/ConfigSelector.js → config-selector/index.js} +6 -7
  36. package/dist/lib/component/{playground/ContextPreview.js → context-preview/index.js} +8 -9
  37. package/dist/lib/component/{env-config.js → env-config/index.js} +1 -1
  38. package/dist/lib/component/{github-star.js → github-star/index.js} +1 -1
  39. package/dist/lib/component/history-selector/index.css +132 -0
  40. package/dist/lib/component/{playground/HistorySelector.js → history-selector/index.js} +1 -1
  41. package/dist/lib/component/index.js +60 -0
  42. package/dist/lib/component/{logo.js → logo/index.js} +1 -1
  43. package/dist/lib/component/{misc.js → misc/index.js} +60 -1
  44. package/dist/lib/component/{player.js → player/index.js} +23 -23
  45. package/dist/lib/component/playground/index.css +29 -161
  46. package/dist/lib/component/playground/index.js +113 -0
  47. package/dist/lib/component/playground-result/index.css +29 -0
  48. package/dist/lib/component/{playground/PlaygroundResult.js → playground-result/index.js} +8 -9
  49. package/dist/lib/component/prompt-input/index.css +330 -0
  50. package/dist/lib/component/{playground/PromptInput.js → prompt-input/index.js} +37 -37
  51. package/dist/lib/component/{playground/ServiceModeControl.js → service-mode-control/index.js} +8 -9
  52. package/dist/lib/component/{shiny-text.js → shiny-text/index.js} +1 -1
  53. package/dist/lib/component/universal-playground/index.css +341 -0
  54. package/dist/lib/component/universal-playground/index.js +321 -0
  55. package/dist/lib/component/universal-playground/providers/context-provider.js +95 -0
  56. package/dist/lib/component/universal-playground/providers/storage-provider.js +147 -0
  57. package/dist/lib/hooks/usePlaygroundExecution.js +204 -0
  58. package/dist/lib/hooks/usePlaygroundState.js +207 -0
  59. package/dist/lib/{init.js → icons/avatar.js} +16 -12
  60. package/dist/lib/index.js +66 -34
  61. package/dist/lib/{component/playground/types.js → types.js} +28 -0
  62. package/dist/lib/{component/playground/playground-constants.js → utils/constants.js} +3 -4
  63. package/dist/lib/{component/playground → utils}/playground-utils.js +1 -1
  64. package/dist/lib/{component → utils}/replay-scripts.js +3 -4
  65. package/dist/types/browser.d.ts +19 -0
  66. package/dist/types/component/{blackboard.d.ts → blackboard/index.d.ts} +2 -2
  67. package/dist/types/component/{playground/ConfigSelector.d.ts → config-selector/index.d.ts} +0 -1
  68. package/dist/types/component/{playground/ContextPreview.d.ts → context-preview/index.d.ts} +0 -1
  69. package/dist/types/component/{github-star.d.ts → github-star/index.d.ts} +1 -1
  70. package/dist/types/component/{playground/HistorySelector.d.ts → history-selector/index.d.ts} +1 -1
  71. package/dist/types/component/index.d.ts +1 -0
  72. package/dist/types/component/{logo.d.ts → logo/index.d.ts} +1 -1
  73. package/dist/types/component/misc/index.d.ts +6 -0
  74. package/dist/types/component/{player.d.ts → player/index.d.ts} +2 -2
  75. package/dist/types/component/playground/index.d.ts +7 -0
  76. package/dist/types/component/{playground/PlaygroundResult.d.ts → playground-result/index.d.ts} +3 -4
  77. package/dist/types/component/{playground/PromptInput.d.ts → prompt-input/index.d.ts} +3 -2
  78. package/dist/types/component/{playground/ServiceModeControl.d.ts → service-mode-control/index.d.ts} +0 -1
  79. package/dist/types/component/{shiny-text.d.ts → shiny-text/index.d.ts} +1 -1
  80. package/dist/types/component/universal-playground/index.d.ts +4 -0
  81. package/dist/types/component/universal-playground/providers/context-provider.d.ts +37 -0
  82. package/dist/types/component/universal-playground/providers/storage-provider.d.ts +33 -0
  83. package/dist/types/hooks/usePlaygroundExecution.d.ts +10 -0
  84. package/dist/types/hooks/usePlaygroundState.d.ts +26 -0
  85. package/dist/types/index.d.ts +15 -10
  86. package/dist/types/types.d.ts +166 -0
  87. package/dist/types/{component/playground/playground-constants.d.ts → utils/constants.d.ts} +0 -1
  88. package/dist/types/{component → utils}/replay-scripts.d.ts +0 -1
  89. package/package.json +10 -5
  90. package/dist/es/component/describer.css +0 -25
  91. package/dist/es/component/playground/playground-types.mjs +0 -0
  92. package/dist/es/init.mjs +0 -10
  93. package/dist/lib/component/describer.css +0 -25
  94. package/dist/lib/component/playground/playground-types.js +0 -18
  95. package/dist/types/component/misc.d.ts +0 -2
  96. package/dist/types/component/playground/playground-types.d.ts +0 -19
  97. package/dist/types/component/playground/types.d.ts +0 -72
  98. package/dist/types/init.d.ts +0 -1
  99. /package/dist/es/component/{blackboard.css → blackboard/index.css} +0 -0
  100. /package/dist/es/component/{playground/FormField.mjs → form-field/index.mjs} +0 -0
  101. /package/dist/es/component/{github-star.css → github-star/index.css} +0 -0
  102. /package/dist/es/component/{logo.css → logo/index.css} +0 -0
  103. /package/dist/es/component/{player.css → player/index.css} +0 -0
  104. /package/dist/es/component/{playground-demo-ui-context.json → playground/playground-demo-ui-context.json} +0 -0
  105. /package/dist/es/component/{shiny-text.css → shiny-text/index.css} +0 -0
  106. /package/dist/es/{component/playground → hooks}/useServerValid.mjs +0 -0
  107. /package/dist/es/{component/store → store}/history.mjs +0 -0
  108. /package/dist/es/{component/store → store}/store.mjs +0 -0
  109. /package/dist/es/{component → utils}/color.mjs +0 -0
  110. /package/dist/es/{utils.mjs → utils/index.mjs} +0 -0
  111. /package/dist/es/{component → utils}/pixi-loader.mjs +0 -0
  112. /package/dist/lib/component/{blackboard.css → blackboard/index.css} +0 -0
  113. /package/dist/lib/component/{playground/FormField.js → form-field/index.js} +0 -0
  114. /package/dist/lib/component/{github-star.css → github-star/index.css} +0 -0
  115. /package/dist/lib/component/{logo.css → logo/index.css} +0 -0
  116. /package/dist/lib/component/{player.css → player/index.css} +0 -0
  117. /package/dist/lib/component/{playground-demo-ui-context.json → playground/playground-demo-ui-context.json} +0 -0
  118. /package/dist/lib/component/{shiny-text.css → shiny-text/index.css} +0 -0
  119. /package/dist/lib/{component/playground → hooks}/useServerValid.js +0 -0
  120. /package/dist/lib/{component/store → store}/history.js +0 -0
  121. /package/dist/lib/{component/store → store}/store.js +0 -0
  122. /package/dist/lib/{component → utils}/color.js +0 -0
  123. /package/dist/lib/{utils.js → utils/index.js} +0 -0
  124. /package/dist/lib/{component → utils}/pixi-loader.js +0 -0
  125. /package/dist/types/component/{env-config.d.ts → env-config/index.d.ts} +0 -0
  126. /package/dist/types/component/{playground/FormField.d.ts → form-field/index.d.ts} +0 -0
  127. /package/dist/types/{component/playground → hooks}/useServerValid.d.ts +0 -0
  128. /package/dist/types/{component/store → store}/history.d.ts +0 -0
  129. /package/dist/types/{component/store → store}/store.d.ts +0 -0
  130. /package/dist/types/{component → utils}/color.d.ts +0 -0
  131. /package/dist/types/{utils.d.ts → utils/index.d.ts} +0 -0
  132. /package/dist/types/{component → utils}/pixi-loader.d.ts +0 -0
  133. /package/dist/types/{component/playground → utils}/playground-utils.d.ts +0 -0
@@ -0,0 +1,95 @@
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 ('undefined' != 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
+ AgentContextProvider: ()=>AgentContextProvider,
28
+ BaseContextProvider: ()=>BaseContextProvider,
29
+ NoOpContextProvider: ()=>NoOpContextProvider,
30
+ StaticContextProvider: ()=>StaticContextProvider
31
+ });
32
+ function _define_property(obj, key, value) {
33
+ if (key in obj) Object.defineProperty(obj, key, {
34
+ value: value,
35
+ enumerable: true,
36
+ configurable: true,
37
+ writable: true
38
+ });
39
+ else obj[key] = value;
40
+ return obj;
41
+ }
42
+ class BaseContextProvider {
43
+ async refreshContext() {
44
+ this.cachedContext = void 0;
45
+ return await this.getUIContext();
46
+ }
47
+ constructor(){
48
+ _define_property(this, "cachedContext", void 0);
49
+ }
50
+ }
51
+ class AgentContextProvider extends BaseContextProvider {
52
+ async getUIContext() {
53
+ if (this.cachedContext) return this.cachedContext;
54
+ const agent = this.getAgent();
55
+ if (!(null == agent ? void 0 : agent.getUIContext)) throw new Error('Agent does not support getUIContext');
56
+ const context = await agent.getUIContext();
57
+ this.cachedContext = context;
58
+ return context;
59
+ }
60
+ constructor(getAgent, options){
61
+ super(), _define_property(this, "getAgent", void 0), _define_property(this, "options", void 0), this.getAgent = getAgent, this.options = options;
62
+ }
63
+ }
64
+ class StaticContextProvider extends BaseContextProvider {
65
+ async getUIContext() {
66
+ return this.context;
67
+ }
68
+ async refreshContext() {
69
+ return this.context;
70
+ }
71
+ constructor(context){
72
+ super(), _define_property(this, "context", void 0), this.context = context;
73
+ }
74
+ }
75
+ class NoOpContextProvider {
76
+ async getUIContext() {
77
+ throw new Error('Context preview is disabled');
78
+ }
79
+ async refreshContext() {
80
+ throw new Error('Context preview is disabled');
81
+ }
82
+ }
83
+ exports.AgentContextProvider = __webpack_exports__.AgentContextProvider;
84
+ exports.BaseContextProvider = __webpack_exports__.BaseContextProvider;
85
+ exports.NoOpContextProvider = __webpack_exports__.NoOpContextProvider;
86
+ exports.StaticContextProvider = __webpack_exports__.StaticContextProvider;
87
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
88
+ "AgentContextProvider",
89
+ "BaseContextProvider",
90
+ "NoOpContextProvider",
91
+ "StaticContextProvider"
92
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
93
+ Object.defineProperty(exports, '__esModule', {
94
+ value: true
95
+ });
@@ -0,0 +1,147 @@
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 ('undefined' != 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
+ LocalStorageProvider: ()=>LocalStorageProvider,
28
+ MemoryStorageProvider: ()=>MemoryStorageProvider,
29
+ NoOpStorageProvider: ()=>NoOpStorageProvider
30
+ });
31
+ function _define_property(obj, key, value) {
32
+ if (key in obj) Object.defineProperty(obj, key, {
33
+ value: value,
34
+ enumerable: true,
35
+ configurable: true,
36
+ writable: true
37
+ });
38
+ else obj[key] = value;
39
+ return obj;
40
+ }
41
+ class LocalStorageProvider {
42
+ async saveMessages(messages) {
43
+ try {
44
+ const lightMessages = messages.map((msg)=>({
45
+ ...msg,
46
+ result: void 0
47
+ }));
48
+ localStorage.setItem(this.messagesKey, JSON.stringify(lightMessages));
49
+ } catch (error) {
50
+ console.error('Failed to save messages to localStorage:', error);
51
+ }
52
+ }
53
+ async loadMessages() {
54
+ try {
55
+ const stored = localStorage.getItem(this.messagesKey);
56
+ if (!stored) return [];
57
+ const messages = JSON.parse(stored);
58
+ const restoredMessages = await Promise.all(messages.map(async (msg)=>{
59
+ if ('result' === msg.type && msg.id) {
60
+ const resultKey = `${this.resultsKey}-${msg.id}`;
61
+ const storedResult = localStorage.getItem(resultKey);
62
+ if (storedResult) try {
63
+ const resultItem = JSON.parse(storedResult);
64
+ return {
65
+ ...msg,
66
+ ...resultItem
67
+ };
68
+ } catch (e) {
69
+ console.warn('Failed to parse stored result:', e);
70
+ }
71
+ }
72
+ return msg;
73
+ }));
74
+ return restoredMessages;
75
+ } catch (error) {
76
+ console.error('Failed to load messages from localStorage:', error);
77
+ return [];
78
+ }
79
+ }
80
+ async clearMessages() {
81
+ try {
82
+ localStorage.removeItem(this.messagesKey);
83
+ const keys = Object.keys(localStorage);
84
+ keys.forEach((key)=>{
85
+ if (key.startsWith(this.resultsKey)) localStorage.removeItem(key);
86
+ });
87
+ } catch (error) {
88
+ console.error('Failed to clear messages from localStorage:', error);
89
+ }
90
+ }
91
+ async saveResult(id, result) {
92
+ try {
93
+ const resultKey = `${this.resultsKey}-${id}`;
94
+ localStorage.setItem(resultKey, JSON.stringify(result));
95
+ } catch (error) {
96
+ console.error('Failed to save result to localStorage:', error);
97
+ }
98
+ }
99
+ constructor(namespace = 'playground'){
100
+ _define_property(this, "messagesKey", void 0);
101
+ _define_property(this, "resultsKey", void 0);
102
+ this.messagesKey = `${namespace}-messages`;
103
+ this.resultsKey = `${namespace}-results`;
104
+ }
105
+ }
106
+ class MemoryStorageProvider {
107
+ async saveMessages(messages) {
108
+ this.messages = [
109
+ ...messages
110
+ ];
111
+ }
112
+ async loadMessages() {
113
+ return [
114
+ ...this.messages
115
+ ];
116
+ }
117
+ async clearMessages() {
118
+ this.messages = [];
119
+ this.results.clear();
120
+ }
121
+ async saveResult(id, result) {
122
+ this.results.set(id, result);
123
+ }
124
+ constructor(){
125
+ _define_property(this, "messages", []);
126
+ _define_property(this, "results", new Map());
127
+ }
128
+ }
129
+ class NoOpStorageProvider {
130
+ async saveMessages(_messages) {}
131
+ async loadMessages() {
132
+ return [];
133
+ }
134
+ async clearMessages() {}
135
+ async saveResult(_id, _result) {}
136
+ }
137
+ exports.LocalStorageProvider = __webpack_exports__.LocalStorageProvider;
138
+ exports.MemoryStorageProvider = __webpack_exports__.MemoryStorageProvider;
139
+ exports.NoOpStorageProvider = __webpack_exports__.NoOpStorageProvider;
140
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
141
+ "LocalStorageProvider",
142
+ "MemoryStorageProvider",
143
+ "NoOpStorageProvider"
144
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
145
+ Object.defineProperty(exports, '__esModule', {
146
+ value: true
147
+ });
@@ -0,0 +1,204 @@
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 ('undefined' != 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
+ usePlaygroundExecution: ()=>usePlaygroundExecution
28
+ });
29
+ const external_react_namespaceObject = require("react");
30
+ const external_types_js_namespaceObject = require("../types.js");
31
+ const replay_scripts_js_namespaceObject = require("../utils/replay-scripts.js");
32
+ const noReplayAPIs = [
33
+ 'aiQuery',
34
+ 'aiAssert'
35
+ ];
36
+ function usePlaygroundExecution(playgroundSDK, storage, actionSpace, loading, setLoading, infoList, setInfoList, replayCounter, setReplayCounter, verticalMode, currentRunningIdRef, interruptedFlagRef) {
37
+ const handleRun = (0, external_react_namespaceObject.useCallback)(async (value)=>{
38
+ Date.now();
39
+ null == actionSpace || actionSpace.find((a)=>a.interfaceAlias === value.type || a.name === value.type);
40
+ const thisRunningId = Date.now();
41
+ const actionType = value.type;
42
+ const displayContent = `${value.type}: ${value.prompt || JSON.stringify(value.params)}`;
43
+ const userItem = {
44
+ id: `user-${Date.now()}`,
45
+ type: 'user',
46
+ content: displayContent,
47
+ timestamp: new Date()
48
+ };
49
+ setInfoList((prev)=>[
50
+ ...prev,
51
+ userItem
52
+ ]);
53
+ setLoading(true);
54
+ const result = {
55
+ ...external_types_js_namespaceObject.BLANK_RESULT
56
+ };
57
+ const systemItem = {
58
+ id: `system-${thisRunningId}`,
59
+ type: 'system',
60
+ content: '',
61
+ timestamp: new Date(),
62
+ loading: true,
63
+ loadingProgressText: ''
64
+ };
65
+ setInfoList((prev)=>[
66
+ ...prev,
67
+ systemItem
68
+ ]);
69
+ try {
70
+ currentRunningIdRef.current = thisRunningId;
71
+ interruptedFlagRef.current[thisRunningId] = false;
72
+ if (playgroundSDK.onProgressUpdate) playgroundSDK.onProgressUpdate((tip)=>{
73
+ if (interruptedFlagRef.current[thisRunningId]) return;
74
+ const progressItem = {
75
+ id: `progress-${thisRunningId}-${Date.now()}`,
76
+ type: 'progress',
77
+ content: tip,
78
+ timestamp: new Date()
79
+ };
80
+ setInfoList((prev)=>[
81
+ ...prev,
82
+ progressItem
83
+ ]);
84
+ });
85
+ result.result = await playgroundSDK.executeAction(actionType, value, {
86
+ requestId: thisRunningId.toString()
87
+ });
88
+ if ('object' == typeof result.result && null !== result.result) {
89
+ const resultObj = result.result;
90
+ if (resultObj.dump) result.dump = resultObj.dump;
91
+ if (resultObj.reportHTML) result.reportHTML = resultObj.reportHTML;
92
+ if (resultObj.error) result.error = resultObj.error;
93
+ if (void 0 !== resultObj.result) result.result = resultObj.result;
94
+ }
95
+ } catch (e) {
96
+ result.error = (null == e ? void 0 : e.message) || String(e);
97
+ console.error('Playground execution error:', e);
98
+ }
99
+ if (interruptedFlagRef.current[thisRunningId]) return;
100
+ setLoading(false);
101
+ currentRunningIdRef.current = null;
102
+ let replayInfo = null;
103
+ let counter = replayCounter;
104
+ if ((null == result ? void 0 : result.dump) && !noReplayAPIs.includes(actionType)) {
105
+ const info = (0, replay_scripts_js_namespaceObject.allScriptsFromDump)(result.dump);
106
+ setReplayCounter((c)=>c + 1);
107
+ replayInfo = info;
108
+ counter = replayCounter + 1;
109
+ }
110
+ setInfoList((prev)=>prev.map((item)=>item.id === `system-${thisRunningId}` ? {
111
+ ...item,
112
+ content: '',
113
+ loading: false,
114
+ loadingProgressText: ''
115
+ } : item));
116
+ const resultItem = {
117
+ id: `result-${thisRunningId}`,
118
+ type: 'result',
119
+ content: 'Execution result',
120
+ timestamp: new Date(),
121
+ result: result,
122
+ loading: false,
123
+ replayScriptsInfo: replayInfo,
124
+ replayCounter: counter,
125
+ loadingProgressText: '',
126
+ verticalMode: verticalMode
127
+ };
128
+ setInfoList((prev)=>[
129
+ ...prev,
130
+ resultItem
131
+ ]);
132
+ if (null == storage ? void 0 : storage.saveResult) try {
133
+ await storage.saveResult(resultItem.id, resultItem);
134
+ } catch (error) {
135
+ console.error('Failed to save result:', error);
136
+ }
137
+ const separatorItem = {
138
+ id: `separator-${thisRunningId}`,
139
+ type: 'separator',
140
+ content: 'New Session',
141
+ timestamp: new Date()
142
+ };
143
+ setInfoList((prev)=>[
144
+ ...prev,
145
+ separatorItem
146
+ ]);
147
+ }, [
148
+ playgroundSDK,
149
+ storage,
150
+ actionSpace,
151
+ setLoading,
152
+ setInfoList,
153
+ replayCounter,
154
+ setReplayCounter,
155
+ verticalMode,
156
+ currentRunningIdRef,
157
+ interruptedFlagRef
158
+ ]);
159
+ const handleStop = (0, external_react_namespaceObject.useCallback)(async ()=>{
160
+ const thisRunningId = currentRunningIdRef.current;
161
+ if (thisRunningId && playgroundSDK.cancelExecution) try {
162
+ await playgroundSDK.cancelExecution(thisRunningId.toString());
163
+ interruptedFlagRef.current[thisRunningId] = true;
164
+ setLoading(false);
165
+ setInfoList((prev)=>prev.map((item)=>item.id === `system-${thisRunningId}` && item.loading ? {
166
+ ...item,
167
+ content: 'Operation stopped',
168
+ loading: false,
169
+ loadingProgressText: ''
170
+ } : item));
171
+ const separatorItem = {
172
+ id: `separator-${thisRunningId}`,
173
+ type: 'separator',
174
+ content: 'New Session',
175
+ timestamp: new Date()
176
+ };
177
+ setInfoList((prev)=>[
178
+ ...prev,
179
+ separatorItem
180
+ ]);
181
+ } catch (error) {
182
+ console.error('Failed to stop execution:', error);
183
+ }
184
+ }, [
185
+ playgroundSDK,
186
+ currentRunningIdRef,
187
+ interruptedFlagRef,
188
+ setLoading,
189
+ setInfoList
190
+ ]);
191
+ const canStop = loading && !!currentRunningIdRef.current && !!playgroundSDK.cancelExecution;
192
+ return {
193
+ handleRun,
194
+ handleStop,
195
+ canStop
196
+ };
197
+ }
198
+ exports.usePlaygroundExecution = __webpack_exports__.usePlaygroundExecution;
199
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
200
+ "usePlaygroundExecution"
201
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
202
+ Object.defineProperty(exports, '__esModule', {
203
+ value: true
204
+ });
@@ -0,0 +1,207 @@
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 ('undefined' != 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
+ usePlaygroundState: ()=>usePlaygroundState
28
+ });
29
+ const external_react_namespaceObject = require("react");
30
+ const external_types_js_namespaceObject = require("../types.js");
31
+ function usePlaygroundState(playgroundSDK, storage, contextProvider) {
32
+ const [loading, setLoading] = (0, external_react_namespaceObject.useState)(false);
33
+ const [infoList, setInfoList] = (0, external_react_namespaceObject.useState)([]);
34
+ const [actionSpace, setActionSpace] = (0, external_react_namespaceObject.useState)([]);
35
+ const [actionSpaceLoading, setActionSpaceLoading] = (0, external_react_namespaceObject.useState)(true);
36
+ const [uiContextPreview, setUiContextPreview] = (0, external_react_namespaceObject.useState)();
37
+ const [showScrollToBottomButton, setShowScrollToBottomButton] = (0, external_react_namespaceObject.useState)(false);
38
+ const [verticalMode, setVerticalMode] = (0, external_react_namespaceObject.useState)(false);
39
+ const [replayCounter, setReplayCounter] = (0, external_react_namespaceObject.useState)(0);
40
+ const infoListRef = (0, external_react_namespaceObject.useRef)(null);
41
+ const currentRunningIdRef = (0, external_react_namespaceObject.useRef)(null);
42
+ const interruptedFlagRef = (0, external_react_namespaceObject.useRef)({});
43
+ const welcomeMessage = {
44
+ ...external_types_js_namespaceObject.WELCOME_MESSAGE_TEMPLATE,
45
+ id: 'welcome',
46
+ timestamp: new Date()
47
+ };
48
+ (0, external_react_namespaceObject.useEffect)(()=>{
49
+ const initializeMessages = async ()=>{
50
+ if (null == storage ? void 0 : storage.loadMessages) try {
51
+ const storedMessages = await storage.loadMessages();
52
+ setInfoList([
53
+ welcomeMessage,
54
+ ...storedMessages
55
+ ]);
56
+ } catch (error) {
57
+ console.error('Failed to load messages:', error);
58
+ setInfoList([
59
+ welcomeMessage
60
+ ]);
61
+ }
62
+ else setInfoList([
63
+ welcomeMessage
64
+ ]);
65
+ };
66
+ initializeMessages();
67
+ }, [
68
+ storage
69
+ ]);
70
+ (0, external_react_namespaceObject.useEffect)(()=>{
71
+ if ((null == storage ? void 0 : storage.saveMessages) && infoList.length > 1) storage.saveMessages(infoList).catch((error)=>{
72
+ console.error('Failed to save messages:', error);
73
+ });
74
+ }, [
75
+ infoList,
76
+ storage
77
+ ]);
78
+ (0, external_react_namespaceObject.useEffect)(()=>{
79
+ if (!(null == contextProvider ? void 0 : contextProvider.getUIContext) || uiContextPreview) return;
80
+ contextProvider.getUIContext().then((context)=>setUiContextPreview(context)).catch((error)=>{
81
+ console.error('Failed to get UI context:', error);
82
+ });
83
+ }, [
84
+ contextProvider,
85
+ uiContextPreview
86
+ ]);
87
+ (0, external_react_namespaceObject.useEffect)(()=>{
88
+ const loadActionSpace = async ()=>{
89
+ setActionSpaceLoading(true);
90
+ try {
91
+ var _contextProvider_getUIContext;
92
+ const context = uiContextPreview || await (null == contextProvider ? void 0 : null == (_contextProvider_getUIContext = contextProvider.getUIContext) ? void 0 : _contextProvider_getUIContext.call(contextProvider));
93
+ const space = await playgroundSDK.getActionSpace(context);
94
+ setActionSpace(space || []);
95
+ } catch (error) {
96
+ console.error('Failed to load action space:', error);
97
+ setActionSpace([]);
98
+ } finally{
99
+ setActionSpaceLoading(false);
100
+ }
101
+ };
102
+ loadActionSpace();
103
+ }, [
104
+ playgroundSDK,
105
+ uiContextPreview,
106
+ contextProvider
107
+ ]);
108
+ (0, external_react_namespaceObject.useEffect)(()=>{
109
+ const sizeThreshold = 750;
110
+ setVerticalMode(window.innerWidth < sizeThreshold);
111
+ const handleResize = ()=>{
112
+ setVerticalMode(window.innerWidth < sizeThreshold);
113
+ };
114
+ window.addEventListener('resize', handleResize);
115
+ return ()=>window.removeEventListener('resize', handleResize);
116
+ }, []);
117
+ const scrollToBottom = (0, external_react_namespaceObject.useCallback)(()=>{
118
+ setTimeout(()=>{
119
+ if (infoListRef.current) infoListRef.current.scrollTop = infoListRef.current.scrollHeight;
120
+ }, 100);
121
+ }, []);
122
+ const checkIfScrolledToBottom = (0, external_react_namespaceObject.useCallback)(()=>{
123
+ if (infoListRef.current) {
124
+ const { scrollTop, scrollHeight, clientHeight } = infoListRef.current;
125
+ const isAtBottom = scrollTop + clientHeight >= scrollHeight - 10;
126
+ setShowScrollToBottomButton(!isAtBottom);
127
+ }
128
+ }, []);
129
+ const handleScrollToBottom = (0, external_react_namespaceObject.useCallback)(()=>{
130
+ if (infoListRef.current) {
131
+ infoListRef.current.scrollTo({
132
+ top: infoListRef.current.scrollHeight,
133
+ behavior: 'smooth'
134
+ });
135
+ setShowScrollToBottomButton(false);
136
+ }
137
+ }, []);
138
+ (0, external_react_namespaceObject.useEffect)(()=>{
139
+ if (infoList.length > 0) scrollToBottom();
140
+ }, [
141
+ infoList,
142
+ scrollToBottom
143
+ ]);
144
+ (0, external_react_namespaceObject.useEffect)(()=>{
145
+ const container = infoListRef.current;
146
+ if (container) {
147
+ container.addEventListener('scroll', checkIfScrolledToBottom);
148
+ checkIfScrolledToBottom();
149
+ return ()=>{
150
+ container.removeEventListener('scroll', checkIfScrolledToBottom);
151
+ };
152
+ }
153
+ }, [
154
+ checkIfScrolledToBottom
155
+ ]);
156
+ const clearInfoList = (0, external_react_namespaceObject.useCallback)(async ()=>{
157
+ setInfoList([
158
+ welcomeMessage
159
+ ]);
160
+ if (null == storage ? void 0 : storage.clearMessages) try {
161
+ await storage.clearMessages();
162
+ } catch (error) {
163
+ console.error('Failed to clear stored messages:', error);
164
+ }
165
+ }, [
166
+ storage,
167
+ welcomeMessage
168
+ ]);
169
+ const refreshContext = (0, external_react_namespaceObject.useCallback)(async ()=>{
170
+ if (null == contextProvider ? void 0 : contextProvider.refreshContext) try {
171
+ const newContext = await contextProvider.refreshContext();
172
+ setUiContextPreview(newContext);
173
+ } catch (error) {
174
+ console.error('Failed to refresh context:', error);
175
+ }
176
+ }, [
177
+ contextProvider
178
+ ]);
179
+ return {
180
+ loading,
181
+ setLoading,
182
+ infoList,
183
+ setInfoList,
184
+ actionSpace,
185
+ actionSpaceLoading,
186
+ uiContextPreview,
187
+ setUiContextPreview,
188
+ showScrollToBottomButton,
189
+ verticalMode,
190
+ replayCounter,
191
+ setReplayCounter,
192
+ infoListRef,
193
+ currentRunningIdRef,
194
+ interruptedFlagRef,
195
+ clearInfoList,
196
+ refreshContext,
197
+ handleScrollToBottom,
198
+ scrollToBottom
199
+ };
200
+ }
201
+ exports.usePlaygroundState = __webpack_exports__.usePlaygroundState;
202
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
203
+ "usePlaygroundState"
204
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
205
+ Object.defineProperty(exports, '__esModule', {
206
+ value: true
207
+ });
@@ -24,20 +24,24 @@ var __webpack_require__ = {};
24
24
  var __webpack_exports__ = {};
25
25
  __webpack_require__.r(__webpack_exports__);
26
26
  __webpack_require__.d(__webpack_exports__, {
27
- setSideEffect: ()=>setSideEffect
27
+ default: ()=>avatar
28
28
  });
29
- const external_buffer_namespaceObject = require("buffer");
30
- var _window;
31
- (_window = window).global || (_window.global = window);
32
- window.Buffer = external_buffer_namespaceObject.Buffer;
33
- let sideEffect = 0;
34
- const setSideEffect = ()=>{
35
- sideEffect++;
36
- return sideEffect;
37
- };
38
- exports.setSideEffect = __webpack_exports__.setSideEffect;
29
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
30
+ require("react");
31
+ const SvgAvatar = (props)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("svg", {
32
+ width: 20,
33
+ height: 20,
34
+ fill: "currentColor",
35
+ viewBox: "0 0 24 24",
36
+ ...props,
37
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("path", {
38
+ d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z"
39
+ })
40
+ });
41
+ const avatar = SvgAvatar;
42
+ exports["default"] = __webpack_exports__["default"];
39
43
  for(var __webpack_i__ in __webpack_exports__)if (-1 === [
40
- "setSideEffect"
44
+ "default"
41
45
  ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
42
46
  Object.defineProperty(exports, '__esModule', {
43
47
  value: true