@kweaver-ai/chatkit 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +528 -0
  2. package/dist/chatkit.cjs.js +66 -0
  3. package/dist/chatkit.es.js +2966 -0
  4. package/dist/components/base/ChatKitBase.d.ts +261 -0
  5. package/dist/components/base/assistant/AssistantBase.d.ts +17 -0
  6. package/dist/components/base/assistant/Header.d.ts +20 -0
  7. package/dist/components/base/assistant/InputArea.d.ts +29 -0
  8. package/dist/components/base/assistant/MessageItem.d.ts +15 -0
  9. package/dist/components/base/assistant/MessageList.d.ts +15 -0
  10. package/dist/components/base/assistant/Prologue.d.ts +18 -0
  11. package/dist/components/base/assistant/blocks/MarkdownBlock.d.ts +15 -0
  12. package/dist/components/base/assistant/blocks/TextBlock.d.ts +15 -0
  13. package/dist/components/base/assistant/blocks/ToolBlock.d.ts +16 -0
  14. package/dist/components/base/assistant/blocks/ToolDrawer.d.ts +26 -0
  15. package/dist/components/base/assistant/blocks/WebSearchBlock.d.ts +16 -0
  16. package/dist/components/base/assistant/blocks/index.d.ts +9 -0
  17. package/dist/components/base/copilot/CopilotBase.d.ts +16 -0
  18. package/dist/components/base/copilot/Header.d.ts +22 -0
  19. package/dist/components/base/copilot/InputArea.d.ts +29 -0
  20. package/dist/components/base/copilot/MessageItem.d.ts +15 -0
  21. package/dist/components/base/copilot/MessageList.d.ts +15 -0
  22. package/dist/components/base/copilot/Prologue.d.ts +18 -0
  23. package/dist/components/base/copilot/blocks/MarkdownBlock.d.ts +15 -0
  24. package/dist/components/base/copilot/blocks/TextBlock.d.ts +15 -0
  25. package/dist/components/base/copilot/blocks/ToolBlock.d.ts +16 -0
  26. package/dist/components/base/copilot/blocks/ToolDrawer.d.ts +26 -0
  27. package/dist/components/base/copilot/blocks/WebSearchBlock.d.ts +16 -0
  28. package/dist/components/base/copilot/blocks/index.d.ts +9 -0
  29. package/dist/components/coze/Copilot.d.ts +102 -0
  30. package/dist/components/dip/Assistant.d.ts +22 -0
  31. package/dist/components/dip/Copilot.d.ts +22 -0
  32. package/dist/components/dip/DIPBase.d.ts +310 -0
  33. package/dist/components/icons/ClockIcon.d.ts +6 -0
  34. package/dist/components/icons/CloseIcon.d.ts +6 -0
  35. package/dist/components/icons/SendIcon.d.ts +13 -0
  36. package/dist/components/icons/StopIcon.d.ts +6 -0
  37. package/dist/components/icons/index.d.ts +7 -0
  38. package/dist/icons/assistant.svg +14 -0
  39. package/dist/icons/close.svg +6 -0
  40. package/dist/icons/expand.svg +3 -0
  41. package/dist/icons/more.svg +3 -0
  42. package/dist/icons/new.svg +10 -0
  43. package/dist/icons/send.svg +4 -0
  44. package/dist/index.d.ts +20 -0
  45. package/dist/types/index.d.ts +285 -0
  46. package/dist/utils/mixins.d.ts +18 -0
  47. package/package.json +66 -0
