@chat-lab/ui 0.1.0-beta.36 → 0.1.0-beta.37

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 (234) hide show
  1. package/dist/_virtual/index4.cjs +2 -5
  2. package/dist/_virtual/index4.cjs.map +1 -1
  3. package/dist/_virtual/index4.js +2 -5
  4. package/dist/_virtual/index4.js.map +1 -1
  5. package/dist/_virtual/index5.cjs +5 -2
  6. package/dist/_virtual/index5.cjs.map +1 -1
  7. package/dist/_virtual/index5.js +5 -2
  8. package/dist/_virtual/index5.js.map +1 -1
  9. package/dist/adk/components/Debug/Events/index.cjs +2 -2
  10. package/dist/adk/components/Debug/Events/index.cjs.map +1 -1
  11. package/dist/adk/components/Debug/Events/index.js +2 -2
  12. package/dist/adk/components/Debug/Events/index.js.map +1 -1
  13. package/dist/adk/components/Debug/Trace/TraceDetail.cjs +0 -1
  14. package/dist/adk/components/Debug/Trace/TraceDetail.cjs.map +1 -1
  15. package/dist/adk/components/Debug/Trace/TraceDetail.d.ts.map +1 -1
  16. package/dist/adk/components/Debug/Trace/TraceDetail.js +0 -1
  17. package/dist/adk/components/Debug/Trace/TraceDetail.js.map +1 -1
  18. package/dist/adk/components/Debug/Trace/TraceMessageGroup.cjs +2 -2
  19. package/dist/adk/components/Debug/Trace/TraceMessageGroup.cjs.map +1 -1
  20. package/dist/adk/components/Debug/Trace/TraceMessageGroup.js +2 -2
  21. package/dist/adk/components/Debug/Trace/TraceMessageGroup.js.map +1 -1
  22. package/dist/adk/components/Debug/Trace/index.cjs +10 -7
  23. package/dist/adk/components/Debug/Trace/index.cjs.map +1 -1
  24. package/dist/adk/components/Debug/Trace/index.d.ts +1 -1
  25. package/dist/adk/components/Debug/Trace/index.d.ts.map +1 -1
  26. package/dist/adk/components/Debug/Trace/index.js +10 -7
  27. package/dist/adk/components/Debug/Trace/index.js.map +1 -1
  28. package/dist/adk/components/Debug/Trace/types.d.ts +1 -0
  29. package/dist/adk/components/Debug/Trace/types.d.ts.map +1 -1
  30. package/dist/adk/components/Debug/Trace/utils.cjs +3 -1
  31. package/dist/adk/components/Debug/Trace/utils.cjs.map +1 -1
  32. package/dist/adk/components/Debug/Trace/utils.d.ts.map +1 -1
  33. package/dist/adk/components/Debug/Trace/utils.js +3 -1
  34. package/dist/adk/components/Debug/Trace/utils.js.map +1 -1
  35. package/dist/adk/components/Debug/index.cjs.map +1 -1
  36. package/dist/adk/components/Debug/index.d.ts +3 -1
  37. package/dist/adk/components/Debug/index.d.ts.map +1 -1
  38. package/dist/adk/components/Debug/index.js.map +1 -1
  39. package/dist/adk/hooks/useEvents.cjs +8 -2
  40. package/dist/adk/hooks/useEvents.cjs.map +1 -1
  41. package/dist/adk/hooks/useEvents.d.ts +1 -1
  42. package/dist/adk/hooks/useEvents.d.ts.map +1 -1
  43. package/dist/adk/hooks/useEvents.js +8 -2
  44. package/dist/adk/hooks/useEvents.js.map +1 -1
  45. package/dist/components/Chatkit/index.cjs +4 -10
  46. package/dist/components/Chatkit/index.cjs.map +1 -1
  47. package/dist/components/Chatkit/index.d.ts.map +1 -1
  48. package/dist/components/Chatkit/index.js +4 -10
  49. package/dist/components/Chatkit/index.js.map +1 -1
  50. package/dist/components/Chatkit/types.d.ts +1 -0
  51. package/dist/components/Chatkit/types.d.ts.map +1 -1
  52. package/dist/components/ThreadOptionsMenu.cjs +10 -23
  53. package/dist/components/ThreadOptionsMenu.cjs.map +1 -1
  54. package/dist/components/ThreadOptionsMenu.d.ts.map +1 -1
  55. package/dist/components/ThreadOptionsMenu.js +11 -24
  56. package/dist/components/ThreadOptionsMenu.js.map +1 -1
  57. package/dist/components/assistant-ui/thread.cjs +1 -1
  58. package/dist/components/assistant-ui/thread.cjs.map +1 -1
  59. package/dist/components/assistant-ui/thread.js +1 -1
  60. package/dist/components/assistant-ui/thread.js.map +1 -1
  61. package/dist/index.css +1 -1
  62. package/dist/node_modules/.pnpm/@cloudfun_web-sdk@3.1.7_@volcengine_console-web-sdk@6.2.0/node_modules/@cloudfun/web-sdk/lib/util.cjs +1 -1
  63. package/dist/node_modules/.pnpm/@cloudfun_web-sdk@3.1.7_@volcengine_console-web-sdk@6.2.0/node_modules/@cloudfun/web-sdk/lib/util.js +1 -1
  64. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.cjs +1 -1
  65. package/dist/node_modules/.pnpm/crypto-js@4.2.0/node_modules/crypto-js/index.js +1 -1
  66. package/dist/node_modules/ahooks/es/createUpdateEffect/index.cjs +27 -0
  67. package/dist/node_modules/ahooks/es/createUpdateEffect/index.cjs.map +1 -0
  68. package/dist/node_modules/ahooks/es/createUpdateEffect/index.js +22 -0
  69. package/dist/node_modules/ahooks/es/createUpdateEffect/index.js.map +1 -0
  70. package/dist/node_modules/ahooks/es/useCreation/index.cjs +22 -0
  71. package/dist/node_modules/ahooks/es/useCreation/index.cjs.map +1 -0
  72. package/dist/node_modules/ahooks/es/useCreation/index.js +20 -0
  73. package/dist/node_modules/ahooks/es/useCreation/index.js.map +1 -0
  74. package/dist/node_modules/ahooks/es/useEventListener/index.cjs +41 -0
  75. package/dist/node_modules/ahooks/es/useEventListener/index.cjs.map +1 -0
  76. package/dist/node_modules/ahooks/es/useEventListener/index.js +39 -0
  77. package/dist/node_modules/ahooks/es/useEventListener/index.js.map +1 -0
  78. package/dist/node_modules/ahooks/es/useLatest/index.cjs +12 -0
  79. package/dist/node_modules/ahooks/es/useLatest/index.cjs.map +1 -0
  80. package/dist/node_modules/ahooks/es/useLatest/index.js +10 -0
  81. package/dist/node_modules/ahooks/es/useLatest/index.js.map +1 -0
  82. package/dist/node_modules/ahooks/es/useMemoizedFn/index.cjs +32 -0
  83. package/dist/node_modules/ahooks/es/useMemoizedFn/index.cjs.map +1 -0
  84. package/dist/node_modules/ahooks/es/useMemoizedFn/index.js +30 -0
  85. package/dist/node_modules/ahooks/es/useMemoizedFn/index.js.map +1 -0
  86. package/dist/node_modules/ahooks/es/useMount/index.cjs +25 -0
  87. package/dist/node_modules/ahooks/es/useMount/index.cjs.map +1 -0
  88. package/dist/node_modules/ahooks/es/useMount/index.js +23 -0
  89. package/dist/node_modules/ahooks/es/useMount/index.js.map +1 -0
  90. package/dist/node_modules/ahooks/es/useRafState/index.cjs +23 -0
  91. package/dist/node_modules/ahooks/es/useRafState/index.cjs.map +1 -0
  92. package/dist/node_modules/ahooks/es/useRafState/index.js +21 -0
  93. package/dist/node_modules/ahooks/es/useRafState/index.js.map +1 -0
  94. package/dist/node_modules/ahooks/es/useRequest/index.cjs +8 -0
  95. package/dist/node_modules/ahooks/es/useRequest/index.cjs.map +1 -0
  96. package/dist/node_modules/ahooks/es/useRequest/index.js +6 -0
  97. package/dist/node_modules/ahooks/es/useRequest/index.js.map +1 -0
  98. package/dist/node_modules/ahooks/es/useRequest/src/Fetch.cjs +150 -0
  99. package/dist/node_modules/ahooks/es/useRequest/src/Fetch.cjs.map +1 -0
  100. package/dist/node_modules/ahooks/es/useRequest/src/Fetch.js +148 -0
  101. package/dist/node_modules/ahooks/es/useRequest/src/Fetch.js.map +1 -0
  102. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useAutoRunPlugin.cjs +51 -0
  103. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useAutoRunPlugin.cjs.map +1 -0
  104. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useAutoRunPlugin.js +49 -0
  105. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useAutoRunPlugin.js.map +1 -0
  106. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useCachePlugin.cjs +127 -0
  107. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useCachePlugin.cjs.map +1 -0
  108. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useCachePlugin.js +125 -0
  109. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useCachePlugin.js.map +1 -0
  110. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useDebouncePlugin.cjs +64 -0
  111. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useDebouncePlugin.cjs.map +1 -0
  112. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useDebouncePlugin.js +62 -0
  113. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useDebouncePlugin.js.map +1 -0
  114. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useLoadingDelayPlugin.cjs +44 -0
  115. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useLoadingDelayPlugin.cjs.map +1 -0
  116. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useLoadingDelayPlugin.js +42 -0
  117. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useLoadingDelayPlugin.js.map +1 -0
  118. package/dist/node_modules/ahooks/es/useRequest/src/plugins/usePollingPlugin.cjs +66 -0
  119. package/dist/node_modules/ahooks/es/useRequest/src/plugins/usePollingPlugin.cjs.map +1 -0
  120. package/dist/node_modules/ahooks/es/useRequest/src/plugins/usePollingPlugin.js +64 -0
  121. package/dist/node_modules/ahooks/es/useRequest/src/plugins/usePollingPlugin.js.map +1 -0
  122. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useRefreshOnWindowFocusPlugin.cjs +34 -0
  123. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useRefreshOnWindowFocusPlugin.cjs.map +1 -0
  124. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useRefreshOnWindowFocusPlugin.js +32 -0
  125. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useRefreshOnWindowFocusPlugin.js.map +1 -0
  126. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useRetryPlugin.cjs +51 -0
  127. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useRetryPlugin.cjs.map +1 -0
  128. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useRetryPlugin.js +49 -0
  129. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useRetryPlugin.js.map +1 -0
  130. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useThrottlePlugin.cjs +58 -0
  131. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useThrottlePlugin.cjs.map +1 -0
  132. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useThrottlePlugin.js +56 -0
  133. package/dist/node_modules/ahooks/es/useRequest/src/plugins/useThrottlePlugin.js.map +1 -0
  134. package/dist/node_modules/ahooks/es/useRequest/src/useRequest.cjs +38 -0
  135. package/dist/node_modules/ahooks/es/useRequest/src/useRequest.cjs.map +1 -0
  136. package/dist/node_modules/ahooks/es/useRequest/src/useRequest.js +36 -0
  137. package/dist/node_modules/ahooks/es/useRequest/src/useRequest.js.map +1 -0
  138. package/dist/node_modules/ahooks/es/useRequest/src/useRequestImplement.cjs +58 -0
  139. package/dist/node_modules/ahooks/es/useRequest/src/useRequestImplement.cjs.map +1 -0
  140. package/dist/node_modules/ahooks/es/useRequest/src/useRequestImplement.js +56 -0
  141. package/dist/node_modules/ahooks/es/useRequest/src/useRequestImplement.js.map +1 -0
  142. package/dist/node_modules/ahooks/es/useRequest/src/utils/cache.cjs +26 -0
  143. package/dist/node_modules/ahooks/es/useRequest/src/utils/cache.cjs.map +1 -0
  144. package/dist/node_modules/ahooks/es/useRequest/src/utils/cache.js +23 -0
  145. package/dist/node_modules/ahooks/es/useRequest/src/utils/cache.js.map +1 -0
  146. package/dist/node_modules/ahooks/es/useRequest/src/utils/cachePromise.cjs +24 -0
  147. package/dist/node_modules/ahooks/es/useRequest/src/utils/cachePromise.cjs.map +1 -0
  148. package/dist/node_modules/ahooks/es/useRequest/src/utils/cachePromise.js +21 -0
  149. package/dist/node_modules/ahooks/es/useRequest/src/utils/cachePromise.js.map +1 -0
  150. package/dist/node_modules/ahooks/es/useRequest/src/utils/cacheSubscribe.cjs +22 -0
  151. package/dist/node_modules/ahooks/es/useRequest/src/utils/cacheSubscribe.cjs.map +1 -0
  152. package/dist/node_modules/ahooks/es/useRequest/src/utils/cacheSubscribe.js +19 -0
  153. package/dist/node_modules/ahooks/es/useRequest/src/utils/cacheSubscribe.js.map +1 -0
  154. package/dist/node_modules/ahooks/es/useRequest/src/utils/isDocumentVisible.cjs +13 -0
  155. package/dist/node_modules/ahooks/es/useRequest/src/utils/isDocumentVisible.cjs.map +1 -0
  156. package/dist/node_modules/ahooks/es/useRequest/src/utils/isDocumentVisible.js +11 -0
  157. package/dist/node_modules/ahooks/es/useRequest/src/utils/isDocumentVisible.js.map +1 -0
  158. package/dist/node_modules/ahooks/es/useRequest/src/utils/isOnline.cjs +14 -0
  159. package/dist/node_modules/ahooks/es/useRequest/src/utils/isOnline.cjs.map +1 -0
  160. package/dist/node_modules/ahooks/es/useRequest/src/utils/isOnline.js +12 -0
  161. package/dist/node_modules/ahooks/es/useRequest/src/utils/isOnline.js.map +1 -0
  162. package/dist/node_modules/ahooks/es/useRequest/src/utils/limit.cjs +23 -0
  163. package/dist/node_modules/ahooks/es/useRequest/src/utils/limit.cjs.map +1 -0
  164. package/dist/node_modules/ahooks/es/useRequest/src/utils/limit.js +21 -0
  165. package/dist/node_modules/ahooks/es/useRequest/src/utils/limit.js.map +1 -0
  166. package/dist/node_modules/ahooks/es/useRequest/src/utils/subscribeFocus.cjs +26 -0
  167. package/dist/node_modules/ahooks/es/useRequest/src/utils/subscribeFocus.cjs.map +1 -0
  168. package/dist/node_modules/ahooks/es/useRequest/src/utils/subscribeFocus.js +24 -0
  169. package/dist/node_modules/ahooks/es/useRequest/src/utils/subscribeFocus.js.map +1 -0
  170. package/dist/node_modules/ahooks/es/useRequest/src/utils/subscribeReVisible.cjs +23 -0
  171. package/dist/node_modules/ahooks/es/useRequest/src/utils/subscribeReVisible.cjs.map +1 -0
  172. package/dist/node_modules/ahooks/es/useRequest/src/utils/subscribeReVisible.js +21 -0
  173. package/dist/node_modules/ahooks/es/useRequest/src/utils/subscribeReVisible.js.map +1 -0
  174. package/dist/node_modules/ahooks/es/useSize/index.cjs +34 -0
  175. package/dist/node_modules/ahooks/es/useSize/index.cjs.map +1 -0
  176. package/dist/node_modules/ahooks/es/useSize/index.js +32 -0
  177. package/dist/node_modules/ahooks/es/useSize/index.js.map +1 -0
  178. package/dist/node_modules/ahooks/es/useUnmount/index.cjs +22 -0
  179. package/dist/node_modules/ahooks/es/useUnmount/index.cjs.map +1 -0
  180. package/dist/node_modules/ahooks/es/useUnmount/index.js +20 -0
  181. package/dist/node_modules/ahooks/es/useUnmount/index.js.map +1 -0
  182. package/dist/node_modules/ahooks/es/useUpdate/index.cjs +13 -0
  183. package/dist/node_modules/ahooks/es/useUpdate/index.cjs.map +1 -0
  184. package/dist/node_modules/ahooks/es/useUpdate/index.js +11 -0
  185. package/dist/node_modules/ahooks/es/useUpdate/index.js.map +1 -0
  186. package/dist/node_modules/ahooks/es/useUpdateEffect/index.cjs +9 -0
  187. package/dist/node_modules/ahooks/es/useUpdateEffect/index.cjs.map +1 -0
  188. package/dist/node_modules/ahooks/es/useUpdateEffect/index.js +7 -0
  189. package/dist/node_modules/ahooks/es/useUpdateEffect/index.js.map +1 -0
  190. package/dist/node_modules/ahooks/es/useVirtualList/index.cjs +123 -0
  191. package/dist/node_modules/ahooks/es/useVirtualList/index.cjs.map +1 -0
  192. package/dist/node_modules/ahooks/es/useVirtualList/index.js +121 -0
  193. package/dist/node_modules/ahooks/es/useVirtualList/index.js.map +1 -0
  194. package/dist/node_modules/ahooks/es/utils/createEffectWithTarget.cjs +53 -0
  195. package/dist/node_modules/ahooks/es/utils/createEffectWithTarget.cjs.map +1 -0
  196. package/dist/node_modules/ahooks/es/utils/createEffectWithTarget.js +51 -0
  197. package/dist/node_modules/ahooks/es/utils/createEffectWithTarget.js.map +1 -0
  198. package/dist/node_modules/ahooks/es/utils/depsAreSame.cjs +16 -0
  199. package/dist/node_modules/ahooks/es/utils/depsAreSame.cjs.map +1 -0
  200. package/dist/node_modules/ahooks/es/utils/depsAreSame.js +14 -0
  201. package/dist/node_modules/ahooks/es/utils/depsAreSame.js.map +1 -0
  202. package/dist/node_modules/ahooks/es/utils/domTarget.cjs +27 -0
  203. package/dist/node_modules/ahooks/es/utils/domTarget.cjs.map +1 -0
  204. package/dist/node_modules/ahooks/es/utils/domTarget.js +25 -0
  205. package/dist/node_modules/ahooks/es/utils/domTarget.js.map +1 -0
  206. package/dist/node_modules/ahooks/es/utils/index.cjs +10 -0
  207. package/dist/node_modules/ahooks/es/utils/index.cjs.map +1 -0
  208. package/dist/node_modules/ahooks/es/utils/index.js +7 -0
  209. package/dist/node_modules/ahooks/es/utils/index.js.map +1 -0
  210. package/dist/node_modules/ahooks/es/utils/isBrowser.cjs +9 -0
  211. package/dist/node_modules/ahooks/es/utils/isBrowser.cjs.map +1 -0
  212. package/dist/node_modules/ahooks/es/utils/isBrowser.js +7 -0
  213. package/dist/node_modules/ahooks/es/utils/isBrowser.js.map +1 -0
  214. package/dist/node_modules/ahooks/es/utils/isDev.cjs +7 -0
  215. package/dist/node_modules/ahooks/es/utils/isDev.cjs.map +1 -0
  216. package/dist/node_modules/ahooks/es/utils/isDev.js +5 -0
  217. package/dist/node_modules/ahooks/es/utils/isDev.js.map +1 -0
  218. package/dist/node_modules/ahooks/es/utils/useEffectWithTarget.cjs +10 -0
  219. package/dist/node_modules/ahooks/es/utils/useEffectWithTarget.cjs.map +1 -0
  220. package/dist/node_modules/ahooks/es/utils/useEffectWithTarget.js +8 -0
  221. package/dist/node_modules/ahooks/es/utils/useEffectWithTarget.js.map +1 -0
  222. package/dist/node_modules/ahooks/es/utils/useIsomorphicLayoutEffectWithTarget.cjs +13 -0
  223. package/dist/node_modules/ahooks/es/utils/useIsomorphicLayoutEffectWithTarget.cjs.map +1 -0
  224. package/dist/node_modules/ahooks/es/utils/useIsomorphicLayoutEffectWithTarget.js +11 -0
  225. package/dist/node_modules/ahooks/es/utils/useIsomorphicLayoutEffectWithTarget.js.map +1 -0
  226. package/dist/node_modules/ahooks/es/utils/useLayoutEffectWithTarget.cjs +10 -0
  227. package/dist/node_modules/ahooks/es/utils/useLayoutEffectWithTarget.cjs.map +1 -0
  228. package/dist/node_modules/ahooks/es/utils/useLayoutEffectWithTarget.js +8 -0
  229. package/dist/node_modules/ahooks/es/utils/useLayoutEffectWithTarget.js.map +1 -0
  230. package/dist/packages/core/dist/index.cjs +23 -32
  231. package/dist/packages/core/dist/index.cjs.map +1 -1
  232. package/dist/packages/core/dist/index.js +23 -32
  233. package/dist/packages/core/dist/index.js.map +1 -1
  234. package/package.json +1 -1
