@ai-group/chat-sdk 3.7.1-alpha8 → 3.7.2

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 (129) hide show
  1. package/README.md +22 -0
  2. package/dist/cjs/components/XAdkChatbot/index.js +3 -3
  3. package/dist/cjs/components/XAdkChatbot/index.js.map +2 -2
  4. package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js +17 -50
  5. package/dist/cjs/components/XAdkProvider/compound/DefaultLayout.js.map +2 -2
  6. package/dist/cjs/components/XAdkProvider/compound/Sender.d.ts +3 -2
  7. package/dist/cjs/components/XAdkProvider/compound/Sender.js +81 -4
  8. package/dist/cjs/components/XAdkProvider/compound/Sender.js.map +3 -3
  9. package/dist/cjs/components/XAdkProvider/context/DefaultLayoutContext.d.ts +9 -0
  10. package/dist/cjs/components/XAdkProvider/context/DefaultLayoutContext.js +34 -0
  11. package/dist/cjs/components/XAdkProvider/context/DefaultLayoutContext.js.map +7 -0
  12. package/dist/cjs/components/XAdkProvider/context/index.d.ts +5 -4
  13. package/dist/cjs/components/XAdkProvider/context/index.js +3 -1
  14. package/dist/cjs/components/XAdkProvider/context/index.js.map +2 -2
  15. package/dist/cjs/components/XAdkProvider/index.js +3 -3
  16. package/dist/cjs/components/XAdkProvider/index.js.map +2 -2
  17. package/dist/cjs/components/XAdkSender/InlineTagInput.d.ts +4 -0
  18. package/dist/cjs/components/XAdkSender/InlineTagInput.js +28 -1
  19. package/dist/cjs/components/XAdkSender/InlineTagInput.js.map +2 -2
  20. package/dist/cjs/components/XAdkSender/{QuickList.d.ts → InputSuggestionList.d.ts} +4 -3
  21. package/dist/cjs/components/XAdkSender/{QuickList.js → InputSuggestionList.js} +55 -30
  22. package/dist/cjs/components/XAdkSender/InputSuggestionList.js.map +7 -0
  23. package/dist/cjs/components/XAdkSender/index.js +35 -13
  24. package/dist/cjs/components/XAdkSender/index.js.map +3 -3
  25. package/dist/cjs/components/XAdkSender/styles.js +13 -1
  26. package/dist/cjs/components/XAdkSender/styles.js.map +2 -2
  27. package/dist/cjs/components/XAiConversations/index.js +1 -1
  28. package/dist/cjs/components/XAiConversations/index.js.map +2 -2
  29. package/dist/cjs/components/XAiConversations/styles.js +11 -1
  30. package/dist/cjs/components/XAiConversations/styles.js.map +2 -2
  31. package/dist/cjs/index.d.ts +4 -3
  32. package/dist/cjs/index.js +21 -8
  33. package/dist/cjs/index.js.map +2 -2
  34. package/dist/cjs/presets/base.d.ts +6 -0
  35. package/dist/cjs/presets/base.js +50 -0
  36. package/dist/cjs/presets/base.js.map +7 -0
  37. package/dist/cjs/presets/define.d.ts +11 -0
  38. package/dist/cjs/presets/define.js +58 -0
  39. package/dist/cjs/presets/define.js.map +7 -0
  40. package/dist/cjs/presets/index.d.ts +3 -0
  41. package/dist/cjs/presets/index.js +28 -0
  42. package/dist/cjs/presets/index.js.map +7 -0
  43. package/dist/cjs/presets/runtime.d.ts +22 -0
  44. package/dist/cjs/presets/runtime.js +75 -0
  45. package/dist/cjs/presets/runtime.js.map +7 -0
  46. package/dist/cjs/presets/xgroup/index.d.ts +4 -0
  47. package/dist/cjs/presets/xgroup/index.js +8 -0
  48. package/dist/cjs/presets/xgroup/index.js.map +2 -2
  49. package/dist/cjs/presets/xgroup/knowledgeReference.js +3 -1
  50. package/dist/cjs/presets/xgroup/knowledgeReference.js.map +2 -2
  51. package/dist/cjs/presets/xgroup/preset.d.ts +1 -15
  52. package/dist/cjs/presets/xgroup/preset.js +15 -54
  53. package/dist/cjs/presets/xgroup/preset.js.map +2 -2
  54. package/dist/cjs/presets/xgroup/strategies.d.ts +1 -4
  55. package/dist/cjs/presets/xgroup/strategies.js +0 -17
  56. package/dist/cjs/presets/xgroup/strategies.js.map +2 -2
  57. package/dist/cjs/presets/xgroup/webReference.d.ts +10 -0
  58. package/dist/cjs/presets/xgroup/webReference.js +85 -0
  59. package/dist/cjs/presets/xgroup/webReference.js.map +7 -0
  60. package/dist/cjs/types/ChatStrategies.d.ts +3 -1
  61. package/dist/cjs/types/ChatStrategies.js.map +1 -1
  62. package/dist/cjs/types/XAdkSender.d.ts +4 -0
  63. package/dist/cjs/types/XAdkSender.js.map +1 -1
  64. package/dist/esm/components/XAdkChatbot/index.js +1 -1
  65. package/dist/esm/components/XAdkChatbot/index.js.map +1 -1
  66. package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js +16 -41
  67. package/dist/esm/components/XAdkProvider/compound/DefaultLayout.js.map +1 -1
  68. package/dist/esm/components/XAdkProvider/compound/Sender.d.ts +3 -2
  69. package/dist/esm/components/XAdkProvider/compound/Sender.js +70 -7
  70. package/dist/esm/components/XAdkProvider/compound/Sender.js.map +1 -1
  71. package/dist/esm/components/XAdkProvider/context/DefaultLayoutContext.d.ts +9 -0
  72. package/dist/esm/components/XAdkProvider/context/DefaultLayoutContext.js +9 -0
  73. package/dist/esm/components/XAdkProvider/context/DefaultLayoutContext.js.map +1 -0
  74. package/dist/esm/components/XAdkProvider/context/index.d.ts +5 -4
  75. package/dist/esm/components/XAdkProvider/context/index.js +1 -0
  76. package/dist/esm/components/XAdkProvider/context/index.js.map +1 -1
  77. package/dist/esm/components/XAdkProvider/index.js +1 -1
  78. package/dist/esm/components/XAdkProvider/index.js.map +1 -1
  79. package/dist/esm/components/XAdkSender/InlineTagInput.d.ts +4 -0
  80. package/dist/esm/components/XAdkSender/InlineTagInput.js +26 -7
  81. package/dist/esm/components/XAdkSender/InlineTagInput.js.map +1 -1
  82. package/dist/esm/components/XAdkSender/{QuickList.d.ts → InputSuggestionList.d.ts} +4 -3
  83. package/dist/esm/components/XAdkSender/{QuickList.js → InputSuggestionList.js} +53 -28
  84. package/dist/esm/components/XAdkSender/InputSuggestionList.js.map +1 -0
  85. package/dist/esm/components/XAdkSender/index.js +39 -18
  86. package/dist/esm/components/XAdkSender/index.js.map +1 -1
  87. package/dist/esm/components/XAdkSender/styles.js +2 -2
  88. package/dist/esm/components/XAdkSender/styles.js.map +1 -1
  89. package/dist/esm/components/XAiConversations/index.js +2 -1
  90. package/dist/esm/components/XAiConversations/index.js.map +1 -1
  91. package/dist/esm/components/XAiConversations/styles.js +3 -3
  92. package/dist/esm/components/XAiConversations/styles.js.map +1 -1
  93. package/dist/esm/index.d.ts +4 -3
  94. package/dist/esm/index.js +3 -2
  95. package/dist/esm/index.js.map +1 -1
  96. package/dist/esm/presets/base.d.ts +6 -0
  97. package/dist/esm/presets/base.js +28 -0
  98. package/dist/esm/presets/base.js.map +1 -0
  99. package/dist/esm/presets/define.d.ts +11 -0
  100. package/dist/esm/presets/define.js +33 -0
  101. package/dist/esm/presets/define.js.map +1 -0
  102. package/dist/esm/presets/index.d.ts +3 -0
  103. package/dist/esm/presets/index.js +4 -0
  104. package/dist/esm/presets/index.js.map +1 -0
  105. package/dist/esm/presets/runtime.d.ts +22 -0
  106. package/dist/esm/presets/runtime.js +45 -0
  107. package/dist/esm/presets/runtime.js.map +1 -0
  108. package/dist/esm/presets/xgroup/index.d.ts +4 -0
  109. package/dist/esm/presets/xgroup/index.js +5 -0
  110. package/dist/esm/presets/xgroup/index.js.map +1 -1
  111. package/dist/esm/presets/xgroup/knowledgeReference.js +2 -1
  112. package/dist/esm/presets/xgroup/knowledgeReference.js.map +1 -1
  113. package/dist/esm/presets/xgroup/preset.d.ts +1 -15
  114. package/dist/esm/presets/xgroup/preset.js +5 -41
  115. package/dist/esm/presets/xgroup/preset.js.map +1 -1
  116. package/dist/esm/presets/xgroup/strategies.d.ts +1 -4
  117. package/dist/esm/presets/xgroup/strategies.js +0 -23
  118. package/dist/esm/presets/xgroup/strategies.js.map +1 -1
  119. package/dist/esm/presets/xgroup/webReference.d.ts +10 -0
  120. package/dist/esm/presets/xgroup/webReference.js +46 -0
  121. package/dist/esm/presets/xgroup/webReference.js.map +1 -0
  122. package/dist/esm/types/ChatStrategies.d.ts +3 -1
  123. package/dist/esm/types/ChatStrategies.js.map +1 -1
  124. package/dist/esm/types/XAdkSender.d.ts +4 -0
  125. package/dist/esm/types/XAdkSender.js.map +1 -1
  126. package/dist/umd/chat-sdk.min.js +1 -1
  127. package/package.json +6 -1
  128. package/dist/cjs/components/XAdkSender/QuickList.js.map +0 -7
  129. package/dist/esm/components/XAdkSender/QuickList.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/XAdkSender/styles.tsx"],