@@ -0,0 +1,66 @@
1
+ (function(){"use strict";try{if(typeof document<"u"){var t=document.createElement("style");t.appendChild(document.createTextNode('*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.\\!visible{visibility:visible!important}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.bottom-0{bottom:0}.bottom-3{bottom:.75rem}.bottom-4{bottom:1rem}.left-0{left:0}.left-1{left:.25rem}.left-\\[23px\\]{left:23px}.left-\\[40px\\]{left:40px}.right-0{right:0}.right-1{right:.25rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-1\\/2{top:50%}.top-3{top:.75rem}.top-4{top:1rem}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-\\[14px\\]{margin-bottom:14px}.ml-2{margin-left:.5rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mt-1{margin-top:.25rem}.mt-1\\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-14{height:3.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-8{height:2rem}.h-\\[13px\\]{height:13px}.h-\\[14px\\]{height:14px}.h-\\[16px\\]{height:16px}.h-\\[21px\\]{height:21px}.h-\\[36px\\]{height:36px}.h-\\[48px\\]{height:48px}.h-\\[56px\\]{height:56px}.h-\\[64px\\]{height:64px}.h-\\[76px\\]{height:76px}.h-\\[calc\\(100\\%-64px\\)\\]{height:calc(100% - 64px)}.h-full{height:100%}.h-screen{height:100vh}.min-h-screen{min-height:100vh}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-72{width:18rem}.w-8{width:2rem}.w-\\[14px\\]{width:14px}.w-\\[16px\\]{width:16px}.w-\\[21px\\]{width:21px}.w-\\[400px\\]{width:400px}.w-\\[440px\\]{width:440px}.w-\\[466px\\]{width:466px}.w-\\[480px\\]{width:480px}.w-\\[48px\\]{width:48px}.w-\\[600px\\]{width:600px}.w-full{width:100%}.min-w-0{min-width:0px}.max-w-2xl{max-width:42rem}.max-w-\\[90vw\\]{max-width:90vw}.max-w-\\[92vw\\]{max-width:92vw}.max-w-\\[960px\\]{max-width:960px}.max-w-\\[calc\\(100\\%-40px\\)\\]{max-width:calc(100% - 40px)}.max-w-none{max-width:none}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.-translate-y-1\\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-\\[8px\\]{gap:8px}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-\\[2px\\]>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2px * var(--tw-space-y-reverse))}.self-end{align-self:flex-end}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\\[12px\\]{border-radius:12px}.rounded-\\[6px\\]{border-radius:6px}.rounded-\\[8px\\]{border-radius:8px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.border{border-width:1px}.border-\\[1\\.5px\\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-solid{border-style:solid}.border-\\[\\#3b9be0\\]{--tw-border-opacity: 1;border-color:rgb(59 155 224 / var(--tw-border-opacity, 1))}.border-\\[\\#d9d9d9\\]{--tw-border-opacity: 1;border-color:rgb(217 217 217 / var(--tw-border-opacity, 1))}.border-\\[rgba\\(0\\,0\\,0\\,0\\.1\\)\\]{border-color:#0000001a}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-900{--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity, 1))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.border-indigo-500{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity, 1))}.border-purple-500{--tw-border-opacity: 1;border-color:rgb(168 85 247 / var(--tw-border-opacity, 1))}.bg-\\[\\#52c41a\\]{--tw-bg-opacity: 1;background-color:rgb(82 196 26 / var(--tw-bg-opacity, 1))}.bg-\\[\\#f0f0f0\\]{--tw-bg-opacity: 1;background-color:rgb(240 240 240 / var(--tw-bg-opacity, 1))}.bg-\\[rgba\\(18\\,110\\,227\\,0\\.04\\)\\]{background-color:#126ee30a}.bg-\\[rgba\\(18\\,110\\,227\\,0\\.1\\)\\]{background-color:#126ee31a}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-indigo-50{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1))}.bg-indigo-600{--tw-bg-opacity: 1;background-color:rgb(79 70 229 / var(--tw-bg-opacity, 1))}.bg-purple-50{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-opacity-50{--tw-bg-opacity: .5}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-\\[10px\\]{padding-left:10px;padding-right:10px}.px-\\[14px\\]{padding-left:14px;padding-right:14px}.px-\\[24px\\]{padding-left:24px;padding-right:24px}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\\[14px\\]{padding-top:14px;padding-bottom:14px}.py-\\[5px\\]{padding-top:5px;padding-bottom:5px}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pt-28{padding-top:7rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\\[12px\\]{font-size:12px}.text-\\[14px\\]{font-size:14px}.text-\\[16px\\]{font-size:16px}.text-\\[18px\\]{font-size:18px}.text-\\[20px\\]{font-size:20px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.leading-4{line-height:1rem}.leading-6{line-height:1.5rem}.leading-\\[17px\\]{line-height:17px}.leading-\\[18px\\]{line-height:18px}.leading-\\[22px\\]{line-height:22px}.leading-\\[24px\\]{line-height:24px}.leading-\\[30px\\]{line-height:30px}.leading-normal{line-height:1.5}.text-\\[rgba\\(0\\,0\\,0\\,0\\.45\\)\\]{color:#00000073}.text-\\[rgba\\(0\\,0\\,0\\,0\\.55\\)\\]{color:#0000008c}.text-\\[rgba\\(0\\,0\\,0\\,0\\.65\\)\\]{color:#000000a6}.text-\\[rgba\\(0\\,0\\,0\\,0\\.85\\)\\]{color:#000000d9}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.text-indigo-700{--tw-text-opacity: 1;color:rgb(67 56 202 / var(--tw-text-opacity, 1))}.text-indigo-800{--tw-text-opacity: 1;color:rgb(55 48 163 / var(--tw-text-opacity, 1))}.text-purple-700{--tw-text-opacity: 1;color:rgb(126 34 206 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\\[0px_9px_56px_0px_rgba\\(0\\,0\\,0\\,0\\.08\\)\\]{--tw-shadow: 0px 9px 56px 0px rgba(0,0,0,.08);--tw-shadow-colored: 0px 9px 56px 0px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb{background:#888;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#555}.markdown-body{word-break:break-word}.markdown-body p{margin:.25rem 0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{font-weight:600;margin:.5rem 0 .25rem;line-height:1.3}.markdown-body a{color:#2563eb;text-decoration:underline}.markdown-body blockquote{border-left:4px solid #e5e7eb;padding-left:.75rem;color:#4b5563;margin:.5rem 0}.markdown-body ul,.markdown-body ol{margin:.25rem 0 .5rem}.markdown-body table{width:100%;border-collapse:collapse;margin:.5rem 0;font-size:.875rem}.markdown-body table th,.markdown-body table td{border:1px solid #e5e7eb;padding:.5rem}.markdown-body code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.markdown-body pre{margin:.5rem 0}.placeholder\\:text-\\[rgba\\(0\\,0\\,0\\,0\\.25\\)\\]::-moz-placeholder{color:#00000040}.placeholder\\:text-\\[rgba\\(0\\,0\\,0\\,0\\.25\\)\\]::placeholder{color:#00000040}.placeholder\\:text-\\[rgba\\(0\\,0\\,0\\,0\\.3\\)\\]::-moz-placeholder{color:#0000004d}.placeholder\\:text-\\[rgba\\(0\\,0\\,0\\,0\\.3\\)\\]::placeholder{color:#0000004d}.hover\\:border-\\[\\#3b9be0\\]:hover{--tw-border-opacity: 1;border-color:rgb(59 155 224 / var(--tw-border-opacity, 1))}.hover\\:border-blue-200:hover{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.hover\\:border-green-200:hover{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.hover\\:border-indigo-200:hover{--tw-border-opacity: 1;border-color:rgb(199 210 254 / var(--tw-border-opacity, 1))}.hover\\:border-purple-200:hover{--tw-border-opacity: 1;border-color:rgb(233 213 255 / var(--tw-border-opacity, 1))}.hover\\:bg-\\[rgba\\(18\\,110\\,227\\,0\\.04\\)\\]:hover{background-color:#126ee30a}.hover\\:bg-blue-600:hover{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.hover\\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\\:bg-gray-600:hover{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.hover\\:bg-green-600:hover{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.hover\\:bg-indigo-700:hover{--tw-bg-opacity: 1;background-color:rgb(67 56 202 / var(--tw-bg-opacity, 1))}.hover\\:bg-red-600:hover{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.hover\\:text-\\[\\#1890ff\\]:hover{--tw-text-opacity: 1;color:rgb(24 144 255 / var(--tw-text-opacity, 1))}.hover\\:text-\\[rgba\\(0\\,0\\,0\\,0\\.85\\)\\]:hover{color:#000000d9}.hover\\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.hover\\:opacity-70:hover{opacity:.7}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:bg-gray-50:disabled{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.disabled\\:opacity-30:disabled{opacity:.3}@media(min-width:768px){.md\\:pr-\\[500px\\]{padding-right:500px}}')),document.head.appendChild(t)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
2
+ "use strict";var Tt=Object.defineProperty;var _t=(c,p,l)=>p in c?Tt(c,p,{enumerable:!0,configurable:!0,writable:!0,value:l}):c[p]=l;var S=(c,p,l)=>_t(c,typeof p!="symbol"?p+"":p,l);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const O=require("react"),U=require("react-markdown"),z=require("remark-gfm");var $=(c=>(c.USER="User",c.ASSISTANT="Assistant",c))($||{}),Be=(c=>(c.TEXT="Text",c.JSON="JSON",c.WIDGET="Widget",c))(Be||{}),T=(c=>(c.TEXT="Text",c.MARKDOWN="Markdown",c.WEB_SEARCH="WebSearch",c.TOOL="Tool",c))(T||{});class Z extends O.Component{constructor(l){super(l);S(this,"isInitializing",!1);S(this,"hasInitialized",!1);S(this,"token");S(this,"refreshToken");S(this,"injectApplicationContext",l=>{this.setState({applicationContext:l})});S(this,"removeApplicationContext",()=>{this.setState({applicationContext:this.props.defaultApplicationContext})});S(this,"createConversation",async()=>{this.setState({isLoadingOnboarding:!0});try{this.clearConversation();const l=await this.generateConversation(),e=await this.getOnboardingInfo();this.setState({conversationID:l,onboardingInfo:e}),console.log("新会话已创建, conversationID:",l),console.log("开场白信息已加载:",e)}catch(l){throw console.error("创建新会话失败:",l),l}finally{this.setState({isLoadingOnboarding:!1})}});S(this,"loadConversation",async l=>{try{const e=await this.getConversationMessages(l);this.setState({conversationID:l,messages:e,onboardingInfo:void 0}),console.log("历史会话已加载, conversationID:",l),console.log("加载了",e.length,"条消息")}catch(e){throw console.error("加载历史会话失败:",e),e}});S(this,"clearConversation",()=>{this.setState({conversationID:"",messages:[]}),console.log("会话已清除")});S(this,"send",async(l,e,s)=>{if(!l.trim())throw new Error("消息内容不能为空");e&&this.setState({applicationContext:e});let n=s||this.state.conversationID;if(!n)try{n=await this.generateConversation(),this.setState({conversationID:n}),console.log("自动创建新会话, conversationID:",n)}catch(i){console.error("自动创建会话失败:",i)}this.setState({isSending:!0});const o=e||this.state.applicationContext||this.props.defaultApplicationContext||{title:"",data:{}},a={messageId:`user-${Date.now()}`,content:[{type:T.TEXT,content:l}],role:{name:"用户",type:$.USER,avatar:""},applicationContext:o.title||o.data?o:void 0};this.setState(i=>({messages:[...i.messages,a]}));try{const i=await this.sendMessage(l,o,n);return this.setState({textInput:"",isSending:!1,streamingMessageId:null}),i}catch(i){throw console.error("发送消息失败:",i),this.setState({isSending:!1,streamingMessageId:null}),i}});S(this,"handleSend",async()=>{if(!this.state.textInput.trim()||this.state.isSending)return;const l=this.state.applicationContext||this.props.defaultApplicationContext||{title:"",data:{}};console.log("发送消息:",this.state.textInput),console.log("选中的上下文:",l);try{await this.send(this.state.textInput,l)}catch(e){console.error("发送消息失败:",e)}});S(this,"handleStop",async()=>{const{conversationID:l,streamingMessageId:e}=this.state;if(!e){console.warn("没有正在进行的流式响应");return}console.log("停止流式响应, conversationID:",l);try{await this.terminateConversation(l),this.setState({streamingMessageId:null,isSending:!1}),console.log("流式响应已停止")}catch(s){console.error("停止流式响应失败:",s),this.setState({streamingMessageId:null,isSending:!1})}});S(this,"setTextInput",l=>{this.setState({textInput:l})});S(this,"handleQuestionClick",l=>{this.setState({textInput:l})});this.token=l.token||"",this.refreshToken=l.refreshToken,this.state={conversationID:l.conversationID||"",messages:[],textInput:"",applicationContext:l.defaultApplicationContext,isSending:!1,streamingMessageId:null,onboardingInfo:void 0,isLoadingOnboarding:!1}}async componentDidMount(){this.props.visible&&!this.hasInitialized&&!this.isInitializing&&await this.initializeConversation()}async componentDidUpdate(l){!l.visible&&this.props.visible&&!this.hasInitialized&&!this.isInitializing&&await this.initializeConversation()}async initializeConversation(){if(this.isInitializing||this.hasInitialized){console.log("会话正在初始化或已初始化,跳过");return}this.isInitializing=!0,this.setState({isLoadingOnboarding:!0});try{console.log("ChatKit 组件初始化,自动创建会话..."),await this.createConversation(),this.hasInitialized=!0}catch(l){console.error("自动创建会话失败:",l);try{const e=await this.getOnboardingInfo();this.setState({onboardingInfo:e}),this.hasInitialized=!0}catch(e){console.error("获取开场白信息失败:",e)}}finally{this.isInitializing=!1,this.setState({isLoadingOnboarding:!1})}}appendMarkdownBlock(l,e){this.setState(s=>({messages:s.messages.map(o=>{if(o.messageId===l){const a=o.content.length>0?o.content[o.content.length-1]:null;let i;return a&&a.type===T.MARKDOWN&&(a.content===""||e.startsWith(a.content))?(i=[...o.content],i[i.length-1]={type:T.MARKDOWN,content:e}):i=[...o.content,{type:T.MARKDOWN,content:e}],{...o,content:i}}return o})}))}appendWebSearchBlock(l,e){this.setState(s=>({messages:s.messages.map(o=>{if(o.messageId===l){const a=[...o.content,{type:T.WEB_SEARCH,content:e}];return{...o,content:a}}return o})}))}appendExecuteCodeBlock(l,e){this.setState(s=>({messages:s.messages.map(o=>{if(o.messageId===l){const a=[...o.content,{type:T.TOOL,content:{name:"execute_code",title:"代码执行",input:e.input,output:e.output}}];return{...o,content:a}}return o})}))}async handleStreamResponse(l,e){const s=new TextDecoder;let n={};try{let o="",a="";for(;;){const{done:i,value:d}=await l.read();if(i){console.log("流式响应完成");break}const u=s.decode(d,{stream:!0});a+=u;const x=a.split(`
3
+ `);a=x.pop()||"";for(const f of x){const m=f.trim();if(m){if(m.startsWith("event:")){o=m.slice(6).trim(),console.log("收到SSE event:",o);continue}if(m.startsWith("data:")){const y=m.slice(5).trim();if(y==="[DONE]"){console.log("收到 DONE 标记");continue}try{const b=JSON.parse(y);console.log("收到SSE数据:",b);const N={event:o||b.event||b.type||"",data:y};console.log("构造的 EventStreamMessage:",N),n=this.reduceAssistantMessage(N,n,e),o=""}catch(b){console.error("解析流式响应失败:",b,"原始数据长度:",y.length),console.error("数据前100字符:",y.substring(0,100)),console.error("数据后100字符:",y.substring(Math.max(0,y.length-100)))}}}}}a.trim()&&console.log("处理剩余缓冲区数据:",a)}finally{l.releaseLock()}return n}async executeWithTokenRefresh(l){var e,s,n,o;try{return await l()}catch(a){const i=a.status||((e=a.response)==null?void 0:e.status)||0,d=a.body||((s=a.response)==null?void 0:s.data)||a;if(this.shouldRefreshToken(i,d)&&this.refreshToken){console.log("检测到 token 失效,正在刷新 token...");try{const x=await this.refreshToken();this.token=x,console.log("Token 刷新成功,正在重试请求...");try{return await l()}catch(f){const m=f.status||((n=f.response)==null?void 0:n.status)||0,y=f.body||((o=f.response)==null?void 0:o.data)||f;throw this.shouldRefreshToken(m,y)&&console.error("重试后仍然提示 token 失效,放弃重试"),f}}catch(x){throw console.error("刷新 token 失败:",x),a}}throw a}}}var H={exports:{}},K={};/**
4
+ * @license React
5
+ * react-jsx-runtime.production.min.js
6
+ *
7
+ * Copyright (c) Facebook, Inc. and its affiliates.
8
+ *
9
+ * This source code is licensed under the MIT license found in the
10
+ * LICENSE file in the root directory of this source tree.
11
+ */var Pe;function Et(){if(Pe)return K;Pe=1;var c=O,p=Symbol.for("react.element"),l=Symbol.for("react.fragment"),e=Object.prototype.hasOwnProperty,s=c.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n={key:!0,ref:!0,__self:!0,__source:!0};function o(a,i,d){var u,x={},f=null,m=null;d!==void 0&&(f=""+d),i.key!==void 0&&(f=""+i.key),i.ref!==void 0&&(m=i.ref);for(u in i)e.call(i,u)&&!n.hasOwnProperty(u)&&(x[u]=i[u]);if(a&&a.defaultProps)for(u in i=a.defaultProps,i)x[u]===void 0&&(x[u]=i[u]);return{$$typeof:p,type:a,key:f,ref:m,props:x,_owner:s.current}}return K.Fragment=l,K.jsx=o,K.jsxs=o,K}var V={};/**
12
+ * @license React
13
+ * react-jsx-runtime.development.js
14
+ *
15
+ * Copyright (c) Facebook, Inc. and its affiliates.
16
+ *
17
+ * This source code is licensed under the MIT license found in the
18
+ * LICENSE file in the root directory of this source tree.
19
+ */var $e;function Rt(){return $e||($e=1,process.env.NODE_ENV!=="production"&&(function(){var c=O,p=Symbol.for("react.element"),l=Symbol.for("react.portal"),e=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),n=Symbol.for("react.profiler"),o=Symbol.for("react.provider"),a=Symbol.for("react.context"),i=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),u=Symbol.for("react.suspense_list"),x=Symbol.for("react.memo"),f=Symbol.for("react.lazy"),m=Symbol.for("react.offscreen"),y=Symbol.iterator,b="@@iterator";function N(r){if(r===null||typeof r!="object")return null;var h=y&&r[y]||r[b];return typeof h=="function"?h:null}var P=c.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function R(r){{for(var h=arguments.length,g=new Array(h>1?h-1:0),v=1;v<h;v++)g[v-1]=arguments[v];ee("error",r,g)}}function ee(r,h,g){{var v=P.ReactDebugCurrentFrame,k=v.getStackAddendum();k!==""&&(h+="%s",g=g.concat([k]));var C=g.map(function(j){return String(j)});C.unshift("Warning: "+h),Function.prototype.apply.call(console[r],console,C)}}var Ve=!1,Qe=!1,Ye=!1,Xe=!1,Ge=!1,de;de=Symbol.for("react.module.reference");function He(r){return!!(typeof r=="string"||typeof r=="function"||r===e||r===n||Ge||r===s||r===d||r===u||Xe||r===m||Ve||Qe||Ye||typeof r=="object"&&r!==null&&(r.$$typeof===f||r.$$typeof===x||r.$$typeof===o||r.$$typeof===a||r.$$typeof===i||r.$$typeof===de||r.getModuleId!==void 0))}function Ze(r,h,g){var v=r.displayName;if(v)return v;var k=h.displayName||h.name||"";return k!==""?g+"("+k+")":g}function ue(r){return r.displayName||"Context"}function M(r){if(r==null)return null;if(typeof r.tag=="number"&&R("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof r=="function")return r.displayName||r.name||null;if(typeof r=="string")return r;switch(r){case e:return"Fragment";case l:return"Portal";case n:return"Profiler";case s:return"StrictMode";case d:return"Suspense";case u:return"SuspenseList"}if(typeof r=="object")switch(r.$$typeof){case a:var h=r;return ue(h)+".Consumer";case o:var g=r;return ue(g._context)+".Provider";case i:return Ze(r,r.render,"ForwardRef");case x:var v=r.displayName||null;return v!==null?v:M(r.type)||"Memo";case f:{var k=r,C=k._payload,j=k._init;try{return M(j(C))}catch{return null}}}return null}var B=Object.assign,J=0,he,fe,pe,xe,ge,me,ye;function ve(){}ve.__reactDisabledLog=!0;function et(){{if(J===0){he=console.log,fe=console.info,pe=console.warn,xe=console.error,ge=console.group,me=console.groupCollapsed,ye=console.groupEnd;var r={configurable:!0,enumerable:!0,value:ve,writable:!0};Object.defineProperties(console,{info:r,log:r,warn:r,error:r,group:r,groupCollapsed:r,groupEnd:r})}J++}}function tt(){{if(J--,J===0){var r={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:B({},r,{value:he}),info:B({},r,{value:fe}),warn:B({},r,{value:pe}),error:B({},r,{value:xe}),group:B({},r,{value:ge}),groupCollapsed:B({},r,{value:me}),groupEnd:B({},r,{value:ye})})}J<0&&R("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var te=P.ReactCurrentDispatcher,re;function Q(r,h,g){{if(re===void 0)try{throw Error()}catch(k){var v=k.stack.trim().match(/\n( *(at )?)/);re=v&&v[1]||""}return`
20
+ `+re+r}}var se=!1,Y;{var rt=typeof WeakMap=="function"?WeakMap:Map;Y=new rt}function we(r,h){if(!r||se)return"";{var g=Y.get(r);if(g!==void 0)return g}var v;se=!0;var k=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var C;C=te.current,te.current=null,et();try{if(h){var j=function(){throw Error()};if(Object.defineProperty(j.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(j,[])}catch(A){v=A}Reflect.construct(r,[],j)}else{try{j.call()}catch(A){v=A}r.call(j.prototype)}}else{try{throw Error()}catch(A){v=A}r()}}catch(A){if(A&&v&&typeof A.stack=="string"){for(var w=A.stack.split(`
21
+ `),I=v.stack.split(`
22
+ `),_=w.length-1,E=I.length-1;_>=1&&E>=0&&w[_]!==I[E];)E--;for(;_>=1&&E>=0;_--,E--)if(w[_]!==I[E]){if(_!==1||E!==1)do if(_--,E--,E<0||w[_]!==I[E]){var D=`
23
+ `+w[_].replace(" at new "," at ");return r.displayName&&D.includes("<anonymous>")&&(D=D.replace("<anonymous>",r.displayName)),typeof r=="function"&&Y.set(r,D),D}while(_>=1&&E>=0);break}}}finally{se=!1,te.current=C,tt(),Error.prepareStackTrace=k}var F=r?r.displayName||r.name:"",L=F?Q(F):"";return typeof r=="function"&&Y.set(r,L),L}function st(r,h,g){return we(r,!1)}function nt(r){var h=r.prototype;return!!(h&&h.isReactComponent)}function X(r,h,g){if(r==null)return"";if(typeof r=="function")return we(r,nt(r));if(typeof r=="string")return Q(r);switch(r){case d:return Q("Suspense");case u:return Q("SuspenseList")}if(typeof r=="object")switch(r.$$typeof){case i:return st(r.render);case x:return X(r.type,h,g);case f:{var v=r,k=v._payload,C=v._init;try{return X(C(k),h,g)}catch{}}}return""}var q=Object.prototype.hasOwnProperty,be={},je=P.ReactDebugCurrentFrame;function G(r){if(r){var h=r._owner,g=X(r.type,r._source,h?h.type:null);je.setExtraStackFrame(g)}else je.setExtraStackFrame(null)}function ot(r,h,g,v,k){{var C=Function.call.bind(q);for(var j in r)if(C(r,j)){var w=void 0;try{if(typeof r[j]!="function"){var I=Error((v||"React class")+": "+g+" type `"+j+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof r[j]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw I.name="Invariant Violation",I}w=r[j](h,j,v,g,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(_){w=_}w&&!(w instanceof Error)&&(G(k),R("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",v||"React class",g,j,typeof w),G(null)),w instanceof Error&&!(w.message in be)&&(be[w.message]=!0,G(k),R("Failed %s type: %s",g,w.message),G(null))}}}var at=Array.isArray;function ne(r){return at(r)}function it(r){{var h=typeof Symbol=="function"&&Symbol.toStringTag,g=h&&r[Symbol.toStringTag]||r.constructor.name||"Object";return g}}function lt(r){try{return ke(r),!1}catch{return!0}}function ke(r){return""+r}function Ne(r){if(lt(r))return R("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",it(r)),ke(r)}var Ce=P.ReactCurrentOwner,ct={key:!0,ref:!0,__self:!0,__source:!0},Se,Te;function dt(r){if(q.call(r,"ref")){var h=Object.getOwnPropertyDescriptor(r,"ref").get;if(h&&h.isReactWarning)return!1}return r.ref!==void 0}function ut(r){if(q.call(r,"key")){var h=Object.getOwnPropertyDescriptor(r,"key").get;if(h&&h.isReactWarning)return!1}return r.key!==void 0}function ht(r,h){typeof r.ref=="string"&&Ce.current}function ft(r,h){{var g=function(){Se||(Se=!0,R("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",h))};g.isReactWarning=!0,Object.defineProperty(r,"key",{get:g,configurable:!0})}}function pt(r,h){{var g=function(){Te||(Te=!0,R("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",h))};g.isReactWarning=!0,Object.defineProperty(r,"ref",{get:g,configurable:!0})}}var xt=function(r,h,g,v,k,C,j){var w={$$typeof:p,type:r,key:h,ref:g,props:j,_owner:C};return w._store={},Object.defineProperty(w._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(w,"_self",{configurable:!1,enumerable:!1,writable:!1,value:v}),Object.defineProperty(w,"_source",{configurable:!1,enumerable:!1,writable:!1,value:k}),Object.freeze&&(Object.freeze(w.props),Object.freeze(w)),w};function gt(r,h,g,v,k){{var C,j={},w=null,I=null;g!==void 0&&(Ne(g),w=""+g),ut(h)&&(Ne(h.key),w=""+h.key),dt(h)&&(I=h.ref,ht(h,k));for(C in h)q.call(h,C)&&!ct.hasOwnProperty(C)&&(j[C]=h[C]);if(r&&r.defaultProps){var _=r.defaultProps;for(C in _)j[C]===void 0&&(j[C]=_[C])}if(w||I){var E=typeof r=="function"?r.displayName||r.name||"Unknown":r;w&&ft(j,E),I&&pt(j,E)}return xt(r,w,I,k,v,Ce.current,j)}}var oe=P.ReactCurrentOwner,_e=P.ReactDebugCurrentFrame;function W(r){if(r){var h=r._owner,g=X(r.type,r._source,h?h.type:null);_e.setExtraStackFrame(g)}else _e.setExtraStackFrame(null)}var ae;ae=!1;function ie(r){return typeof r=="object"&&r!==null&&r.$$typeof===p}function Ee(){{if(oe.current){var r=M(oe.current.type);if(r)return`
24
+
25
+ Check the render method of \``+r+"`."}return""}}function mt(r){return""}var Re={};function yt(r){{var h=Ee();if(!h){var g=typeof r=="string"?r:r.displayName||r.name;g&&(h=`
26
+
27
+ Check the top-level render call using <`+g+">.")}return h}}function Ie(r,h){{if(!r._store||r._store.validated||r.key!=null)return;r._store.validated=!0;var g=yt(h);if(Re[g])return;Re[g]=!0;var v="";r&&r._owner&&r._owner!==oe.current&&(v=" It was passed a child from "+M(r._owner.type)+"."),W(r),R('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',g,v),W(null)}}function Ae(r,h){{if(typeof r!="object")return;if(ne(r))for(var g=0;g<r.length;g++){var v=r[g];ie(v)&&Ie(v,h)}else if(ie(r))r._store&&(r._store.validated=!0);else if(r){var k=N(r);if(typeof k=="function"&&k!==r.entries)for(var C=k.call(r),j;!(j=C.next()).done;)ie(j.value)&&Ie(j.value,h)}}}function vt(r){{var h=r.type;if(h==null||typeof h=="string")return;var g;if(typeof h=="function")g=h.propTypes;else if(typeof h=="object"&&(h.$$typeof===i||h.$$typeof===x))g=h.propTypes;else return;if(g){var v=M(h);ot(g,r.props,"prop",v,r)}else if(h.PropTypes!==void 0&&!ae){ae=!0;var k=M(h);R("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",k||"Unknown")}typeof h.getDefaultProps=="function"&&!h.getDefaultProps.isReactClassApproved&&R("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function wt(r){{for(var h=Object.keys(r.props),g=0;g<h.length;g++){var v=h[g];if(v!=="children"&&v!=="key"){W(r),R("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",v),W(null);break}}r.ref!==null&&(W(r),R("Invalid attribute `ref` supplied to `React.Fragment`."),W(null))}}var Oe={};function De(r,h,g,v,k,C){{var j=He(r);if(!j){var w="";(r===void 0||typeof r=="object"&&r!==null&&Object.keys(r).length===0)&&(w+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var I=mt();I?w+=I:w+=Ee();var _;r===null?_="null":ne(r)?_="array":r!==void 0&&r.$$typeof===p?(_="<"+(M(r.type)||"Unknown")+" />",w=" Did you accidentally export a JSX literal instead of a component?"):_=typeof r,R("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",_,w)}var E=gt(r,h,g,k,C);if(E==null)return E;if(j){var D=h.children;if(D!==void 0)if(v)if(ne(D)){for(var F=0;F<D.length;F++)Ae(D[F],r);Object.freeze&&Object.freeze(D)}else R("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else Ae(D,r)}if(q.call(h,"key")){var L=M(r),A=Object.keys(h).filter(function(St){return St!=="key"}),le=A.length>0?"{key: someKey, "+A.join(": ..., ")+": ...}":"{key: someKey}";if(!Oe[L+le]){var Ct=A.length>0?"{"+A.join(": ..., ")+": ...}":"{}";R(`A props object containing a "key" prop is being spread into JSX:
28
+ let props = %s;
29
+ <%s {...props} />
30
+ React keys must be passed directly to JSX without using spread:
31
+ let props = %s;
32
+ <%s key={someKey} {...props} />`,le,L,Ct,L),Oe[L+le]=!0}}return r===e?wt(E):vt(E),E}}function bt(r,h,g){return De(r,h,g,!0)}function jt(r,h,g){return De(r,h,g,!1)}var kt=jt,Nt=bt;V.Fragment=e,V.jsx=kt,V.jsxs=Nt})()),V}var Me;function It(){return Me||(Me=1,process.env.NODE_ENV==="production"?H.exports=Et():H.exports=Rt()),H.exports}var t=It();const At=({block:c})=>t.jsx("div",{className:"text-block",children:t.jsx("p",{className:"whitespace-pre-wrap",children:c.content})}),Ot=({block:c})=>t.jsx("div",{className:"markdown-block prose prose-sm max-w-none",children:t.jsx(U,{remarkPlugins:[z],children:c.content})}),Dt=({isOpen:c,onClose:p,toolName:l,toolTitle:e,toolIcon:s,input:n,output:o})=>{O.useEffect(()=>{const f=m=>{m.key==="Escape"&&c&&p()};return window.addEventListener("keydown",f),()=>window.removeEventListener("keydown",f)},[c,p]),O.useEffect(()=>(c?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[c]);const a=()=>s?typeof s=="string"?t.jsx("img",{src:s,alt:l,className:"w-5 h-5",onError:f=>{f.currentTarget.style.display="none"}}):t.jsx("div",{className:"w-5 h-5",children:s}):null,i=f=>{if(f==null)return"";if(typeof f=="string")return f;try{return JSON.stringify(f,null,2)}catch{return String(f)}},d=()=>l==="execute_code",u=f=>{const m=`\`\`\`python
33
+ ${f}
34
+ \`\`\``;return t.jsx("div",{className:"markdown-block prose prose-sm max-w-none",children:t.jsx(U,{remarkPlugins:[z],children:m})})},x=f=>t.jsx("div",{className:"markdown-block prose prose-sm max-w-none",children:t.jsx(U,{remarkPlugins:[z],children:f})});return c?t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"fixed inset-0 bg-black bg-opacity-50 z-40 transition-opacity",onClick:p}),t.jsxs("div",{className:"fixed right-0 top-0 bottom-0 w-[600px] max-w-[90vw] bg-white shadow-xl z-50 flex flex-col animate-slide-in-right",children:[t.jsxs("div",{className:"flex items-center justify-between px-6 py-4 border-b border-gray-200",children:[t.jsxs("div",{className:"flex items-center gap-3",children:[a(),t.jsx("h2",{className:"text-lg font-semibold text-gray-900",children:e})]}),t.jsx("button",{onClick:p,className:"w-8 h-8 flex items-center justify-center rounded-full hover:bg-gray-100 transition-colors","aria-label":"关闭",children:t.jsx("svg",{className:"w-5 h-5 text-gray-500",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:t.jsx("path",{d:"M18 6L6 18M6 6L18 18",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})})]}),t.jsxs("div",{className:"flex-1 overflow-y-auto px-6 py-4",children:[d()?t.jsxs(t.Fragment,{children:[n!=null&&t.jsxs("div",{className:"mb-6",children:[t.jsx("h3",{className:"text-sm font-bold text-gray-900 mb-3",children:"输入"}),t.jsx("div",{className:"bg-gray-50 border border-gray-200 rounded-lg p-4 overflow-x-auto",children:u(typeof n=="string"?n:i(n))})]}),o!=null&&t.jsxs("div",{children:[t.jsx("h3",{className:"text-sm font-bold text-gray-900 mb-3",children:"输出"}),t.jsx("div",{className:"bg-gray-50 border border-gray-200 rounded-lg p-4 overflow-x-auto",children:x(typeof o=="string"?o:i(o))})]})]}):t.jsxs(t.Fragment,{children:[n!=null&&t.jsxs("div",{className:"mb-6",children:[t.jsx("h3",{className:"text-sm font-bold text-gray-900 mb-3",children:"输入"}),t.jsx("div",{className:"bg-gray-50 border border-gray-200 rounded-lg p-4",children:t.jsx("pre",{className:"text-sm text-gray-700 whitespace-pre-wrap break-words font-mono",children:i(n)})})]}),o!=null&&t.jsxs("div",{children:[t.jsx("h3",{className:"text-sm font-bold text-gray-900 mb-3",children:"输出"}),t.jsx("div",{className:"bg-gray-50 border border-gray-200 rounded-lg p-4",children:t.jsx("pre",{className:"text-sm text-gray-700 whitespace-pre-wrap break-words font-mono",children:i(o)})})]})]}),n==null&&o==null&&t.jsx("div",{className:"text-center text-gray-400 py-8",children:"暂无数据"})]})]}),t.jsx("style",{children:`
35
+ @keyframes slide-in-right {
36
+ from {
37
+ transform: translateX(100%);
38
+ }
39
+ to {
40
+ transform: translateX(0);
41
+ }
42
+ }
43
+ .animate-slide-in-right {
44
+ animation: slide-in-right 0.3s ease-out;
45
+ }
46
+ `})]}):null},Le=({block:c})=>{const[p,l]=O.useState(!1),{icon:e,title:s,name:n,input:o,output:a}=c.content,i=()=>e?typeof e=="string"?t.jsx("img",{src:e,alt:n,className:"w-5 h-5 flex-shrink-0",onError:d=>{d.currentTarget.style.display="none"}}):t.jsx("div",{className:"w-5 h-5 flex-shrink-0",children:e}):null;return t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"tool-block bg-white border border-[#d9d9d9] rounded-[6px] my-2",children:t.jsxs("div",{className:"flex items-center justify-between px-3 py-2 cursor-pointer hover:bg-gray-50 transition-colors",onClick:()=>l(!0),children:[t.jsxs("div",{className:"flex items-center gap-3 flex-1 min-w-0",children:[i(),t.jsx("span",{className:"text-sm text-[rgba(0,0,0,0.65)] truncate",children:s})]}),t.jsx("div",{className:"flex items-center justify-center w-4 h-4 flex-shrink-0",children:t.jsx("svg",{className:"w-4 h-4 text-gray-400",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:t.jsx("path",{d:"M9 18L15 12L9 6",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})})]})}),t.jsx(Dt,{isOpen:p,onClose:()=>l(!1),toolName:n,toolTitle:s,toolIcon:e,input:o,output:a})]})},Pt=({block:c})=>{const{input:p,results:l}=c.content,e={type:T.TOOL,content:{name:"web_search",title:`联网搜索:${p}`,icon:t.jsx("svg",{className:"w-5 h-5 text-blue-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})}),input:{query:p},output:{results:l.map(s=>({title:s.title,content:s.content,link:s.link,media:s.media,icon:s.icon})),total:l.length}}};return t.jsx(Le,{block:e})},$t=({message:c})=>{const p=c.role.type===$.USER,l=()=>Array.isArray(c.content)?t.jsx("div",{className:"space-y-2",children:c.content.map((e,s)=>{switch(e.type){case T.TEXT:return t.jsx(At,{block:e},s);case T.MARKDOWN:return t.jsx(Ot,{block:e},s);case T.WEB_SEARCH:return t.jsx(Pt,{block:e},s);case T.TOOL:return t.jsx(Le,{block:e},s);default:return null}})}):t.jsx("p",{className:"text-[14px] whitespace-pre-wrap break-words leading-[24px]",children:c.content});return t.jsxs("div",{className:`flex ${p?"justify-end":"justify-start"} mb-4`,children:[!p&&t.jsx("div",{className:"w-[21px] h-[21px] mr-2 flex-shrink-0 mt-1",children:t.jsx("img",{src:"/icons/assistant.svg",alt:"AI Assistant",className:"w-[21px] h-[21px]"})}),t.jsxs("div",{className:"flex flex-col gap-2 max-w-[calc(100%-40px)]",children:[p&&c.applicationContext&&c.applicationContext.title&&t.jsx("div",{className:"self-end",children:t.jsx("span",{className:"inline-block bg-[rgba(18,110,227,0.04)] rounded-[8px] px-[14px] py-[5px] text-[12px] leading-[24px] text-[rgba(0,0,0,0.85)]",style:{fontFamily:"Noto Sans SC"},children:c.applicationContext.title})}),t.jsx("div",{className:`rounded-[8px] ${p?"bg-[rgba(18,110,227,0.1)] text-[rgba(0,0,0,0.85)] px-[14px] py-[5px]":"bg-white text-black px-4 py-3"}`,style:{fontFamily:"Noto Sans SC"},children:l()})]})]})},We=({messages:c})=>{const p=O.useRef(null),l=()=>{var e;(e=p.current)==null||e.scrollIntoView({behavior:"smooth"})};return O.useEffect(()=>{l()},[c]),t.jsxs("div",{className:"px-5 py-3",children:[c.map(e=>t.jsx($t,{message:e},e.messageId)),t.jsx("div",{ref:p})]})},Fe=({value:c,onChange:p,onSend:l,context:e,onRemoveContext:s,disabled:n=!1,isStreaming:o=!1,onStop:a})=>{const i=d=>{d.key==="Enter"&&!d.shiftKey&&(d.preventDefault(),l())};return t.jsx("div",{className:"px-5 pb-3 bg-white",children:t.jsxs("div",{className:"relative h-40",children:[e&&e.title&&t.jsxs("div",{className:"absolute top-0 left-1 right-1 bg-[rgba(18,110,227,0.04)] rounded-lg px-4 py-2 h-10 flex items-center",children:[t.jsx("p",{className:"text-[12px] leading-6 text-[rgba(0,0,0,0.85)] truncate",style:{fontFamily:"Noto Sans SC"},children:e.title}),t.jsx("button",{onClick:s,className:"ml-auto text-[rgba(0,0,0,0.45)] hover:text-[rgba(0,0,0,0.85)] transition-colors flex-shrink-0",title:"移除上下文",children:t.jsx("svg",{className:"w-3 h-3",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}),t.jsxs("div",{className:"absolute bg-white border-[1.5px] border-solid border-[#3b9be0] rounded-2xl overflow-hidden",style:{top:e&&e.title?"48px":"0",left:0,right:0,bottom:0},children:[t.jsx("textarea",{value:c,onChange:d=>p(d.target.value),onKeyDown:i,placeholder:"查询任何问题",disabled:n,className:"w-full h-full resize-none px-3 py-3 text-[14px] leading-normal text-black placeholder:text-[rgba(0,0,0,0.25)] focus:outline-none disabled:bg-gray-50 disabled:cursor-not-allowed",style:{fontFamily:"Noto Sans, Noto Sans SC, Noto Sans JP, sans-serif"},maxLength:4e3}),o?t.jsx("button",{onClick:a,className:"absolute bottom-3 right-3 w-8 h-8 flex items-center justify-center bg-red-500 hover:bg-red-600 rounded transition-colors",title:"停止响应",children:t.jsx("svg",{className:"w-4 h-4 text-white",fill:"currentColor",viewBox:"0 0 24 24",children:t.jsx("rect",{x:"6",y:"6",width:"12",height:"12"})})}):t.jsx("button",{onClick:l,disabled:n||!c.trim(),className:"absolute bottom-3 right-3 w-8 h-8 flex items-center justify-center disabled:opacity-30 disabled:cursor-not-allowed transition-opacity",title:n?"正在发送...":"发送消息",children:t.jsx("img",{src:"/icons/send.svg",alt:"发送",className:"w-8 h-8"})})]})]})})},Ue=({title:c="Copilot",onClose:p,onNewChat:l,onExpand:e,onMore:s})=>t.jsx("div",{className:"relative h-14 w-full bg-white",children:t.jsxs("div",{className:"absolute left-[23px] top-3 h-8 w-[440px]",children:[t.jsxs("div",{className:"absolute left-0 top-0 flex items-center h-8",children:[t.jsx("div",{className:"w-8 h-8",children:t.jsx("img",{src:"/icons/assistant.svg",alt:"Copilot",className:"w-8 h-8"})}),t.jsx("div",{className:"absolute left-[40px] top-1/2 -translate-y-1/2",children:t.jsx("p",{className:"font-medium text-[18px] leading-4 text-black whitespace-nowrap",style:{fontFamily:"Noto Sans SC"},children:c})})]}),t.jsxs("div",{className:"absolute right-0 top-0 h-8 flex items-center",children:[s&&t.jsx("button",{onClick:s,className:"w-5 h-5 flex items-center justify-center hover:opacity-70 transition-opacity",title:"更多选项",children:t.jsx("img",{src:"/icons/more.svg",alt:"更多",className:"w-5 h-5"})}),l&&t.jsx("button",{onClick:l,className:"ml-2 w-[14px] h-[14px] flex items-center justify-center hover:opacity-70 transition-opacity",title:"新建会话",children:t.jsx("img",{src:"/icons/new.svg",alt:"新建会话",className:"w-[14px] h-[14px]"})}),e&&t.jsx("button",{onClick:e,className:"ml-2 w-[14px] h-[13px] flex items-center justify-center hover:opacity-70 transition-opacity",title:"展开",children:t.jsx("img",{src:"/icons/expand.svg",alt:"展开",className:"w-[14px] h-[13px]"})}),p&&t.jsx("button",{onClick:p,className:"ml-2 w-4 h-4 flex items-center justify-center hover:opacity-70 transition-opacity",title:"关闭",children:t.jsx("img",{src:"/icons/close.svg",alt:"关闭",className:"w-4 h-4"})})]})]})}),ze=({onQuestionClick:c,prologue:p,predefinedQuestions:l})=>{const e="你好!我是 Copilot,你的智能浏览助手。我可以帮你理解和分析当前页面的内容。",s=["🔍 我现在有哪些需要优先处理的高风险工单?","🛠️ 处理 [问题类型] 工单有什么推荐方案?","💡 如何避免处理 [技术领域] 问题的常见错误?"],n=p||e,o=l&&l.length>0?l:s,a=i=>{c&&c(i)};return t.jsxs("div",{className:"flex flex-col gap-4 px-6 pt-28 pb-4",children:[t.jsx("p",{className:"text-[14px] leading-[17px] text-[rgba(0,0,0,0.65)]",style:{fontFamily:"Noto Sans SC"},children:n}),t.jsx("div",{className:"flex flex-col gap-3",children:o.map((i,d)=>t.jsx("button",{onClick:()=>a(i),className:"w-full bg-white border border-[rgba(0,0,0,0.1)] rounded-[6px] px-3 py-2 text-left text-[14px] leading-6 text-black hover:border-[#3b9be0] hover:bg-[rgba(18,110,227,0.04)] transition-all",style:{fontFamily:"Noto Sans SC"},children:i},d))})]})};class Je extends Z{render(){if(!this.props.visible)return null;const{title:p="Copilot",onClose:l}=this.props,{messages:e,textInput:s,applicationContext:n,isSending:o,onboardingInfo:a,isLoadingOnboarding:i,streamingMessageId:d}=this.state,u=e.length===0,x=d!==null;return t.jsxs("div",{className:"flex flex-col h-full w-full bg-white shadow-2xl",children:[t.jsx(Ue,{title:p,onClose:l,onNewChat:this.createConversation}),t.jsx("div",{className:"flex-1 overflow-y-auto",children:u?i?t.jsx("div",{className:"flex items-center justify-center h-full",children:t.jsxs("div",{className:"text-center",children:[t.jsx("div",{className:"inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-gray-900 mb-4"}),t.jsx("p",{className:"text-sm text-gray-500",children:"正在加载..."})]})}):t.jsx(ze,{onQuestionClick:this.handleQuestionClick,prologue:a==null?void 0:a.prologue,predefinedQuestions:a==null?void 0:a.predefinedQuestions}):t.jsx(We,{messages:e})}),t.jsx(Fe,{value:s,onChange:this.setTextInput,onSend:this.handleSend,context:n,onRemoveContext:this.removeApplicationContext,disabled:o,isStreaming:x,onStop:this.handleStop})]})}}const Mt=({block:c})=>t.jsx("div",{className:"text-block",children:t.jsx("p",{className:"whitespace-pre-wrap",children:c.content})}),Bt=({block:c})=>t.jsx("div",{className:"markdown-block prose prose-sm max-w-none",children:t.jsx(U,{remarkPlugins:[z],children:c.content})}),Lt=({isOpen:c,onClose:p,toolName:l,toolTitle:e,toolIcon:s,input:n,output:o})=>{O.useEffect(()=>{const f=m=>{m.key==="Escape"&&c&&p()};return window.addEventListener("keydown",f),()=>window.removeEventListener("keydown",f)},[c,p]),O.useEffect(()=>(c?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[c]);const a=()=>s?typeof s=="string"?t.jsx("img",{src:s,alt:l,className:"w-5 h-5",onError:f=>{f.currentTarget.style.display="none"}}):t.jsx("div",{className:"w-5 h-5",children:s}):null,i=f=>{if(f==null)return"";if(typeof f=="string")return f;try{return JSON.stringify(f,null,2)}catch{return String(f)}},d=()=>l==="execute_code",u=f=>{const m=`\`\`\`python
47
+ ${f}
48
+ \`\`\``;return t.jsx("div",{className:"markdown-block prose prose-sm max-w-none",children:t.jsx(U,{remarkPlugins:[z],children:m})})},x=f=>t.jsx("div",{className:"markdown-block prose prose-sm max-w-none",children:t.jsx(U,{remarkPlugins:[z],children:f})});return c?t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"fixed inset-0 bg-black bg-opacity-50 z-40 transition-opacity",onClick:p}),t.jsxs("div",{className:"fixed right-0 top-0 bottom-0 w-[600px] max-w-[90vw] bg-white shadow-xl z-50 flex flex-col animate-slide-in-right",children:[t.jsxs("div",{className:"flex items-center justify-between px-6 py-4 border-b border-gray-200",children:[t.jsxs("div",{className:"flex items-center gap-3",children:[a(),t.jsx("h2",{className:"text-lg font-semibold text-gray-900",children:e})]}),t.jsx("button",{onClick:p,className:"w-8 h-8 flex items-center justify-center rounded-full hover:bg-gray-100 transition-colors","aria-label":"关闭",children:t.jsx("svg",{className:"w-5 h-5 text-gray-500",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:t.jsx("path",{d:"M18 6L6 18M6 6L18 18",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})})]}),t.jsxs("div",{className:"flex-1 overflow-y-auto px-6 py-4",children:[d()?t.jsxs(t.Fragment,{children:[n!=null&&t.jsxs("div",{className:"mb-6",children:[t.jsx("h3",{className:"text-sm font-bold text-gray-900 mb-3",children:"输入"}),t.jsx("div",{className:"bg-gray-50 border border-gray-200 rounded-lg p-4 overflow-x-auto",children:u(typeof n=="string"?n:i(n))})]}),o!=null&&t.jsxs("div",{children:[t.jsx("h3",{className:"text-sm font-bold text-gray-900 mb-3",children:"输出"}),t.jsx("div",{className:"bg-gray-50 border border-gray-200 rounded-lg p-4 overflow-x-auto",children:x(typeof o=="string"?o:i(o))})]})]}):t.jsxs(t.Fragment,{children:[n!=null&&t.jsxs("div",{className:"mb-6",children:[t.jsx("h3",{className:"text-sm font-bold text-gray-900 mb-3",children:"输入"}),t.jsx("div",{className:"bg-gray-50 border border-gray-200 rounded-lg p-4",children:t.jsx("pre",{className:"text-sm text-gray-700 whitespace-pre-wrap break-words font-mono",children:i(n)})})]}),o!=null&&t.jsxs("div",{children:[t.jsx("h3",{className:"text-sm font-bold text-gray-900 mb-3",children:"输出"}),t.jsx("div",{className:"bg-gray-50 border border-gray-200 rounded-lg p-4",children:t.jsx("pre",{className:"text-sm text-gray-700 whitespace-pre-wrap break-words font-mono",children:i(o)})})]})]}),n==null&&o==null&&t.jsx("div",{className:"text-center text-gray-400 py-8",children:"暂无数据"})]})]}),t.jsx("style",{children:`
49
+ @keyframes slide-in-right {
50
+ from {
51
+ transform: translateX(100%);
52
+ }
53
+ to {
54
+ transform: translateX(0);
55
+ }
56
+ }
57
+ .animate-slide-in-right {
58
+ animation: slide-in-right 0.3s ease-out;
59
+ }
60
+ `})]}):null},qe=({block:c})=>{const[p,l]=O.useState(!1),{icon:e,title:s,name:n,input:o,output:a}=c.content,i=()=>e?typeof e=="string"?t.jsx("img",{src:e,alt:n,className:"w-5 h-5 flex-shrink-0",onError:d=>{d.currentTarget.style.display="none"}}):t.jsx("div",{className:"w-5 h-5 flex-shrink-0",children:e}):null;return t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"tool-block bg-white border border-[#d9d9d9] rounded-[6px] my-2",children:t.jsxs("div",{className:"flex items-center justify-between px-3 py-2 cursor-pointer hover:bg-gray-50 transition-colors",onClick:()=>l(!0),children:[t.jsxs("div",{className:"flex items-center gap-3 flex-1 min-w-0",children:[i(),t.jsx("span",{className:"text-sm text-[rgba(0,0,0,0.65)] truncate",children:s})]}),t.jsx("div",{className:"flex items-center justify-center w-4 h-4 flex-shrink-0",children:t.jsx("svg",{className:"w-4 h-4 text-gray-400",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:t.jsx("path",{d:"M9 18L15 12L9 6",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})})]})}),t.jsx(Lt,{isOpen:p,onClose:()=>l(!1),toolName:n,toolTitle:s,toolIcon:e,input:o,output:a})]})},Wt=({block:c})=>{const{input:p,results:l}=c.content,e={type:T.TOOL,content:{name:"web_search",title:`联网搜索:${p}`,icon:t.jsx("svg",{className:"w-5 h-5 text-blue-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})}),input:{query:p},output:{results:l.map(s=>({title:s.title,content:s.content,link:s.link,media:s.media,icon:s.icon})),total:l.length}}};return t.jsx(qe,{block:e})},Ft=({message:c})=>{const p=c.role.type===$.USER,l=()=>Array.isArray(c.content)?t.jsx("div",{className:"space-y-2",children:c.content.map((e,s)=>{switch(e.type){case T.TEXT:return t.jsx(Mt,{block:e},s);case T.MARKDOWN:return t.jsx(Bt,{block:e},s);case T.WEB_SEARCH:return t.jsx(Wt,{block:e},s);case T.TOOL:return t.jsx(qe,{block:e},s);default:return null}})}):t.jsx("p",{className:"text-[14px] whitespace-pre-wrap break-words leading-[24px]",children:c.content});return t.jsxs("div",{className:`flex ${p?"justify-end":"justify-start"} mb-4`,children:[!p&&t.jsx("div",{className:"w-[21px] h-[21px] mr-2 flex-shrink-0 mt-1",children:t.jsx("img",{src:"/icons/assistant.svg",alt:"AI Assistant",className:"w-[21px] h-[21px]"})}),t.jsxs("div",{className:"flex flex-col gap-2 max-w-[calc(100%-40px)]",children:[p&&c.applicationContext&&c.applicationContext.title&&t.jsx("div",{className:"self-end",children:t.jsx("span",{className:"inline-block bg-[rgba(18,110,227,0.04)] rounded-[8px] px-[14px] py-[5px] text-[12px] leading-[24px] text-[rgba(0,0,0,0.85)]",style:{fontFamily:"Noto Sans SC"},children:c.applicationContext.title})}),t.jsx("div",{className:`rounded-[8px] ${p?"bg-[rgba(18,110,227,0.1)] text-[rgba(0,0,0,0.85)] px-[14px] py-[5px]":"bg-white text-black px-4 py-3"}`,style:{fontFamily:"Noto Sans SC"},children:l()})]})]})},Ut=({messages:c})=>{const p=O.useRef(null),l=()=>{var e;(e=p.current)==null||e.scrollIntoView({behavior:"smooth"})};return O.useEffect(()=>{l()},[c]),t.jsx("div",{className:"w-full flex justify-center",children:t.jsxs("div",{className:"w-full max-w-[960px] px-5 py-3",children:[c.map(e=>t.jsx(Ft,{message:e},e.messageId)),t.jsx("div",{ref:p})]})})},zt=c=>t.jsx("svg",{className:"w-3 h-3",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",...c,children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})}),Jt=c=>t.jsx("svg",{className:"w-4 h-4 text-white",fill:"currentColor",viewBox:"0 0 24 24",...c,children:t.jsx("rect",{x:"6",y:"6",width:"12",height:"12"})}),qt=({disabled:c=!1,...p})=>t.jsxs("svg",{width:"32",height:"32",viewBox:"0 0 32 32",fill:"none",...p,children:[t.jsx("circle",{cx:"16",cy:"16",r:"16",fill:"#1890ff",opacity:c?"0.3":"1"}),t.jsx("path",{d:"M22 16L14 12V20L22 16Z",fill:"white"})]}),Kt=c=>t.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",className:"mt-1.5 flex-shrink-0",...c,children:[t.jsx("circle",{cx:"6",cy:"6",r:"5",stroke:"#1890ff",strokeWidth:"1.5",fill:"none"}),t.jsx("path",{d:"M6 3V6L8 8",stroke:"#1890ff",strokeWidth:"1.5",strokeLinecap:"round"})]}),Vt=({value:c,onChange:p,onSend:l,context:e,onRemoveContext:s,disabled:n=!1,isStreaming:o=!1,onStop:a})=>{const i=d=>{d.key==="Enter"&&!d.shiftKey&&(d.preventDefault(),l())};return t.jsx("div",{className:"w-full flex justify-center",children:t.jsxs("div",{className:"w-full max-w-[960px] px-5 pb-6",children:[e&&e.title&&t.jsxs("div",{className:"mb-2 bg-[rgba(18,110,227,0.04)] rounded-lg px-4 py-2 flex items-center",children:[t.jsx("p",{className:"text-[12px] leading-6 text-[rgba(0,0,0,0.85)] truncate",style:{fontFamily:"Noto Sans SC"},children:e.title}),t.jsx("button",{onClick:s,className:"ml-auto text-[rgba(0,0,0,0.45)] hover:text-[rgba(0,0,0,0.85)] transition-colors flex-shrink-0",title:"移除上下文",children:t.jsx(zt,{})})]}),t.jsxs("div",{className:"relative bg-white border-[1.5px] border-solid border-[#3b9be0] rounded-[12px] overflow-hidden",children:[t.jsx("textarea",{value:c,onChange:d=>p(d.target.value),onKeyDown:i,placeholder:"请输入要查找的内容",disabled:n,className:"w-full h-[56px] resize-none px-4 py-3 text-[14px] leading-[22px] text-black placeholder:text-[rgba(0,0,0,0.3)] focus:outline-none disabled:bg-gray-50 disabled:cursor-not-allowed",style:{fontFamily:"Noto Sans SC"},maxLength:4e3}),o?t.jsx("button",{onClick:a,className:"absolute bottom-3 right-4 w-8 h-8 flex items-center justify-center bg-red-500 hover:bg-red-600 rounded transition-colors",title:"停止响应",children:t.jsx(Jt,{})}):t.jsx("button",{onClick:l,disabled:n||!c.trim(),className:"absolute bottom-3 right-4 w-8 h-8 flex items-center justify-center disabled:opacity-30 disabled:cursor-not-allowed transition-opacity",title:n?"正在发送...":"发送消息",children:t.jsx(qt,{disabled:n||!c.trim()})})]}),t.jsx("p",{className:"mt-2 text-center text-[12px] leading-[18px] text-[rgba(0,0,0,0.55)]",style:{fontFamily:"Noto Sans SC"},children:"回答的内容由 AI 生成,不能保证完全真实准确,请仔细甄别"})]})})},Qt=({onQuestionClick:c,prologue:p,predefinedQuestions:l})=>{const e=l||[],s=n=>{c&&c(n)};return t.jsx("div",{className:"w-full flex justify-center",children:t.jsxs("div",{className:"w-full max-w-[960px] px-5 py-8",children:[p&&t.jsx("p",{className:"text-[20px] leading-normal text-[rgba(0,0,0,0.85)] font-normal mb-10",style:{fontFamily:"Noto Sans SC"},children:p}),e.length>0&&t.jsx("div",{className:"grid grid-cols-4 gap-3",children:e.map((n,o)=>t.jsxs("button",{onClick:()=>s(n),className:"bg-white border border-[rgba(0,0,0,0.1)] rounded-[6px] px-4 py-3 text-left text-[14px] leading-[22px] text-[rgba(0,0,0,0.85)] hover:border-[#3b9be0] hover:bg-[rgba(18,110,227,0.04)] transition-all flex items-start gap-2",style:{fontFamily:"Noto Sans SC"},children:[t.jsx(Kt,{}),t.jsx("span",{children:n})]},o))})]})})};class Ke extends Z{render(){if(!this.props.visible)return null;const{messages:p,textInput:l,applicationContext:e,isSending:s,onboardingInfo:n,isLoadingOnboarding:o,streamingMessageId:a}=this.state,i=p.length===0,d=a!==null;return t.jsxs("div",{className:"flex flex-col h-full w-full bg-white",children:[t.jsx("div",{className:"flex-1 overflow-y-auto bg-gray-50",children:i?o?t.jsx("div",{className:"flex items-center justify-center h-full",children:t.jsxs("div",{className:"text-center",children:[t.jsx("div",{className:"inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-gray-900 mb-4"}),t.jsx("p",{className:"text-sm text-gray-500",children:"正在加载..."})]})}):t.jsx(Qt,{onQuestionClick:this.handleQuestionClick,prologue:n==null?void 0:n.prologue,predefinedQuestions:n==null?void 0:n.predefinedQuestions}):t.jsx(Ut,{messages:p})}),t.jsx("div",{className:"bg-white border-t border-gray-100",children:t.jsx(Vt,{value:l,onChange:this.setTextInput,onSend:this.handleSend,context:e,onRemoveContext:this.removeApplicationContext,disabled:s,isStreaming:d,onStop:this.handleStop})})]})}}function ce(c){return class extends c{constructor(...e){super(...e);S(this,"dipBaseUrl");S(this,"dipId");S(this,"dipVersion");S(this,"dipExecutorVersion");S(this,"dipBusinessDomain");S(this,"dipToken");S(this,"dipRefreshToken");const s=e[0];this.dipBaseUrl=s.baseUrl||"https://dip.aishu.cn/api/agent-app/v1",this.dipId=s.agentId,this.dipVersion=s.agentVersion||"latest",this.dipExecutorVersion=s.executorVersion||"v2",this.dipBusinessDomain=s.businessDomain||"bd_public",this.dipToken=s.token||"",this.dipRefreshToken=s.refreshToken,s.bearerToken&&!s.token&&(this.dipToken=s.bearerToken.replace(/^Bearer\s+/i,""))}async getOnboardingInfo(){try{console.log("正在获取 DIP 配置...");let e;if(this.dipBaseUrl.startsWith("http://")||this.dipBaseUrl.startsWith("https://")){const x=new URL(this.dipBaseUrl);e=`${x.protocol}//${x.host}/api/agent-factory/v3/agent-market/agent/${encodeURIComponent(this.dipId)}/version/v0`}else e=`/api/agent-factory/v3/agent-market/agent/${encodeURIComponent(this.dipId)}/version/v0`;console.log("调用 agent-factory API:",e);const n=(await this.executeDataAgentWithTokenRefresh(async()=>{const x=await fetch(e,{method:"GET",headers:{Authorization:`Bearer ${this.dipToken}`,"Content-Type":"application/json","x-business-domain":this.dipBusinessDomain}});if(!x.ok){const f=await x.text(),m=new Error(`获取 DIP 配置失败: ${x.status} - ${f}`);throw m.status=x.status,m.body=f,m}return await x.json()})).config||{},o=n.opening_remark_config||{},a=n.preset_questions||[];let i="你好!我是数据智能体助手,我可以帮你分析数据、回答问题。";o.type==="fixed"&&o.fixed_opening_remark&&(i=o.fixed_opening_remark);const d=a.map(x=>x.question).filter(x=>typeof x=="string"&&x.trim().length>0);return{prologue:i,predefinedQuestions:d}}catch(e){return console.error("获取 DIP 配置失败:",e),{prologue:"你好!我是数据智能体助手,我可以帮你分析数据、回答问题。",predefinedQuestions:[]}}}async generateConversation(){var e,s;try{console.log("正在创建 DIP 会话...");const n={agent_id:this.dipId,agent_version:"latest"},o=await this.executeDataAgentWithTokenRefresh(async()=>{const i=await fetch(`${this.dipBaseUrl}/app/${this.dipId}/conversation`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.dipToken}`},body:JSON.stringify(n)});if(!i.ok){const d=await i.text(),u=new Error(`创建 DIP 会话失败: ${i.status} - ${d}`);throw u.status=i.status,u.body=d,u}return await i.json()}),a=((e=o.data)==null?void 0:e.id)||o.id||"";return console.log("DIP 会话创建成功, conversationID:",a,"ttl:",((s=o.data)==null?void 0:s.ttl)||o.ttl),a}catch(n){return console.error("创建 DIP 会话失败:",n),""}}async sendMessage(e,s,n){var m;if(!this.dipBaseUrl)throw new Error("DIP baseUrl 不能为空");let o=e;s&&s.title&&(o=`【上下文: ${s.title}】
61
+ ${JSON.stringify(s.data,null,2)}
62
+
63
+ ${e}`);const a={agent_id:this.dipId,agent_version:this.dipVersion,executor_version:this.dipExecutorVersion,query:o,stream:!0,custom_querys:s==null?void 0:s.data,conversation_id:n||void 0},i=await this.executeDataAgentWithTokenRefresh(async()=>{const y=await fetch(`${this.dipBaseUrl}/app/${this.dipId}/chat/completion`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream",Authorization:`Bearer ${this.dipToken}`},body:JSON.stringify(a)});if(!y.ok){const b=await y.text(),N=new Error(`DIP API 调用失败: ${y.status} ${b}`);throw N.status=y.status,N.body=b,N}return y}),d=`assistant-${Date.now()}`,u={messageId:d,content:[],role:{name:"AI 助手",type:$.ASSISTANT,avatar:""}};this.setState(y=>({messages:[...y.messages,u],streamingMessageId:d}));const x=(m=i.body)==null?void 0:m.getReader();if(!x)throw new Error("无法获取流式响应");return await this.handleStreamResponse(x,d),this.state.messages.find(y=>y.messageId===d)||u}reduceAssistantMessage(e,s,n){try{const o=typeof e=="string"?JSON.parse(e):e,a=this.parseEventMessage(o);if(a.action==="end")return console.log("EventStream 结束"),s;const i=this.keyToJSONPath(a.key||[]),d=this.getWhitelistEntry(a.action||"",i);if(!d)return console.log("跳过非白名单事件:",a.action,i),s;let u=JSON.parse(JSON.stringify(s||{}));return a.action==="upsert"?u=this.applyUpsert(u,a.key||[],a.content):a.action==="append"&&(u=this.applyAppend(u,a.key||[],a.content)),d.postProcess&&d.postProcess(u,a.content,n),u}catch(o){return console.error("解析 DIP 事件失败:",o,e),s}}parseEventMessage(e){if(e.data){const s=typeof e.data=="string"?e.data:JSON.stringify(e.data);try{const n=JSON.parse(s);return{seq_id:n.seq_id||n.seq,key:n.key,action:n.action,content:n.content}}catch{return e}}return{seq_id:e.seq_id||e.seq,key:e.key,action:e.action,content:e.content}}keyToJSONPath(e){return e.map((s,n)=>typeof s=="number"?`[${s}]`:n===0?s:`.${s}`).join("").replace(/\.\[/g,"[")}getWhitelistEntry(e,s){const n={"upsert:error":{},"upsert:message":{},"append:message.content.final_answer.answer.text":{postProcess:(d,u,x)=>{var m,y,b,N;const f=((N=(b=(y=(m=d.message)==null?void 0:m.content)==null?void 0:y.final_answer)==null?void 0:b.answer)==null?void 0:N.text)||"";this.appendMarkdownBlock(x,f)}},"upsert:message.content.final_answer.answer_type_other":{postProcess:(d,u,x)=>{this.processFinalAnswerTypeOther(u,x)}},"append:message.content.middle_answer.progress":{postProcess:(d,u,x)=>{this.processMiddleAnswerProgress(u,x)}}},o=/^message\.content\.middle_answer\.progress\[\d+\]$/,a=/^message\.content\.middle_answer\.progress\[\d+\]\.answer$/;if(e==="append"&&o.test(s))return n["append:message.content.middle_answer.progress"];if(e==="append"&&a.test(s))return{postProcess:(d,u,x)=>{var m,y,b;const f=((b=(y=(m=d.message)==null?void 0:m.content)==null?void 0:y.middle_answer)==null?void 0:b.progress)||[];if(f.length>0){const N=f[f.length-1];if(N.stage==="llm"){const P=N.answer||"";this.appendMarkdownBlock(x,P)}}}};const i=`${e}:${s}`;return n[i]||null}extractWebSearchQuery(e){var s,n,o,a;try{const i=(a=(o=(n=(s=e==null?void 0:e.answer)==null?void 0:s.choices)==null?void 0:n[0])==null?void 0:o.message)==null?void 0:a.tool_calls;if(!i||!Array.isArray(i)||i.length<2)return null;const d=i[0],u=d==null?void 0:d.search_intent,x=Array.isArray(u)?u[0]:u,f=(x==null?void 0:x.query)||(x==null?void 0:x.keywords)||"",m=i[1],y=m==null?void 0:m.search_result;if(!y||!Array.isArray(y))return null;const b=y.map(N=>({content:N.content||"",icon:N.icon||"",link:N.link||"",media:N.media||"",title:N.title||""}));return{input:f,results:b}}catch(i){return console.error("提取 Web 搜索查询失败:",i),null}}processSkillExecution(e,s,n){if(!(e!=null&&e.name))return;const o=e.name;if(o==="zhipu_search_tool"){const a=this.extractWebSearchQueryFromAnswer(s);a&&this.appendWebSearchBlock(n,a)}else if(o==="json2plot"){const a=this.extractChartDataFromArgs(e.args);a&&this.appendJson2plotBlock(n,a)}else if(o==="execute_code"){const a=this.extractExecuteCodeResult(e.args,s);a&&this.appendExecuteCodeBlock(n,a)}else this.appendMarkdownBlock(n,`调用工具: ${o}`)}processFinalAnswerTypeOther(e,s){(e==null?void 0:e.stage)==="skill"&&this.processSkillExecution(e.skill_info,e.answer,s)}processMiddleAnswerProgress(e,s){if((e==null?void 0:e.stage)==="skill")this.processSkillExecution(e.skill_info,e.answer,s);else if((e==null?void 0:e.stage)==="llm"){const n=e.answer||"";this.appendMarkdownBlock(s,n)}}extractWebSearchQueryFromAnswer(e){var s,n,o;try{const a=(o=(n=(s=e==null?void 0:e.choices)==null?void 0:s[0])==null?void 0:n.message)==null?void 0:o.tool_calls;if(!a||!Array.isArray(a)||a.length<2)return null;const i=a[0],d=i==null?void 0:i.search_intent,u=Array.isArray(d)?d[0]:d,x=(u==null?void 0:u.query)||(u==null?void 0:u.keywords)||"",f=a[1],m=f==null?void 0:f.search_result;if(!m||!Array.isArray(m))return null;const y=m.map(b=>({content:b.content||"",icon:b.icon||"",link:b.link||"",media:b.media||"",title:b.title||""}));return{input:x,results:y}}catch(a){return console.error("提取 Web 搜索查询失败:",a),null}}extractChartDataFromArgs(e){if(!e||!Array.isArray(e))return null;try{const s={};for(const n of e)if(n.name&&n.value!==void 0)try{s[n.name]=JSON.parse(n.value)}catch{s[n.name]=n.value}return s}catch(s){return console.error("提取图表数据失败:",s),null}}extractExecuteCodeResult(e,s){var n,o;try{let a="";if(e&&Array.isArray(e)){const d=e.find(u=>u.name==="code"||u.name==="script"||u.type==="str");a=(d==null?void 0:d.value)||""}const i=((o=(n=s==null?void 0:s.result)==null?void 0:n.result)==null?void 0:o.stdout)||"执行完成";return a?{input:a,output:i}:null}catch(a){return console.error("提取代码执行结果失败:",a),null}}appendSkillOrLLMContentToMessage(e,s){var n,o,a;if(e.stage==="skill"){const i=(n=e.skill_info)==null?void 0:n.name;if(i==="zhipu_search_tool"){const d=this.extractWebSearchQueryFromAnswer(e.answer);d&&s.content.push({type:T.WEB_SEARCH,content:d})}else if(i==="json2plot"){const d=this.extractChartDataFromArgs((o=e.skill_info)==null?void 0:o.args);d&&s.content.push({type:T.TEXT,content:`图表数据: ${JSON.stringify(d,null,2)}`})}else if(i==="execute_code"){const d=this.extractExecuteCodeResult((a=e.skill_info)==null?void 0:a.args,e.answer);d&&s.content.push({type:T.TOOL,content:{name:"execute_code",title:"代码执行",input:d.input,output:d.output}})}else s.content.push({type:T.TEXT,content:`调用工具: ${i}`})}else e.stage==="llm"&&e.answer&&s.content.push({type:T.MARKDOWN,content:e.answer})}applyUpsert(e,s,n){if(s.length===0)return e;const o={...e};return this.setNestedProperty(o,s,n),o}applyAppend(e,s,n){if(s.length===0)return e;const o={...e},a=s[s.length-1];if(typeof a=="number"){const i=s.slice(0,-1),d=this.getNestedProperty(o,i);Array.isArray(d)&&(d[a]=n)}else{const i=this.getNestedProperty(o,s);typeof i=="string"&&typeof n=="string"?this.setNestedProperty(o,s,i+n):this.setNestedProperty(o,s,n)}return o}getNestedProperty(e,s){let n=e;for(const o of s){if(n==null)return;n=n[o]}return n}setNestedProperty(e,s,n){if(s.length===0)return;let o=e;for(let i=0;i<s.length-1;i++){const d=s[i],u=s[i+1];o[d]==null&&(o[d]=typeof u=="number"?[]:{}),o=o[d]}const a=s[s.length-1];o[a]=n}shouldRefreshToken(e,s){return e===401}async terminateConversation(e){const s=`${this.dipBaseUrl}/app/${this.dipId}/chat/termination`,n={"Content-Type":"application/json"};this.dipToken&&(n.Authorization=this.dipToken.startsWith("Bearer ")?this.dipToken:`Bearer ${this.dipToken}`);const o=JSON.stringify({conversation_id:e}),a=await fetch(s,{method:"POST",headers:n,body:o});if(!a.ok){const i=await a.text();throw new Error(`终止会话失败: ${a.status} ${i}`)}}async executeDataAgentWithTokenRefresh(e){var s,n,o,a;try{return await e()}catch(i){const d=i.status||((s=i.response)==null?void 0:s.status)||0,u=i.body||((n=i.response)==null?void 0:n.data)||i;if(this.shouldRefreshToken(d,u)&&this.dipRefreshToken){console.log("检测到 DIP token 失效,正在刷新 token...");try{const f=await this.dipRefreshToken();this.dipToken=f,console.log("DIP Token 刷新成功,正在重试请求...");try{return await e()}catch(m){const y=m.status||((o=m.response)==null?void 0:o.status)||0,b=m.body||((a=m.response)==null?void 0:a.data)||m;throw this.shouldRefreshToken(y,b)&&console.error("重试后仍然提示 token 失效,放弃重试"),m}}catch(f){throw console.error("刷新 DIP token 失败:",f),i}}throw i}}async getConversations(e=1,s=10){var n;try{console.log("正在获取历史会话列表...");const o=`${this.dipBaseUrl}/app/${this.dipId}/conversation?page=${e}&size=${s}`,a=await this.executeDataAgentWithTokenRefresh(async()=>{const u=await fetch(o,{method:"GET",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.dipToken}`}});if(!u.ok){const x=await u.text(),f=new Error(`获取历史会话列表失败: ${u.status} - ${x}`);throw f.status=u.status,f.body=x,f}return await u.json()}),d=(((n=a.data)==null?void 0:n.entries)||a.entries||[]).map(u=>({conversationID:u.id||"",title:u.title||"未命名会话",created_at:u.create_time||0,updated_at:u.update_time||0,message_index:u.message_index,read_message_index:u.read_message_index}));return console.log(`成功获取 ${d.length} 条历史会话`),d}catch(o){return console.error("获取历史会话列表失败:",o),[]}}async getConversationMessages(e){var s,n;try{console.log("正在获取会话消息列表,conversationId:",e);const o=`${this.dipBaseUrl}/app/${this.dipId}/conversation/${e}`,a=await this.executeDataAgentWithTokenRefresh(async()=>{const u=await fetch(o,{method:"GET",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.dipToken}`}});if(!u.ok){const x=await u.text(),f=new Error(`获取会话消息列表失败: ${u.status} - ${x}`);throw f.status=u.status,f.body=x,f}return await u.json()}),i=((s=a.data)==null?void 0:s.Messages)||a.Messages||[],d=[];for(const u of i){const x=u.id||`msg-${Date.now()}-${Math.random()}`,f=u.origin||"user";if(f==="user"){const m={messageId:x,role:{name:"用户",type:$.USER,avatar:""},content:[]};try{const y=typeof u.content=="string"?JSON.parse(u.content):u.content,b=(y==null?void 0:y.text)||"";b&&m.content.push({type:T.TEXT,content:b})}catch(y){console.error("解析用户消息内容失败:",y)}d.push(m)}else if(f==="assistant")try{const m=typeof u.content=="string"?JSON.parse(u.content):u.content,y={messageId:x,role:{name:"AI 助手",type:$.ASSISTANT,avatar:""},content:[]},b=m==null?void 0:m.middle_answer;if(b!=null&&b.progress&&Array.isArray(b.progress))for(const ee of b.progress)this.appendSkillOrLLMContentToMessage(ee,y);const N=m==null?void 0:m.final_answer,P=(n=N==null?void 0:N.answer)==null?void 0:n.text;P&&y.content.push({type:T.MARKDOWN,content:P});const R=N==null?void 0:N.answer_type_other;R&&this.appendSkillOrLLMContentToMessage(R,y),d.push(y)}catch(m){console.error("解析 AI 助手消息失败:",m)}}return console.log(`成功获取 ${d.length} 条对话消息`),d}catch(o){return console.error("获取会话消息列表失败:",o),[]}}async deleteConversation(e){try{console.log("正在删除会话,conversationID:",e);const s=`${this.dipBaseUrl}/app/${this.dipId}/conversation/${e}`;await this.executeDataAgentWithTokenRefresh(async()=>{const n=await fetch(s,{method:"DELETE",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.dipToken}`}});if(!n.ok&&n.status!==204){const o=await n.text(),a=new Error(`删除会话失败: ${n.status} - ${o}`);throw a.status=n.status,a.body=o,a}return n}),console.log("会话删除成功")}catch(s){throw console.error("删除会话失败:",s),s}}}}class Yt extends ce(Je){}class Xt extends ce(Ke){}class Gt extends Z{constructor(l){super(l);S(this,"botId");S(this,"apiToken");S(this,"baseUrl");S(this,"userId");this.botId=l.botId,this.apiToken=l.apiToken,this.baseUrl=l.baseUrl||"https://api.coze.cn",this.userId=l.userId||"chatkit-user"}async getOnboardingInfo(){try{console.log("正在获取扣子智能体配置...");const l=await fetch(`${this.baseUrl}/v1/bots/${encodeURIComponent(this.botId)}?is_published=true`,{method:"GET",headers:{Authorization:`Bearer ${this.apiToken}`,"Content-Type":"application/json"}});if(!l.ok){const a=await l.text();throw new Error(`获取扣子智能体配置失败: ${l.status} - ${a}`)}const e=await l.json();console.log("扣子智能体配置响应:",e);const n=(e.data||{}).onboarding_info||{},o={prologue:n.prologue||"你好!我是 AI 助手,有什么可以帮你的吗?",predefinedQuestions:n.suggested_questions||[]};return console.log("开场白信息已提取:",o),o}catch(l){return console.error("获取扣子智能体配置失败:",l),{prologue:"你好!我是 AI 助手,有什么可以帮你的吗?",predefinedQuestions:[]}}}async generateConversation(){var l;try{console.log("正在创建扣子会话...");const e=await fetch(`${this.baseUrl}/v1/conversation/create`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiToken}`},body:JSON.stringify({})});if(!e.ok){const o=await e.text();throw new Error(`创建扣子会话失败: ${e.status} - ${o}`)}const s=await e.json(),n=((l=s.data)==null?void 0:l.id)||s.conversation_id||"";return console.log("扣子会话创建成功, conversationID:",n),n}catch(e){return console.error("创建扣子会话失败:",e),""}}async sendMessage(l,e,s){var i;let n=l;e&&e.title&&(n=`【上下文: ${e.title}】
64
+ ${JSON.stringify(e.data,null,2)}
65
+
66
+ ${l}`);const o={bot_id:this.botId,user_id:this.userId,stream:!0,additional_messages:[{role:"user",content:n,content_type:"text"}]};let a=`${this.baseUrl}/v3/chat`;s&&(a+=`?conversation_id=${encodeURIComponent(s)}`);try{console.log("发起流式 Chat 请求:",{url:a,body:o});const d=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiToken}`},body:JSON.stringify(o)});if(!d.ok){const y=await d.text();throw new Error(`扣子流式 API 调用失败: ${d.status} - ${y}`)}const u=`assistant-${Date.now()}`,x={messageId:u,content:[],role:{name:"AI 助手",type:$.ASSISTANT,avatar:""}};this.setState(y=>({messages:[...y.messages,x],streamingMessageId:u}));const f=(i=d.body)==null?void 0:i.getReader();if(!f)throw new Error("无法获取响应流");return await this.handleStreamResponse(f,u),this.state.messages.find(y=>y.messageId===u)||x}catch(d){throw console.error("调用扣子流式 API 失败:",d),d}}reduceAssistantMessage(l,e,s){try{const n=l,o=JSON.parse(n.data),a=e;if(console.log("reduceAssistantMessage 调用:",{event:n.event,prevBuffer:a,data:o}),o.conversation_id&&o.conversation_id!==this.state.conversationID&&this.setState({conversationID:o.conversation_id}),n.event==="conversation.message.delta"){if(o.content&&o.type==="answer"){const i=a+o.content;return console.log("增量内容:",o.content,"新buffer:",i),this.appendMarkdownBlock(s,i),i}}else if(n.event==="conversation.message.completed"){if(o.content&&o.type==="answer")return console.log("消息完成,完整内容:",o.content),this.appendMarkdownBlock(s,o.content),o.content;if(o.type==="verbose")return console.log("忽略 verbose 类型消息"),a}else{if(n.event==="conversation.chat.completed")return console.log("Chat完成"),a;if(n.event==="conversation.chat.created")return console.log("Chat创建"),a;if(n.event==="conversation.chat.in_progress")return console.log("Chat进行中"),a;if(n.event==="conversation.message.started")return console.log("消息开始"),a;if(n.event==="done")return console.log("收到done事件"),a}return o.msg_type==="generate_answer_finish"?(console.log("答案生成完成"),a):o.status==="completed"?(console.log("检测到Chat完成状态"),a):(console.log("未知事件类型,保持原buffer:",n.event,o),a)}catch(n){return console.error("解析扣子事件失败:",n),e}}shouldRefreshToken(l,e){return l===401}async terminateConversation(l){console.warn("Coze 平台不支持主动终止会话功能")}async getConversations(l,e){return console.warn("Coze 平台暂不支持获取历史会话列表功能"),[]}async getConversationMessages(l){return console.warn("Coze 平台暂不支持获取会话消息列表功能"),[]}async deleteConversation(l){console.warn("Coze 平台暂不支持删除会话功能")}render(){if(!this.props.visible)return null;const{title:l="Copilot",onClose:e}=this.props,{messages:s,textInput:n,applicationContext:o,isSending:a,onboardingInfo:i,isLoadingOnboarding:d,streamingMessageId:u}=this.state,x=s.length===0,f=u!==null;return t.jsxs("div",{className:"flex flex-col h-full w-full bg-white shadow-2xl",children:[t.jsx(Ue,{title:l,onClose:e,onNewChat:this.createConversation}),t.jsx("div",{className:"flex-1 overflow-y-auto",children:x?d?t.jsx("div",{className:"flex items-center justify-center h-full",children:t.jsxs("div",{className:"text-center",children:[t.jsx("div",{className:"inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-gray-900 mb-4"}),t.jsx("p",{className:"text-sm text-gray-500",children:"正在加载..."})]})}):t.jsx(ze,{onQuestionClick:this.handleQuestionClick,prologue:i==null?void 0:i.prologue,predefinedQuestions:i==null?void 0:i.predefinedQuestions}):t.jsx(We,{messages:s})}),t.jsx(Fe,{value:n,onChange:this.setTextInput,onSend:this.handleSend,context:o,onRemoveContext:this.removeApplicationContext,disabled:a,isStreaming:f,onStop:this.handleStop})]})}}exports.Assistant=Xt;exports.AssistantBase=Ke;exports.ChatKitBase=Z;exports.ChatKitCoze=Gt;exports.ChatMessageType=Be;exports.Copilot=Yt;exports.CopilotBase=Je;exports.DIPBaseMixin=ce;exports.RoleType=$;