@@ -1,9 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var _commonjsHelpers = require('./_commonjsHelpers.cjs');
4
- var index = require('../node_modules/.pnpm/@volcengine_console-web-sdk@6.2.0/node_modules/@volcengine/console-web-sdk/dist/js/treeshaking/index.cjs');
3
+ var cryptoJs = {exports: {}};
5
4
 
6
- var require$$0 = /*@__PURE__*/_commonjsHelpers.getAugmentedNamespace(index);
7
-
8
- module.exports = require$$0;
5
+ exports.__module = cryptoJs;
9
6
  //# sourceMappingURL=index4.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index4.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
1
+ {"version":3,"file":"index4.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,7 +1,4 @@
1
- import { getAugmentedNamespace } from './_commonjsHelpers.js';
2
- import * as index from '../node_modules/.pnpm/@volcengine_console-web-sdk@6.2.0/node_modules/@volcengine/console-web-sdk/dist/js/treeshaking/index.js';
1
+ var cryptoJs = {exports: {}};
3
2
 
4
- var require$$0 = /*@__PURE__*/getAugmentedNamespace(index);
5
-
6
- export { require$$0 as default };
3
+ export { cryptoJs as __module };
7
4
  //# sourceMappingURL=index4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index4.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
1
+ {"version":3,"file":"index4.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,6 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var cryptoJs = {exports: {}};
3
+ var _commonjsHelpers = require('./_commonjsHelpers.cjs');
4
+ var index = require('../node_modules/.pnpm/@volcengine_console-web-sdk@6.2.0/node_modules/@volcengine/console-web-sdk/dist/js/treeshaking/index.cjs');
4
5
 
5
- exports.__module = cryptoJs;
6
+ var require$$0 = /*@__PURE__*/_commonjsHelpers.getAugmentedNamespace(index);
7
+
8
+ module.exports = require$$0;
6
9
  //# sourceMappingURL=index5.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index5.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
1
+ {"version":3,"file":"index5.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -1,4 +1,7 @@
1
- var cryptoJs = {exports: {}};
1
+ import { getAugmentedNamespace } from './_commonjsHelpers.js';
2
+ import * as index from '../node_modules/.pnpm/@volcengine_console-web-sdk@6.2.0/node_modules/@volcengine/console-web-sdk/dist/js/treeshaking/index.js';
2
3
 
3
- export { cryptoJs as __module };
4
+ var require$$0 = /*@__PURE__*/getAugmentedNamespace(index);
5
+
6
+ export { require$$0 as default };
4
7
  //# sourceMappingURL=index5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index5.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index5.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
- var index = require('../../../../node_modules/.pnpm/ahooks@3.9.6_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/ahooks/es/useVirtualList/index.cjs');
5
+ var index = require('../../../../node_modules/ahooks/es/useVirtualList/index.cjs');
6
6
  var card = require('../../../../components/ui/card.cjs');
7
7
  var EventDetail = require('./EventDetail.cjs');
8
8
 
@@ -41,7 +41,7 @@ const Events = (props) => {
41
41
  if (selectedMessage) {
42
42
  return (jsxRuntime.jsx(card.Card, { className: "bg-background h-full overflow-hidden w-full border-none mt-2", children: jsxRuntime.jsx(EventDetail, { message: selectedMessage, onBack: () => setSelectedMessage(undefined) }) }));
43
43
  }
44
- return (jsxRuntime.jsx(card.Card, { className: "bg-background h-full flex flex-col w-full border-none", children: jsxRuntime.jsx(card.CardContent, { ref: containerRef, className: "flex-1 overflow-y-auto min-h-0 pt-2", children: events.length === 0 ? (jsxRuntime.jsx("div", { className: "text-muted-foreground", children: "\u6682\u65E0\u4E8B\u4EF6" })) : (jsxRuntime.jsx("div", { ref: wrapperRef, children: list.map(ele => {
44
+ return (jsxRuntime.jsx(card.Card, { className: "bg-background h-full flex flex-col w-full border-none", children: jsxRuntime.jsx(card.CardContent, { ref: containerRef, className: "flex-1 overflow-y-auto min-h-0 p-4", children: events.length === 0 ? (jsxRuntime.jsx("div", { className: "text-muted-foreground", children: "\u6682\u65E0\u4E8B\u4EF6" })) : (jsxRuntime.jsx("div", { ref: wrapperRef, children: list.map(ele => {
45
45
  const e = ele.data;
46
46
  return (jsxRuntime.jsx("div", { className: "rounded-md border cursor-pointer hover:bg-accent/50 transition-colors mb-2", onClick: () => setSelectedMessage(e), children: jsxRuntime.jsx("div", { className: "w-full", children: jsxRuntime.jsx("div", { className: "flex items-center justify-between px-4 py-3", children: jsxRuntime.jsxs("div", { className: "flex items-center gap-3 flex-1 min-w-0 mr-2 font-medium text-[#0C0D0E]", children: [jsxRuntime.jsx("div", { className: " text-muted-foreground shrink-0", children: ele.index }), jsxRuntime.jsx("div", { className: "truncate", children: renderSummary(e) })] }) }) }) }, e.id));
47
47
  }) })) }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../../src/adk/components/Debug/Events/index.tsx"],"sourcesContent":["import React, { useMemo, useState, useRef } from 'react';\nimport { useVirtualList } from 'ahooks';\nimport dayjs from 'dayjs';\nimport { EventsProps } from './types';\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '@/components/ui/collapsible';\nimport { Separator } from '@/components/ui/separator';\nimport { ADKMessage, MessageStatus } from '@chat-lab/core';\nimport Trace from '../Trace';\nimport { TraceSpan } from '../Trace/types';\nimport EventDetail from './EventDetail';\nimport {\n Sheet,\n SheetContent,\n SheetHeader,\n SheetTitle,\n} from '@/components/ui/sheet';\n\nconst renderSummary = (message: ADKMessage['adkResponses'][number]) => {\n const parts = (message?.content?.parts || []).map((c: any) => {\n if (c.functionCall) return `functionCall:${c.functionCall.name}`;\n if (c.functionResponse)\n return `functionResponse:${c.functionResponse.name}`;\n if (c.text) return `text:${c.text}`;\n if (c.inlineData) return `inlineData:${c.inlineData.mimeType}`;\n if (c.fileData) return `fileData:${c.fileData.displayName}`;\n return 'unknown';\n });\n const s = parts.join(' ');\n return s;\n};\nconst Events = (props: EventsProps) => {\n const { messages } = props;\n const [selectedMessage, setSelectedMessage] = useState<\n ADKMessage['adkResponses'][number] | undefined\n >();\n\n const containerRef = useRef(null);\n const wrapperRef = useRef(null);\n\n const events = useMemo(\n () =>\n messages\n .map(msg => msg.adkResponses)\n .filter(Boolean)\n .flat(),\n [messages],\n );\n\n const [list] = useVirtualList(events, {\n containerTarget: containerRef,\n wrapperTarget: wrapperRef,\n itemHeight: 60,\n overscan: 10,\n });\n\n if (selectedMessage) {\n return (\n <Card className=\"bg-background h-full overflow-hidden w-full border-none mt-2\">\n <EventDetail\n message={selectedMessage}\n onBack={() => setSelectedMessage(undefined)}\n />\n </Card>\n );\n }\n\n return (\n <Card className=\"bg-background h-full flex flex-col w-full border-none\">\n <CardContent\n ref={containerRef}\n className=\"flex-1 overflow-y-auto min-h-0 pt-2\"\n >\n {events.length === 0 ? (\n <div className=\"text-muted-foreground\">暂无事件</div>\n ) : (\n <div ref={wrapperRef}>\n {list.map(ele => {\n const e = ele.data;\n return (\n <div\n key={e.id}\n className=\"rounded-md border cursor-pointer hover:bg-accent/50 transition-colors mb-2\"\n onClick={() => setSelectedMessage(e)}\n >\n <div className=\"w-full\">\n <div className=\"flex items-center justify-between px-4 py-3\">\n <div className=\"flex items-center gap-3 flex-1 min-w-0 mr-2 font-medium text-[#0C0D0E]\">\n <div className=\" text-muted-foreground shrink-0\">\n {ele.index}\n </div>\n <div className=\"truncate\">{renderSummary(e)}</div>\n </div>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n </CardContent>\n </Card>\n );\n};\n\nexport default Events;\n"],"names":["useState","useRef","useMemo","useVirtualList","_jsx","Card","CardContent","_jsxs"],"mappings":";;;;;;;;AAsBA,MAAM,aAAa,GAAG,CAAC,OAA2C,KAAI;AACpE,IAAA,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAM,KAAI;QAC3D,IAAI,CAAC,CAAC,YAAY;AAAE,YAAA,OAAO,gBAAgB,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACjE,IAAI,CAAC,CAAC,gBAAgB;AACpB,YAAA,OAAO,oBAAoB,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,CAAC,IAAI;AAAE,YAAA,OAAO,CAAQ,KAAA,EAAA,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,CAAC,UAAU;AAAE,YAAA,OAAO,cAAc,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC/D,IAAI,CAAC,CAAC,QAAQ;AAAE,YAAA,OAAO,YAAY,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;AAC5D,QAAA,OAAO,SAAS,CAAC;AACnB,KAAC,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,IAAA,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AACF,MAAM,MAAM,GAAG,CAAC,KAAkB,KAAI;AACpC,IAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3B,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAGA,cAAQ,EAEnD,CAAC;AAEJ,IAAA,MAAM,YAAY,GAAGC,YAAM,CAAC,IAAI,CAAC,CAAC;AAClC,IAAA,MAAM,UAAU,GAAGA,YAAM,CAAC,IAAI,CAAC,CAAC;AAEhC,IAAA,MAAM,MAAM,GAAGC,aAAO,CACpB,MACE,QAAQ;SACL,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC;SAC5B,MAAM,CAAC,OAAO,CAAC;AACf,SAAA,IAAI,EAAE,EACX,CAAC,QAAQ,CAAC,CACX,CAAC;AAEF,IAAA,MAAM,CAAC,IAAI,CAAC,GAAGC,KAAc,CAAC,MAAM,EAAE;AACpC,QAAA,eAAe,EAAE,YAAY;AAC7B,QAAA,aAAa,EAAE,UAAU;AACzB,QAAA,UAAU,EAAE,EAAE;AACd,QAAA,QAAQ,EAAE,EAAE;AACb,KAAA,CAAC,CAAC;IAEH,IAAI,eAAe,EAAE;QACnB,QACEC,cAAC,CAAAC,SAAI,EAAC,EAAA,SAAS,EAAC,8DAA8D,EAC5E,QAAA,EAAAD,cAAA,CAAC,WAAW,EAAA,EACV,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,kBAAkB,CAAC,SAAS,CAAC,EAAA,CAC3C,EACG,CAAA,EACP;KACH;IAED,QACEA,eAACC,SAAI,EAAA,EAAC,SAAS,EAAC,uDAAuD,EACrE,QAAA,EAAAD,cAAA,CAACE,gBAAW,EAAA,EACV,GAAG,EAAE,YAAY,EACjB,SAAS,EAAC,qCAAqC,EAE9C,QAAA,EAAA,MAAM,CAAC,MAAM,KAAK,CAAC,IAClBF,cAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAAA,0BAAA,EAAA,CAAW,KAEjDA,cAAK,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,UAAU,EACjB,QAAA,EAAA,IAAI,CAAC,GAAG,CAAC,GAAG,IAAG;AACd,oBAAA,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;AACnB,oBAAA,QACEA,cAAA,CAAA,KAAA,EAAA,EAEE,SAAS,EAAC,4EAA4E,EACtF,OAAO,EAAE,MAAM,kBAAkB,CAAC,CAAC,CAAC,EAAA,QAAA,EAEpCA,cAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,QAAQ,EACrB,QAAA,EAAAA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6CAA6C,EAAA,QAAA,EAC1DG,eAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,wEAAwE,EACrF,QAAA,EAAA,CAAAH,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAC7C,GAAG,CAAC,KAAK,EAAA,CACN,EACNA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,UAAU,EAAA,QAAA,EAAE,aAAa,CAAC,CAAC,CAAC,EAAO,CAAA,CAAA,EAAA,CAC9C,EACF,CAAA,EAAA,CACF,EAbD,EAAA,CAAC,CAAC,EAAE,CAcL,EACN;AACJ,iBAAC,CAAC,EACE,CAAA,CACP,EACW,CAAA,EAAA,CACT,EACP;AACJ;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../../src/adk/components/Debug/Events/index.tsx"],"sourcesContent":["import React, { useMemo, useState, useRef } from 'react';\nimport { useVirtualList } from 'ahooks';\nimport dayjs from 'dayjs';\nimport { EventsProps } from './types';\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '@/components/ui/collapsible';\nimport { Separator } from '@/components/ui/separator';\nimport { ADKMessage, MessageStatus } from '@chat-lab/core';\nimport Trace from '../Trace';\nimport { TraceSpan } from '../Trace/types';\nimport EventDetail from './EventDetail';\nimport {\n Sheet,\n SheetContent,\n SheetHeader,\n SheetTitle,\n} from '@/components/ui/sheet';\n\nconst renderSummary = (message: ADKMessage['adkResponses'][number]) => {\n const parts = (message?.content?.parts || []).map((c: any) => {\n if (c.functionCall) return `functionCall:${c.functionCall.name}`;\n if (c.functionResponse)\n return `functionResponse:${c.functionResponse.name}`;\n if (c.text) return `text:${c.text}`;\n if (c.inlineData) return `inlineData:${c.inlineData.mimeType}`;\n if (c.fileData) return `fileData:${c.fileData.displayName}`;\n return 'unknown';\n });\n const s = parts.join(' ');\n return s;\n};\nconst Events = (props: EventsProps) => {\n const { messages } = props;\n const [selectedMessage, setSelectedMessage] = useState<\n ADKMessage['adkResponses'][number] | undefined\n >();\n\n const containerRef = useRef(null);\n const wrapperRef = useRef(null);\n\n const events = useMemo(\n () =>\n messages\n .map(msg => msg.adkResponses)\n .filter(Boolean)\n .flat(),\n [messages],\n );\n\n const [list] = useVirtualList(events, {\n containerTarget: containerRef,\n wrapperTarget: wrapperRef,\n itemHeight: 60,\n overscan: 10,\n });\n\n if (selectedMessage) {\n return (\n <Card className=\"bg-background h-full overflow-hidden w-full border-none mt-2\">\n <EventDetail\n message={selectedMessage}\n onBack={() => setSelectedMessage(undefined)}\n />\n </Card>\n );\n }\n\n return (\n <Card className=\"bg-background h-full flex flex-col w-full border-none\">\n <CardContent\n ref={containerRef}\n className=\"flex-1 overflow-y-auto min-h-0 p-4\"\n >\n {events.length === 0 ? (\n <div className=\"text-muted-foreground\">暂无事件</div>\n ) : (\n <div ref={wrapperRef}>\n {list.map(ele => {\n const e = ele.data;\n return (\n <div\n key={e.id}\n className=\"rounded-md border cursor-pointer hover:bg-accent/50 transition-colors mb-2\"\n onClick={() => setSelectedMessage(e)}\n >\n <div className=\"w-full\">\n <div className=\"flex items-center justify-between px-4 py-3\">\n <div className=\"flex items-center gap-3 flex-1 min-w-0 mr-2 font-medium text-[#0C0D0E]\">\n <div className=\" text-muted-foreground shrink-0\">\n {ele.index}\n </div>\n <div className=\"truncate\">{renderSummary(e)}</div>\n </div>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n </CardContent>\n </Card>\n );\n};\n\nexport default Events;\n"],"names":["useState","useRef","useMemo","useVirtualList","_jsx","Card","CardContent","_jsxs"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { useState, useRef, useMemo } from 'react';
3
- import useVirtualList from '../../../../node_modules/.pnpm/ahooks@3.9.6_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/ahooks/es/useVirtualList/index.js';
3
+ import useVirtualList from '../../../../node_modules/ahooks/es/useVirtualList/index.js';
4
4
  import { Card, CardContent } from '../../../../components/ui/card.js';
5
5
  import EventDetail from './EventDetail.js';
6
6
 
@@ -39,7 +39,7 @@ const Events = (props) => {
39
39
  if (selectedMessage) {
40
40
  return (jsx(Card, { className: "bg-background h-full overflow-hidden w-full border-none mt-2", children: jsx(EventDetail, { message: selectedMessage, onBack: () => setSelectedMessage(undefined) }) }));
41
41
  }
42
- return (jsx(Card, { className: "bg-background h-full flex flex-col w-full border-none", children: jsx(CardContent, { ref: containerRef, className: "flex-1 overflow-y-auto min-h-0 pt-2", children: events.length === 0 ? (jsx("div", { className: "text-muted-foreground", children: "\u6682\u65E0\u4E8B\u4EF6" })) : (jsx("div", { ref: wrapperRef, children: list.map(ele => {
42
+ return (jsx(Card, { className: "bg-background h-full flex flex-col w-full border-none", children: jsx(CardContent, { ref: containerRef, className: "flex-1 overflow-y-auto min-h-0 p-4", children: events.length === 0 ? (jsx("div", { className: "text-muted-foreground", children: "\u6682\u65E0\u4E8B\u4EF6" })) : (jsx("div", { ref: wrapperRef, children: list.map(ele => {
43
43
  const e = ele.data;
44
44
  return (jsx("div", { className: "rounded-md border cursor-pointer hover:bg-accent/50 transition-colors mb-2", onClick: () => setSelectedMessage(e), children: jsx("div", { className: "w-full", children: jsx("div", { className: "flex items-center justify-between px-4 py-3", children: jsxs("div", { className: "flex items-center gap-3 flex-1 min-w-0 mr-2 font-medium text-[#0C0D0E]", children: [jsx("div", { className: " text-muted-foreground shrink-0", children: ele.index }), jsx("div", { className: "truncate", children: renderSummary(e) })] }) }) }) }, e.id));
45
45
  }) })) }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/adk/components/Debug/Events/index.tsx"],"sourcesContent":["import React, { useMemo, useState, useRef } from 'react';\nimport { useVirtualList } from 'ahooks';\nimport dayjs from 'dayjs';\nimport { EventsProps } from './types';\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '@/components/ui/collapsible';\nimport { Separator } from '@/components/ui/separator';\nimport { ADKMessage, MessageStatus } from '@chat-lab/core';\nimport Trace from '../Trace';\nimport { TraceSpan } from '../Trace/types';\nimport EventDetail from './EventDetail';\nimport {\n Sheet,\n SheetContent,\n SheetHeader,\n SheetTitle,\n} from '@/components/ui/sheet';\n\nconst renderSummary = (message: ADKMessage['adkResponses'][number]) => {\n const parts = (message?.content?.parts || []).map((c: any) => {\n if (c.functionCall) return `functionCall:${c.functionCall.name}`;\n if (c.functionResponse)\n return `functionResponse:${c.functionResponse.name}`;\n if (c.text) return `text:${c.text}`;\n if (c.inlineData) return `inlineData:${c.inlineData.mimeType}`;\n if (c.fileData) return `fileData:${c.fileData.displayName}`;\n return 'unknown';\n });\n const s = parts.join(' ');\n return s;\n};\nconst Events = (props: EventsProps) => {\n const { messages } = props;\n const [selectedMessage, setSelectedMessage] = useState<\n ADKMessage['adkResponses'][number] | undefined\n >();\n\n const containerRef = useRef(null);\n const wrapperRef = useRef(null);\n\n const events = useMemo(\n () =>\n messages\n .map(msg => msg.adkResponses)\n .filter(Boolean)\n .flat(),\n [messages],\n );\n\n const [list] = useVirtualList(events, {\n containerTarget: containerRef,\n wrapperTarget: wrapperRef,\n itemHeight: 60,\n overscan: 10,\n });\n\n if (selectedMessage) {\n return (\n <Card className=\"bg-background h-full overflow-hidden w-full border-none mt-2\">\n <EventDetail\n message={selectedMessage}\n onBack={() => setSelectedMessage(undefined)}\n />\n </Card>\n );\n }\n\n return (\n <Card className=\"bg-background h-full flex flex-col w-full border-none\">\n <CardContent\n ref={containerRef}\n className=\"flex-1 overflow-y-auto min-h-0 pt-2\"\n >\n {events.length === 0 ? (\n <div className=\"text-muted-foreground\">暂无事件</div>\n ) : (\n <div ref={wrapperRef}>\n {list.map(ele => {\n const e = ele.data;\n return (\n <div\n key={e.id}\n className=\"rounded-md border cursor-pointer hover:bg-accent/50 transition-colors mb-2\"\n onClick={() => setSelectedMessage(e)}\n >\n <div className=\"w-full\">\n <div className=\"flex items-center justify-between px-4 py-3\">\n <div className=\"flex items-center gap-3 flex-1 min-w-0 mr-2 font-medium text-[#0C0D0E]\">\n <div className=\" text-muted-foreground shrink-0\">\n {ele.index}\n </div>\n <div className=\"truncate\">{renderSummary(e)}</div>\n </div>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n </CardContent>\n </Card>\n );\n};\n\nexport default Events;\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;AAsBA,MAAM,aAAa,GAAG,CAAC,OAA2C,KAAI;AACpE,IAAA,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAM,KAAI;QAC3D,IAAI,CAAC,CAAC,YAAY;AAAE,YAAA,OAAO,gBAAgB,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACjE,IAAI,CAAC,CAAC,gBAAgB;AACpB,YAAA,OAAO,oBAAoB,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,CAAC,IAAI;AAAE,YAAA,OAAO,CAAQ,KAAA,EAAA,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,CAAC,UAAU;AAAE,YAAA,OAAO,cAAc,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC/D,IAAI,CAAC,CAAC,QAAQ;AAAE,YAAA,OAAO,YAAY,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;AAC5D,QAAA,OAAO,SAAS,CAAC;AACnB,KAAC,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,IAAA,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AACF,MAAM,MAAM,GAAG,CAAC,KAAkB,KAAI;AACpC,IAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3B,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,EAEnD,CAAC;AAEJ,IAAA,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAClC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAEhC,IAAA,MAAM,MAAM,GAAG,OAAO,CACpB,MACE,QAAQ;SACL,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC;SAC5B,MAAM,CAAC,OAAO,CAAC;AACf,SAAA,IAAI,EAAE,EACX,CAAC,QAAQ,CAAC,CACX,CAAC;AAEF,IAAA,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE;AACpC,QAAA,eAAe,EAAE,YAAY;AAC7B,QAAA,aAAa,EAAE,UAAU;AACzB,QAAA,UAAU,EAAE,EAAE;AACd,QAAA,QAAQ,EAAE,EAAE;AACb,KAAA,CAAC,CAAC;IAEH,IAAI,eAAe,EAAE;QACnB,QACEA,GAAC,CAAA,IAAI,EAAC,EAAA,SAAS,EAAC,8DAA8D,EAC5E,QAAA,EAAAA,GAAA,CAAC,WAAW,EAAA,EACV,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,kBAAkB,CAAC,SAAS,CAAC,EAAA,CAC3C,EACG,CAAA,EACP;KACH;IAED,QACEA,IAAC,IAAI,EAAA,EAAC,SAAS,EAAC,uDAAuD,EACrE,QAAA,EAAAA,GAAA,CAAC,WAAW,EAAA,EACV,GAAG,EAAE,YAAY,EACjB,SAAS,EAAC,qCAAqC,EAE9C,QAAA,EAAA,MAAM,CAAC,MAAM,KAAK,CAAC,IAClBA,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAAA,0BAAA,EAAA,CAAW,KAEjDA,GAAK,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,UAAU,EACjB,QAAA,EAAA,IAAI,CAAC,GAAG,CAAC,GAAG,IAAG;AACd,oBAAA,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;AACnB,oBAAA,QACEA,GAAA,CAAA,KAAA,EAAA,EAEE,SAAS,EAAC,4EAA4E,EACtF,OAAO,EAAE,MAAM,kBAAkB,CAAC,CAAC,CAAC,EAAA,QAAA,EAEpCA,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,QAAQ,EACrB,QAAA,EAAAA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6CAA6C,EAAA,QAAA,EAC1DC,IAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,wEAAwE,EACrF,QAAA,EAAA,CAAAD,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAC7C,GAAG,CAAC,KAAK,EAAA,CACN,EACNA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,UAAU,EAAA,QAAA,EAAE,aAAa,CAAC,CAAC,CAAC,EAAO,CAAA,CAAA,EAAA,CAC9C,EACF,CAAA,EAAA,CACF,EAbD,EAAA,CAAC,CAAC,EAAE,CAcL,EACN;AACJ,iBAAC,CAAC,EACE,CAAA,CACP,EACW,CAAA,EAAA,CACT,EACP;AACJ;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/adk/components/Debug/Events/index.tsx"],"sourcesContent":["import React, { useMemo, useState, useRef } from 'react';\nimport { useVirtualList } from 'ahooks';\nimport dayjs from 'dayjs';\nimport { EventsProps } from './types';\nimport { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '@/components/ui/collapsible';\nimport { Separator } from '@/components/ui/separator';\nimport { ADKMessage, MessageStatus } from '@chat-lab/core';\nimport Trace from '../Trace';\nimport { TraceSpan } from '../Trace/types';\nimport EventDetail from './EventDetail';\nimport {\n Sheet,\n SheetContent,\n SheetHeader,\n SheetTitle,\n} from '@/components/ui/sheet';\n\nconst renderSummary = (message: ADKMessage['adkResponses'][number]) => {\n const parts = (message?.content?.parts || []).map((c: any) => {\n if (c.functionCall) return `functionCall:${c.functionCall.name}`;\n if (c.functionResponse)\n return `functionResponse:${c.functionResponse.name}`;\n if (c.text) return `text:${c.text}`;\n if (c.inlineData) return `inlineData:${c.inlineData.mimeType}`;\n if (c.fileData) return `fileData:${c.fileData.displayName}`;\n return 'unknown';\n });\n const s = parts.join(' ');\n return s;\n};\nconst Events = (props: EventsProps) => {\n const { messages } = props;\n const [selectedMessage, setSelectedMessage] = useState<\n ADKMessage['adkResponses'][number] | undefined\n >();\n\n const containerRef = useRef(null);\n const wrapperRef = useRef(null);\n\n const events = useMemo(\n () =>\n messages\n .map(msg => msg.adkResponses)\n .filter(Boolean)\n .flat(),\n [messages],\n );\n\n const [list] = useVirtualList(events, {\n containerTarget: containerRef,\n wrapperTarget: wrapperRef,\n itemHeight: 60,\n overscan: 10,\n });\n\n if (selectedMessage) {\n return (\n <Card className=\"bg-background h-full overflow-hidden w-full border-none mt-2\">\n <EventDetail\n message={selectedMessage}\n onBack={() => setSelectedMessage(undefined)}\n />\n </Card>\n );\n }\n\n return (\n <Card className=\"bg-background h-full flex flex-col w-full border-none\">\n <CardContent\n ref={containerRef}\n className=\"flex-1 overflow-y-auto min-h-0 p-4\"\n >\n {events.length === 0 ? (\n <div className=\"text-muted-foreground\">暂无事件</div>\n ) : (\n <div ref={wrapperRef}>\n {list.map(ele => {\n const e = ele.data;\n return (\n <div\n key={e.id}\n className=\"rounded-md border cursor-pointer hover:bg-accent/50 transition-colors mb-2\"\n onClick={() => setSelectedMessage(e)}\n >\n <div className=\"w-full\">\n <div className=\"flex items-center justify-between px-4 py-3\">\n <div className=\"flex items-center gap-3 flex-1 min-w-0 mr-2 font-medium text-[#0C0D0E]\">\n <div className=\" text-muted-foreground shrink-0\">\n {ele.index}\n </div>\n <div className=\"truncate\">{renderSummary(e)}</div>\n </div>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n </CardContent>\n </Card>\n );\n};\n\nexport default Events;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -27,7 +27,6 @@ const TraceDetail = (props) => {
27
27
  display: 'flex',
28
28
  justifyContent: 'space-between',
29
29
  alignItems: 'center',
30
- height: '100%',
31
30
  }, children: [jsxRuntime.jsx("div", { children: jsxRuntime.jsx("div", { className: "text-xs text-muted-foreground font-mono break-all", children: "Event" }) }), onCancel && (jsxRuntime.jsx(button.Button, { onClick: onCancel, type: "primary", children: jsxRuntime.jsx(x.default, {}) }))] }), jsxRuntime.jsx(main, { src: span, name: null, displayDataTypes: false, displayObjectSize: false, enableClipboard: true, collapsed: 2, theme: "rjv-default", style: {
32
31
  fontSize: '12px',
33
32
  fontFamily: 'monospace',
@@ -1 +1 @@
1
- {"version":3,"file":"TraceDetail.cjs","sources":["../../../../../src/adk/components/Debug/Trace/TraceDetail.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { TraceSpan } from './types';\nimport { Button } from '@/components/ui/button';\nimport { ClosedCaption, X } from 'lucide-react';\nimport ReactJson from 'react-json-view';\nimport { omit } from 'lodash-es';\n\nconst TraceDetail = (props: {\n selectedSpan?: TraceSpan;\n onCancel?: () => void;\n}) => {\n const { selectedSpan, onCancel } = props;\n\n const span = omit(selectedSpan, 'children');\n // const flatSpans = useMemo(() => {\n // if (!selectedSpan) return [];\n // const result: TraceSpan[] = [];\n // const traverse = (span: TraceSpan) => {\n // const { children, ...rest } = span;\n // result.push(rest as TraceSpan);\n // if (span.children) {\n // span.children.forEach(traverse);\n // }\n // };\n // traverse(selectedSpan);\n // return result;\n // }, [selectedSpan]);\n\n // if (!selectedSpan) return null;\n\n return (\n <div className=\"flex flex-col overflow-auto pl-4 bg-muted/10 h-full border-t\">\n <div className=\"space-y-6 h-full flex flex-col\">\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n height: '100%',\n }}\n >\n <div>\n <div className=\"text-xs text-muted-foreground font-mono break-all\">\n Event\n </div>\n </div>\n {onCancel && (\n <Button onClick={onCancel} type=\"primary\">\n <X />\n </Button>\n )}\n </div>\n <ReactJson\n src={span}\n name={null}\n displayDataTypes={false}\n displayObjectSize={false}\n enableClipboard={true}\n collapsed={2}\n theme=\"rjv-default\"\n style={{\n fontSize: '12px',\n fontFamily: 'monospace',\n flex: '1 1 auto',\n overflow: 'auto',\n }}\n />\n </div>\n </div>\n );\n};\n\nexport default TraceDetail;\n"],"names":["_jsx","_jsxs","Button","X","ReactJson"],"mappings":";;;;;;;;AAOA,MAAM,WAAW,GAAG,CAAC,KAGpB,KAAI;AACH,IAAA,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEzC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;;;;;;;;;;;;;;;AAiB5C,IAAA,QACEA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,8DAA8D,EAAA,QAAA,EAC3EC,eAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,gCAAgC,EAC7C,QAAA,EAAA,CAAAA,eAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE;AACL,wBAAA,OAAO,EAAE,MAAM;AACf,wBAAA,cAAc,EAAE,eAAe;AAC/B,wBAAA,UAAU,EAAE,QAAQ;AACpB,wBAAA,MAAM,EAAE,MAAM;AACf,qBAAA,EAAA,QAAA,EAAA,CAEDD,cACE,CAAA,KAAA,EAAA,EAAA,QAAA,EAAAA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mDAAmD,EAAA,QAAA,EAAA,OAAA,EAAA,CAE5D,EACF,CAAA,EACL,QAAQ,KACPA,cAAA,CAACE,aAAM,EAAA,EAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAC,SAAS,EAAA,QAAA,EACvCF,cAAC,CAAAG,SAAC,EAAG,EAAA,CAAA,EAAA,CACE,CACV,CAAA,EAAA,CACG,EACNH,cAAA,CAACI,IAAS,EAAA,EACR,GAAG,EAAE,IAAI,EACT,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,KAAK,EACvB,iBAAiB,EAAE,KAAK,EACxB,eAAe,EAAE,IAAI,EACrB,SAAS,EAAE,CAAC,EACZ,KAAK,EAAC,aAAa,EACnB,KAAK,EAAE;AACL,wBAAA,QAAQ,EAAE,MAAM;AAChB,wBAAA,UAAU,EAAE,WAAW;AACvB,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,QAAQ,EAAE,MAAM;qBACjB,EACD,CAAA,CAAA,EAAA,CACE,EACF,CAAA,EACN;AACJ;;;;"}
1
+ {"version":3,"file":"TraceDetail.cjs","sources":["../../../../../src/adk/components/Debug/Trace/TraceDetail.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { TraceSpan } from './types';\nimport { Button } from '@/components/ui/button';\nimport { ClosedCaption, X } from 'lucide-react';\nimport ReactJson from 'react-json-view';\nimport { omit } from 'lodash-es';\n\nconst TraceDetail = (props: {\n selectedSpan?: TraceSpan;\n onCancel?: () => void;\n}) => {\n const { selectedSpan, onCancel } = props;\n\n const span = omit(selectedSpan, 'children');\n // const flatSpans = useMemo(() => {\n // if (!selectedSpan) return [];\n // const result: TraceSpan[] = [];\n // const traverse = (span: TraceSpan) => {\n // const { children, ...rest } = span;\n // result.push(rest as TraceSpan);\n // if (span.children) {\n // span.children.forEach(traverse);\n // }\n // };\n // traverse(selectedSpan);\n // return result;\n // }, [selectedSpan]);\n\n // if (!selectedSpan) return null;\n\n return (\n <div className=\"flex flex-col overflow-auto pl-4 bg-muted/10 h-full border-t\">\n <div className=\"space-y-6 h-full flex flex-col\">\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <div>\n <div className=\"text-xs text-muted-foreground font-mono break-all\">\n Event\n </div>\n </div>\n {onCancel && (\n <Button onClick={onCancel} type=\"primary\">\n <X />\n </Button>\n )}\n </div>\n <ReactJson\n src={span}\n name={null}\n displayDataTypes={false}\n displayObjectSize={false}\n enableClipboard={true}\n collapsed={2}\n theme=\"rjv-default\"\n style={{\n fontSize: '12px',\n fontFamily: 'monospace',\n flex: '1 1 auto',\n overflow: 'auto',\n }}\n />\n </div>\n </div>\n );\n};\n\nexport default TraceDetail;\n"],"names":["_jsx","_jsxs","Button","X","ReactJson"],"mappings":";;;;;;;;AAOA,MAAM,WAAW,GAAG,CAAC,KAGpB,KAAI;AACH,IAAA,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEzC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;;;;;;;;;;;;;;;AAiB5C,IAAA,QACEA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,8DAA8D,EAAA,QAAA,EAC3EC,eAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,gCAAgC,EAC7C,QAAA,EAAA,CAAAA,eAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE;AACL,wBAAA,OAAO,EAAE,MAAM;AACf,wBAAA,cAAc,EAAE,eAAe;AAC/B,wBAAA,UAAU,EAAE,QAAQ;AACrB,qBAAA,EAAA,QAAA,EAAA,CAEDD,cACE,CAAA,KAAA,EAAA,EAAA,QAAA,EAAAA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mDAAmD,EAAA,QAAA,EAAA,OAAA,EAAA,CAE5D,EACF,CAAA,EACL,QAAQ,KACPA,cAAA,CAACE,aAAM,EAAA,EAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAC,SAAS,EAAA,QAAA,EACvCF,cAAC,CAAAG,SAAC,EAAG,EAAA,CAAA,EAAA,CACE,CACV,CAAA,EAAA,CACG,EACNH,cAAA,CAACI,IAAS,EAAA,EACR,GAAG,EAAE,IAAI,EACT,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,KAAK,EACvB,iBAAiB,EAAE,KAAK,EACxB,eAAe,EAAE,IAAI,EACrB,SAAS,EAAE,CAAC,EACZ,KAAK,EAAC,aAAa,EACnB,KAAK,EAAE;AACL,wBAAA,QAAQ,EAAE,MAAM;AAChB,wBAAA,UAAU,EAAE,WAAW;AACvB,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,QAAQ,EAAE,MAAM;qBACjB,EACD,CAAA,CAAA,EAAA,CACE,EACF,CAAA,EACN;AACJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"TraceDetail.d.ts","sourceRoot":"","sources":["../../../../../src/adk/components/Debug/Trace/TraceDetail.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAMpC,QAAA,MAAM,WAAW,GAAI,OAAO;IAC1B,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,gBA4DA,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"TraceDetail.d.ts","sourceRoot":"","sources":["../../../../../src/adk/components/Debug/Trace/TraceDetail.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAMpC,QAAA,MAAM,WAAW,GAAI,OAAO;IAC1B,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,gBA2DA,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -25,7 +25,6 @@ const TraceDetail = (props) => {
25
25
  display: 'flex',
26
26
  justifyContent: 'space-between',
27
27
  alignItems: 'center',
28
- height: '100%',
29
28
  }, children: [jsx("div", { children: jsx("div", { className: "text-xs text-muted-foreground font-mono break-all", children: "Event" }) }), onCancel && (jsx(Button, { onClick: onCancel, type: "primary", children: jsx(X, {}) }))] }), jsx(ReactJson, { src: span, name: null, displayDataTypes: false, displayObjectSize: false, enableClipboard: true, collapsed: 2, theme: "rjv-default", style: {
30
29
  fontSize: '12px',
31
30
  fontFamily: 'monospace',
@@ -1 +1 @@
1
- {"version":3,"file":"TraceDetail.js","sources":["../../../../../src/adk/components/Debug/Trace/TraceDetail.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { TraceSpan } from './types';\nimport { Button } from '@/components/ui/button';\nimport { ClosedCaption, X } from 'lucide-react';\nimport ReactJson from 'react-json-view';\nimport { omit } from 'lodash-es';\n\nconst TraceDetail = (props: {\n selectedSpan?: TraceSpan;\n onCancel?: () => void;\n}) => {\n const { selectedSpan, onCancel } = props;\n\n const span = omit(selectedSpan, 'children');\n // const flatSpans = useMemo(() => {\n // if (!selectedSpan) return [];\n // const result: TraceSpan[] = [];\n // const traverse = (span: TraceSpan) => {\n // const { children, ...rest } = span;\n // result.push(rest as TraceSpan);\n // if (span.children) {\n // span.children.forEach(traverse);\n // }\n // };\n // traverse(selectedSpan);\n // return result;\n // }, [selectedSpan]);\n\n // if (!selectedSpan) return null;\n\n return (\n <div className=\"flex flex-col overflow-auto pl-4 bg-muted/10 h-full border-t\">\n <div className=\"space-y-6 h-full flex flex-col\">\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n height: '100%',\n }}\n >\n <div>\n <div className=\"text-xs text-muted-foreground font-mono break-all\">\n Event\n </div>\n </div>\n {onCancel && (\n <Button onClick={onCancel} type=\"primary\">\n <X />\n </Button>\n )}\n </div>\n <ReactJson\n src={span}\n name={null}\n displayDataTypes={false}\n displayObjectSize={false}\n enableClipboard={true}\n collapsed={2}\n theme=\"rjv-default\"\n style={{\n fontSize: '12px',\n fontFamily: 'monospace',\n flex: '1 1 auto',\n overflow: 'auto',\n }}\n />\n </div>\n </div>\n );\n};\n\nexport default TraceDetail;\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;AAOA,MAAM,WAAW,GAAG,CAAC,KAGpB,KAAI;AACH,IAAA,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEzC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;;;;;;;;;;;;;;;AAiB5C,IAAA,QACEA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,8DAA8D,EAAA,QAAA,EAC3EC,IAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,gCAAgC,EAC7C,QAAA,EAAA,CAAAA,IAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE;AACL,wBAAA,OAAO,EAAE,MAAM;AACf,wBAAA,cAAc,EAAE,eAAe;AAC/B,wBAAA,UAAU,EAAE,QAAQ;AACpB,wBAAA,MAAM,EAAE,MAAM;AACf,qBAAA,EAAA,QAAA,EAAA,CAEDD,GACE,CAAA,KAAA,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mDAAmD,EAAA,QAAA,EAAA,OAAA,EAAA,CAE5D,EACF,CAAA,EACL,QAAQ,KACPA,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAC,SAAS,EAAA,QAAA,EACvCA,GAAC,CAAA,CAAC,EAAG,EAAA,CAAA,EAAA,CACE,CACV,CAAA,EAAA,CACG,EACNA,GAAA,CAAC,SAAS,EAAA,EACR,GAAG,EAAE,IAAI,EACT,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,KAAK,EACvB,iBAAiB,EAAE,KAAK,EACxB,eAAe,EAAE,IAAI,EACrB,SAAS,EAAE,CAAC,EACZ,KAAK,EAAC,aAAa,EACnB,KAAK,EAAE;AACL,wBAAA,QAAQ,EAAE,MAAM;AAChB,wBAAA,UAAU,EAAE,WAAW;AACvB,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,QAAQ,EAAE,MAAM;qBACjB,EACD,CAAA,CAAA,EAAA,CACE,EACF,CAAA,EACN;AACJ;;;;"}
1
+ {"version":3,"file":"TraceDetail.js","sources":["../../../../../src/adk/components/Debug/Trace/TraceDetail.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { TraceSpan } from './types';\nimport { Button } from '@/components/ui/button';\nimport { ClosedCaption, X } from 'lucide-react';\nimport ReactJson from 'react-json-view';\nimport { omit } from 'lodash-es';\n\nconst TraceDetail = (props: {\n selectedSpan?: TraceSpan;\n onCancel?: () => void;\n}) => {\n const { selectedSpan, onCancel } = props;\n\n const span = omit(selectedSpan, 'children');\n // const flatSpans = useMemo(() => {\n // if (!selectedSpan) return [];\n // const result: TraceSpan[] = [];\n // const traverse = (span: TraceSpan) => {\n // const { children, ...rest } = span;\n // result.push(rest as TraceSpan);\n // if (span.children) {\n // span.children.forEach(traverse);\n // }\n // };\n // traverse(selectedSpan);\n // return result;\n // }, [selectedSpan]);\n\n // if (!selectedSpan) return null;\n\n return (\n <div className=\"flex flex-col overflow-auto pl-4 bg-muted/10 h-full border-t\">\n <div className=\"space-y-6 h-full flex flex-col\">\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <div>\n <div className=\"text-xs text-muted-foreground font-mono break-all\">\n Event\n </div>\n </div>\n {onCancel && (\n <Button onClick={onCancel} type=\"primary\">\n <X />\n </Button>\n )}\n </div>\n <ReactJson\n src={span}\n name={null}\n displayDataTypes={false}\n displayObjectSize={false}\n enableClipboard={true}\n collapsed={2}\n theme=\"rjv-default\"\n style={{\n fontSize: '12px',\n fontFamily: 'monospace',\n flex: '1 1 auto',\n overflow: 'auto',\n }}\n />\n </div>\n </div>\n );\n};\n\nexport default TraceDetail;\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;AAOA,MAAM,WAAW,GAAG,CAAC,KAGpB,KAAI;AACH,IAAA,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEzC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;;;;;;;;;;;;;;;AAiB5C,IAAA,QACEA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,8DAA8D,EAAA,QAAA,EAC3EC,IAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,gCAAgC,EAC7C,QAAA,EAAA,CAAAA,IAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE;AACL,wBAAA,OAAO,EAAE,MAAM;AACf,wBAAA,cAAc,EAAE,eAAe;AAC/B,wBAAA,UAAU,EAAE,QAAQ;AACrB,qBAAA,EAAA,QAAA,EAAA,CAEDD,GACE,CAAA,KAAA,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mDAAmD,EAAA,QAAA,EAAA,OAAA,EAAA,CAE5D,EACF,CAAA,EACL,QAAQ,KACPA,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAC,SAAS,EAAA,QAAA,EACvCA,GAAC,CAAA,CAAC,EAAG,EAAA,CAAA,EAAA,CACE,CACV,CAAA,EAAA,CACG,EACNA,GAAA,CAAC,SAAS,EAAA,EACR,GAAG,EAAE,IAAI,EACT,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,KAAK,EACvB,iBAAiB,EAAE,KAAK,EACxB,eAAe,EAAE,IAAI,EACrB,SAAS,EAAE,CAAC,EACZ,KAAK,EAAC,aAAa,EACnB,KAAK,EAAE;AACL,wBAAA,QAAQ,EAAE,MAAM;AAChB,wBAAA,UAAU,EAAE,WAAW;AACvB,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,QAAQ,EAAE,MAAM;qBACjB,EACD,CAAA,CAAA,EAAA,CACE,EACF,CAAA,EACN;AACJ;;;;"}
@@ -26,9 +26,9 @@ const TraceMessageGroup = ({ msg, msgIndex, invocationId, traces, isExpanded, on
26
26
  totalDuration: Math.max(maxEnd, 1),
27
27
  };
28
28
  }, [traces, collapsedIds]);
29
- return (jsxRuntime.jsxs("div", { className: "border border-[#EAEDF1] rounded-[8px]", children: [jsxRuntime.jsxs("div", { className: "flex items-center justify-between p-4 bg-card hover:bg-muted/30 cursor-pointer transition-colors sticky top-0 z-30", onClick: () => onToggleExpand(msg.id), children: [jsxRuntime.jsx("div", { className: "flex items-center gap-2 font-medium truncate pr-4 leading-[22px] text-[#0C0D0E]", children: jsxRuntime.jsx("span", { className: "text-muted-foreground font-mono leading-[22px] font-medium truncate text-[#0C0D0E]", children: typeof msg.content === 'string'
29
+ return (jsxRuntime.jsxs("div", { className: "border border-[#EAEDF1] rounded-[8px]", children: [jsxRuntime.jsxs("div", { className: "flex items-center justify-between p-4 bg-card hover:bg-muted/30 cursor-pointer transition-colors sticky top-0 z-30", onClick: () => onToggleExpand(msg.id), children: [jsxRuntime.jsx("div", { className: "flex items-center gap-2 bg-white font-medium truncate pr-4 leading-[22px] text-[#0C0D0E]", children: jsxRuntime.jsx("span", { className: "text-muted-foreground font-mono leading-[22px] font-medium truncate text-[#0C0D0E]", children: typeof msg.content === 'string'
30
30
  ? msg.content
31
- : msg?.content?.[0]?.text || 'Unknown Message' }) }), isExpanded ? (jsxRuntime.jsx(chevronDown.default, { className: "w-4 h-4 text-muted-foreground shrink-0" })) : (jsxRuntime.jsx(chevronRight.default, { className: "w-4 h-4 text-muted-foreground shrink-0" }))] }), isExpanded && (jsxRuntime.jsxs("div", { className: "flex flex-col px-4", children: [jsxRuntime.jsxs("div", { className: "text-[13px] leading-[22px] text-[#737A87] mb-2", children: ["Invocation ID:", jsxRuntime.jsx("div", { children: invocationId })] }), renderList.length > 0 ? (jsxRuntime.jsx("div", { className: utils$1.cn('flex flex-col p-4 pt-0'), children: jsxRuntime.jsx("div", { className: "min-w-fit flex flex-col font-sans text-xs", children: jsxRuntime.jsx("div", { className: "flex flex-col", children: renderList.map((node, index) => {
31
+ : msg?.content?.[0]?.text || 'Unknown Message' }) }), isExpanded ? (jsxRuntime.jsx(chevronDown.default, { className: "w-4 h-4 text-muted-foreground shrink-0" })) : (jsxRuntime.jsx(chevronRight.default, { className: "w-4 h-4 text-muted-foreground shrink-0" }))] }), isExpanded && (jsxRuntime.jsxs("div", { className: "flex flex-col px-4", children: [jsxRuntime.jsxs("div", { className: "text-[13px] leading-[22px] text-[#737A87] mb-2", children: ["Invocation ID:", jsxRuntime.jsx("div", { children: invocationId })] }), renderList.length > 0 ? (jsxRuntime.jsx("div", { className: utils$1.cn('flex flex-col pt-0'), children: jsxRuntime.jsx("div", { className: "min-w-fit flex flex-col font-sans text-xs", children: jsxRuntime.jsx("div", { className: "flex flex-col", children: renderList.map((node, index) => {
32
32
  const isSelected = node.span.id === selectedSpan?.id;
33
33
  const duration = node.span.duration || 0;
34
34
  const hasChildren = node.span.children && node.span.children.length > 0;
@@ -1 +1 @@
1
- {"version":3,"file":"TraceMessageGroup.cjs","sources":["../../../../../src/adk/components/Debug/Trace/TraceMessageGroup.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { cn } from '@/lib/utils';\nimport { ChevronDown, ChevronRight } from 'lucide-react';\nimport { TraceSpan } from './types';\nimport {\n getIcon,\n processTraceData,\n buildRenderTree,\n INDENT_SIZE,\n} from './utils';\n\ninterface TraceMessageGroupProps {\n msg: any;\n msgIndex: number;\n invocationId?: string;\n traces: TraceSpan[];\n isExpanded: boolean;\n onToggleExpand: (id: string) => void;\n collapsedIds: Set<string>;\n onToggleCollapse: (id: string, e: React.MouseEvent) => void;\n selectedSpan: TraceSpan | null;\n onSelectSpan: (span: TraceSpan | null) => void;\n}\n\nconst TraceMessageGroup: React.FC<TraceMessageGroupProps> = ({\n msg,\n msgIndex,\n invocationId,\n traces,\n isExpanded,\n onToggleExpand,\n collapsedIds,\n onToggleCollapse,\n selectedSpan,\n onSelectSpan,\n}) => {\n // Process and build render tree for this message's traces\n const { renderList, totalDuration } = useMemo(() => {\n if (!traces.length) return { renderList: [], totalDuration: 1 };\n\n const processedTrace = processTraceData(traces);\n const list = buildRenderTree(processedTrace, collapsedIds);\n\n // Calculate duration for this group based on the sequential layout\n let maxEnd = 0;\n list.forEach(node => {\n const end = node.offset + (node.span.duration || 0);\n if (end > maxEnd) maxEnd = end;\n });\n\n return {\n renderList: list,\n totalDuration: Math.max(maxEnd, 1),\n };\n }, [traces, collapsedIds]);\n\n return (\n <div className=\"border border-[#EAEDF1] rounded-[8px]\">\n {/* Header Card */}\n <div\n className=\"flex items-center justify-between p-4 bg-card hover:bg-muted/30 cursor-pointer transition-colors sticky top-0 z-30\"\n onClick={() => onToggleExpand(msg.id)}\n >\n <div className=\"flex items-center gap-2 font-medium truncate pr-4 leading-[22px] text-[#0C0D0E]\">\n <span className=\"text-muted-foreground font-mono leading-[22px] font-medium truncate text-[#0C0D0E]\">\n {typeof msg.content === 'string'\n ? msg.content\n : msg?.content?.[0]?.text || 'Unknown Message'}\n </span>\n </div>\n {isExpanded ? (\n <ChevronDown className=\"w-4 h-4 text-muted-foreground shrink-0\" />\n ) : (\n <ChevronRight className=\"w-4 h-4 text-muted-foreground shrink-0\" />\n )}\n </div>\n\n {isExpanded && (\n <div className=\"flex flex-col px-4\">\n {/* Trace Tree List */}\n <div className=\"text-[13px] leading-[22px] text-[#737A87] mb-2\">\n Invocation ID:\n <div>{invocationId}</div>\n </div>\n {renderList.length > 0 ? (\n <div className={cn('flex flex-col p-4 pt-0')}>\n <div className=\"min-w-fit flex flex-col font-sans text-xs\">\n <div className=\"flex flex-col\">\n {renderList.map((node, index) => {\n const isSelected = node.span.id === selectedSpan?.id;\n const duration = node.span.duration || 0;\n const hasChildren =\n node.span.children && node.span.children.length > 0;\n\n // Timeline calculations\n const relativeWidth = (duration / totalDuration) * 100;\n const relativeLeft = (node.offset / totalDuration) * 100;\n\n return (\n <div\n key={node.span.id || index}\n className={cn(\n 'flex items-center py-1 px-2 relative cursor-pointer hover:bg-muted/50 rounded-sm group min-h-[32px] overflow-hidden',\n isSelected && 'bg-muted',\n )}\n onClick={() => {\n onSelectSpan(isSelected ? null : node.span);\n }}\n >\n {/* Left Section: Tree Lines + Icon + Name */}\n <div className=\"flex items-center w-[50%] shrink-0 h-full relative overflow-hidden pr-4\">\n {/* Tree Guides and Connectors */}\n <div className=\"flex shrink-0 h-full absolute left-0 top-0 bottom-0 pointer-events-none\">\n {node.guides.map((hasLine, i) => (\n <div\n key={i}\n className=\"h-full relative flex justify-center\"\n style={{ width: INDENT_SIZE }}\n >\n {hasLine && (\n <div className=\"w-px h-full bg-border/50\" />\n )}\n </div>\n ))}\n </div>\n\n {/* Current Node Connector (Lines) */}\n {node.level > 0 && (\n <div\n className=\"absolute h-full pointer-events-none\"\n style={{\n left: (node.level - 1) * INDENT_SIZE,\n width: INDENT_SIZE,\n }}\n >\n <div\n className={cn(\n 'absolute right-0 top-0 w-[50%] h-[50%] border-b border-l border-border/50 rounded-bl-lg',\n )}\n style={{\n transform: 'translateX(-0.5px)',\n }}\n />\n {!node.isLast && (\n <div className=\"absolute left-1/2 top-1/2 bottom-0 w-px bg-border/50 -translate-x-1/2\" />\n )}\n </div>\n )}\n\n {/* Line to Children (if any) */}\n {hasChildren && !node.isCollapsed && (\n <div\n className=\"absolute h-1/2 bottom-0 pointer-events-none\"\n style={{\n left: node.level * INDENT_SIZE,\n width: INDENT_SIZE,\n }}\n >\n <div className=\"absolute left-1/2 top-0 bottom-0 w-px bg-border/50 -translate-x-1/2\" />\n </div>\n )}\n\n {/* Spacing for Indentation */}\n <div\n style={{ width: node.level * INDENT_SIZE }}\n className=\"shrink-0\"\n />\n\n {/* Collapse Toggle or Spacer */}\n <div className=\"w-4 h-4 mr-1 shrink-0 flex items-center justify-center relative z-20\">\n {hasChildren && (\n <div\n onClick={e => onToggleCollapse(node.span.id, e)}\n className=\"cursor-pointer hover:bg-black/10 rounded p-0.5 transition-colors\"\n >\n {node.isCollapsed ? (\n <ChevronRight className=\"w-3 h-3\" />\n ) : (\n <ChevronDown className=\"w-3 h-3\" />\n )}\n </div>\n )}\n </div>\n\n {/* Icon */}\n <span className=\"mr-2 shrink-0 z-10 relative bg-background rounded-full\">\n {getIcon(node)}\n </span>\n\n <div\n className=\"truncate font-sans text-sm text-foreground/90\"\n title={node.span.name}\n >\n {node.span.name}\n </div>\n </div>\n\n {/* Right Section: Duration Bar */}\n <div className=\"flex-1 h-full relative flex items-center\">\n <div\n className=\"absolute top-1/2 -translate-y-1/2 h-[24px] flex items-center rounded\"\n style={{\n left: `${relativeLeft}%`,\n width: `${Math.max(relativeWidth, 0.1)}%`,\n minWidth: '1px',\n }}\n >\n {/* Background Progress Bar */}\n <div className=\"absolute left-0 top-0 bottom-0 bg-[#D1F5DD] z-0 rounded w-full\" />\n {/* Text Content */}\n <span className=\"whitespace-nowrap text-xs font-mono font-medium text-green-900 z-10 relative px-1\">\n {duration.toFixed(2)} ms\n </span>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n ) : (\n <div className=\"text-muted-foreground pb-2\">\n {`暂无 Trace 数据。`}\n </div>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default TraceMessageGroup;\n"],"names":["useMemo","processTraceData","buildRenderTree","_jsxs","_jsx","ChevronDown","ChevronRight","cn","INDENT_SIZE","getIcon"],"mappings":"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"}
1
+ {"version":3,"file":"TraceMessageGroup.cjs","sources":["../../../../../src/adk/components/Debug/Trace/TraceMessageGroup.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { cn } from '@/lib/utils';\nimport { ChevronDown, ChevronRight } from 'lucide-react';\nimport { TraceSpan } from './types';\nimport {\n getIcon,\n processTraceData,\n buildRenderTree,\n INDENT_SIZE,\n} from './utils';\n\ninterface TraceMessageGroupProps {\n msg: any;\n msgIndex: number;\n invocationId?: string;\n traces: TraceSpan[];\n isExpanded: boolean;\n onToggleExpand: (id: string) => void;\n collapsedIds: Set<string>;\n onToggleCollapse: (id: string, e: React.MouseEvent) => void;\n selectedSpan: TraceSpan | null;\n onSelectSpan: (span: TraceSpan | null) => void;\n}\n\nconst TraceMessageGroup: React.FC<TraceMessageGroupProps> = ({\n msg,\n msgIndex,\n invocationId,\n traces,\n isExpanded,\n onToggleExpand,\n collapsedIds,\n onToggleCollapse,\n selectedSpan,\n onSelectSpan,\n}) => {\n // Process and build render tree for this message's traces\n const { renderList, totalDuration } = useMemo(() => {\n if (!traces.length) return { renderList: [], totalDuration: 1 };\n\n const processedTrace = processTraceData(traces);\n const list = buildRenderTree(processedTrace, collapsedIds);\n\n // Calculate duration for this group based on the sequential layout\n let maxEnd = 0;\n list.forEach(node => {\n const end = node.offset + (node.span.duration || 0);\n if (end > maxEnd) maxEnd = end;\n });\n\n return {\n renderList: list,\n totalDuration: Math.max(maxEnd, 1),\n };\n }, [traces, collapsedIds]);\n\n return (\n <div className=\"border border-[#EAEDF1] rounded-[8px]\">\n {/* Header Card */}\n <div\n className=\"flex items-center justify-between p-4 bg-card hover:bg-muted/30 cursor-pointer transition-colors sticky top-0 z-30\"\n onClick={() => onToggleExpand(msg.id)}\n >\n <div className=\"flex items-center gap-2 bg-white font-medium truncate pr-4 leading-[22px] text-[#0C0D0E]\">\n <span className=\"text-muted-foreground font-mono leading-[22px] font-medium truncate text-[#0C0D0E]\">\n {typeof msg.content === 'string'\n ? msg.content\n : msg?.content?.[0]?.text || 'Unknown Message'}\n </span>\n </div>\n {isExpanded ? (\n <ChevronDown className=\"w-4 h-4 text-muted-foreground shrink-0\" />\n ) : (\n <ChevronRight className=\"w-4 h-4 text-muted-foreground shrink-0\" />\n )}\n </div>\n\n {isExpanded && (\n <div className=\"flex flex-col px-4\">\n {/* Trace Tree List */}\n <div className=\"text-[13px] leading-[22px] text-[#737A87] mb-2\">\n Invocation ID:\n <div>{invocationId}</div>\n </div>\n {renderList.length > 0 ? (\n <div className={cn('flex flex-col pt-0')}>\n <div className=\"min-w-fit flex flex-col font-sans text-xs\">\n <div className=\"flex flex-col\">\n {renderList.map((node, index) => {\n const isSelected = node.span.id === selectedSpan?.id;\n const duration = node.span.duration || 0;\n const hasChildren =\n node.span.children && node.span.children.length > 0;\n\n // Timeline calculations\n const relativeWidth = (duration / totalDuration) * 100;\n const relativeLeft = (node.offset / totalDuration) * 100;\n\n return (\n <div\n key={node.span.id || index}\n className={cn(\n 'flex items-center py-1 px-2 relative cursor-pointer hover:bg-muted/50 rounded-sm group min-h-[32px] overflow-hidden',\n isSelected && 'bg-muted',\n )}\n onClick={() => {\n onSelectSpan(isSelected ? null : node.span);\n }}\n >\n {/* Left Section: Tree Lines + Icon + Name */}\n <div className=\"flex items-center w-[50%] shrink-0 h-full relative overflow-hidden pr-4\">\n {/* Tree Guides and Connectors */}\n <div className=\"flex shrink-0 h-full absolute left-0 top-0 bottom-0 pointer-events-none\">\n {node.guides.map((hasLine, i) => (\n <div\n key={i}\n className=\"h-full relative flex justify-center\"\n style={{ width: INDENT_SIZE }}\n >\n {hasLine && (\n <div className=\"w-px h-full bg-border/50\" />\n )}\n </div>\n ))}\n </div>\n\n {/* Current Node Connector (Lines) */}\n {node.level > 0 && (\n <div\n className=\"absolute h-full pointer-events-none\"\n style={{\n left: (node.level - 1) * INDENT_SIZE,\n width: INDENT_SIZE,\n }}\n >\n <div\n className={cn(\n 'absolute right-0 top-0 w-[50%] h-[50%] border-b border-l border-border/50 rounded-bl-lg',\n )}\n style={{\n transform: 'translateX(-0.5px)',\n }}\n />\n {!node.isLast && (\n <div className=\"absolute left-1/2 top-1/2 bottom-0 w-px bg-border/50 -translate-x-1/2\" />\n )}\n </div>\n )}\n\n {/* Line to Children (if any) */}\n {hasChildren && !node.isCollapsed && (\n <div\n className=\"absolute h-1/2 bottom-0 pointer-events-none\"\n style={{\n left: node.level * INDENT_SIZE,\n width: INDENT_SIZE,\n }}\n >\n <div className=\"absolute left-1/2 top-0 bottom-0 w-px bg-border/50 -translate-x-1/2\" />\n </div>\n )}\n\n {/* Spacing for Indentation */}\n <div\n style={{ width: node.level * INDENT_SIZE }}\n className=\"shrink-0\"\n />\n\n {/* Collapse Toggle or Spacer */}\n <div className=\"w-4 h-4 mr-1 shrink-0 flex items-center justify-center relative z-20\">\n {hasChildren && (\n <div\n onClick={e => onToggleCollapse(node.span.id, e)}\n className=\"cursor-pointer hover:bg-black/10 rounded p-0.5 transition-colors\"\n >\n {node.isCollapsed ? (\n <ChevronRight className=\"w-3 h-3\" />\n ) : (\n <ChevronDown className=\"w-3 h-3\" />\n )}\n </div>\n )}\n </div>\n\n {/* Icon */}\n <span className=\"mr-2 shrink-0 z-10 relative bg-background rounded-full\">\n {getIcon(node)}\n </span>\n\n <div\n className=\"truncate font-sans text-sm text-foreground/90\"\n title={node.span.name}\n >\n {node.span.name}\n </div>\n </div>\n\n {/* Right Section: Duration Bar */}\n <div className=\"flex-1 h-full relative flex items-center\">\n <div\n className=\"absolute top-1/2 -translate-y-1/2 h-[24px] flex items-center rounded\"\n style={{\n left: `${relativeLeft}%`,\n width: `${Math.max(relativeWidth, 0.1)}%`,\n minWidth: '1px',\n }}\n >\n {/* Background Progress Bar */}\n <div className=\"absolute left-0 top-0 bottom-0 bg-[#D1F5DD] z-0 rounded w-full\" />\n {/* Text Content */}\n <span className=\"whitespace-nowrap text-xs font-mono font-medium text-green-900 z-10 relative px-1\">\n {duration.toFixed(2)} ms\n </span>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n ) : (\n <div className=\"text-muted-foreground pb-2\">\n {`暂无 Trace 数据。`}\n </div>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default TraceMessageGroup;\n"],"names":["useMemo","processTraceData","buildRenderTree","_jsxs","_jsx","ChevronDown","ChevronRight","cn","INDENT_SIZE","getIcon"],"mappings":"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"}
@@ -24,9 +24,9 @@ const TraceMessageGroup = ({ msg, msgIndex, invocationId, traces, isExpanded, on
24
24
  totalDuration: Math.max(maxEnd, 1),
25
25
  };
26
26
  }, [traces, collapsedIds]);
27
- return (jsxs("div", { className: "border border-[#EAEDF1] rounded-[8px]", children: [jsxs("div", { className: "flex items-center justify-between p-4 bg-card hover:bg-muted/30 cursor-pointer transition-colors sticky top-0 z-30", onClick: () => onToggleExpand(msg.id), children: [jsx("div", { className: "flex items-center gap-2 font-medium truncate pr-4 leading-[22px] text-[#0C0D0E]", children: jsx("span", { className: "text-muted-foreground font-mono leading-[22px] font-medium truncate text-[#0C0D0E]", children: typeof msg.content === 'string'
27
+ return (jsxs("div", { className: "border border-[#EAEDF1] rounded-[8px]", children: [jsxs("div", { className: "flex items-center justify-between p-4 bg-card hover:bg-muted/30 cursor-pointer transition-colors sticky top-0 z-30", onClick: () => onToggleExpand(msg.id), children: [jsx("div", { className: "flex items-center gap-2 bg-white font-medium truncate pr-4 leading-[22px] text-[#0C0D0E]", children: jsx("span", { className: "text-muted-foreground font-mono leading-[22px] font-medium truncate text-[#0C0D0E]", children: typeof msg.content === 'string'
28
28
  ? msg.content
29
- : msg?.content?.[0]?.text || 'Unknown Message' }) }), isExpanded ? (jsx(ChevronDown, { className: "w-4 h-4 text-muted-foreground shrink-0" })) : (jsx(ChevronRight, { className: "w-4 h-4 text-muted-foreground shrink-0" }))] }), isExpanded && (jsxs("div", { className: "flex flex-col px-4", children: [jsxs("div", { className: "text-[13px] leading-[22px] text-[#737A87] mb-2", children: ["Invocation ID:", jsx("div", { children: invocationId })] }), renderList.length > 0 ? (jsx("div", { className: cn('flex flex-col p-4 pt-0'), children: jsx("div", { className: "min-w-fit flex flex-col font-sans text-xs", children: jsx("div", { className: "flex flex-col", children: renderList.map((node, index) => {
29
+ : msg?.content?.[0]?.text || 'Unknown Message' }) }), isExpanded ? (jsx(ChevronDown, { className: "w-4 h-4 text-muted-foreground shrink-0" })) : (jsx(ChevronRight, { className: "w-4 h-4 text-muted-foreground shrink-0" }))] }), isExpanded && (jsxs("div", { className: "flex flex-col px-4", children: [jsxs("div", { className: "text-[13px] leading-[22px] text-[#737A87] mb-2", children: ["Invocation ID:", jsx("div", { children: invocationId })] }), renderList.length > 0 ? (jsx("div", { className: cn('flex flex-col pt-0'), children: jsx("div", { className: "min-w-fit flex flex-col font-sans text-xs", children: jsx("div", { className: "flex flex-col", children: renderList.map((node, index) => {
30
30
  const isSelected = node.span.id === selectedSpan?.id;
31
31
  const duration = node.span.duration || 0;
32
32
  const hasChildren = node.span.children && node.span.children.length > 0;
@@ -1 +1 @@
1
- {"version":3,"file":"TraceMessageGroup.js","sources":["../../../../../src/adk/components/Debug/Trace/TraceMessageGroup.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { cn } from '@/lib/utils';\nimport { ChevronDown, ChevronRight } from 'lucide-react';\nimport { TraceSpan } from './types';\nimport {\n getIcon,\n processTraceData,\n buildRenderTree,\n INDENT_SIZE,\n} from './utils';\n\ninterface TraceMessageGroupProps {\n msg: any;\n msgIndex: number;\n invocationId?: string;\n traces: TraceSpan[];\n isExpanded: boolean;\n onToggleExpand: (id: string) => void;\n collapsedIds: Set<string>;\n onToggleCollapse: (id: string, e: React.MouseEvent) => void;\n selectedSpan: TraceSpan | null;\n onSelectSpan: (span: TraceSpan | null) => void;\n}\n\nconst TraceMessageGroup: React.FC<TraceMessageGroupProps> = ({\n msg,\n msgIndex,\n invocationId,\n traces,\n isExpanded,\n onToggleExpand,\n collapsedIds,\n onToggleCollapse,\n selectedSpan,\n onSelectSpan,\n}) => {\n // Process and build render tree for this message's traces\n const { renderList, totalDuration } = useMemo(() => {\n if (!traces.length) return { renderList: [], totalDuration: 1 };\n\n const processedTrace = processTraceData(traces);\n const list = buildRenderTree(processedTrace, collapsedIds);\n\n // Calculate duration for this group based on the sequential layout\n let maxEnd = 0;\n list.forEach(node => {\n const end = node.offset + (node.span.duration || 0);\n if (end > maxEnd) maxEnd = end;\n });\n\n return {\n renderList: list,\n totalDuration: Math.max(maxEnd, 1),\n };\n }, [traces, collapsedIds]);\n\n return (\n <div className=\"border border-[#EAEDF1] rounded-[8px]\">\n {/* Header Card */}\n <div\n className=\"flex items-center justify-between p-4 bg-card hover:bg-muted/30 cursor-pointer transition-colors sticky top-0 z-30\"\n onClick={() => onToggleExpand(msg.id)}\n >\n <div className=\"flex items-center gap-2 font-medium truncate pr-4 leading-[22px] text-[#0C0D0E]\">\n <span className=\"text-muted-foreground font-mono leading-[22px] font-medium truncate text-[#0C0D0E]\">\n {typeof msg.content === 'string'\n ? msg.content\n : msg?.content?.[0]?.text || 'Unknown Message'}\n </span>\n </div>\n {isExpanded ? (\n <ChevronDown className=\"w-4 h-4 text-muted-foreground shrink-0\" />\n ) : (\n <ChevronRight className=\"w-4 h-4 text-muted-foreground shrink-0\" />\n )}\n </div>\n\n {isExpanded && (\n <div className=\"flex flex-col px-4\">\n {/* Trace Tree List */}\n <div className=\"text-[13px] leading-[22px] text-[#737A87] mb-2\">\n Invocation ID:\n <div>{invocationId}</div>\n </div>\n {renderList.length > 0 ? (\n <div className={cn('flex flex-col p-4 pt-0')}>\n <div className=\"min-w-fit flex flex-col font-sans text-xs\">\n <div className=\"flex flex-col\">\n {renderList.map((node, index) => {\n const isSelected = node.span.id === selectedSpan?.id;\n const duration = node.span.duration || 0;\n const hasChildren =\n node.span.children && node.span.children.length > 0;\n\n // Timeline calculations\n const relativeWidth = (duration / totalDuration) * 100;\n const relativeLeft = (node.offset / totalDuration) * 100;\n\n return (\n <div\n key={node.span.id || index}\n className={cn(\n 'flex items-center py-1 px-2 relative cursor-pointer hover:bg-muted/50 rounded-sm group min-h-[32px] overflow-hidden',\n isSelected && 'bg-muted',\n )}\n onClick={() => {\n onSelectSpan(isSelected ? null : node.span);\n }}\n >\n {/* Left Section: Tree Lines + Icon + Name */}\n <div className=\"flex items-center w-[50%] shrink-0 h-full relative overflow-hidden pr-4\">\n {/* Tree Guides and Connectors */}\n <div className=\"flex shrink-0 h-full absolute left-0 top-0 bottom-0 pointer-events-none\">\n {node.guides.map((hasLine, i) => (\n <div\n key={i}\n className=\"h-full relative flex justify-center\"\n style={{ width: INDENT_SIZE }}\n >\n {hasLine && (\n <div className=\"w-px h-full bg-border/50\" />\n )}\n </div>\n ))}\n </div>\n\n {/* Current Node Connector (Lines) */}\n {node.level > 0 && (\n <div\n className=\"absolute h-full pointer-events-none\"\n style={{\n left: (node.level - 1) * INDENT_SIZE,\n width: INDENT_SIZE,\n }}\n >\n <div\n className={cn(\n 'absolute right-0 top-0 w-[50%] h-[50%] border-b border-l border-border/50 rounded-bl-lg',\n )}\n style={{\n transform: 'translateX(-0.5px)',\n }}\n />\n {!node.isLast && (\n <div className=\"absolute left-1/2 top-1/2 bottom-0 w-px bg-border/50 -translate-x-1/2\" />\n )}\n </div>\n )}\n\n {/* Line to Children (if any) */}\n {hasChildren && !node.isCollapsed && (\n <div\n className=\"absolute h-1/2 bottom-0 pointer-events-none\"\n style={{\n left: node.level * INDENT_SIZE,\n width: INDENT_SIZE,\n }}\n >\n <div className=\"absolute left-1/2 top-0 bottom-0 w-px bg-border/50 -translate-x-1/2\" />\n </div>\n )}\n\n {/* Spacing for Indentation */}\n <div\n style={{ width: node.level * INDENT_SIZE }}\n className=\"shrink-0\"\n />\n\n {/* Collapse Toggle or Spacer */}\n <div className=\"w-4 h-4 mr-1 shrink-0 flex items-center justify-center relative z-20\">\n {hasChildren && (\n <div\n onClick={e => onToggleCollapse(node.span.id, e)}\n className=\"cursor-pointer hover:bg-black/10 rounded p-0.5 transition-colors\"\n >\n {node.isCollapsed ? (\n <ChevronRight className=\"w-3 h-3\" />\n ) : (\n <ChevronDown className=\"w-3 h-3\" />\n )}\n </div>\n )}\n </div>\n\n {/* Icon */}\n <span className=\"mr-2 shrink-0 z-10 relative bg-background rounded-full\">\n {getIcon(node)}\n </span>\n\n <div\n className=\"truncate font-sans text-sm text-foreground/90\"\n title={node.span.name}\n >\n {node.span.name}\n </div>\n </div>\n\n {/* Right Section: Duration Bar */}\n <div className=\"flex-1 h-full relative flex items-center\">\n <div\n className=\"absolute top-1/2 -translate-y-1/2 h-[24px] flex items-center rounded\"\n style={{\n left: `${relativeLeft}%`,\n width: `${Math.max(relativeWidth, 0.1)}%`,\n minWidth: '1px',\n }}\n >\n {/* Background Progress Bar */}\n <div className=\"absolute left-0 top-0 bottom-0 bg-[#D1F5DD] z-0 rounded w-full\" />\n {/* Text Content */}\n <span className=\"whitespace-nowrap text-xs font-mono font-medium text-green-900 z-10 relative px-1\">\n {duration.toFixed(2)} ms\n </span>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n ) : (\n <div className=\"text-muted-foreground pb-2\">\n {`暂无 Trace 数据。`}\n </div>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default TraceMessageGroup;\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"TraceMessageGroup.js","sources":["../../../../../src/adk/components/Debug/Trace/TraceMessageGroup.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { cn } from '@/lib/utils';\nimport { ChevronDown, ChevronRight } from 'lucide-react';\nimport { TraceSpan } from './types';\nimport {\n getIcon,\n processTraceData,\n buildRenderTree,\n INDENT_SIZE,\n} from './utils';\n\ninterface TraceMessageGroupProps {\n msg: any;\n msgIndex: number;\n invocationId?: string;\n traces: TraceSpan[];\n isExpanded: boolean;\n onToggleExpand: (id: string) => void;\n collapsedIds: Set<string>;\n onToggleCollapse: (id: string, e: React.MouseEvent) => void;\n selectedSpan: TraceSpan | null;\n onSelectSpan: (span: TraceSpan | null) => void;\n}\n\nconst TraceMessageGroup: React.FC<TraceMessageGroupProps> = ({\n msg,\n msgIndex,\n invocationId,\n traces,\n isExpanded,\n onToggleExpand,\n collapsedIds,\n onToggleCollapse,\n selectedSpan,\n onSelectSpan,\n}) => {\n // Process and build render tree for this message's traces\n const { renderList, totalDuration } = useMemo(() => {\n if (!traces.length) return { renderList: [], totalDuration: 1 };\n\n const processedTrace = processTraceData(traces);\n const list = buildRenderTree(processedTrace, collapsedIds);\n\n // Calculate duration for this group based on the sequential layout\n let maxEnd = 0;\n list.forEach(node => {\n const end = node.offset + (node.span.duration || 0);\n if (end > maxEnd) maxEnd = end;\n });\n\n return {\n renderList: list,\n totalDuration: Math.max(maxEnd, 1),\n };\n }, [traces, collapsedIds]);\n\n return (\n <div className=\"border border-[#EAEDF1] rounded-[8px]\">\n {/* Header Card */}\n <div\n className=\"flex items-center justify-between p-4 bg-card hover:bg-muted/30 cursor-pointer transition-colors sticky top-0 z-30\"\n onClick={() => onToggleExpand(msg.id)}\n >\n <div className=\"flex items-center gap-2 bg-white font-medium truncate pr-4 leading-[22px] text-[#0C0D0E]\">\n <span className=\"text-muted-foreground font-mono leading-[22px] font-medium truncate text-[#0C0D0E]\">\n {typeof msg.content === 'string'\n ? msg.content\n : msg?.content?.[0]?.text || 'Unknown Message'}\n </span>\n </div>\n {isExpanded ? (\n <ChevronDown className=\"w-4 h-4 text-muted-foreground shrink-0\" />\n ) : (\n <ChevronRight className=\"w-4 h-4 text-muted-foreground shrink-0\" />\n )}\n </div>\n\n {isExpanded && (\n <div className=\"flex flex-col px-4\">\n {/* Trace Tree List */}\n <div className=\"text-[13px] leading-[22px] text-[#737A87] mb-2\">\n Invocation ID:\n <div>{invocationId}</div>\n </div>\n {renderList.length > 0 ? (\n <div className={cn('flex flex-col pt-0')}>\n <div className=\"min-w-fit flex flex-col font-sans text-xs\">\n <div className=\"flex flex-col\">\n {renderList.map((node, index) => {\n const isSelected = node.span.id === selectedSpan?.id;\n const duration = node.span.duration || 0;\n const hasChildren =\n node.span.children && node.span.children.length > 0;\n\n // Timeline calculations\n const relativeWidth = (duration / totalDuration) * 100;\n const relativeLeft = (node.offset / totalDuration) * 100;\n\n return (\n <div\n key={node.span.id || index}\n className={cn(\n 'flex items-center py-1 px-2 relative cursor-pointer hover:bg-muted/50 rounded-sm group min-h-[32px] overflow-hidden',\n isSelected && 'bg-muted',\n )}\n onClick={() => {\n onSelectSpan(isSelected ? null : node.span);\n }}\n >\n {/* Left Section: Tree Lines + Icon + Name */}\n <div className=\"flex items-center w-[50%] shrink-0 h-full relative overflow-hidden pr-4\">\n {/* Tree Guides and Connectors */}\n <div className=\"flex shrink-0 h-full absolute left-0 top-0 bottom-0 pointer-events-none\">\n {node.guides.map((hasLine, i) => (\n <div\n key={i}\n className=\"h-full relative flex justify-center\"\n style={{ width: INDENT_SIZE }}\n >\n {hasLine && (\n <div className=\"w-px h-full bg-border/50\" />\n )}\n </div>\n ))}\n </div>\n\n {/* Current Node Connector (Lines) */}\n {node.level > 0 && (\n <div\n className=\"absolute h-full pointer-events-none\"\n style={{\n left: (node.level - 1) * INDENT_SIZE,\n width: INDENT_SIZE,\n }}\n >\n <div\n className={cn(\n 'absolute right-0 top-0 w-[50%] h-[50%] border-b border-l border-border/50 rounded-bl-lg',\n )}\n style={{\n transform: 'translateX(-0.5px)',\n }}\n />\n {!node.isLast && (\n <div className=\"absolute left-1/2 top-1/2 bottom-0 w-px bg-border/50 -translate-x-1/2\" />\n )}\n </div>\n )}\n\n {/* Line to Children (if any) */}\n {hasChildren && !node.isCollapsed && (\n <div\n className=\"absolute h-1/2 bottom-0 pointer-events-none\"\n style={{\n left: node.level * INDENT_SIZE,\n width: INDENT_SIZE,\n }}\n >\n <div className=\"absolute left-1/2 top-0 bottom-0 w-px bg-border/50 -translate-x-1/2\" />\n </div>\n )}\n\n {/* Spacing for Indentation */}\n <div\n style={{ width: node.level * INDENT_SIZE }}\n className=\"shrink-0\"\n />\n\n {/* Collapse Toggle or Spacer */}\n <div className=\"w-4 h-4 mr-1 shrink-0 flex items-center justify-center relative z-20\">\n {hasChildren && (\n <div\n onClick={e => onToggleCollapse(node.span.id, e)}\n className=\"cursor-pointer hover:bg-black/10 rounded p-0.5 transition-colors\"\n >\n {node.isCollapsed ? (\n <ChevronRight className=\"w-3 h-3\" />\n ) : (\n <ChevronDown className=\"w-3 h-3\" />\n )}\n </div>\n )}\n </div>\n\n {/* Icon */}\n <span className=\"mr-2 shrink-0 z-10 relative bg-background rounded-full\">\n {getIcon(node)}\n </span>\n\n <div\n className=\"truncate font-sans text-sm text-foreground/90\"\n title={node.span.name}\n >\n {node.span.name}\n </div>\n </div>\n\n {/* Right Section: Duration Bar */}\n <div className=\"flex-1 h-full relative flex items-center\">\n <div\n className=\"absolute top-1/2 -translate-y-1/2 h-[24px] flex items-center rounded\"\n style={{\n left: `${relativeLeft}%`,\n width: `${Math.max(relativeWidth, 0.1)}%`,\n minWidth: '1px',\n }}\n >\n {/* Background Progress Bar */}\n <div className=\"absolute left-0 top-0 bottom-0 bg-[#D1F5DD] z-0 rounded w-full\" />\n {/* Text Content */}\n <span className=\"whitespace-nowrap text-xs font-mono font-medium text-green-900 z-10 relative px-1\">\n {duration.toFixed(2)} ms\n </span>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n ) : (\n <div className=\"text-muted-foreground pb-2\">\n {`暂无 Trace 数据。`}\n </div>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default TraceMessageGroup;\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -16,12 +16,12 @@ const hasMatchingInvocationId = (node, targetIds) => {
16
16
  return (node.children?.some(child => hasMatchingInvocationId(child, targetIds)) ??
17
17
  false);
18
18
  };
19
- const Trace = ({ controller }) => {
19
+ const Trace = ({ controller, region }) => {
20
20
  const { selectedSpan, setSelectedSpan } = store.useTraceStore();
21
21
  const { currentThreadId, threadMap } = react.useSnapshot(controller.store.state);
22
22
  const allMessages = threadMap[currentThreadId || '']?.messages || [];
23
23
  const userMessages = allMessages.filter(msg => msg.role === 'user');
24
- const eventData = useEvents.useEvent(currentThreadId);
24
+ const eventData = useEvents.useEvent(currentThreadId, region);
25
25
  const [collapsedIds, setCollapsedIds] = React.useState(new Set());
26
26
  // Default to expanding the last message
27
27
  const [expandedMessageIds, setExpandedMessageIds] = React.useState(new Set());
@@ -57,11 +57,13 @@ const Trace = ({ controller }) => {
57
57
  });
58
58
  };
59
59
  // Group traces by user message
60
- const { tracesByMessage, invocationIdMap } = React.useMemo(() => {
60
+ const { tracesByMessage, invocationIdMap, empty } = React.useMemo(() => {
61
+ let empty = true;
61
62
  if (!eventData?.trace || !userMessages.length)
62
63
  return {
63
64
  tracesByMessage: new Map(),
64
65
  invocationIdMap: new Map(),
66
+ empty: true,
65
67
  };
66
68
  const groups = new Map();
67
69
  const invocationIdMap = new Map();
@@ -100,15 +102,16 @@ const Trace = ({ controller }) => {
100
102
  unassignedTraces.forEach(trace => {
101
103
  if (hasMatchingInvocationId(trace, invocationIds)) {
102
104
  groups.get(msg.id)?.push(trace);
105
+ empty = false;
103
106
  unassignedTraces.delete(trace);
104
107
  }
105
108
  });
106
109
  });
107
- return { tracesByMessage: groups, invocationIdMap };
110
+ return { tracesByMessage: groups, invocationIdMap, empty };
108
111
  }, [eventData?.trace, userMessages, allMessages]);
109
- if (!userMessages.length && !eventData?.trace?.length)
110
- return jsxRuntime.jsx("div", { className: "p-4 text-muted-foreground", children: "\u6682\u65E0 Trace \u6570\u636E" });
111
- return (jsxRuntime.jsx("div", { className: "flex flex-col h-full w-full overflow-hidden bg-background m-1", children: jsxRuntime.jsx("div", { className: "flex flex-col flex-1 overflow-auto space-y-2", children: userMessages.map((msg, msgIndex) => {
112
+ if ((!userMessages.length && !eventData?.trace?.length) || empty)
113
+ return jsxRuntime.jsx("div", { className: "pb-4 text-muted-foreground", children: "\u6682\u65E0 Trace \u6570\u636E" });
114
+ return (jsxRuntime.jsx("div", { className: "flex flex-col h-full w-full overflow-hidden bg-background", children: jsxRuntime.jsx("div", { className: "flex flex-col flex-1 overflow-auto space-y-2", children: userMessages.map((msg, msgIndex) => {
112
115
  const isExpanded = expandedMessageIds.has(msg.id);
113
116
  const traces = tracesByMessage.get(msg.id) || [];
114
117
  const invocationId = invocationIdMap.get(msg.id);
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../../src/adk/components/Debug/Trace/index.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport { TraceProps } from './types';\nimport { useEvent } from '@/adk/hooks/useEvents';\nimport { useSnapshot } from 'valtio';\nimport { useTraceStore } from './store';\nimport TraceMessageGroup from './TraceMessageGroup';\nimport { buildRenderTree, processTraceData } from './utils';\nimport { TraceSpan } from './types';\n\nconst hasMatchingInvocationId = (\n node: TraceSpan,\n targetIds: string[],\n): boolean => {\n if (\n node.tags?.['invocation.id'] &&\n targetIds.includes(node.tags['invocation.id'])\n ) {\n return true;\n }\n return (\n node.children?.some(child => hasMatchingInvocationId(child, targetIds)) ??\n false\n );\n};\n\nconst Trace = ({ controller }: TraceProps) => {\n const { selectedSpan, setSelectedSpan } = useTraceStore();\n const { currentThreadId, threadMap } = useSnapshot(controller.store.state);\n const allMessages = threadMap[currentThreadId || '']?.messages || [];\n const userMessages = allMessages.filter(msg => msg.role === 'user');\n\n const eventData = useEvent(currentThreadId);\n const [collapsedIds, setCollapsedIds] = useState<Set<string>>(new Set());\n // Default to expanding the last message\n const [expandedMessageIds, setExpandedMessageIds] = useState<Set<string>>(\n new Set(),\n );\n\n // Initialize expanded state when messages load\n useMemo(() => {\n if (userMessages.length > 0) {\n setExpandedMessageIds(\n new Set([userMessages[userMessages.length - 1].id]),\n );\n }\n }, [userMessages.length]);\n\n const toggleCollapse = (id: string, e: React.MouseEvent) => {\n e.stopPropagation();\n setCollapsedIds(prev => {\n const next = new Set(prev);\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n return next;\n });\n };\n\n const toggleMessageExpand = (id: string) => {\n setExpandedMessageIds(prev => {\n const next = new Set(prev);\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n return next;\n });\n };\n\n // Group traces by user message\n const { tracesByMessage, invocationIdMap } = useMemo(() => {\n if (!eventData?.trace || !userMessages.length)\n return {\n tracesByMessage: new Map(),\n invocationIdMap: new Map(),\n };\n\n const groups = new Map<string, any[]>();\n const invocationIdMap = new Map<string, string>();\n\n const processedTraces = processTraceData(eventData.trace);\n\n // Initialize groups for all user messages\n userMessages.forEach(msg => groups.set(msg.id, []));\n\n const sortedTraces = [...processedTraces].sort(\n (a, b) => (a.startTime || 0) - (b.startTime || 0),\n );\n\n const unassignedTraces = new Set(sortedTraces);\n\n // 1. Traverse user messages to match by invocationId from adkResponse\n userMessages.forEach(msg => {\n let invocationIds = ((msg as any).adkResponses || [])\n .map((resp: any) => resp.invocationId)\n .filter(Boolean);\n if (!invocationIds.length) {\n // Find the message in the full list\n const msgIndex = allMessages.findIndex(m => m.id === msg.id);\n\n if (msgIndex !== -1) {\n // Look for the next message that is NOT user role\n for (let i = msgIndex + 1; i < allMessages.length; i++) {\n const nextMsg = allMessages[i];\n if (nextMsg.role !== 'user') {\n invocationIds = ((nextMsg as any).adkResponses || [])\n .map((resp: any) => resp.invocationId)\n .filter(Boolean);\n break;\n }\n }\n }\n }\n\n if (!invocationIds.length) return;\n\n // Store the first valid invocationId for this message\n const validInvocationId = invocationIds[0];\n invocationIdMap.set(msg.id, validInvocationId);\n\n // Check unassigned traces\n unassignedTraces.forEach(trace => {\n if (hasMatchingInvocationId(trace, invocationIds)) {\n groups.get(msg.id)?.push(trace);\n unassignedTraces.delete(trace);\n }\n });\n });\n\n return { tracesByMessage: groups, invocationIdMap };\n }, [eventData?.trace, userMessages, allMessages]);\n\n if (!userMessages.length && !eventData?.trace?.length)\n return <div className=\"p-4 text-muted-foreground\">暂无 Trace 数据</div>;\n\n return (\n <div className=\"flex flex-col h-full w-full overflow-hidden bg-background m-1\">\n <div className=\"flex flex-col flex-1 overflow-auto space-y-2\">\n {userMessages.map((msg, msgIndex) => {\n const isExpanded = expandedMessageIds.has(msg.id);\n const traces = tracesByMessage.get(msg.id) || [];\n const invocationId = invocationIdMap.get(msg.id);\n\n return (\n <TraceMessageGroup\n key={msg.id}\n invocationId={invocationId}\n msg={msg}\n msgIndex={msgIndex}\n traces={traces}\n isExpanded={isExpanded}\n onToggleExpand={toggleMessageExpand}\n collapsedIds={collapsedIds}\n onToggleCollapse={toggleCollapse}\n selectedSpan={selectedSpan}\n onSelectSpan={setSelectedSpan}\n />\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default Trace;\n"],"names":["useTraceStore","useSnapshot","useEvent","useState","useMemo","processTraceData","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../../../src/adk/components/Debug/Trace/index.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport { TraceProps } from './types';\nimport { useEvent } from '@/adk/hooks/useEvents';\nimport { useSnapshot } from 'valtio';\nimport { useTraceStore } from './store';\nimport TraceMessageGroup from './TraceMessageGroup';\nimport { buildRenderTree, processTraceData } from './utils';\nimport { TraceSpan } from './types';\n\nconst hasMatchingInvocationId = (\n node: TraceSpan,\n targetIds: string[],\n): boolean => {\n if (\n node.tags?.['invocation.id'] &&\n targetIds.includes(node.tags['invocation.id'])\n ) {\n return true;\n }\n return (\n node.children?.some(child => hasMatchingInvocationId(child, targetIds)) ??\n false\n );\n};\n\nconst Trace = ({ controller, region }: TraceProps) => {\n const { selectedSpan, setSelectedSpan } = useTraceStore();\n const { currentThreadId, threadMap } = useSnapshot(controller.store.state);\n const allMessages = threadMap[currentThreadId || '']?.messages || [];\n const userMessages = allMessages.filter(msg => msg.role === 'user');\n\n const eventData = useEvent(currentThreadId, region);\n const [collapsedIds, setCollapsedIds] = useState<Set<string>>(new Set());\n // Default to expanding the last message\n const [expandedMessageIds, setExpandedMessageIds] = useState<Set<string>>(\n new Set(),\n );\n\n // Initialize expanded state when messages load\n useMemo(() => {\n if (userMessages.length > 0) {\n setExpandedMessageIds(\n new Set([userMessages[userMessages.length - 1].id]),\n );\n }\n }, [userMessages.length]);\n\n const toggleCollapse = (id: string, e: React.MouseEvent) => {\n e.stopPropagation();\n setCollapsedIds(prev => {\n const next = new Set(prev);\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n return next;\n });\n };\n\n const toggleMessageExpand = (id: string) => {\n setExpandedMessageIds(prev => {\n const next = new Set(prev);\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n return next;\n });\n };\n\n // Group traces by user message\n const { tracesByMessage, invocationIdMap, empty } = useMemo(() => {\n let empty = true;\n if (!eventData?.trace || !userMessages.length)\n return {\n tracesByMessage: new Map(),\n invocationIdMap: new Map(),\n empty: true,\n };\n\n const groups = new Map<string, any[]>();\n const invocationIdMap = new Map<string, string>();\n\n const processedTraces = processTraceData(eventData.trace);\n\n // Initialize groups for all user messages\n userMessages.forEach(msg => groups.set(msg.id, []));\n\n const sortedTraces = [...processedTraces].sort(\n (a, b) => (a.startTime || 0) - (b.startTime || 0),\n );\n\n const unassignedTraces = new Set(sortedTraces);\n\n // 1. Traverse user messages to match by invocationId from adkResponse\n userMessages.forEach(msg => {\n let invocationIds = ((msg as any).adkResponses || [])\n .map((resp: any) => resp.invocationId)\n .filter(Boolean);\n if (!invocationIds.length) {\n // Find the message in the full list\n const msgIndex = allMessages.findIndex(m => m.id === msg.id);\n\n if (msgIndex !== -1) {\n // Look for the next message that is NOT user role\n for (let i = msgIndex + 1; i < allMessages.length; i++) {\n const nextMsg = allMessages[i];\n if (nextMsg.role !== 'user') {\n invocationIds = ((nextMsg as any).adkResponses || [])\n .map((resp: any) => resp.invocationId)\n .filter(Boolean);\n break;\n }\n }\n }\n }\n\n if (!invocationIds.length) return;\n\n // Store the first valid invocationId for this message\n const validInvocationId = invocationIds[0];\n invocationIdMap.set(msg.id, validInvocationId);\n\n // Check unassigned traces\n unassignedTraces.forEach(trace => {\n if (hasMatchingInvocationId(trace, invocationIds)) {\n groups.get(msg.id)?.push(trace);\n empty = false;\n unassignedTraces.delete(trace);\n }\n });\n });\n\n return { tracesByMessage: groups, invocationIdMap, empty };\n }, [eventData?.trace, userMessages, allMessages]);\n\n if ((!userMessages.length && !eventData?.trace?.length) || empty)\n return <div className=\"pb-4 text-muted-foreground\">暂无 Trace 数据</div>;\n\n return (\n <div className=\"flex flex-col h-full w-full overflow-hidden bg-background\">\n <div className=\"flex flex-col flex-1 overflow-auto space-y-2\">\n {userMessages.map((msg, msgIndex) => {\n const isExpanded = expandedMessageIds.has(msg.id);\n const traces = tracesByMessage.get(msg.id) || [];\n const invocationId = invocationIdMap.get(msg.id);\n\n return (\n <TraceMessageGroup\n key={msg.id}\n invocationId={invocationId}\n msg={msg}\n msgIndex={msgIndex}\n traces={traces}\n isExpanded={isExpanded}\n onToggleExpand={toggleMessageExpand}\n collapsedIds={collapsedIds}\n onToggleCollapse={toggleCollapse}\n selectedSpan={selectedSpan}\n onSelectSpan={setSelectedSpan}\n />\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default Trace;\n"],"names":["useTraceStore","useSnapshot","useEvent","useState","useMemo","processTraceData","_jsx"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import { TraceProps } from './types';
2
- declare const Trace: ({ controller }: TraceProps) => JSX.Element;
2
+ declare const Trace: ({ controller, region }: TraceProps) => JSX.Element;
3
3
  export default Trace;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/adk/components/Debug/Trace/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAwBrC,QAAA,MAAM,KAAK,GAAI,gBAAgB,UAAU,gBA4IxC,CAAC;AAEF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/adk/components/Debug/Trace/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAwBrC,QAAA,MAAM,KAAK,GAAI,wBAAwB,UAAU,gBA+IhD,CAAC;AAEF,eAAe,KAAK,CAAC"}