@gnai/message-content-renderer 0.0.1
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.
- package/README.md +38 -0
- package/dist/logo.png +0 -0
- package/dist/message-content-renderer.css +1 -0
- package/dist/message-content-renderer.es.js +5134 -0
- package/dist/message-content-renderer.umd.js +18 -0
- package/package.json +66 -0
package/README.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# 智能体网页端开发需求
|
|
2
|
+
|
|
3
|
+
本项目旨在为光年 AI 智能体创建一个可供线上用户使用的网页端应用。用户可以通过该页面与指定的智能体进行对话交互。
|
|
4
|
+
|
|
5
|
+
## 核心功能
|
|
6
|
+
|
|
7
|
+
1. **智能体识别与信息加载**:
|
|
8
|
+
- 通过网页 `hostname` 动态识别智能体 ID(例如:从 `gnlab.a.gnlab.com` 中提取 `gnlab` 作为 ID)。
|
|
9
|
+
- 根据 ID 调用 API 接口,获取智能体的详细信息,包括:ID、标题、头像、描述、作者昵称和作者头像。
|
|
10
|
+
- 获取信息后,动态更新网页的 `title` 和 `favicon`。
|
|
11
|
+
|
|
12
|
+
2. **对话功能**:
|
|
13
|
+
- 支持发送纯文本消息。
|
|
14
|
+
- 支持发送图文混合消息。
|
|
15
|
+
- 用户可以上传图片,图片会悬浮在输入框上方。
|
|
16
|
+
- 单次最多支持发送 5 张图片。
|
|
17
|
+
|
|
18
|
+
3. **用户认证**:
|
|
19
|
+
- 用户在发起对话时,系统会检查其登录状态(是否存在 `token`)。
|
|
20
|
+
- 如果用户未登录,将在对话窗口内直接展示登录组件 (`Login.vue`),引导用户完成登录。
|
|
21
|
+
- 登录及用户信息相关的逻辑已完成,可直接复用。
|
|
22
|
+
|
|
23
|
+
## 技术栈与开发要求
|
|
24
|
+
|
|
25
|
+
### 下面提到的技术都已经完成了安装并正常使用,无需再安装,如果需要引入新的依赖,使用 pnpm
|
|
26
|
+
|
|
27
|
+
- **前端框架**: Vue 3
|
|
28
|
+
- **状态管理**: Pinia
|
|
29
|
+
- **UI / 样式**: Less
|
|
30
|
+
- **图标库**: iconify,在 vue 下使用 @iconify/vue `import { Icon } from '@iconify/vue'` `<Icon icon="mdi-light:home" />`
|
|
31
|
+
- **开发模式**: 采用组件化思想,将页面功能拆分为高内聚、低耦合的独立组件,把每一个小功能,小样式都拆分成组件。
|
|
32
|
+
- **响应式设计**: 确保页面在桌面和移动设备上均有良好的用户体验。
|
|
33
|
+
|
|
34
|
+
## 发布 MessageContentRenderer
|
|
35
|
+
|
|
36
|
+
`pnpm run build:lib`
|
|
37
|
+
`npm login`
|
|
38
|
+
`npm publish`
|
package/dist/logo.png
ADDED
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.vjs-tree-brackets{cursor:pointer}.vjs-tree-brackets:hover{color:#1890ff}.vjs-check-controller{position:absolute;left:0}.vjs-check-controller.is-checked .vjs-check-controller-inner{background-color:#1890ff;border-color:#0076e4}.vjs-check-controller.is-checked .vjs-check-controller-inner.is-checkbox:after{transform:rotate(45deg) scaleY(1)}.vjs-check-controller.is-checked .vjs-check-controller-inner.is-radio:after{transform:translate(-50%,-50%) scale(1)}.vjs-check-controller .vjs-check-controller-inner{display:inline-block;position:relative;border:1px solid #bfcbd9;border-radius:2px;vertical-align:middle;box-sizing:border-box;width:16px;height:16px;background-color:#fff;z-index:1;cursor:pointer;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.vjs-check-controller .vjs-check-controller-inner:after{box-sizing:content-box;content:"";border:2px solid #fff;border-left:0;border-top:0;height:8px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);width:4px;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) .05s;transform-origin:center}.vjs-check-controller .vjs-check-controller-inner.is-radio{border-radius:100%}.vjs-check-controller .vjs-check-controller-inner.is-radio:after{border-radius:100%;height:4px;background-color:#fff;left:50%;top:50%}.vjs-check-controller .vjs-check-controller-original{opacity:0;outline:none;position:absolute;z-index:-1;inset:0;margin:0}.vjs-carets{position:absolute;right:0;cursor:pointer}.vjs-carets svg{transition:transform .3s}.vjs-carets:hover{color:#1890ff}.vjs-carets-close{transform:rotate(-90deg)}.vjs-tree-node{display:flex;position:relative;line-height:20px}.vjs-tree-node.has-carets{padding-left:15px}.vjs-tree-node.has-carets.has-selector,.vjs-tree-node.has-selector{padding-left:30px}.vjs-tree-node.is-highlight,.vjs-tree-node:hover{background-color:#e6f7ff;border-radius:4px}.vjs-tree-node.is-highlight .vjs-tree-node-actions,.vjs-tree-node:hover .vjs-tree-node-actions{display:block}.vjs-tree-node .vjs-indent{display:flex;position:relative}.vjs-tree-node .vjs-indent-unit.has-line{border-left:1px dashed #bfcbd9}.vjs-tree-node .vjs-tree-node-actions{display:none;position:absolute;right:0;top:0;padding:0 4px;background-color:#e6f7ff;border-radius:4px}.vjs-tree-node .vjs-tree-node-actions .vjs-tree-node-actions-item{cursor:pointer}.vjs-tree-node .vjs-tree-node-actions .vjs-tree-node-actions-item:hover{color:#1890ff}.vjs-tree-node.dark.is-highlight,.vjs-tree-node.dark .vjs-tree-node-actions,.vjs-tree-node.dark:hover{background-color:#2e4558}.vjs-node-index{position:absolute;right:100%;margin-right:4px;-webkit-user-select:none;user-select:none}.vjs-colon{white-space:pre}.vjs-comment{color:#bfcbd9}.vjs-value{word-break:break-word}.vjs-value-null,.vjs-value-undefined{color:#d55fde}.vjs-value-boolean,.vjs-value-number{color:#1d8ce0}.vjs-value-string{color:#13ce66}.vjs-tree{font-family:Monaco,Menlo,Consolas,Bitstream Vera Sans Mono,monospace;font-size:14px;text-align:left}.vjs-tree.is-virtual{overflow:auto}.vjs-tree.is-virtual .vjs-tree-node{white-space:nowrap}.image-viewer[data-v-ccbf9651]{position:fixed;inset:0;background:#000000e6;display:flex;align-items:center;justify-content:center;z-index:2000;padding:var(--spacing-xl);cursor:zoom-out}.close-button[data-v-ccbf9651]{position:fixed;top:var(--spacing-lg);right:var(--spacing-lg);width:48px;height:48px;display:flex;align-items:center;justify-content:center;color:#fff;background:#00000080;border-radius:50%;cursor:pointer;transition:all var(--transition-fast);z-index:2001}.close-button[data-v-ccbf9651]:hover{background:#000c;transform:scale(1.1)}.close-button svg[data-v-ccbf9651]{width:24px;height:24px}.viewer-content[data-v-ccbf9651]{max-width:90%;max-height:90%;display:flex;align-items:center;justify-content:center;cursor:default}.viewer-content img[data-v-ccbf9651]{max-width:100%;max-height:90vh;object-fit:contain;border-radius:var(--radius-md);box-shadow:0 8px 32px #00000080}.viewer-enter-active[data-v-ccbf9651],.viewer-leave-active[data-v-ccbf9651]{transition:opacity var(--transition-base)}.viewer-enter-from[data-v-ccbf9651],.viewer-leave-to[data-v-ccbf9651]{opacity:0}@media(max-width:768px){.image-viewer[data-v-ccbf9651]{padding:var(--spacing-md)}.close-button[data-v-ccbf9651]{top:var(--spacing-md);right:var(--spacing-md);width:40px;height:40px}.close-button svg[data-v-ccbf9651]{width:20px;height:20px}.viewer-content img[data-v-ccbf9651]{border-radius:var(--radius-sm)}}.message-content-renderer[data-v-c1bb0c2f]{width:100%}.content-user-message[data-v-c1bb0c2f]{display:flex;flex-direction:column;gap:var(--spacing-md)}.files-grid[data-v-c1bb0c2f]{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:var(--spacing-sm)}.file-item[data-v-c1bb0c2f]{position:relative;overflow:hidden;border-radius:var(--radius-md);background-color:var(--color-bg-secondary)}.file-item .file-image[data-v-c1bb0c2f]{width:100%;height:100%;object-fit:cover;cursor:pointer;transition:transform .2s}.file-item .file-image[data-v-c1bb0c2f]:hover{transform:scale(1.05)}.file-item .file-video[data-v-c1bb0c2f]{width:100%;display:block}.file-item .file-audio[data-v-c1bb0c2f]{width:100%;height:40px}.content-text[data-v-c1bb0c2f]{font-size:15px;line-height:1.6;color:var(--color-text-primary)}.content-text[data-v-c1bb0c2f] p{margin:0 0 var(--spacing-sm) 0;white-space:pre-wrap;word-wrap:break-word}.content-text[data-v-c1bb0c2f] p:last-child{margin-bottom:0}.content-text[data-v-c1bb0c2f] code{background:var(--color-bg-secondary);padding:2px 6px;border-radius:4px;font-family:Courier New,monospace;font-size:14px}.content-text[data-v-c1bb0c2f] pre{background:var(--color-bg-secondary);padding:var(--spacing-md);border-radius:var(--radius-md);overflow-x:auto;margin:var(--spacing-sm) 0}.content-text[data-v-c1bb0c2f] pre code{background:none;padding:0}.content-text[data-v-c1bb0c2f] a{color:var(--color-primary);text-decoration:none}.content-text[data-v-c1bb0c2f] a:hover{text-decoration:underline}.content-text[data-v-c1bb0c2f] ul,.content-text[data-v-c1bb0c2f] ol{margin:var(--spacing-sm) 0;padding-left:var(--spacing-xl)}.content-text[data-v-c1bb0c2f] blockquote{border-left:4px solid var(--color-border);padding-left:var(--spacing-md);margin:var(--spacing-sm) 0;color:var(--color-text-secondary)}.content-file[data-v-c1bb0c2f]{display:inline-flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.content-file[data-v-c1bb0c2f]:hover{background:var(--color-bg-tertiary);border-color:var(--color-primary)}.content-file .file-icon[data-v-c1bb0c2f]{width:20px;height:20px;color:var(--color-text-secondary)}.content-file .file-name[data-v-c1bb0c2f]{font-size:14px;color:var(--color-text-primary);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content-file .download-icon[data-v-c1bb0c2f]{width:16px;height:16px;color:var(--color-primary)}.content-image img[data-v-c1bb0c2f]{max-width:300px;max-height:300px;border-radius:var(--radius-md);cursor:pointer;transition:transform var(--transition-base)}.content-image img[data-v-c1bb0c2f]:hover{transform:scale(1.02)}.content-voice audio[data-v-c1bb0c2f]{max-width:100%;height:40px}.content-medialib .medialib-video[data-v-c1bb0c2f]{max-width:100%;max-height:400px;border-radius:var(--radius-md)}.content-medialib .medialib-image[data-v-c1bb0c2f]{max-width:300px;max-height:300px;border-radius:var(--radius-md);cursor:pointer;transition:transform var(--transition-base)}.content-medialib .medialib-image[data-v-c1bb0c2f]:hover{transform:scale(1.02)}.content-medialib .medialib-audio[data-v-c1bb0c2f]{max-width:100%;height:40px}.content-medialib .json-viewer[data-v-c1bb0c2f]{background:var(--color-bg-secondary);padding:var(--spacing-md);border-radius:var(--radius-md);font-size:13px;max-height:400px;overflow:auto}@media(max-width:768px){.content-image img[data-v-c1bb0c2f],.medialib-image[data-v-c1bb0c2f]{max-width:200px;max-height:200px}.content-file .file-name[data-v-c1bb0c2f]{max-width:150px}}
|