4
- "sourcesContent": ["import { css } from \"@emotion/css\";\nimport { withBasicStyles } from \"@/styles/common\";\n\nexport const useStyles = withBasicStyles(() => ({\n // 容器样式 - 最外层边框\n container: css`\n position: relative;\n padding: 0 15px 10px;\n overflow: visible;\n border: 2px solid transparent;\n transition: all 0.3s ease;\n\n &.drag-over {\n border: 2px dashed #000;\n background: rgba(0, 0, 0, 0.02);\n }\n `,\n\n // 主内容区域\n mainArea: css`\n border-radius: 20px;\n overflow: visible;\n background: #fff;\n `,\n\n // 发送区域\n senderWrap: css`\n display: flex;\n flex-direction: column;\n gap: 6px;\n background: var(--yb-input-bg-color);\n border: 0.5px solid var(--widget-line, rgba(0, 0, 0, 0.08));\n border-radius: 20px;\n box-sizing: border-box;\n caret-color: var(--yb-input-caret-color);\n flex: auto;\n font-size: 14px;\n line-height: 22px;\n padding: 10px 12px 8px;\n position: relative;\n z-index: 1;\n transition-duration: 0.2s;\n transition-property:\n color, background-color, border-color, text-decoration-color, fill,\n stroke, box-shadow;\n transition-timing-function: linear;\n box-shadow: 0 6px 30px 0 rgba(0, 0, 0, 0.08);\n `,\n\n contextBar: css`\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px;\n `,\n\n contextHeader: css`\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px;\n flex: 0 0 auto;\n min-width: 0;\n `,\n\n contextFiles: css`\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px;\n flex: 1 1 auto;\n min-width: 0;\n `,\n\n // 输入框和按钮容器\n inputAndButtons: css`\n flex: 1;\n display: flex;\n align-items: center;\n gap: 8px;\n `,\n\n // 文本输入框容器\n textAreaWrapper: css`\n flex: 1;\n display: flex;\n align-items: center;\n background: #fff;\n padding: 0 4px;\n min-height: 44px;\n\n /* 移除所有蓝色效果 */\n &:focus-within {\n border-color: #d9d9d9;\n box-shadow: none;\n }\n\n .ant-input:disabled {\n background: transparent !important;\n }\n\n &::placeholder {\n color: #bfbfbf;\n }\n `,\n\n // 文本输入框\n textArea: css`\n flex: 1;\n border: none;\n background: transparent;\n font-size: 14px;\n line-height: 1.5;\n padding: 12px 0;\n outline: none;\n color: #262626;\n `,\n\n inlineInputWrapper: css`\n position: relative;\n flex: 1;\n min-height: 44px;\n display: flex;\n align-items: center;\n padding: 0 4px;\n background: #fff;\n `,\n\n inlineInput: css`\n width: 100%;\n min-height: 24px;\n max-height: 112px;\n overflow-y: auto;\n outline: none;\n border: none;\n color: #262626;\n font-size: 14px;\n line-height: 24px;\n white-space: pre-wrap;\n word-break: break-word;\n `,\n\n inlinePlaceholder: css`\n position: absolute;\n left: 4px;\n top: 50%;\n transform: translateY(-50%);\n color: #bfbfbf;\n font-size: 14px;\n line-height: 24px;\n pointer-events: none;\n user-select: none;\n `,\n\n inlineTag: css`\n display: inline-flex;\n align-items: center;\n gap: 4px;\n max-width: 180px;\n height: 22px;\n padding: 0 7px;\n margin: 0 3px;\n vertical-align: baseline;\n border-radius: 6px;\n border: 1px solid #d6e4ff;\n background: #f0f7ff;\n color: #0958d9;\n font-size: 12px;\n line-height: 20px;\n user-select: none;\n\n .xadk-inline-tag-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .xadk-inline-tag-close {\n cursor: pointer;\n color: #597ef7;\n font-size: 12px;\n line-height: 1;\n }\n\n &[data-xadk-inline-mention-type=\"knowledge\"],\n &[data-xadk-inline-mention-type=\"knowledge_directory\"],\n &[data-xadk-inline-mention-type=\"knowledge_file\"],\n &[data-xadk-inline-mention-type=\"kb\"] {\n border-color: #f1f1f1;\n background: #f1f1f1;\n color: #1a1a1a;\n\n .xadk-inline-tag-close {\n color: #8c8c8c;\n }\n }\n `,\n\n // 按钮组\n buttonGroup: css`\n display: flex;\n gap: 8px;\n align-items: center;\n height: 36px;\n `,\n\n // 按钮统一样式\n iconButton: css`\n width: 36px;\n height: 36px;\n min-width: 36px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n\n &:hover {\n transform: translateY(-1px);\n }\n\n &:active {\n transform: translateY(0);\n }\n `,\n\n // 清空按钮\n clearButton: css`\n border: 1px solid #f0f0f0;\n background: #fff;\n color: #8c8c8c;\n\n &:hover {\n border-color: #d9d9d9;\n color: #262626;\n background: #fafafa;\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n `,\n\n // 上传按钮\n uploadButton: css`\n border: 1px solid #f0f0f0;\n background: #fff;\n\n &:hover {\n //\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n border-color: #f0f0f0;\n background: #fafafa;\n }\n `,\n\n // 发送按钮\n sendButton: css`\n background: #000;\n border: none;\n color: #fff;\n\n &:hover:not(:disabled) {\n background: #333; /* 悬停状态 */\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n background: #cccccc;\n color: #fff;\n }\n\n &.stop {\n //\n\n &:hover:not(:disabled) {\n //\n }\n\n &:disabled {\n background: #cccccc; /* 禁用状态也保持淡灰色 */\n }\n }\n `,\n\n // 底部提示\n tip: css`\n margin: 12px 0;\n text-align: center;\n font-size: 12px;\n color: #8c8c8c;\n `,\n\n actionBar: css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n min-height: 36px;\n `,\n\n actionBarLeft: css`\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n `,\n\n actionBarRight: css`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n flex-shrink: 0;\n `,\n\n // 快捷键弹出列表外层容器\n quickListWrapper: css`\n position: absolute;\n left: 0;\n bottom: 100%;\n margin-bottom: 4px;\n z-index: 100;\n `,\n\n // 快捷键弹出列表\n quickList: css`\n max-height: 320px;\n width: 280px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background: #fff;\n border-radius: 12px;\n box-shadow: 0 8px 40px 0 rgba(0, 0, 0, 0.12);\n `,\n\n quickListHeader: css`\n padding: 12px 16px 0;\n font-size: 13px;\n font-weight: 500;\n color: #8c8c8c;\n `,\n\n quickListBody: css`\n flex: 1;\n overflow-y: auto;\n padding: 4px 0;\n `,\n\n quickListEmpty: css`\n padding: 24px 16px;\n text-align: center;\n color: #8c8c8c;\n font-size: 13px;\n `,\n\n quickListGroup: css`\n padding: 8px 16px 4px;\n font-size: 11px;\n font-weight: 500;\n color: #8c8c8c;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n `,\n\n quickListItem: css`\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n\n &:hover {\n background: #f5f5f5;\n }\n\n &.active {\n background: #f0f7ff;\n }\n\n .quick-list-item-icon {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n background: #f5f5f5;\n flex-shrink: 0;\n }\n\n .quick-list-item-content {\n flex: 1;\n min-width: 0;\n }\n\n .quick-list-item-label {\n font-size: 13px;\n font-weight: 500;\n color: #262626;\n line-height: 1.4;\n }\n\n .quick-list-item-desc {\n font-size: 12px;\n color: #8c8c8c;\n line-height: 1.4;\n }\n `,\n\n // 输入框内标签\n inputTags: css`\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n padding: 4px 0 8px;\n `,\n\n inputTag: css`\n margin: 0;\n font-size: 12px;\n border-radius: 6px;\n `,\n}));\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { css } from \"@emotion/css\";\nimport { withBasicStyles } from \"@/styles/common\";\n\nexport const useStyles = withBasicStyles(() => ({\n // 容器样式 - 最外层边框\n container: css`\n position: relative;\n padding: 0 15px 10px;\n overflow: visible;\n border: 2px solid transparent;\n transition: all 0.3s ease;\n\n &.drag-over {\n border: 2px dashed #000;\n background: rgba(0, 0, 0, 0.02);\n }\n `,\n\n // 主内容区域\n mainArea: css`\n border-radius: 20px;\n overflow: visible;\n background: #fff;\n `,\n\n // 发送区域\n senderWrap: css`\n display: flex;\n flex-direction: column;\n gap: 6px;\n background: var(--yb-input-bg-color);\n border: 0.5px solid var(--widget-line, rgba(0, 0, 0, 0.08));\n border-radius: 20px;\n box-sizing: border-box;\n caret-color: var(--yb-input-caret-color);\n flex: auto;\n font-size: 14px;\n line-height: 22px;\n padding: 10px 12px 8px;\n position: relative;\n z-index: 1;\n transition-duration: 0.2s;\n transition-property:\n color, background-color, border-color, text-decoration-color, fill,\n stroke, box-shadow;\n transition-timing-function: linear;\n box-shadow: 0 6px 30px 0 rgba(0, 0, 0, 0.08);\n `,\n\n contextBar: css`\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px;\n `,\n\n contextHeader: css`\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px;\n flex: 0 0 auto;\n min-width: 0;\n `,\n\n contextFiles: css`\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px;\n flex: 1 1 auto;\n min-width: 0;\n `,\n\n // 输入框和按钮容器\n inputAndButtons: css`\n flex: 1;\n display: flex;\n align-items: center;\n gap: 8px;\n `,\n\n // 文本输入框容器\n textAreaWrapper: css`\n flex: 1;\n display: flex;\n align-items: center;\n background: #fff;\n padding: 0 4px;\n min-height: 44px;\n\n /* 移除所有蓝色效果 */\n &:focus-within {\n border-color: #d9d9d9;\n box-shadow: none;\n }\n\n .ant-input:disabled {\n background: transparent !important;\n }\n\n &::placeholder {\n color: #bfbfbf;\n }\n `,\n\n // 文本输入框\n textArea: css`\n flex: 1;\n border: none;\n background: transparent;\n font-size: 14px;\n line-height: 1.5;\n padding: 12px 0;\n outline: none;\n color: #262626;\n `,\n\n inlineInputWrapper: css`\n position: relative;\n flex: 1;\n min-height: 44px;\n display: flex;\n align-items: center;\n padding: 0 4px;\n background: #fff;\n `,\n\n inlineInput: css`\n width: 100%;\n min-height: 24px;\n max-height: 112px;\n overflow-y: auto;\n outline: none;\n border: none;\n color: #262626;\n font-size: 14px;\n line-height: 24px;\n white-space: pre-wrap;\n word-break: break-word;\n `,\n\n inlinePlaceholder: css`\n position: absolute;\n left: 4px;\n top: 50%;\n transform: translateY(-50%);\n color: #bfbfbf;\n font-size: 14px;\n line-height: 24px;\n pointer-events: none;\n user-select: none;\n `,\n\n inlineTag: css`\n display: inline-flex;\n align-items: center;\n gap: 4px;\n max-width: 180px;\n height: 22px;\n padding: 0 7px;\n margin: 0 3px;\n vertical-align: baseline;\n border-radius: 6px;\n border: 1px solid #d6e4ff;\n background: #f0f7ff;\n color: #0958d9;\n font-size: 12px;\n line-height: 20px;\n user-select: none;\n\n .xadk-inline-tag-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .xadk-inline-tag-close {\n cursor: pointer;\n color: #597ef7;\n font-size: 12px;\n line-height: 1;\n }\n\n &[data-xadk-inline-mention-type=\"knowledge\"],\n &[data-xadk-inline-mention-type=\"knowledge_directory\"],\n &[data-xadk-inline-mention-type=\"knowledge_file\"],\n &[data-xadk-inline-mention-type=\"kb\"] {\n border-color: #f1f1f1;\n background: #f1f1f1;\n color: #1a1a1a;\n\n .xadk-inline-tag-close {\n color: #8c8c8c;\n }\n }\n `,\n\n // 按钮组\n buttonGroup: css`\n display: flex;\n gap: 8px;\n align-items: center;\n height: 36px;\n `,\n\n // 按钮统一样式\n iconButton: css`\n width: 36px;\n height: 36px;\n min-width: 36px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n\n &:hover {\n transform: translateY(-1px);\n }\n\n &:active {\n transform: translateY(0);\n }\n `,\n\n // 清空按钮\n clearButton: css`\n border: 1px solid #f0f0f0;\n background: #fff;\n color: #8c8c8c;\n\n &:hover {\n border-color: #d9d9d9;\n color: #262626;\n background: #fafafa;\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n `,\n\n // 上传按钮\n uploadButton: css`\n border: 1px solid #f0f0f0;\n background: #fff;\n\n &:hover {\n //\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n border-color: #f0f0f0;\n background: #fafafa;\n }\n `,\n\n // 发送按钮\n sendButton: css`\n background: #000;\n border: none;\n color: #fff;\n\n &:hover:not(:disabled) {\n background: #333; /* 悬停状态 */\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n background: #cccccc;\n color: #fff;\n }\n\n &.stop {\n //\n\n &:hover:not(:disabled) {\n //\n }\n\n &:disabled {\n background: #cccccc; /* 禁用状态也保持淡灰色 */\n }\n }\n `,\n\n // 底部提示\n tip: css`\n margin: 12px 0;\n text-align: center;\n font-size: 12px;\n color: #8c8c8c;\n `,\n\n actionBar: css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n min-height: 36px;\n `,\n\n actionBarLeft: css`\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n `,\n\n actionBarRight: css`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n flex-shrink: 0;\n `,\n\n // 快捷键弹出列表外层容器\n quickListWrapper: css`\n position: absolute;\n left: 0;\n bottom: 100%;\n margin-bottom: 4px;\n z-index: 100;\n `,\n\n // 快捷键弹出列表\n quickList: css`\n max-height: 320px;\n width: 380px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background: #fff;\n border-radius: 12px;\n box-shadow: 0 8px 40px 0 rgba(0, 0, 0, 0.12);\n `,\n\n quickListHeader: css`\n padding: 12px 16px 0;\n font-size: 13px;\n font-weight: 500;\n color: #8c8c8c;\n `,\n\n quickListBody: css`\n flex: 1;\n overflow-y: auto;\n padding: 4px 0;\n `,\n\n quickListEmpty: css`\n padding: 24px 16px;\n text-align: center;\n color: #8c8c8c;\n font-size: 13px;\n `,\n\n quickListGroup: css`\n padding: 8px 16px 4px;\n font-size: 11px;\n font-weight: 500;\n color: #8c8c8c;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n `,\n\n quickListItem: css`\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 16px;\n cursor: pointer;\n transition: background 0.15s ease;\n\n &:hover {\n background: #f5f5f5;\n }\n\n &.active {\n background: #f0f7ff;\n }\n\n .quick-list-item-icon {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n background: #f5f5f5;\n flex-shrink: 0;\n }\n\n .quick-list-item-content {\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n gap: 12px;\n }\n\n .quick-list-item-label {\n flex: 0 0 112px;\n overflow: hidden;\n font-size: 13px;\n font-weight: 500;\n color: #262626;\n line-height: 1.4;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .quick-list-item-desc {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n font-size: 12px;\n color: #8c8c8c;\n line-height: 1.4;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n `,\n\n // 输入框内标签\n inputTags: css`\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n padding: 4px 0 8px;\n `,\n\n inputTag: css`\n margin: 0;\n font-size: 12px;\n border-radius: 6px;\n `,\n}));\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -89,7 +89,7 @@ var XAiConversations = (props) => {
89
89
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
90
90
  "div",
91
91
  {
92
- style: { display: listVisible ? "block" : "none" },
92
+ style: { display: listVisible ? "flex" : "none" },
93
93
  className: (0, import_clsx.default)(
94
94
  isNarrow ? styles.nWrapper : styles.fWrapper,
95
95
  animateDirection === "in" && styles.slideIn,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/XAiConversations/index.tsx"],
4
- "sourcesContent": ["import React, { useState } from 'react';\nimport { Conversations } from '@ant-design/x';\nimport { RedoOutlined } from '@ant-design/icons';\nimport { Spin, Divider } from 'antd';\nimport InfiniteScroll from 'react-infinite-scroll-component';\nimport clsx from 'clsx';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { type XAiConversationsProps } from '@/types/XAiConversations';\nimport logo from '@/assets/logo.png';\nimport AddChatIcon from '@/assets/svg/AddChatIcon';\nimport flashOpen from '@/assets/flash-open.svg?url';\nimport { SESSION_PAGE_SIZE } from '@/constants';\nimport { useStyles, GlobalStyle } from './styles';\n\nconst XAiConversations: React.FC<XAiConversationsProps> = (props) => {\n const styles = useStyles();\n const { mergedProps } = useChatbotContext(props);\n const {\n isNarrow = false,\n sessionList,\n style,\n onActiveChange,\n onNewChat,\n loadMoreSessions,\n activeKey,\n menu,\n } = mergedProps;\n\n const [listVisible, setListVisible] = useState(false);\n const [animateDirection, setAnimateDirection] = useState<'in' | 'out' | null>(null);\n\n const handleSwitchTab = (key: string) => {\n onActiveChange?.(key);\n };\n\n const handleNewChat = () => {\n onNewChat?.();\n };\n\n const handleShowList = () => {\n setListVisible(true);\n setAnimateDirection('in');\n };\n\n const handleCloseList = () => {\n setAnimateDirection('out');\n setTimeout(() => {\n setListVisible(false);\n setAnimateDirection(null);\n }, 300);\n };\n\n return (\n <div className={styles.conversationsWrapper}>\n <GlobalStyle />\n {/** 顶部操作栏 */}\n {\n !listVisible && (\n <div className={styles.capWrapper}>\n <img alt=\"logo\" src={logo} className={clsx(styles.w(32), styles.h(29))} />\n <div className={styles.capShape}>\n <div className={styles.capIcon}>\n <img src={flashOpen} alt=\"\" onClick={handleShowList} />\n </div>\n <div className={styles.capIcon}>\n <AddChatIcon className={clsx(styles.w(17), styles.text('#343434'))} onClick={handleNewChat} />\n </div>\n </div>\n </div>\n )\n }\n\n {/* 会话列表 */}\n <div\n style={{ display: listVisible ? 'block' : 'none' }}\n className={clsx(\n isNarrow ? styles.nWrapper : styles.fWrapper,\n animateDirection === 'in' && styles.slideIn,\n animateDirection === 'out' && styles.slideOut,\n )}\n >\n {/* 固定头部 */}\n <div className={styles.fheaderWrapper}>\n <img alt=\"logo\" src={logo} className={clsx(styles.w(32), styles.h(29))} />\n <div className={styles.capIcon}>\n <img src={flashOpen} alt=\"\" onClick={handleCloseList} />\n </div>\n </div>\n <div className={styles.addChatBtn} onClick={handleNewChat}>\n <AddChatIcon className={clsx(styles.w(17), styles.mr(10))} />\n 开启新对话\n </div>\n <div className={styles.tipTitle}>历史对话</div>\n\n {/* 滚动区域 */}\n <div className={styles.scrollList}>\n <InfiniteScroll\n dataLength={sessionList.length}\n next={loadMoreSessions}\n hasMore={false}\n loader={(\n <div style={{ textAlign: 'center' }}>\n <Spin indicator={<RedoOutlined spin />} size=\"small\" />\n </div>\n )}\n endMessage={sessionList.length === SESSION_PAGE_SIZE && <Divider plain><span className={styles.textColor('#949494')}>只展示前 50 条数据</span></Divider>}\n style={{ overflow: 'hidden', paddingBottom: '5px' }}\n >\n <Conversations\n activeKey={activeKey}\n onActiveChange={(v) => handleSwitchTab(v)}\n items={sessionList}\n menu={menu}\n style={{\n width: 256,\n borderRadius: '6px',\n ...style,\n }}\n />\n </InfiniteScroll>\n </div>\n </div>\n\n {/* 遮罩层 - 仅在窄屏且列表可见时显示 */}\n {isNarrow && listVisible && (\n <div className={styles.mask} onClick={handleCloseList} />\n )}\n </div>\n );\n};\n\nexport default XAiConversations;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import React, { useState } from 'react';\nimport { Conversations } from '@ant-design/x';\nimport { RedoOutlined } from '@ant-design/icons';\nimport { Spin, Divider } from 'antd';\nimport InfiniteScroll from 'react-infinite-scroll-component';\nimport clsx from 'clsx';\nimport { useChatbotContext } from '@/hooks/useProviderContext';\nimport { type XAiConversationsProps } from '@/types/XAiConversations';\nimport logo from '@/assets/logo.png';\nimport AddChatIcon from '@/assets/svg/AddChatIcon';\nimport flashOpen from '@/assets/flash-open.svg?url';\nimport { SESSION_PAGE_SIZE } from '@/constants';\nimport { useStyles, GlobalStyle } from './styles';\n\nconst XAiConversations: React.FC<XAiConversationsProps> = (props) => {\n const styles = useStyles();\n const { mergedProps } = useChatbotContext(props);\n const {\n isNarrow = false,\n sessionList,\n style,\n onActiveChange,\n onNewChat,\n loadMoreSessions,\n activeKey,\n menu,\n } = mergedProps;\n\n const [listVisible, setListVisible] = useState(false);\n const [animateDirection, setAnimateDirection] = useState<'in' | 'out' | null>(null);\n\n const handleSwitchTab = (key: string) => {\n onActiveChange?.(key);\n };\n\n const handleNewChat = () => {\n onNewChat?.();\n };\n\n const handleShowList = () => {\n setListVisible(true);\n setAnimateDirection('in');\n };\n\n const handleCloseList = () => {\n setAnimateDirection('out');\n setTimeout(() => {\n setListVisible(false);\n setAnimateDirection(null);\n }, 300);\n };\n\n return (\n <div className={styles.conversationsWrapper}>\n <GlobalStyle />\n {/** 顶部操作栏 */}\n {\n !listVisible && (\n <div className={styles.capWrapper}>\n <img alt=\"logo\" src={logo} className={clsx(styles.w(32), styles.h(29))} />\n <div className={styles.capShape}>\n <div className={styles.capIcon}>\n <img src={flashOpen} alt=\"\" onClick={handleShowList} />\n </div>\n <div className={styles.capIcon}>\n <AddChatIcon className={clsx(styles.w(17), styles.text('#343434'))} onClick={handleNewChat} />\n </div>\n </div>\n </div>\n )\n }\n\n {/* 会话列表 */}\n <div\n // 展开时必须保持 flex 布局,scrollList 才能获得剩余高度并独立滚动。\n style={{ display: listVisible ? 'flex' : 'none' }}\n className={clsx(\n isNarrow ? styles.nWrapper : styles.fWrapper,\n animateDirection === 'in' && styles.slideIn,\n animateDirection === 'out' && styles.slideOut,\n )}\n >\n {/* 固定头部 */}\n <div className={styles.fheaderWrapper}>\n <img alt=\"logo\" src={logo} className={clsx(styles.w(32), styles.h(29))} />\n <div className={styles.capIcon}>\n <img src={flashOpen} alt=\"\" onClick={handleCloseList} />\n </div>\n </div>\n <div className={styles.addChatBtn} onClick={handleNewChat}>\n <AddChatIcon className={clsx(styles.w(17), styles.mr(10))} />\n 开启新对话\n </div>\n <div className={styles.tipTitle}>历史对话</div>\n\n {/* 滚动区域 */}\n <div className={styles.scrollList}>\n <InfiniteScroll\n dataLength={sessionList.length}\n next={loadMoreSessions}\n hasMore={false}\n loader={(\n <div style={{ textAlign: 'center' }}>\n <Spin indicator={<RedoOutlined spin />} size=\"small\" />\n </div>\n )}\n endMessage={sessionList.length === SESSION_PAGE_SIZE && <Divider plain><span className={styles.textColor('#949494')}>只展示前 50 条数据</span></Divider>}\n style={{ overflow: 'hidden', paddingBottom: '5px' }}\n >\n <Conversations\n activeKey={activeKey}\n onActiveChange={(v) => handleSwitchTab(v)}\n items={sessionList}\n menu={menu}\n style={{\n width: 256,\n borderRadius: '6px',\n ...style,\n }}\n />\n </InfiniteScroll>\n </div>\n </div>\n\n {/* 遮罩层 - 仅在窄屏且列表可见时显示 */}\n {isNarrow && listVisible && (\n <div className={styles.mask} onClick={handleCloseList} />\n )}\n </div>\n );\n};\n\nexport default XAiConversations;\n"],
5
+ "mappings": "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",
6
6
  "names": ["logo", "clsx", "flashOpen", "AddChatIcon", "InfiniteScroll"]
7
7
  }
@@ -119,6 +119,9 @@ var useStyles = (0, import_common.withBasicStyles)(() => ({
119
119
  height: 100%;
120
120
  box-sizing: border-box;
121
121
  position: relative;
122
+ display: flex;
123
+ flex-direction: column;
124
+ overflow: hidden;
122
125
  flex-shrink: 0;
123
126
  border-right: 1px solid #f0f0f0;
124
127
  `,
@@ -128,10 +131,14 @@ var useStyles = (0, import_common.withBasicStyles)(() => ({
128
131
  left: 0;
129
132
  width: 280px;
130
133
  height: 100%;
134
+ box-sizing: border-box;
131
135
  z-index: 1000;
132
136
  transition: left 0.3s ease;
133
137
  background: #F8FBFF;
134
138
  padding: 16px 0 13px;
139
+ display: flex;
140
+ flex-direction: column;
141
+ overflow: hidden;
135
142
  box-shadow: 2px 0 8px rgba(0, 0, 0, 0.1);
136
143
  `,
137
144
  mask: import_css.css`
@@ -151,8 +158,11 @@ var useStyles = (0, import_common.withBasicStyles)(() => ({
151
158
  padding: 0 11px 0 16px;
152
159
  `,
153
160
  scrollList: import_css.css`
154
- max-height: calc(100vh - 120px); /* 120px为头部高度,可根据实际调整 */
161
+ /* 使用侧栏的真实剩余高度,兼容全屏、弹窗及任意高度的嵌入容器。 */
162
+ flex: 1;
163
+ min-height: 0;
155
164
  padding-bottom: 15px;
165
+ box-sizing: border-box;
156
166
  overflow-y: auto;
157
167
 
158
168
  /* 隐藏滚动条(Chrome, Edge, Safari) */
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/XAiConversations/styles.tsx"],
4
- "sourcesContent": ["import React from 'react';\nimport { css, keyframes } from '@emotion/css';\nimport { css as globalCss, Global } from '@emotion/react';\nimport { withBasicStyles } from '@/styles/common';\n\nconst primaryBlue = '#0078FF'; // 主蓝色\nconst lightBlue = '#E6F0FF'; // 浅蓝色气泡背景\nconst darkGray = '#333'; // 深灰色文本\nconst lightGray = '#888'; // 浅灰文本\nconst borderGray = '#ddd'; // 边框灰色\n\nconst slideInRight = keyframes`\n from { transform: translateX(-100%); opacity: 0; }\n to { transform: translateX(0); opacity: 1; }\n`;\n\nconst slideOutRight = keyframes`\n from { transform: translateX(0); opacity: 1; }\n to { transform: translateX(-100%); opacity: 0; }\n`;\n\nexport const useStyles = withBasicStyles(() => ({\n // 静态样式\n conversationsWrapper: css`\n overflow: hidden;\n display: flex;\n flex-direction: column;\n height: 100%;\n `,\n\n capWrapper: css`\n padding: 12px 16px;\n display: flex;\n align-items: center;\n `,\n\n capShape: css`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 80px;\n height: 40px;\n margin-left: 16px;\n background: #FFFFFF;\n box-shadow: 0px 4px 16px 0px rgba(127,135,166,0.08);\n border-radius: 24px;\n border: 1px solid #E7E7E7;\n box-sizing: border-box;\n transition: box-shadow 0.2s, border-color 0.2s;\n cursor: pointer;\n /* &:hover {\n box-shadow: 0px 4px 24px 0px rgba(127,135,166,0.16);\n border-color: ${primaryBlue};\n } */\n `,\n\n capIcon: css`\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n\n img {\n width: 17px;\n }\n\n &:hover {\n background: #F2F2F2;\n border-radius: 50%;\n }\n `,\n\n addChatBtn: css`\n width: 256px;\n height: 40px;\n margin: 17px auto 24px;\n background: #FFFFFF;\n border-radius: 20px;\n border: 1px solid #E7E7E7;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: #343434;\n\n &:hover {\n color: #3961F2;\n }\n\n &:active {\n color: #0A3BEE;\n }\n `,\n\n tipTitle: css`\n font-size: 12px;\n color: #949494;\n padding-left: 24px;\n `,\n\n fWrapper: css`\n background: #F8FBFF;\n padding: 16px 0 13px;\n width: 280px;\n height: 100%;\n box-sizing: border-box;\n position: relative;\n flex-shrink: 0;\n border-right: 1px solid #f0f0f0;\n `,\n\n nWrapper: css`\n position: absolute;\n top: 0;\n left: 0;\n width: 280px;\n height: 100%;\n z-index: 1000;\n transition: left 0.3s ease;\n background: #F8FBFF;\n padding: 16px 0 13px;\n box-shadow: 2px 0 8px rgba(0, 0, 0, 0.1);\n `,\n\n mask: css`\n position: absolute;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background: rgba(0, 0, 0, 0.15);\n z-index: 999;\n cursor: pointer;\n `,\n\n fheaderWrapper: css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 11px 0 16px;\n `,\n\n scrollList: css`\n max-height: calc(100vh - 120px); /* 120px为头部高度,可根据实际调整 */\n padding-bottom: 15px;\n overflow-y: auto;\n\n /* 隐藏滚动条(Chrome, Edge, Safari) */\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n display: none;\n background: transparent;\n }\n\n /* 隐藏滚动条(Firefox) */\n scrollbar-width: none;\n\n /* 隐藏滚动条(IE/Edge) */\n -ms-overflow-style: none;\n `,\n\n slideIn: css`\n animation: ${slideInRight} 0.3s forwards;\n `,\n slideOut: css`\n animation: ${slideOutRight} 0.3s forwards;\n `,\n\n}));\n\nexport const GlobalStyle: React.FC = () => (\n <Global\n styles={globalCss`\n .ant-conversations .ant-conversations-item-active {\n background: rgba(57,97,242,0.08);\n }\n\n .ant-conversations .ant-conversations-item-active .ant-conversations-label {\n color: #3961F2;\n }\n `}\n />\n);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,iBAA+B;AAC/B,mBAAyC;AACzC,oBAAgC;AA4K9B;AA1KF,IAAM,cAAc;AAMpB,IAAM,eAAe;AAAA;AAAA;AAAA;AAKrB,IAAM,gBAAgB;AAAA;AAAA;AAAA;AAKf,IAAM,gBAAY,+BAAgB,OAAO;AAAA;AAAA,EAE9C,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOtB,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,EAMZ,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAgBU;AAAA;AAAA;AAAA,EAIpB,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBT,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBZ,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAMV,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWV,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaV,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWN,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOhB,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBZ,SAAS;AAAA,iBACM;AAAA;AAAA,EAEf,UAAU;AAAA,iBACK;AAAA;AAGjB,EAAE;AAEK,IAAM,cAAwB,MACnC;AAAA,EAAC;AAAA;AAAA,IACC,QAAQ,aAAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASV;",
4
+ "sourcesContent": ["import React from 'react';\nimport { css, keyframes } from '@emotion/css';\nimport { css as globalCss, Global } from '@emotion/react';\nimport { withBasicStyles } from '@/styles/common';\n\nconst primaryBlue = '#0078FF'; // 主蓝色\nconst lightBlue = '#E6F0FF'; // 浅蓝色气泡背景\nconst darkGray = '#333'; // 深灰色文本\nconst lightGray = '#888'; // 浅灰文本\nconst borderGray = '#ddd'; // 边框灰色\n\nconst slideInRight = keyframes`\n from { transform: translateX(-100%); opacity: 0; }\n to { transform: translateX(0); opacity: 1; }\n`;\n\nconst slideOutRight = keyframes`\n from { transform: translateX(0); opacity: 1; }\n to { transform: translateX(-100%); opacity: 0; }\n`;\n\nexport const useStyles = withBasicStyles(() => ({\n // 静态样式\n conversationsWrapper: css`\n overflow: hidden;\n display: flex;\n flex-direction: column;\n height: 100%;\n `,\n\n capWrapper: css`\n padding: 12px 16px;\n display: flex;\n align-items: center;\n `,\n\n capShape: css`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 80px;\n height: 40px;\n margin-left: 16px;\n background: #FFFFFF;\n box-shadow: 0px 4px 16px 0px rgba(127,135,166,0.08);\n border-radius: 24px;\n border: 1px solid #E7E7E7;\n box-sizing: border-box;\n transition: box-shadow 0.2s, border-color 0.2s;\n cursor: pointer;\n /* &:hover {\n box-shadow: 0px 4px 24px 0px rgba(127,135,166,0.16);\n border-color: ${primaryBlue};\n } */\n `,\n\n capIcon: css`\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n\n img {\n width: 17px;\n }\n\n &:hover {\n background: #F2F2F2;\n border-radius: 50%;\n }\n `,\n\n addChatBtn: css`\n width: 256px;\n height: 40px;\n margin: 17px auto 24px;\n background: #FFFFFF;\n border-radius: 20px;\n border: 1px solid #E7E7E7;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: #343434;\n\n &:hover {\n color: #3961F2;\n }\n\n &:active {\n color: #0A3BEE;\n }\n `,\n\n tipTitle: css`\n font-size: 12px;\n color: #949494;\n padding-left: 24px;\n `,\n\n fWrapper: css`\n background: #F8FBFF;\n padding: 16px 0 13px;\n width: 280px;\n height: 100%;\n box-sizing: border-box;\n position: relative;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n flex-shrink: 0;\n border-right: 1px solid #f0f0f0;\n `,\n\n nWrapper: css`\n position: absolute;\n top: 0;\n left: 0;\n width: 280px;\n height: 100%;\n box-sizing: border-box;\n z-index: 1000;\n transition: left 0.3s ease;\n background: #F8FBFF;\n padding: 16px 0 13px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n box-shadow: 2px 0 8px rgba(0, 0, 0, 0.1);\n `,\n\n mask: css`\n position: absolute;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background: rgba(0, 0, 0, 0.15);\n z-index: 999;\n cursor: pointer;\n `,\n\n fheaderWrapper: css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 11px 0 16px;\n `,\n\n scrollList: css`\n /* 使用侧栏的真实剩余高度,兼容全屏、弹窗及任意高度的嵌入容器。 */\n flex: 1;\n min-height: 0;\n padding-bottom: 15px;\n box-sizing: border-box;\n overflow-y: auto;\n\n /* 隐藏滚动条(Chrome, Edge, Safari) */\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n display: none;\n background: transparent;\n }\n\n /* 隐藏滚动条(Firefox) */\n scrollbar-width: none;\n\n /* 隐藏滚动条(IE/Edge) */\n -ms-overflow-style: none;\n `,\n\n slideIn: css`\n animation: ${slideInRight} 0.3s forwards;\n `,\n slideOut: css`\n animation: ${slideOutRight} 0.3s forwards;\n `,\n\n}));\n\nexport const GlobalStyle: React.FC = () => (\n <Global\n styles={globalCss`\n .ant-conversations .ant-conversations-item-active {\n background: rgba(57,97,242,0.08);\n }\n\n .ant-conversations .ant-conversations-item-active .ant-conversations-label {\n color: #3961F2;\n }\n `}\n />\n);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,iBAA+B;AAC/B,mBAAyC;AACzC,oBAAgC;AAsL9B;AApLF,IAAM,cAAc;AAMpB,IAAM,eAAe;AAAA;AAAA;AAAA;AAKrB,IAAM,gBAAgB;AAAA;AAAA;AAAA;AAKf,IAAM,gBAAY,+BAAgB,OAAO;AAAA;AAAA,EAE9C,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOtB,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,EAMZ,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAgBU;AAAA;AAAA;AAAA,EAIpB,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBT,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBZ,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAMV,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcV,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBV,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWN,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOhB,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBZ,SAAS;AAAA,iBACM;AAAA;AAAA,EAEf,UAAU;AAAA,iBACK;AAAA;AAGjB,EAAE;AAEK,IAAM,cAAwB,MACnC;AAAA,EAAC;AAAA;AAAA,IACC,QAAQ,aAAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASV;",
6
6
  "names": ["globalCss"]
7
7
  }
@@ -13,13 +13,14 @@ import XAdkProvider from "./components/XAdkProvider";
13
13
  import XAdkChatbot from "./components/XAdkChatbot";
14
14
  import XAdkSender from "./components/XAdkSender";
15
15
  import useADKChat from "./hooks/useADKChat";
16
- import { baseChatStrategies, basePreset, baseToolKindResolver, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, resolvePresetMarkdownExtensions, extractXGroupKnowledgeReferences, parseXGroupKnowledgeReference, xGroupKnowledgeReferenceMarkdownExtension, xGroupMarkdownExtensions, createXGroupUploadRequest, xGroupAdkPreset, xGroupToolKindResolver } from "./presets/xgroup";
16
+ import { baseChatStrategies, basePreset, baseToolKindResolver, BUILTIN_CHAT_PRESETS, composeChatPresets, DEFAULT_CHAT_PRESET_NAME, defineChatPreset, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, resolvePresetMarkdownExtensions } from "./presets";
17
+ import { extractXGroupKnowledgeReferences, parseXGroupKnowledgeReference, xGroupKnowledgeReferenceMarkdownExtension, xGroupMarkdownExtensions, parseXGroupWebReference, xGroupWebReferenceMarkdownExtension, createXGroupUploadRequest, xGroupAdkPreset, xGroupToolKindResolver } from "./presets/xgroup";
17
18
  export { useChatState, useChatActions, useSession, } from "./components/XAdkProvider/context";
18
19
  export * from "./types";
19
20
  export type { ChatHookResult, ChatHookFactory } from "./types/ChatHook";
20
21
  export { useXAi, XAiProvider, XAiChatbot, XAiSDK, XAiSender, XAiConversations, useXAiSDK, request, };
21
- export { XAdkProvider, XAdkChatbot, XAdkSender, FileGallery, XAdkThoughtChain, useADKChat, formatMarkdownResourceLinksAsText, getMarkdownResourceDisplayLabel, parseMarkdownResourceLinksAsParts, parseMarkdownResourceHref, replaceMarkdownResourceLinks, baseChatStrategies, basePreset, baseToolKindResolver, createXGroupUploadRequest, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, resolvePresetMarkdownExtensions, extractXGroupKnowledgeReferences, parseXGroupKnowledgeReference, xGroupKnowledgeReferenceMarkdownExtension, xGroupMarkdownExtensions, xGroupAdkPreset, xGroupToolKindResolver, };
22
- export type { XGroupKnowledgeReference } from "./presets/xgroup";
22
+ export { XAdkProvider, XAdkChatbot, XAdkSender, FileGallery, XAdkThoughtChain, useADKChat, formatMarkdownResourceLinksAsText, getMarkdownResourceDisplayLabel, parseMarkdownResourceLinksAsParts, parseMarkdownResourceHref, replaceMarkdownResourceLinks, baseChatStrategies, basePreset, baseToolKindResolver, BUILTIN_CHAT_PRESETS, composeChatPresets, DEFAULT_CHAT_PRESET_NAME, defineChatPreset, createXGroupUploadRequest, mergeChatStrategies, resolvePresetUploadRequest, resolveChatPreset, resolvePresetMarkdownExtensions, extractXGroupKnowledgeReferences, parseXGroupKnowledgeReference, xGroupKnowledgeReferenceMarkdownExtension, xGroupMarkdownExtensions, parseXGroupWebReference, xGroupWebReferenceMarkdownExtension, xGroupAdkPreset, xGroupToolKindResolver, };
23
+ export type { XGroupKnowledgeReference, XGroupWebReference, } from "./presets/xgroup";
23
24
  import Sources from "./components/Sources";
24
25
  export { Sources };
25
26
  export type { SourcesProps, SourcesItem, SourcesRef } from "./types/Sources";
package/dist/cjs/index.js CHANGED
@@ -30,6 +30,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // src/index.ts
31
31
  var src_exports = {};
32
32
  __export(src_exports, {
33
+ BUILTIN_CHAT_PRESETS: () => import_presets.BUILTIN_CHAT_PRESETS,
34
+ DEFAULT_CHAT_PRESET_NAME: () => import_presets.DEFAULT_CHAT_PRESET_NAME,
33
35
  FileGallery: () => import_FileGallery.default,
34
36
  FolderTree: () => import_FolderTree.default,
35
37
  FunctionCallRender: () => import_FunctionCallRender.default,
@@ -45,24 +47,27 @@ __export(src_exports, {
45
47
  XAiProvider: () => import_XAiProvider.default,
46
48
  XAiSDK: () => import_XAiSDK.default,
47
49
  XAiSender: () => import_XAiSender.default,
48
- baseChatStrategies: () => import_xgroup.baseChatStrategies,
49
- basePreset: () => import_xgroup.basePreset,
50
- baseToolKindResolver: () => import_xgroup.baseToolKindResolver,
50
+ baseChatStrategies: () => import_presets.baseChatStrategies,
51
+ basePreset: () => import_presets.basePreset,
52
+ baseToolKindResolver: () => import_presets.baseToolKindResolver,
53
+ composeChatPresets: () => import_presets.composeChatPresets,
51
54
  createXGroupOpenApiTransport: () => import_xgroup2.createXGroupOpenApiTransport,
52
55
  createXGroupUploadRequest: () => import_xgroup.createXGroupUploadRequest,
53
56
  cssVarStyle: () => import_tokens.cssVarStyle,
57
+ defineChatPreset: () => import_presets.defineChatPreset,
54
58
  extractXGroupKnowledgeReferences: () => import_xgroup.extractXGroupKnowledgeReferences,
55
59
  formatMarkdownResourceLinksAsText: () => import_markdownResource.formatMarkdownResourceLinksAsText,
56
60
  getMarkdownResourceDisplayLabel: () => import_markdownResource.getMarkdownResourceDisplayLabel,
57
- mergeChatStrategies: () => import_xgroup.mergeChatStrategies,
61
+ mergeChatStrategies: () => import_presets.mergeChatStrategies,
58
62
  parseMarkdownResourceHref: () => import_markdownResource.parseMarkdownResourceHref,
59
63
  parseMarkdownResourceLinksAsParts: () => import_markdownResource.parseMarkdownResourceLinksAsParts,
60
64
  parseXGroupKnowledgeReference: () => import_xgroup.parseXGroupKnowledgeReference,
65
+ parseXGroupWebReference: () => import_xgroup.parseXGroupWebReference,
61
66
  replaceMarkdownResourceLinks: () => import_markdownResource.replaceMarkdownResourceLinks,
62
67
  request: () => import_request.default,
63
- resolveChatPreset: () => import_xgroup.resolveChatPreset,
64
- resolvePresetMarkdownExtensions: () => import_xgroup.resolvePresetMarkdownExtensions,
65
- resolvePresetUploadRequest: () => import_xgroup.resolvePresetUploadRequest,
68
+ resolveChatPreset: () => import_presets.resolveChatPreset,
69
+ resolvePresetMarkdownExtensions: () => import_presets.resolvePresetMarkdownExtensions,
70
+ resolvePresetUploadRequest: () => import_presets.resolvePresetUploadRequest,
66
71
  token: () => import_tokens.token,
67
72
  tokenDefaults: () => import_tokens.tokenDefaults,
68
73
  tokens: () => import_tokens.tokens,
@@ -76,7 +81,8 @@ __export(src_exports, {
76
81
  xGroupAdkPreset: () => import_xgroup.xGroupAdkPreset,
77
82
  xGroupKnowledgeReferenceMarkdownExtension: () => import_xgroup.xGroupKnowledgeReferenceMarkdownExtension,
78
83
  xGroupMarkdownExtensions: () => import_xgroup.xGroupMarkdownExtensions,
79
- xGroupToolKindResolver: () => import_xgroup.xGroupToolKindResolver
84
+ xGroupToolKindResolver: () => import_xgroup.xGroupToolKindResolver,
85
+ xGroupWebReferenceMarkdownExtension: () => import_xgroup.xGroupWebReferenceMarkdownExtension
80
86
  });
81
87
  module.exports = __toCommonJS(src_exports);
82
88
  var import_AiProviderContext = require("./context/AiProviderContext");
@@ -94,6 +100,7 @@ var import_XAdkProvider = __toESM(require("./components/XAdkProvider"));
94
100
  var import_XAdkChatbot = __toESM(require("./components/XAdkChatbot"));
95
101
  var import_XAdkSender = __toESM(require("./components/XAdkSender"));
96
102
  var import_useADKChat = __toESM(require("./hooks/useADKChat"));
103
+ var import_presets = require("./presets");
97
104
  var import_xgroup = require("./presets/xgroup");
98
105
  var import_context = require("./components/XAdkProvider/context");
99
106
  __reExport(src_exports, require("./types"), module.exports);
@@ -108,6 +115,8 @@ var import_useAdkConversation = __toESM(require("./react/useAdkConversation"));
108
115
  var import_xgroup2 = require("./presets/xgroup");
109
116
  // Annotate the CommonJS export names for ESM import in node:
110
117
  0 && (module.exports = {
118
+ BUILTIN_CHAT_PRESETS,
119
+ DEFAULT_CHAT_PRESET_NAME,
111
120
  FileGallery,
112
121
  FolderTree,
113
122
  FunctionCallRender,
@@ -126,9 +135,11 @@ var import_xgroup2 = require("./presets/xgroup");
126
135
  baseChatStrategies,
127
136
  basePreset,
128
137
  baseToolKindResolver,
138
+ composeChatPresets,
129
139
  createXGroupOpenApiTransport,
130
140
  createXGroupUploadRequest,
131
141
  cssVarStyle,
142
+ defineChatPreset,
132
143
  extractXGroupKnowledgeReferences,
133
144
  formatMarkdownResourceLinksAsText,
134
145
  getMarkdownResourceDisplayLabel,
@@ -136,6 +147,7 @@ var import_xgroup2 = require("./presets/xgroup");
136
147
  parseMarkdownResourceHref,
137
148
  parseMarkdownResourceLinksAsParts,
138
149
  parseXGroupKnowledgeReference,
150
+ parseXGroupWebReference,
139
151
  replaceMarkdownResourceLinks,
140
152
  request,
141
153
  resolveChatPreset,
@@ -155,6 +167,7 @@ var import_xgroup2 = require("./presets/xgroup");
155
167
  xGroupKnowledgeReferenceMarkdownExtension,
156
168
  xGroupMarkdownExtensions,
157
169
  xGroupToolKindResolver,
170
+ xGroupWebReferenceMarkdownExtension,
158
171
  ...require("./types"),
159
172
  ...require("./core")
160
173
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["// index.ts\nimport { useXAi } from \"./context/AiProviderContext\";\nimport XAiProvider from \"./components/XAiProvider\";\nimport XAiChatbot from \"./components/XAiChatbot\";\nimport XAiSDK from \"./components/XAiSDK\";\nimport XAiSender from \"./components/XAiSender\";\nimport FileGallery from \"./components/FileGallery\";\nimport XAiConversations from \"./components/XAiConversations\";\nimport XAdkThoughtChain from \"./components/XAdkThoughtChain\";\nimport useXAiSDK from \"./hooks/useXAiSDK\";\nimport request from \"./utils/request\";\nimport {\n formatMarkdownResourceLinksAsText,\n getMarkdownResourceDisplayLabel,\n parseMarkdownResourceLinksAsParts,\n parseMarkdownResourceHref,\n replaceMarkdownResourceLinks,\n} from \"./utils/markdownResource\";\n\n// 新的 Compound Components 架构\nimport XAdkProvider from \"./components/XAdkProvider\";\nimport XAdkChatbot from \"./components/XAdkChatbot\";\nimport XAdkSender from \"./components/XAdkSender\";\nimport useADKChat from \"./hooks/useADKChat\";\nimport {\n baseChatStrategies,\n basePreset,\n baseToolKindResolver,\n mergeChatStrategies,\n resolvePresetUploadRequest,\n resolveChatPreset,\n resolvePresetMarkdownExtensions,\n extractXGroupKnowledgeReferences,\n parseXGroupKnowledgeReference,\n xGroupKnowledgeReferenceMarkdownExtension,\n xGroupMarkdownExtensions,\n createXGroupUploadRequest,\n xGroupAdkPreset,\n xGroupToolKindResolver,\n} from \"./presets/xgroup\";\n\n// 导出新的 Context Hooks\nexport {\n useChatState,\n useChatActions,\n useSession,\n} from \"./components/XAdkProvider/context\";\n\nexport * from \"./types\";\n\n// 导出自定义 Hook 相关类型\nexport type { ChatHookResult, ChatHookFactory } from \"./types/ChatHook\";\n\n// 旧 API - 保持向后兼容\nexport {\n useXAi,\n XAiProvider,\n XAiChatbot,\n XAiSDK,\n XAiSender,\n XAiConversations,\n useXAiSDK,\n request,\n};\n\n// 新 API - 推荐使用\nexport {\n XAdkProvider,\n XAdkChatbot,\n XAdkSender,\n FileGallery,\n XAdkThoughtChain,\n useADKChat,\n formatMarkdownResourceLinksAsText,\n getMarkdownResourceDisplayLabel,\n parseMarkdownResourceLinksAsParts,\n parseMarkdownResourceHref,\n replaceMarkdownResourceLinks,\n baseChatStrategies,\n basePreset,\n baseToolKindResolver,\n createXGroupUploadRequest,\n mergeChatStrategies,\n resolvePresetUploadRequest,\n resolveChatPreset,\n resolvePresetMarkdownExtensions,\n extractXGroupKnowledgeReferences,\n parseXGroupKnowledgeReference,\n xGroupKnowledgeReferenceMarkdownExtension,\n xGroupMarkdownExtensions,\n xGroupAdkPreset,\n xGroupToolKindResolver,\n};\nexport type { XGroupKnowledgeReference } from \"./presets/xgroup\";\n\n// Sources 来源引用组件\nimport Sources from \"./components/Sources\";\nexport { Sources };\nexport type { SourcesProps, SourcesItem, SourcesRef } from \"./types/Sources\";\n\n// FolderTree 文件树组件\nimport FolderTree from \"./components/FolderTree\";\nexport { FolderTree };\nexport type {\n FolderTreeProps,\n FolderTreeData,\n FileContentService,\n FolderTreeRef,\n} from \"./components/FolderTree\";\n\n// 基础组件导出 - 供高级用户和业务侧使用\nexport { default as MarkdownRender } from \"./components/XAdkChatbot/components/MarkdownRender\";\nexport { default as FunctionCallRender } from \"./components/XAdkChatbot/components/FunctionCallRender\";\nexport { default as ThinkRender } from \"./components/XAdkChatbot/components/ThinkRender\";\n\n// 基础组件类型导出\nexport type { MarkdownRenderProps } from \"./components/XAdkChatbot/components/MarkdownRender\";\nexport type { FunctionCallRenderProps } from \"./types/FunctionCallRender\";\nexport type {\n XAdkThoughtChainProps,\n ThoughtChainItemType,\n ThoughtChainStatus,\n} from \"./types/XAdkThoughtChain\";\n\n// 设计令牌导出 - 供引用方覆盖样式\nexport { tokens, tokenDefaults, token, cssVarStyle } from \"./styles/tokens\";\n\n// Headless ADK data-flow APIs\nexport * from \"./core\";\nexport { default as useAdkConversation } from \"./react/useAdkConversation\";\nexport type { UseAdkConversationResult } from \"./react/useAdkConversation\";\nexport { createXGroupOpenApiTransport } from \"./presets/xgroup\";\nexport type { XGroupOpenApiTransportOptions } from \"./presets/xgroup\";\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,wCAAAA;AAAA,EAAA,oCAAAC;AAAA,EAAA;AAAA;AAAA,gCAAAC;AAAA,EAAA;AAAA,wCAAAC;AAAA,EAAA,wCAAAC;AAAA,EAAA,oCAAAC;AAAA,EAAA,gDAAAC;AAAA,EAAA,oCAAAC;AAAA,EAAA,gDAAAC;AAAA,EAAA,sCAAAC;AAAA,EAAA,4BAAAC;AAAA,EAAA,kCAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sCAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oCAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,+BAAuB;AACvB,yBAAwB;AACxB,wBAAuB;AACvB,oBAAmB;AACnB,uBAAsB;AACtB,yBAAwB;AACxB,8BAA6B;AAC7B,8BAA6B;AAC7B,uBAAsB;AACtB,qBAAoB;AACpB,8BAMO;AAGP,0BAAyB;AACzB,yBAAwB;AACxB,wBAAuB;AACvB,wBAAuB;AACvB,oBAeO;AAGP,qBAIO;AAEP,wBAAc,oBAhDd;AAgGA,qBAAoB;AAKpB,wBAAuB;AAUvB,4BAA0C;AAC1C,gCAA8C;AAC9C,yBAAuC;AAYvC,oBAA0D;AAG1D,wBAAc,mBAhId;AAiIA,gCAA8C;AAE9C,IAAAC,iBAA6C;",
4
+ "sourcesContent": ["// index.ts\nimport { useXAi } from \"./context/AiProviderContext\";\nimport XAiProvider from \"./components/XAiProvider\";\nimport XAiChatbot from \"./components/XAiChatbot\";\nimport XAiSDK from \"./components/XAiSDK\";\nimport XAiSender from \"./components/XAiSender\";\nimport FileGallery from \"./components/FileGallery\";\nimport XAiConversations from \"./components/XAiConversations\";\nimport XAdkThoughtChain from \"./components/XAdkThoughtChain\";\nimport useXAiSDK from \"./hooks/useXAiSDK\";\nimport request from \"./utils/request\";\nimport {\n formatMarkdownResourceLinksAsText,\n getMarkdownResourceDisplayLabel,\n parseMarkdownResourceLinksAsParts,\n parseMarkdownResourceHref,\n replaceMarkdownResourceLinks,\n} from \"./utils/markdownResource\";\n\n// 新的 Compound Components 架构\nimport XAdkProvider from \"./components/XAdkProvider\";\nimport XAdkChatbot from \"./components/XAdkChatbot\";\nimport XAdkSender from \"./components/XAdkSender\";\nimport useADKChat from \"./hooks/useADKChat\";\nimport {\n baseChatStrategies,\n basePreset,\n baseToolKindResolver,\n BUILTIN_CHAT_PRESETS,\n composeChatPresets,\n DEFAULT_CHAT_PRESET_NAME,\n defineChatPreset,\n mergeChatStrategies,\n resolvePresetUploadRequest,\n resolveChatPreset,\n resolvePresetMarkdownExtensions,\n} from \"./presets\";\nimport {\n extractXGroupKnowledgeReferences,\n parseXGroupKnowledgeReference,\n xGroupKnowledgeReferenceMarkdownExtension,\n xGroupMarkdownExtensions,\n parseXGroupWebReference,\n xGroupWebReferenceMarkdownExtension,\n createXGroupUploadRequest,\n xGroupAdkPreset,\n xGroupToolKindResolver,\n} from \"./presets/xgroup\";\n\n// 导出新的 Context Hooks\nexport {\n useChatState,\n useChatActions,\n useSession,\n} from \"./components/XAdkProvider/context\";\n\nexport * from \"./types\";\n\n// 导出自定义 Hook 相关类型\nexport type { ChatHookResult, ChatHookFactory } from \"./types/ChatHook\";\n\n// 旧 API - 保持向后兼容\nexport {\n useXAi,\n XAiProvider,\n XAiChatbot,\n XAiSDK,\n XAiSender,\n XAiConversations,\n useXAiSDK,\n request,\n};\n\n// 新 API - 推荐使用\nexport {\n XAdkProvider,\n XAdkChatbot,\n XAdkSender,\n FileGallery,\n XAdkThoughtChain,\n useADKChat,\n formatMarkdownResourceLinksAsText,\n getMarkdownResourceDisplayLabel,\n parseMarkdownResourceLinksAsParts,\n parseMarkdownResourceHref,\n replaceMarkdownResourceLinks,\n baseChatStrategies,\n basePreset,\n baseToolKindResolver,\n BUILTIN_CHAT_PRESETS,\n composeChatPresets,\n DEFAULT_CHAT_PRESET_NAME,\n defineChatPreset,\n createXGroupUploadRequest,\n mergeChatStrategies,\n resolvePresetUploadRequest,\n resolveChatPreset,\n resolvePresetMarkdownExtensions,\n extractXGroupKnowledgeReferences,\n parseXGroupKnowledgeReference,\n xGroupKnowledgeReferenceMarkdownExtension,\n xGroupMarkdownExtensions,\n parseXGroupWebReference,\n xGroupWebReferenceMarkdownExtension,\n xGroupAdkPreset,\n xGroupToolKindResolver,\n};\nexport type {\n XGroupKnowledgeReference,\n XGroupWebReference,\n} from \"./presets/xgroup\";\n\n// Sources 来源引用组件\nimport Sources from \"./components/Sources\";\nexport { Sources };\nexport type { SourcesProps, SourcesItem, SourcesRef } from \"./types/Sources\";\n\n// FolderTree 文件树组件\nimport FolderTree from \"./components/FolderTree\";\nexport { FolderTree };\nexport type {\n FolderTreeProps,\n FolderTreeData,\n FileContentService,\n FolderTreeRef,\n} from \"./components/FolderTree\";\n\n// 基础组件导出 - 供高级用户和业务侧使用\nexport { default as MarkdownRender } from \"./components/XAdkChatbot/components/MarkdownRender\";\nexport { default as FunctionCallRender } from \"./components/XAdkChatbot/components/FunctionCallRender\";\nexport { default as ThinkRender } from \"./components/XAdkChatbot/components/ThinkRender\";\n\n// 基础组件类型导出\nexport type { MarkdownRenderProps } from \"./components/XAdkChatbot/components/MarkdownRender\";\nexport type { FunctionCallRenderProps } from \"./types/FunctionCallRender\";\nexport type {\n XAdkThoughtChainProps,\n ThoughtChainItemType,\n ThoughtChainStatus,\n} from \"./types/XAdkThoughtChain\";\n\n// 设计令牌导出 - 供引用方覆盖样式\nexport { tokens, tokenDefaults, token, cssVarStyle } from \"./styles/tokens\";\n\n// Headless ADK data-flow APIs\nexport * from \"./core\";\nexport { default as useAdkConversation } from \"./react/useAdkConversation\";\nexport type { UseAdkConversationResult } from \"./react/useAdkConversation\";\nexport { createXGroupOpenApiTransport } from \"./presets/xgroup\";\nexport type { XGroupOpenApiTransportOptions } from \"./presets/xgroup\";\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA,wCAAAA;AAAA,EAAA,oCAAAC;AAAA,EAAA;AAAA;AAAA,gCAAAC;AAAA,EAAA;AAAA,wCAAAC;AAAA,EAAA,wCAAAC;AAAA,EAAA,oCAAAC;AAAA,EAAA,gDAAAC;AAAA,EAAA,oCAAAC;AAAA,EAAA,gDAAAC;AAAA,EAAA,sCAAAC;AAAA,EAAA,4BAAAC;AAAA,EAAA,kCAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sCAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oCAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,+BAAuB;AACvB,yBAAwB;AACxB,wBAAuB;AACvB,oBAAmB;AACnB,uBAAsB;AACtB,yBAAwB;AACxB,8BAA6B;AAC7B,8BAA6B;AAC7B,uBAAsB;AACtB,qBAAoB;AACpB,8BAMO;AAGP,0BAAyB;AACzB,yBAAwB;AACxB,wBAAuB;AACvB,wBAAuB;AACvB,qBAYO;AACP,oBAUO;AAGP,qBAIO;AAEP,wBAAc,oBAxDd;AAiHA,qBAAoB;AAKpB,wBAAuB;AAUvB,4BAA0C;AAC1C,gCAA8C;AAC9C,yBAAuC;AAYvC,oBAA0D;AAG1D,wBAAc,mBAjJd;AAkJA,gCAA8C;AAE9C,IAAAC,iBAA6C;",
6
6
  "names": ["FileGallery", "FolderTree", "Sources", "XAdkChatbot", "XAdkProvider", "XAdkSender", "XAdkThoughtChain", "XAiChatbot", "XAiConversations", "XAiProvider", "XAiSDK", "XAiSender", "request", "useADKChat", "useXAiSDK", "import_xgroup"]
7
7
  }
@@ -0,0 +1,6 @@
1
+ import type { ChatPreset, ChatStrategies, ToolRenderKind } from "../types";
2
+ export declare const baseToolKindResolver: () => ToolRenderKind;
3
+ /** SDK 基础策略:不带任何企业协议偏好的最小行为集合。 */
4
+ export declare const baseChatStrategies: Required<Pick<ChatStrategies, "resolveToolKind" | "createFunctionResponse" | "parseProcessMessage" | "markdownResourceLinkSchemes">>;
5
+ /** 不绑定企业后端协议的中立预设。 */
6
+ export declare const basePreset: ChatPreset;
@@ -0,0 +1,50 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/presets/base.ts
20
+ var base_exports = {};
21
+ __export(base_exports, {
22
+ baseChatStrategies: () => baseChatStrategies,
23
+ basePreset: () => basePreset,
24
+ baseToolKindResolver: () => baseToolKindResolver
25
+ });
26
+ module.exports = __toCommonJS(base_exports);
27
+ var import_utils = require("../utils");
28
+ var BASE_MARKDOWN_RESOURCE_LINK_SCHEMES = [];
29
+ var baseToolKindResolver = () => "default";
30
+ var baseChatStrategies = {
31
+ resolveToolKind: baseToolKindResolver,
32
+ createFunctionResponse: (fnCall, confirmed) => ({
33
+ id: fnCall.id,
34
+ name: fnCall.name,
35
+ response: { confirmed }
36
+ }),
37
+ parseProcessMessage: import_utils.parseAgentMessage,
38
+ markdownResourceLinkSchemes: BASE_MARKDOWN_RESOURCE_LINK_SCHEMES
39
+ };
40
+ var basePreset = {
41
+ name: "base",
42
+ strategies: baseChatStrategies
43
+ };
44
+ // Annotate the CommonJS export names for ESM import in node:
45
+ 0 && (module.exports = {
46
+ baseChatStrategies,
47
+ basePreset,
48
+ baseToolKindResolver
49
+ });
50
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/presets/base.ts"],
4
+ "sourcesContent": ["import { parseAgentMessage } from \"@/utils\";\nimport type {\n ChatPreset,\n ChatStrategies,\n FunctionCall,\n FunctionResponse,\n ToolRenderKind,\n} from \"@/types\";\n\nconst BASE_MARKDOWN_RESOURCE_LINK_SCHEMES: readonly string[] = [];\n\nexport const baseToolKindResolver = (): ToolRenderKind => \"default\";\n\n/** SDK 基础策略:不带任何企业协议偏好的最小行为集合。 */\nexport const baseChatStrategies: Required<\n Pick<\n ChatStrategies,\n | \"resolveToolKind\"\n | \"createFunctionResponse\"\n | \"parseProcessMessage\"\n | \"markdownResourceLinkSchemes\"\n >\n> = {\n resolveToolKind: baseToolKindResolver,\n createFunctionResponse: (\n fnCall: FunctionCall,\n confirmed: boolean,\n ): FunctionResponse => ({\n id: fnCall.id,\n name: fnCall.name,\n response: { confirmed },\n }),\n parseProcessMessage: parseAgentMessage,\n markdownResourceLinkSchemes: BASE_MARKDOWN_RESOURCE_LINK_SCHEMES,\n};\n\n/** 不绑定企业后端协议的中立预设。 */\nexport const basePreset: ChatPreset = {\n name: \"base\",\n strategies: baseChatStrategies,\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkC;AASlC,IAAM,sCAAyD,CAAC;AAEzD,IAAM,uBAAuB,MAAsB;AAGnD,IAAM,qBAQT;AAAA,EACF,iBAAiB;AAAA,EACjB,wBAAwB,CACtB,QACA,eACsB;AAAA,IACtB,IAAI,OAAO;AAAA,IACX,MAAM,OAAO;AAAA,IACb,UAAU,EAAE,UAAU;AAAA,EACxB;AAAA,EACA,qBAAqB;AAAA,EACrB,6BAA6B;AAC/B;AAGO,IAAM,aAAyB;AAAA,EACpC,MAAM;AAAA,EACN,YAAY;AACd;",
6
+ "names": []
7
+ }
@@ -0,0 +1,11 @@
1
+ import type { ChatPreset } from "../types";
2
+ /**
3
+ * 为企业预设提供类型安全的声明入口。
4
+ * 使用函数而非可变的全局注册器,避免 SSR/多实例之间共享注册状态。
5
+ */
6
+ export declare const defineChatPreset: <TPreset extends ChatPreset>(preset: TPreset) => TPreset;
7
+ /**
8
+ * 组合基础预设、可复用能力包和企业差异。后传入的预设优先,策略按字段浅合并,
9
+ * Markdown 扩展按 tagName 去重并由后者覆盖。
10
+ */
11
+ export declare const composeChatPresets: (base: ChatPreset, ...overrides: ChatPreset[]) => ChatPreset;
@@ -0,0 +1,58 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/presets/define.ts
20
+ var define_exports = {};
21
+ __export(define_exports, {
22
+ composeChatPresets: () => composeChatPresets,
23
+ defineChatPreset: () => defineChatPreset
24
+ });
25
+ module.exports = __toCommonJS(define_exports);
26
+ var defineChatPreset = (preset) => preset;
27
+ var mergeChatPreset = (base, override) => {
28
+ const overrideTags = new Set(
29
+ (override.markdownExtensions || []).map(
30
+ (item) => item.tagName.toLowerCase()
31
+ )
32
+ );
33
+ return {
34
+ ...base,
35
+ ...override,
36
+ strategies: {
37
+ ...base.strategies,
38
+ ...override.strategies
39
+ },
40
+ markdownExtensions: [
41
+ ...(base.markdownExtensions || []).filter(
42
+ (item) => !overrideTags.has(item.tagName.toLowerCase())
43
+ ),
44
+ ...override.markdownExtensions || []
45
+ ],
46
+ createUploadRequest: Object.prototype.hasOwnProperty.call(
47
+ override,
48
+ "createUploadRequest"
49
+ ) ? override.createUploadRequest : base.createUploadRequest
50
+ };
51
+ };
52
+ var composeChatPresets = (base, ...overrides) => overrides.reduce(mergeChatPreset, base);
53
+ // Annotate the CommonJS export names for ESM import in node:
54
+ 0 && (module.exports = {
55
+ composeChatPresets,
56
+ defineChatPreset
57
+ });
58
+ //# sourceMappingURL=define.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/presets/define.ts"],
4
+ "sourcesContent": ["import type { ChatPreset } from \"@/types\";\n\n/**\n * 为企业预设提供类型安全的声明入口。\n * 使用函数而非可变的全局注册器,避免 SSR/多实例之间共享注册状态。\n */\nexport const defineChatPreset = <TPreset extends ChatPreset>(\n preset: TPreset,\n): TPreset => preset;\n\nconst mergeChatPreset = (\n base: ChatPreset,\n override: ChatPreset,\n): ChatPreset => {\n const overrideTags = new Set(\n (override.markdownExtensions || []).map((item) =>\n item.tagName.toLowerCase(),\n ),\n );\n\n return {\n ...base,\n ...override,\n strategies: {\n ...base.strategies,\n ...override.strategies,\n },\n markdownExtensions: [\n ...(base.markdownExtensions || []).filter(\n (item) => !overrideTags.has(item.tagName.toLowerCase()),\n ),\n ...(override.markdownExtensions || []),\n ],\n createUploadRequest: Object.prototype.hasOwnProperty.call(\n override,\n \"createUploadRequest\",\n )\n ? override.createUploadRequest\n : base.createUploadRequest,\n };\n};\n\n/**\n * 组合基础预设、可复用能力包和企业差异。后传入的预设优先,策略按字段浅合并,\n * Markdown 扩展按 tagName 去重并由后者覆盖。\n */\nexport const composeChatPresets = (\n base: ChatPreset,\n ...overrides: ChatPreset[]\n): ChatPreset =>\n overrides.reduce(mergeChatPreset, base);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,IAAM,mBAAmB,CAC9B,WACY;AAEd,IAAM,kBAAkB,CACtB,MACA,aACe;AACf,QAAM,eAAe,IAAI;AAAA,KACtB,SAAS,sBAAsB,CAAC,GAAG;AAAA,MAAI,CAAC,SACvC,KAAK,QAAQ,YAAY;AAAA,IAC3B;AAAA,EACF;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,YAAY;AAAA,MACV,GAAG,KAAK;AAAA,MACR,GAAG,SAAS;AAAA,IACd;AAAA,IACA,oBAAoB;AAAA,MAClB,IAAI,KAAK,sBAAsB,CAAC,GAAG;AAAA,QACjC,CAAC,SAAS,CAAC,aAAa,IAAI,KAAK,QAAQ,YAAY,CAAC;AAAA,MACxD;AAAA,MACA,GAAI,SAAS,sBAAsB,CAAC;AAAA,IACtC;AAAA,IACA,qBAAqB,OAAO,UAAU,eAAe;AAAA,MACnD;AAAA,MACA;AAAA,IACF,IACI,SAAS,sBACT,KAAK;AAAA,EACX;AACF;AAMO,IAAM,qBAAqB,CAChC,SACG,cAEH,UAAU,OAAO,iBAAiB,IAAI;",
6
+ "names": []
7
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./base";
2
+ export * from "./define";
3
+ export * from "./runtime";
@@ -0,0 +1,28 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __copyProps = (to, from, except, desc) => {
6
+ if (from && typeof from === "object" || typeof from === "function") {
7
+ for (let key of __getOwnPropNames(from))
8
+ if (!__hasOwnProp.call(to, key) && key !== except)
9
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
+ }
11
+ return to;
12
+ };
13
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+
16
+ // src/presets/index.ts
17
+ var presets_exports = {};
18
+ module.exports = __toCommonJS(presets_exports);
19
+ __reExport(presets_exports, require("./base"), module.exports);
20
+ __reExport(presets_exports, require("./define"), module.exports);
21
+ __reExport(presets_exports, require("./runtime"), module.exports);
22
+ // Annotate the CommonJS export names for ESM import in node:
23
+ 0 && (module.exports = {
24
+ ...require("./base"),
25
+ ...require("./define"),
26
+ ...require("./runtime")
27
+ });
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/presets/index.ts"],
4
+ "sourcesContent": ["export * from \"./base\";\nexport * from \"./define\";\nexport * from \"./runtime\";\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,4BAAc,mBAAd;AACA,4BAAc,qBADd;AAEA,4BAAc,sBAFd;",
6
+ "names": []
7
+ }
@@ -0,0 +1,22 @@
1
+ import type { ChatPreset, ChatPresetInput, ChatStrategies, MarkdownExtension, UploadRequestFn } from "../types";
2
+ export declare const DEFAULT_CHAT_PRESET_NAME: "xgroup-adk";
3
+ /** SDK 内建预设注册表。外部预设应优先直接传入 ChatPreset 对象。 */
4
+ export declare const BUILTIN_CHAT_PRESETS: Readonly<{
5
+ base: ChatPreset;
6
+ "xgroup-adk": ChatPreset;
7
+ }>;
8
+ /**
9
+ * 统一解析内建名称和自定义预设对象。
10
+ * 未传时继续使用 xgroup-adk,保持既有接入行为。
11
+ */
12
+ export declare const resolveChatPreset: (preset: ChatPresetInput | undefined) => ChatPreset;
13
+ /** 将基础策略、预设策略和接入方局部覆盖按优先级合并。 */
14
+ export declare const mergeChatStrategies: (preset: ChatPresetInput | undefined, overrides?: ChatStrategies) => ChatStrategies;
15
+ /** 合并预设与接入方 Markdown 扩展;同名标签始终由接入方覆盖。 */
16
+ export declare const resolvePresetMarkdownExtensions: (preset: ChatPresetInput | undefined, overrides?: readonly MarkdownExtension[]) => MarkdownExtension[];
17
+ /** 解析当前预设提供的默认上传实现,显式 uploadRequest 仍由调用方优先。 */
18
+ export declare const resolvePresetUploadRequest: (preset: ChatPresetInput | undefined, context: {
19
+ url: string;
20
+ token?: string;
21
+ appNo?: string;
22
+ }) => UploadRequestFn | undefined;