@adminforth/agent 1.26.14 → 1.26.16
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/agent/simpleAgent.ts +1 -1
- package/build.log +2 -2
- package/custom/ChatSurface.vue +19 -18
- package/custom/CustomAutoScrollContainer.vue +51 -51
- package/custom/conversation_area/ReasoningRenderer.vue +1 -1
- package/custom/conversation_area/TextRenderer.vue +1 -1
- package/dist/agent/simpleAgent.js +1 -1
- package/dist/custom/ChatSurface.vue +19 -18
- package/dist/custom/CustomAutoScrollContainer.vue +51 -51
- package/dist/custom/conversation_area/ReasoningRenderer.vue +1 -1
- package/dist/custom/conversation_area/TextRenderer.vue +1 -1
- package/package.json +1 -1
package/agent/simpleAgent.ts
CHANGED
package/build.log
CHANGED
|
@@ -38,5 +38,5 @@ custom/skills/fetch_data/SKILL.md
|
|
|
38
38
|
custom/skills/mutate_data/
|
|
39
39
|
custom/skills/mutate_data/SKILL.md
|
|
40
40
|
|
|
41
|
-
sent 207,
|
|
42
|
-
total size is 205,
|
|
41
|
+
sent 207,892 bytes received 558 bytes 416,900.00 bytes/sec
|
|
42
|
+
total size is 205,582 speedup is 0.99
|
package/custom/ChatSurface.vue
CHANGED
|
@@ -178,14 +178,14 @@
|
|
|
178
178
|
<script setup lang="ts">
|
|
179
179
|
import { IconChatBubbleLeft20Solid, IconSparklesSolid, IconArrowsPointingOut, IconArrowsPointingIn } from '@iconify-prerendered/vue-heroicons';
|
|
180
180
|
import { IconCloseOutline, IconBarsOutline, IconArrowUpOutline, IconCloseSidebarSolid, IconOpenSidebarSolid, IconAngleDownOutline } from '@iconify-prerendered/vue-flowbite';
|
|
181
|
-
import { useTemplateRef, onMounted, ref
|
|
181
|
+
import { useTemplateRef, onMounted, ref } from 'vue';
|
|
182
182
|
import { onClickOutside } from '@vueuse/core'
|
|
183
183
|
import ConversationArea from './conversation_area/ConversationArea.vue';
|
|
184
184
|
import { useAgentStore } from './composables/useAgentStore';
|
|
185
185
|
import { useAgentTransitions } from './composables/useAgentTransitions';
|
|
186
186
|
import { Button } from '@/afcl';
|
|
187
187
|
import { useCoreStore } from '@/stores/core';
|
|
188
|
-
import { remToPx
|
|
188
|
+
import { remToPx } from './utils';
|
|
189
189
|
|
|
190
190
|
const props = defineProps<{
|
|
191
191
|
meta: {
|
|
@@ -210,6 +210,23 @@ const isModeMenuOpen = ref(false);
|
|
|
210
210
|
let startX = 0
|
|
211
211
|
let startWidth = 0
|
|
212
212
|
|
|
213
|
+
onClickOutside(chatSurface, () => {if (!agentStore.isTeleportedToBody) agentStore.setIsChatOpen(false);});
|
|
214
|
+
onClickOutside(modeMenu, () => { isModeMenuOpen.value = false; });
|
|
215
|
+
|
|
216
|
+
onMounted(async () => {
|
|
217
|
+
agentStore.setAvailableModes(props.meta.modes, props.meta.defaultModeName);
|
|
218
|
+
agentStore.regisrerTextInput(textInput.value);
|
|
219
|
+
textInput.value?.focus();
|
|
220
|
+
const isTeleportedToBodyFromLocalStorage = agentStore.getLocalStorageItem('isTeleportedToBody') === 'true' || agentStore.getLocalStorageItem('isTeleportedToBodyBeforeFullScreen') === 'true';
|
|
221
|
+
if( coreStore.isMobile ) {
|
|
222
|
+
agentStore.setIsTeleportedToBody(false);
|
|
223
|
+
} else {
|
|
224
|
+
agentStore.setIsTeleportedToBody(isTeleportedToBodyFromLocalStorage || props.meta.stickByDefault);
|
|
225
|
+
}
|
|
226
|
+
await agentStore.fetchSessionsList();
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
|
|
213
230
|
const startResize = (e: MouseEvent) => {
|
|
214
231
|
startX = e.clientX
|
|
215
232
|
startWidth = remToPx(agentStore.chatWidth)
|
|
@@ -242,22 +259,6 @@ const stopResize = () => {
|
|
|
242
259
|
}
|
|
243
260
|
}
|
|
244
261
|
|
|
245
|
-
onClickOutside(chatSurface, () => {if (!agentStore.isTeleportedToBody) agentStore.setIsChatOpen(false);});
|
|
246
|
-
onClickOutside(modeMenu, () => { isModeMenuOpen.value = false; });
|
|
247
|
-
|
|
248
|
-
onMounted(async () => {
|
|
249
|
-
agentStore.setAvailableModes(props.meta.modes, props.meta.defaultModeName);
|
|
250
|
-
agentStore.regisrerTextInput(textInput.value);
|
|
251
|
-
textInput.value?.focus();
|
|
252
|
-
const isTeleportedToBodyFromLocalStorage = agentStore.getLocalStorageItem('isTeleportedToBody') === 'true' || agentStore.getLocalStorageItem('isTeleportedToBodyBeforeFullScreen') === 'true';
|
|
253
|
-
if( coreStore.isMobile ) {
|
|
254
|
-
agentStore.setIsTeleportedToBody(false);
|
|
255
|
-
} else {
|
|
256
|
-
agentStore.setIsTeleportedToBody(isTeleportedToBodyFromLocalStorage || props.meta.stickByDefault);
|
|
257
|
-
}
|
|
258
|
-
await agentStore.fetchSessionsList();
|
|
259
|
-
});
|
|
260
|
-
|
|
261
262
|
function autoResize() {
|
|
262
263
|
const el = textInput.value
|
|
263
264
|
if (!el) return
|
|
@@ -15,13 +15,7 @@
|
|
|
15
15
|
import { ref, onMounted, onUnmounted, nextTick, computed } from 'vue'
|
|
16
16
|
import CustomScrollbar from 'custom-vue-scrollbar';
|
|
17
17
|
import 'custom-vue-scrollbar/dist/style.css';
|
|
18
|
-
import { useAgentStore } from './composables/useAgentStore';
|
|
19
18
|
|
|
20
|
-
const scrollParams = ref({
|
|
21
|
-
scrollTop: 0,
|
|
22
|
-
scrollHeight: 0,
|
|
23
|
-
clientHeight: 0
|
|
24
|
-
});
|
|
25
19
|
|
|
26
20
|
const props = withDefaults(defineProps<{
|
|
27
21
|
enabled?: boolean
|
|
@@ -43,6 +37,57 @@ const scrollElement = ref<HTMLElement | null>(null)
|
|
|
43
37
|
|
|
44
38
|
let lastScrollTop = 0
|
|
45
39
|
let lastScrollHeight = 0
|
|
40
|
+
let observer: MutationObserver | null = null
|
|
41
|
+
|
|
42
|
+
const scrollParams = ref({
|
|
43
|
+
scrollTop: 0,
|
|
44
|
+
scrollHeight: 0,
|
|
45
|
+
clientHeight: 0
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
defineExpose({
|
|
49
|
+
scrollToBottom: () => scrollToBottom(true),
|
|
50
|
+
isUserScrolledUp: () => isUserScrolledUp.value,
|
|
51
|
+
container: containerRef,
|
|
52
|
+
handleScroll,
|
|
53
|
+
scrollParams
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
onMounted(() => {
|
|
57
|
+
if (!containerRef.value) return
|
|
58
|
+
|
|
59
|
+
scrollElement.value = containerRef.value.scrollEl
|
|
60
|
+
lastScrollTop = containerRef.value.scrollEl.scrollTop
|
|
61
|
+
lastScrollHeight = containerRef.value.scrollEl.scrollHeight
|
|
62
|
+
|
|
63
|
+
observer = new MutationObserver(() => {
|
|
64
|
+
nextTick(() => {
|
|
65
|
+
if (!containerRef.value?.scrollEl) return
|
|
66
|
+
|
|
67
|
+
if (!hasScrollbar()) {
|
|
68
|
+
isUserScrolledUp.value = false
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
lastScrollHeight = containerRef.value.scrollEl.scrollHeight
|
|
72
|
+
scrollParams.value.scrollTop = containerRef.value.scrollEl.scrollTop
|
|
73
|
+
scrollParams.value.scrollHeight = containerRef.value.scrollEl.scrollHeight
|
|
74
|
+
scrollParams.value.clientHeight = containerRef.value.scrollEl.clientHeight
|
|
75
|
+
if (props.enabled && !isUserScrolledUp.value) {
|
|
76
|
+
scrollToBottom()
|
|
77
|
+
}
|
|
78
|
+
})
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
observer.observe(containerRef.value?.scrollEl, {
|
|
82
|
+
childList: true,
|
|
83
|
+
subtree: true,
|
|
84
|
+
characterData: true
|
|
85
|
+
})
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
onUnmounted(() => {
|
|
89
|
+
observer?.disconnect()
|
|
90
|
+
})
|
|
46
91
|
|
|
47
92
|
function isNearBottom(): boolean {
|
|
48
93
|
const container = containerRef.value?.scrollEl
|
|
@@ -99,51 +144,6 @@ function handleScroll(detectScrollDown = true): void {
|
|
|
99
144
|
lastScrollHeight = scrollHeight
|
|
100
145
|
}
|
|
101
146
|
|
|
102
|
-
let observer: MutationObserver | null = null
|
|
103
|
-
|
|
104
|
-
onMounted(() => {
|
|
105
|
-
if (!containerRef.value) return
|
|
106
|
-
|
|
107
|
-
scrollElement.value = containerRef.value.scrollEl
|
|
108
|
-
lastScrollTop = containerRef.value.scrollEl.scrollTop
|
|
109
|
-
lastScrollHeight = containerRef.value.scrollEl.scrollHeight
|
|
110
|
-
|
|
111
|
-
observer = new MutationObserver(() => {
|
|
112
|
-
nextTick(() => {
|
|
113
|
-
if (!containerRef.value?.scrollEl) return
|
|
114
|
-
|
|
115
|
-
if (!hasScrollbar()) {
|
|
116
|
-
isUserScrolledUp.value = false
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
lastScrollHeight = containerRef.value.scrollEl.scrollHeight
|
|
120
|
-
scrollParams.value.scrollTop = containerRef.value.scrollEl.scrollTop
|
|
121
|
-
scrollParams.value.scrollHeight = containerRef.value.scrollEl.scrollHeight
|
|
122
|
-
scrollParams.value.clientHeight = containerRef.value.scrollEl.clientHeight
|
|
123
|
-
if (props.enabled && !isUserScrolledUp.value) {
|
|
124
|
-
scrollToBottom()
|
|
125
|
-
}
|
|
126
|
-
})
|
|
127
|
-
})
|
|
128
|
-
|
|
129
|
-
observer.observe(containerRef.value?.scrollEl, {
|
|
130
|
-
childList: true,
|
|
131
|
-
subtree: true,
|
|
132
|
-
characterData: true
|
|
133
|
-
})
|
|
134
|
-
})
|
|
135
|
-
|
|
136
|
-
onUnmounted(() => {
|
|
137
|
-
observer?.disconnect()
|
|
138
|
-
})
|
|
139
|
-
|
|
140
|
-
defineExpose({
|
|
141
|
-
scrollToBottom: () => scrollToBottom(true),
|
|
142
|
-
isUserScrolledUp: () => isUserScrolledUp.value,
|
|
143
|
-
container: containerRef,
|
|
144
|
-
handleScroll,
|
|
145
|
-
scrollParams
|
|
146
|
-
})
|
|
147
147
|
</script>
|
|
148
148
|
|
|
149
149
|
<style>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<li class="mb-6
|
|
2
|
+
<li class="mb-6 mx-2 mt-2 px-2 z-50 overflow-hidden">
|
|
3
3
|
<span class="bg-lightNavbar dark:bg-darkNavbar absolute flex items-center text-listTableHeadingText dark:text-darkListTableHeadingText justify-center w-5 h-5 bg-brand-softer rounded-full -start-[0.68rem] ring-4 ring-lightNavbar dark:ring-darkNavbar ring-default">
|
|
4
4
|
<div class="w-5 h-5 rounded-full flex items-center justify-center">
|
|
5
5
|
<IconBrainOutline class="w-4 h-4" />
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
@click="handleMarkdownLinkClick"
|
|
5
5
|
:class="[
|
|
6
6
|
hasVegaLite ? 'w-full' : '',
|
|
7
|
-
props.role === 'user' ? 'bg-lightListTableHeading dark:bg-darkListTableHeading self-end max-w-[80%]'
|
|
7
|
+
props.role === 'user' ? 'bg-lightListTableHeading dark:bg-darkListTableHeading self-end max-w-[80%] mr-4'
|
|
8
8
|
: 'border-none self-start'
|
|
9
9
|
]"
|
|
10
10
|
>
|
|
@@ -178,14 +178,14 @@
|
|
|
178
178
|
<script setup lang="ts">
|
|
179
179
|
import { IconChatBubbleLeft20Solid, IconSparklesSolid, IconArrowsPointingOut, IconArrowsPointingIn } from '@iconify-prerendered/vue-heroicons';
|
|
180
180
|
import { IconCloseOutline, IconBarsOutline, IconArrowUpOutline, IconCloseSidebarSolid, IconOpenSidebarSolid, IconAngleDownOutline } from '@iconify-prerendered/vue-flowbite';
|
|
181
|
-
import { useTemplateRef, onMounted, ref
|
|
181
|
+
import { useTemplateRef, onMounted, ref } from 'vue';
|
|
182
182
|
import { onClickOutside } from '@vueuse/core'
|
|
183
183
|
import ConversationArea from './conversation_area/ConversationArea.vue';
|
|
184
184
|
import { useAgentStore } from './composables/useAgentStore';
|
|
185
185
|
import { useAgentTransitions } from './composables/useAgentTransitions';
|
|
186
186
|
import { Button } from '@/afcl';
|
|
187
187
|
import { useCoreStore } from '@/stores/core';
|
|
188
|
-
import { remToPx
|
|
188
|
+
import { remToPx } from './utils';
|
|
189
189
|
|
|
190
190
|
const props = defineProps<{
|
|
191
191
|
meta: {
|
|
@@ -210,6 +210,23 @@ const isModeMenuOpen = ref(false);
|
|
|
210
210
|
let startX = 0
|
|
211
211
|
let startWidth = 0
|
|
212
212
|
|
|
213
|
+
onClickOutside(chatSurface, () => {if (!agentStore.isTeleportedToBody) agentStore.setIsChatOpen(false);});
|
|
214
|
+
onClickOutside(modeMenu, () => { isModeMenuOpen.value = false; });
|
|
215
|
+
|
|
216
|
+
onMounted(async () => {
|
|
217
|
+
agentStore.setAvailableModes(props.meta.modes, props.meta.defaultModeName);
|
|
218
|
+
agentStore.regisrerTextInput(textInput.value);
|
|
219
|
+
textInput.value?.focus();
|
|
220
|
+
const isTeleportedToBodyFromLocalStorage = agentStore.getLocalStorageItem('isTeleportedToBody') === 'true' || agentStore.getLocalStorageItem('isTeleportedToBodyBeforeFullScreen') === 'true';
|
|
221
|
+
if( coreStore.isMobile ) {
|
|
222
|
+
agentStore.setIsTeleportedToBody(false);
|
|
223
|
+
} else {
|
|
224
|
+
agentStore.setIsTeleportedToBody(isTeleportedToBodyFromLocalStorage || props.meta.stickByDefault);
|
|
225
|
+
}
|
|
226
|
+
await agentStore.fetchSessionsList();
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
|
|
213
230
|
const startResize = (e: MouseEvent) => {
|
|
214
231
|
startX = e.clientX
|
|
215
232
|
startWidth = remToPx(agentStore.chatWidth)
|
|
@@ -242,22 +259,6 @@ const stopResize = () => {
|
|
|
242
259
|
}
|
|
243
260
|
}
|
|
244
261
|
|
|
245
|
-
onClickOutside(chatSurface, () => {if (!agentStore.isTeleportedToBody) agentStore.setIsChatOpen(false);});
|
|
246
|
-
onClickOutside(modeMenu, () => { isModeMenuOpen.value = false; });
|
|
247
|
-
|
|
248
|
-
onMounted(async () => {
|
|
249
|
-
agentStore.setAvailableModes(props.meta.modes, props.meta.defaultModeName);
|
|
250
|
-
agentStore.regisrerTextInput(textInput.value);
|
|
251
|
-
textInput.value?.focus();
|
|
252
|
-
const isTeleportedToBodyFromLocalStorage = agentStore.getLocalStorageItem('isTeleportedToBody') === 'true' || agentStore.getLocalStorageItem('isTeleportedToBodyBeforeFullScreen') === 'true';
|
|
253
|
-
if( coreStore.isMobile ) {
|
|
254
|
-
agentStore.setIsTeleportedToBody(false);
|
|
255
|
-
} else {
|
|
256
|
-
agentStore.setIsTeleportedToBody(isTeleportedToBodyFromLocalStorage || props.meta.stickByDefault);
|
|
257
|
-
}
|
|
258
|
-
await agentStore.fetchSessionsList();
|
|
259
|
-
});
|
|
260
|
-
|
|
261
262
|
function autoResize() {
|
|
262
263
|
const el = textInput.value
|
|
263
264
|
if (!el) return
|
|
@@ -15,13 +15,7 @@
|
|
|
15
15
|
import { ref, onMounted, onUnmounted, nextTick, computed } from 'vue'
|
|
16
16
|
import CustomScrollbar from 'custom-vue-scrollbar';
|
|
17
17
|
import 'custom-vue-scrollbar/dist/style.css';
|
|
18
|
-
import { useAgentStore } from './composables/useAgentStore';
|
|
19
18
|
|
|
20
|
-
const scrollParams = ref({
|
|
21
|
-
scrollTop: 0,
|
|
22
|
-
scrollHeight: 0,
|
|
23
|
-
clientHeight: 0
|
|
24
|
-
});
|
|
25
19
|
|
|
26
20
|
const props = withDefaults(defineProps<{
|
|
27
21
|
enabled?: boolean
|
|
@@ -43,6 +37,57 @@ const scrollElement = ref<HTMLElement | null>(null)
|
|
|
43
37
|
|
|
44
38
|
let lastScrollTop = 0
|
|
45
39
|
let lastScrollHeight = 0
|
|
40
|
+
let observer: MutationObserver | null = null
|
|
41
|
+
|
|
42
|
+
const scrollParams = ref({
|
|
43
|
+
scrollTop: 0,
|
|
44
|
+
scrollHeight: 0,
|
|
45
|
+
clientHeight: 0
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
defineExpose({
|
|
49
|
+
scrollToBottom: () => scrollToBottom(true),
|
|
50
|
+
isUserScrolledUp: () => isUserScrolledUp.value,
|
|
51
|
+
container: containerRef,
|
|
52
|
+
handleScroll,
|
|
53
|
+
scrollParams
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
onMounted(() => {
|
|
57
|
+
if (!containerRef.value) return
|
|
58
|
+
|
|
59
|
+
scrollElement.value = containerRef.value.scrollEl
|
|
60
|
+
lastScrollTop = containerRef.value.scrollEl.scrollTop
|
|
61
|
+
lastScrollHeight = containerRef.value.scrollEl.scrollHeight
|
|
62
|
+
|
|
63
|
+
observer = new MutationObserver(() => {
|
|
64
|
+
nextTick(() => {
|
|
65
|
+
if (!containerRef.value?.scrollEl) return
|
|
66
|
+
|
|
67
|
+
if (!hasScrollbar()) {
|
|
68
|
+
isUserScrolledUp.value = false
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
lastScrollHeight = containerRef.value.scrollEl.scrollHeight
|
|
72
|
+
scrollParams.value.scrollTop = containerRef.value.scrollEl.scrollTop
|
|
73
|
+
scrollParams.value.scrollHeight = containerRef.value.scrollEl.scrollHeight
|
|
74
|
+
scrollParams.value.clientHeight = containerRef.value.scrollEl.clientHeight
|
|
75
|
+
if (props.enabled && !isUserScrolledUp.value) {
|
|
76
|
+
scrollToBottom()
|
|
77
|
+
}
|
|
78
|
+
})
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
observer.observe(containerRef.value?.scrollEl, {
|
|
82
|
+
childList: true,
|
|
83
|
+
subtree: true,
|
|
84
|
+
characterData: true
|
|
85
|
+
})
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
onUnmounted(() => {
|
|
89
|
+
observer?.disconnect()
|
|
90
|
+
})
|
|
46
91
|
|
|
47
92
|
function isNearBottom(): boolean {
|
|
48
93
|
const container = containerRef.value?.scrollEl
|
|
@@ -99,51 +144,6 @@ function handleScroll(detectScrollDown = true): void {
|
|
|
99
144
|
lastScrollHeight = scrollHeight
|
|
100
145
|
}
|
|
101
146
|
|
|
102
|
-
let observer: MutationObserver | null = null
|
|
103
|
-
|
|
104
|
-
onMounted(() => {
|
|
105
|
-
if (!containerRef.value) return
|
|
106
|
-
|
|
107
|
-
scrollElement.value = containerRef.value.scrollEl
|
|
108
|
-
lastScrollTop = containerRef.value.scrollEl.scrollTop
|
|
109
|
-
lastScrollHeight = containerRef.value.scrollEl.scrollHeight
|
|
110
|
-
|
|
111
|
-
observer = new MutationObserver(() => {
|
|
112
|
-
nextTick(() => {
|
|
113
|
-
if (!containerRef.value?.scrollEl) return
|
|
114
|
-
|
|
115
|
-
if (!hasScrollbar()) {
|
|
116
|
-
isUserScrolledUp.value = false
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
lastScrollHeight = containerRef.value.scrollEl.scrollHeight
|
|
120
|
-
scrollParams.value.scrollTop = containerRef.value.scrollEl.scrollTop
|
|
121
|
-
scrollParams.value.scrollHeight = containerRef.value.scrollEl.scrollHeight
|
|
122
|
-
scrollParams.value.clientHeight = containerRef.value.scrollEl.clientHeight
|
|
123
|
-
if (props.enabled && !isUserScrolledUp.value) {
|
|
124
|
-
scrollToBottom()
|
|
125
|
-
}
|
|
126
|
-
})
|
|
127
|
-
})
|
|
128
|
-
|
|
129
|
-
observer.observe(containerRef.value?.scrollEl, {
|
|
130
|
-
childList: true,
|
|
131
|
-
subtree: true,
|
|
132
|
-
characterData: true
|
|
133
|
-
})
|
|
134
|
-
})
|
|
135
|
-
|
|
136
|
-
onUnmounted(() => {
|
|
137
|
-
observer?.disconnect()
|
|
138
|
-
})
|
|
139
|
-
|
|
140
|
-
defineExpose({
|
|
141
|
-
scrollToBottom: () => scrollToBottom(true),
|
|
142
|
-
isUserScrolledUp: () => isUserScrolledUp.value,
|
|
143
|
-
container: containerRef,
|
|
144
|
-
handleScroll,
|
|
145
|
-
scrollParams
|
|
146
|
-
})
|
|
147
147
|
</script>
|
|
148
148
|
|
|
149
149
|
<style>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<li class="mb-6
|
|
2
|
+
<li class="mb-6 mx-2 mt-2 px-2 z-50 overflow-hidden">
|
|
3
3
|
<span class="bg-lightNavbar dark:bg-darkNavbar absolute flex items-center text-listTableHeadingText dark:text-darkListTableHeadingText justify-center w-5 h-5 bg-brand-softer rounded-full -start-[0.68rem] ring-4 ring-lightNavbar dark:ring-darkNavbar ring-default">
|
|
4
4
|
<div class="w-5 h-5 rounded-full flex items-center justify-center">
|
|
5
5
|
<IconBrainOutline class="w-4 h-4" />
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
@click="handleMarkdownLinkClick"
|
|
5
5
|
:class="[
|
|
6
6
|
hasVegaLite ? 'w-full' : '',
|
|
7
|
-
props.role === 'user' ? 'bg-lightListTableHeading dark:bg-darkListTableHeading self-end max-w-[80%]'
|
|
7
|
+
props.role === 'user' ? 'bg-lightListTableHeading dark:bg-darkListTableHeading self-end max-w-[80%] mr-4'
|
|
8
8
|
: 'border-none self-start'
|
|
9
9
|
]"
|
|
10
10
|
>
|