@meistrari/chat-nuxt 3.9.2 → 3.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -440
- package/dist/module.d.mts +1 -1
- package/dist/module.json +1 -1
- package/dist/runtime/assets/css/markstream.css +1 -1
- package/dist/runtime/conversations/components/chat-conversation-creator-filter.vue +11 -67
- package/dist/runtime/conversations/components/chat-conversation-item.d.vue.ts +2 -1
- package/dist/runtime/conversations/components/chat-conversation-item.vue +29 -33
- package/dist/runtime/conversations/components/chat-conversation-item.vue.d.ts +2 -1
- package/dist/runtime/conversations/components/chat-conversation-list.d.vue.ts +0 -1
- package/dist/runtime/conversations/components/chat-conversation-list.vue +117 -158
- package/dist/runtime/conversations/components/chat-conversation-list.vue.d.ts +0 -1
- package/dist/runtime/conversations/components/chat-conversation-new-group-button.vue +34 -73
- package/dist/runtime/conversations/components/chat-conversation-search.vue +1 -21
- package/dist/runtime/conversations/components/chat-widget-history-list.d.vue.ts +12 -0
- package/dist/runtime/conversations/components/chat-widget-history-list.vue +27 -0
- package/dist/runtime/conversations/components/chat-widget-history-list.vue.d.ts +12 -0
- package/dist/runtime/conversations/composables/conversation-groups.d.ts +1 -0
- package/dist/runtime/conversations/composables/conversation-groups.js +2 -0
- package/dist/runtime/conversations/composables/conversation-item.js +4 -4
- package/dist/runtime/conversations/composables/conversation-list.js +14 -5
- package/dist/runtime/embed/components/chat-configuration-modal.d.vue.ts +3 -3
- package/dist/runtime/embed/components/chat-configuration-modal.vue.d.ts +3 -3
- package/dist/runtime/embed/components/chat-embed-inner.d.vue.ts +6 -3
- package/dist/runtime/embed/components/chat-embed-inner.vue +365 -152
- package/dist/runtime/embed/components/chat-embed-inner.vue.d.ts +6 -3
- package/dist/runtime/embed/components/chat-embed.d.vue.ts +31 -4
- package/dist/runtime/embed/components/chat-embed.vue +10 -4
- package/dist/runtime/embed/components/chat-embed.vue.d.ts +31 -4
- package/dist/runtime/embed/components/chat-topbar.vue +83 -85
- package/dist/runtime/embed/components/meistrari-chat-embed.d.vue.ts +5 -3
- package/dist/runtime/embed/components/meistrari-chat-embed.vue +118 -57
- package/dist/runtime/embed/components/meistrari-chat-embed.vue.d.ts +5 -3
- package/dist/runtime/embed/components/mobile/chat-mobile-drawer.d.vue.ts +0 -1
- package/dist/runtime/embed/components/mobile/chat-mobile-drawer.vue +2 -45
- package/dist/runtime/embed/components/mobile/chat-mobile-drawer.vue.d.ts +0 -1
- package/dist/runtime/embed/components/mobile/chat-mobile-home-suggestions.d.vue.ts +9 -5
- package/dist/runtime/embed/components/mobile/chat-mobile-home-suggestions.vue +14 -25
- package/dist/runtime/embed/components/mobile/chat-mobile-home-suggestions.vue.d.ts +9 -5
- package/dist/runtime/embed/components/mobile/chat-mobile-shell.d.vue.ts +4 -4
- package/dist/runtime/embed/components/mobile/chat-mobile-shell.vue +2 -3
- package/dist/runtime/embed/components/mobile/chat-mobile-shell.vue.d.ts +4 -4
- package/dist/runtime/embed/feature-config.d.ts +7 -0
- package/dist/runtime/embed/types.d.ts +47 -8
- package/dist/runtime/files/icons.d.ts +1 -1
- package/dist/runtime/files/icons.js +1 -1
- package/dist/runtime/messages/components/chat-mention-dropdown.d.vue.ts +6 -1
- package/dist/runtime/messages/components/chat-mention-dropdown.vue +46 -22
- package/dist/runtime/messages/components/chat-mention-dropdown.vue.d.ts +6 -1
- package/dist/runtime/messages/components/chat-message-bubble.vue +53 -71
- package/dist/runtime/messages/components/chat-message-feedback.vue +25 -229
- package/dist/runtime/messages/components/chat-message-input.vue +176 -134
- package/dist/runtime/messages/components/chat-message-list.d.vue.ts +6 -0
- package/dist/runtime/messages/components/chat-message-list.vue +27 -23
- package/dist/runtime/messages/components/chat-message-list.vue.d.ts +6 -0
- package/dist/runtime/messages/components/chat-model-selector.vue +10 -22
- package/dist/runtime/messages/components/reasoning/chat-reasoning-message.vue +2 -3
- package/dist/runtime/messages/components/reasoning/chat-reasoning-thought.vue +60 -69
- package/dist/runtime/messages/components/reasoning/chat-thinking-indicator.vue +3 -9
- package/dist/runtime/messages/components/widgets/chat-bash-widget.vue +3 -12
- package/dist/runtime/messages/components/widgets/chat-doc-sdk-widget.vue +3 -12
- package/dist/runtime/messages/components/widgets/chat-generic-tool-widget.vue +3 -12
- package/dist/runtime/messages/components/widgets/chat-grep-widget.vue +7 -17
- package/dist/runtime/messages/components/widgets/chat-read-widget.vue +7 -17
- package/dist/runtime/messages/components/widgets/chat-tela-skill-widget.vue +4 -13
- package/dist/runtime/messages/components/widgets/chat-thinking-widget.vue +11 -22
- package/dist/runtime/messages/components/widgets/chat-web-search-widget.vue +13 -40
- package/dist/runtime/messages/components/widgets/chat-workstation-query-widget.vue +52 -65
- package/dist/runtime/messages/components/widgets/chat-write-widget.vue +8 -18
- package/dist/runtime/messages/composables/mention-autocomplete.js +4 -0
- package/dist/runtime/messages/message-state.js +1 -0
- package/dist/runtime/public/files/generic.svg +2 -5
- package/dist/runtime/public/files/image.svg +2 -1
- package/dist/runtime/types/embed.d.ts +1 -1
- package/dist/runtime/types/schemas/chat/conversations.d.ts +2 -0
- package/dist/runtime/types/schemas/chat/conversations.js +3 -0
- package/dist/runtime/types/schemas/chat/messages.d.ts +4 -0
- package/dist/runtime/types/schemas/chat/messages.js +7 -0
- package/dist/types.d.mts +1 -1
- package/package.json +5 -4
- package/dist/runtime/conversations/components/chat-conversation-new-group-popover-content.d.vue.ts +0 -23
- package/dist/runtime/conversations/components/chat-conversation-new-group-popover-content.vue +0 -75
- package/dist/runtime/conversations/components/chat-conversation-new-group-popover-content.vue.d.ts +0 -23
- package/dist/runtime/messages/components/reasoning/chat-reasoning-step-item.d.vue.ts +0 -37
- package/dist/runtime/messages/components/reasoning/chat-reasoning-step-item.vue +0 -125
- package/dist/runtime/messages/components/reasoning/chat-reasoning-step-item.vue.d.ts +0 -37
|
@@ -8,7 +8,10 @@ import ChatMobileShell from "./mobile/chat-mobile-shell.vue";
|
|
|
8
8
|
import { normalizeConversationId } from "../../conversations/scope";
|
|
9
9
|
import { resolveChatFeatures } from "../feature-config";
|
|
10
10
|
import { resolveConversationCreator } from "../../conversations/creator";
|
|
11
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
resolveTelaAgentInputs,
|
|
13
|
+
useChat
|
|
14
|
+
} from "../../messages/composables/chat";
|
|
12
15
|
import { useChatAction } from "../../messages/composables/chat-action";
|
|
13
16
|
import { useChatApi } from "../../shared/composables/chat-api";
|
|
14
17
|
import { useConversationFiles } from "../../files/composables/conversation-files";
|
|
@@ -30,17 +33,22 @@ const props = defineProps({
|
|
|
30
33
|
hideSidebar: { type: Boolean, required: false, default: true },
|
|
31
34
|
sidebar: { type: Object, required: false },
|
|
32
35
|
hideSettings: { type: Boolean, required: false, default: false },
|
|
33
|
-
|
|
36
|
+
compact: { type: Boolean, required: false, default: false },
|
|
37
|
+
suggestions: { type: [Array, null], required: false },
|
|
34
38
|
user: { type: [Object, null], required: false },
|
|
35
39
|
features: { type: Object, required: false }
|
|
36
40
|
});
|
|
37
|
-
const emit = defineEmits(["update:conversationId"]);
|
|
41
|
+
const emit = defineEmits(["update:conversationId", "update:conversationTitle"]);
|
|
38
42
|
const sidebarPosition = computed(() => props.sidebar?.position ?? "left");
|
|
39
43
|
const sidebarWidth = computed(() => props.sidebar?.width ?? 240);
|
|
40
|
-
const sidebarBottomHeight = computed(
|
|
44
|
+
const sidebarBottomHeight = computed(
|
|
45
|
+
() => Math.min(100, Math.max(0, props.sidebar?.bottomHeight ?? 50))
|
|
46
|
+
);
|
|
41
47
|
const sidebarCollapsible = computed(() => props.sidebar?.collapsible ?? false);
|
|
42
48
|
const isSidebarCollapsed = ref(props.sidebar?.defaultCollapsed ?? false);
|
|
43
|
-
const sidebarCollapsed = computed(
|
|
49
|
+
const sidebarCollapsed = computed(
|
|
50
|
+
() => sidebarCollapsible.value && isSidebarCollapsed.value
|
|
51
|
+
);
|
|
44
52
|
const sidebarToggleIcon = computed(() => {
|
|
45
53
|
const pointsRight = sidebarPosition.value === "right" ? !sidebarCollapsed.value : sidebarCollapsed.value;
|
|
46
54
|
return pointsRight ? "i-ph-caret-right" : "i-ph-caret-left";
|
|
@@ -54,12 +62,32 @@ const chatAction = useChatAction();
|
|
|
54
62
|
const { user: authUser, activeOrganization, logout } = useChatAuth();
|
|
55
63
|
const { getMember, getMemberImage } = useWorkspaceMembers();
|
|
56
64
|
const statusToast = useStatusToast();
|
|
57
|
-
const {
|
|
65
|
+
const {
|
|
66
|
+
conversations,
|
|
67
|
+
loading: conversationsLoading,
|
|
68
|
+
fetchConversations,
|
|
69
|
+
createConversation,
|
|
70
|
+
deleteConversation,
|
|
71
|
+
renameConversation,
|
|
72
|
+
updateConversationModel,
|
|
73
|
+
duplicateConversation,
|
|
74
|
+
moveConversationToGroup,
|
|
75
|
+
updateConversationInList
|
|
76
|
+
} = useConversations();
|
|
58
77
|
const { settings: workspaceSettingsState, fetchSettings } = useWorkspaceSettings();
|
|
59
|
-
const {
|
|
60
|
-
|
|
78
|
+
const {
|
|
79
|
+
metadata: telaAgentMetadata,
|
|
80
|
+
loading: telaAgentMetadataLoading,
|
|
81
|
+
fetchAgentMetadata
|
|
82
|
+
} = useTelaAgentMetadata();
|
|
83
|
+
const {
|
|
84
|
+
summary: workspaceAgentSummary,
|
|
85
|
+
fetchSummary: fetchWorkspaceAgentSummary
|
|
86
|
+
} = useWorkspaceAgentSummary();
|
|
61
87
|
const isTelaAgentMode = computed(() => !!embedConfig?.telaAgentId.value);
|
|
62
|
-
const hasConfiguredTelaAgentInputs = computed(
|
|
88
|
+
const hasConfiguredTelaAgentInputs = computed(
|
|
89
|
+
() => embedConfig?.telaAgentInputs?.value !== void 0 && embedConfig?.telaAgentInputs?.value !== null
|
|
90
|
+
);
|
|
63
91
|
const shouldLoadTelaAgentMetadata = computed(() => isTelaAgentMode.value);
|
|
64
92
|
const telaAgentInputSchema = computed(
|
|
65
93
|
() => hasConfiguredTelaAgentInputs.value ? null : isTelaAgentMode.value ? telaAgentMetadata.value?.inputSchema ?? [] : null
|
|
@@ -80,7 +108,12 @@ const effectiveWorkspaceSettings = computed(() => {
|
|
|
80
108
|
return embedConfig?.workspaceSettings.value !== void 0 ? embedConfig.workspaceSettings.value : workspaceSettingsState.value;
|
|
81
109
|
});
|
|
82
110
|
const { closePanel: closeFilesPanel } = useConversationFilesPanel();
|
|
83
|
-
const {
|
|
111
|
+
const {
|
|
112
|
+
isOpen: isPreviewPanelOpen,
|
|
113
|
+
panelWidth: previewPanelWidth,
|
|
114
|
+
currentFile: currentPreviewFile,
|
|
115
|
+
closePreview
|
|
116
|
+
} = useFilePreviewPanel();
|
|
84
117
|
const { isOpen: isCitationPanelOpen } = useCitationPanel();
|
|
85
118
|
const activeConversationId = ref(
|
|
86
119
|
normalizeConversationId(props.conversationId) ?? normalizeConversationId(props.initialConversationId)
|
|
@@ -96,6 +129,16 @@ const resolvedFeatures = computed(() => resolveChatFeatures(props.features));
|
|
|
96
129
|
const dropZoneRef = ref(null);
|
|
97
130
|
const activeTab = ref("chat");
|
|
98
131
|
const messageInputRef = ref(null);
|
|
132
|
+
const PROMPT_INPUT_HINTS = [
|
|
133
|
+
{ icon: "i-ph-at-bold", label: "Para mencionar arquivos" },
|
|
134
|
+
{ char: "/", label: "Para acionar skills" }
|
|
135
|
+
];
|
|
136
|
+
const resolvedSuggestions = computed(
|
|
137
|
+
() => props.suggestions ?? []
|
|
138
|
+
);
|
|
139
|
+
function applySuggestion(prompt) {
|
|
140
|
+
messageInputRef.value?.setDraft(prompt);
|
|
141
|
+
}
|
|
99
142
|
const breakpoints = useBreakpoints({ mobile: CHAT_MOBILE_BREAKPOINT });
|
|
100
143
|
const isMobile = breakpoints.smaller("mobile");
|
|
101
144
|
const drawerOpen = ref(false);
|
|
@@ -133,8 +176,9 @@ const selectedModel = computed({
|
|
|
133
176
|
const previousModel = conversation.model;
|
|
134
177
|
setConversationModel(value);
|
|
135
178
|
void updateConversationModel(conversation.id, value).then((updated) => {
|
|
136
|
-
if (!updated && currentConversation.value?.id === conversation.id && currentConversation.value.model === value)
|
|
179
|
+
if (!updated && currentConversation.value?.id === conversation.id && currentConversation.value.model === value) {
|
|
137
180
|
setConversationModel(previousModel);
|
|
181
|
+
}
|
|
138
182
|
});
|
|
139
183
|
}
|
|
140
184
|
}
|
|
@@ -154,10 +198,16 @@ const mobilePreviewFile = computed(() => {
|
|
|
154
198
|
size: file.fileSize
|
|
155
199
|
};
|
|
156
200
|
});
|
|
157
|
-
const visibleTelaAgentInputSchema = computed(
|
|
158
|
-
|
|
201
|
+
const visibleTelaAgentInputSchema = computed(
|
|
202
|
+
() => !hasMessages.value ? telaAgentInputSchema.value : null
|
|
203
|
+
);
|
|
204
|
+
const visibleTelaAgentInputSchemaLoading = computed(
|
|
205
|
+
() => !hasMessages.value && isTelaAgentMode.value && !hasConfiguredTelaAgentInputs.value && telaAgentMetadataLoading.value
|
|
206
|
+
);
|
|
159
207
|
const visibleConversations = computed(
|
|
160
|
-
() => conversations.value.filter(
|
|
208
|
+
() => conversations.value.filter(
|
|
209
|
+
(conversation) => conversation.title || conversation.id === activeConversationId.value
|
|
210
|
+
)
|
|
161
211
|
);
|
|
162
212
|
function syncConversationId(nextConversationId) {
|
|
163
213
|
activeConversationId.value = normalizeConversationId(nextConversationId);
|
|
@@ -182,7 +232,10 @@ async function ensureConversationLoaded(conversationId) {
|
|
|
182
232
|
try {
|
|
183
233
|
await loadConversation(conversationId);
|
|
184
234
|
if (currentConversation.value?.id !== conversationId) {
|
|
185
|
-
statusToast.update({
|
|
235
|
+
statusToast.update({
|
|
236
|
+
text: "Erro ao carregar conversa",
|
|
237
|
+
icon: "i-ph-warning"
|
|
238
|
+
});
|
|
186
239
|
return;
|
|
187
240
|
}
|
|
188
241
|
startPolling();
|
|
@@ -215,29 +268,32 @@ async function openConversation(nextConversationId) {
|
|
|
215
268
|
updateConversationId(normalizedConversationId);
|
|
216
269
|
await ensureConversationLoaded(normalizedConversationId);
|
|
217
270
|
}
|
|
218
|
-
watch(
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
271
|
+
watch(
|
|
272
|
+
() => props.conversationId,
|
|
273
|
+
async (nextConversationId) => {
|
|
274
|
+
if (nextConversationId === void 0) {
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
const normalizedConversationId = normalizeConversationId(nextConversationId);
|
|
278
|
+
if (normalizedConversationId) {
|
|
279
|
+
clearPendingConversationGroup();
|
|
280
|
+
}
|
|
281
|
+
if (!isReady.value) {
|
|
282
|
+
syncConversationId(normalizedConversationId);
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
if (normalizedConversationId === activeConversationId.value && currentConversation.value?.id === normalizedConversationId) {
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
if (!normalizedConversationId) {
|
|
289
|
+
resetConversation(false);
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
227
292
|
syncConversationId(normalizedConversationId);
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
if (normalizedConversationId === activeConversationId.value && currentConversation.value?.id === normalizedConversationId) {
|
|
231
|
-
return;
|
|
232
|
-
}
|
|
233
|
-
if (!normalizedConversationId) {
|
|
234
|
-
resetConversation(false);
|
|
235
|
-
return;
|
|
293
|
+
closePreview();
|
|
294
|
+
await ensureConversationLoaded(normalizedConversationId);
|
|
236
295
|
}
|
|
237
|
-
|
|
238
|
-
closePreview();
|
|
239
|
-
await ensureConversationLoaded(normalizedConversationId);
|
|
240
|
-
});
|
|
296
|
+
);
|
|
241
297
|
onMounted(async () => {
|
|
242
298
|
void fetchConversations();
|
|
243
299
|
if (shouldLoadTelaAgentMetadata.value) {
|
|
@@ -277,23 +333,34 @@ const isSettingsOutdated = computed(() => {
|
|
|
277
333
|
if (!rawAppliedAt)
|
|
278
334
|
return false;
|
|
279
335
|
const appliedAt = new Date(rawAppliedAt).getTime();
|
|
280
|
-
const updatedAt = new Date(
|
|
336
|
+
const updatedAt = new Date(
|
|
337
|
+
effectiveWorkspaceSettings.value.updatedAt
|
|
338
|
+
).getTime();
|
|
281
339
|
return appliedAt < updatedAt;
|
|
282
340
|
});
|
|
283
341
|
const isBannerDismissed = computed(
|
|
284
342
|
() => currentConversation.value ? dismissedChats.value.has(currentConversation.value.id) : false
|
|
285
343
|
);
|
|
286
|
-
const showOutdatedBanner = computed(
|
|
287
|
-
|
|
344
|
+
const showOutdatedBanner = computed(
|
|
345
|
+
() => isSettingsOutdated.value && !isBannerDismissed.value
|
|
346
|
+
);
|
|
347
|
+
const showOutdatedBadge = computed(
|
|
348
|
+
() => isSettingsOutdated.value && isBannerDismissed.value
|
|
349
|
+
);
|
|
288
350
|
function dismissOutdatedBanner() {
|
|
289
351
|
if (!currentConversation.value)
|
|
290
352
|
return;
|
|
291
353
|
dismissedChats.value.delete(currentConversation.value.id);
|
|
292
354
|
dismissedChats.value.add(currentConversation.value.id);
|
|
293
355
|
const nextDismissedChats = [...dismissedChats.value];
|
|
294
|
-
dismissedChats.value = new Set(
|
|
356
|
+
dismissedChats.value = new Set(
|
|
357
|
+
nextDismissedChats.slice(-MAX_DISMISSED_CHAT_IDS)
|
|
358
|
+
);
|
|
295
359
|
try {
|
|
296
|
-
localStorage.setItem(
|
|
360
|
+
localStorage.setItem(
|
|
361
|
+
dismissedStorageKey.value,
|
|
362
|
+
JSON.stringify([...dismissedChats.value])
|
|
363
|
+
);
|
|
297
364
|
} catch {
|
|
298
365
|
}
|
|
299
366
|
}
|
|
@@ -306,7 +373,10 @@ const displayTitle = computed(() => {
|
|
|
306
373
|
return currentConversation.value?.title ?? "";
|
|
307
374
|
});
|
|
308
375
|
watch(
|
|
309
|
-
() => [
|
|
376
|
+
() => [
|
|
377
|
+
currentConversation.value?.id ?? null,
|
|
378
|
+
currentConversation.value?.title ?? null
|
|
379
|
+
],
|
|
310
380
|
([conversationId, conversationTitle], [previousConversationId, previousTitle]) => {
|
|
311
381
|
if (conversationId !== previousConversationId) {
|
|
312
382
|
optimisticTitle.value = null;
|
|
@@ -320,6 +390,13 @@ watch(
|
|
|
320
390
|
}
|
|
321
391
|
}
|
|
322
392
|
);
|
|
393
|
+
watch(
|
|
394
|
+
() => currentConversation.value?.title ?? null,
|
|
395
|
+
(title) => {
|
|
396
|
+
emit("update:conversationTitle", title);
|
|
397
|
+
},
|
|
398
|
+
{ immediate: true }
|
|
399
|
+
);
|
|
323
400
|
const currentUser = computed(() => props.user ?? authUser.value ?? null);
|
|
324
401
|
const conversationCreator = computed(
|
|
325
402
|
() => resolveConversationCreator(currentConversation.value?.userId, {
|
|
@@ -329,7 +406,10 @@ const conversationCreator = computed(
|
|
|
329
406
|
);
|
|
330
407
|
async function handleSend(content, files, agentInputs) {
|
|
331
408
|
let createdConversationId = null;
|
|
332
|
-
const resolvedAgentInputs = resolveTelaAgentInputs(
|
|
409
|
+
const resolvedAgentInputs = resolveTelaAgentInputs(
|
|
410
|
+
agentInputs,
|
|
411
|
+
embedConfig?.telaAgentInputs?.value
|
|
412
|
+
);
|
|
333
413
|
if (!activeConversationId.value || !currentConversation.value) {
|
|
334
414
|
const conversation = await createConversation({
|
|
335
415
|
model: selectedModel.value,
|
|
@@ -349,7 +429,11 @@ async function handleSend(content, files, agentInputs) {
|
|
|
349
429
|
}
|
|
350
430
|
if (!currentConversation.value)
|
|
351
431
|
return;
|
|
352
|
-
const sendPromise = sendMessage(
|
|
432
|
+
const sendPromise = sendMessage(
|
|
433
|
+
content,
|
|
434
|
+
files.length > 0 ? files : void 0,
|
|
435
|
+
resolvedAgentInputs
|
|
436
|
+
);
|
|
353
437
|
if (createdConversationId) {
|
|
354
438
|
updateConversationId(createdConversationId);
|
|
355
439
|
}
|
|
@@ -387,8 +471,12 @@ async function handleSignout() {
|
|
|
387
471
|
chatAction.emit("signout");
|
|
388
472
|
await logout();
|
|
389
473
|
}
|
|
390
|
-
const workspaceName = computed(
|
|
391
|
-
|
|
474
|
+
const workspaceName = computed(
|
|
475
|
+
() => activeOrganization.value?.name ?? "Workspace"
|
|
476
|
+
);
|
|
477
|
+
const workspaceLogo = computed(
|
|
478
|
+
() => activeOrganization.value?.logo ?? void 0
|
|
479
|
+
);
|
|
392
480
|
function handleTabChange(tab) {
|
|
393
481
|
activeTab.value = tab;
|
|
394
482
|
if (tab === "chat")
|
|
@@ -398,7 +486,9 @@ const isEditing = ref(false);
|
|
|
398
486
|
const editTitle = ref("");
|
|
399
487
|
const justStartedEditing = ref(false);
|
|
400
488
|
const showDebugModal = ref(false);
|
|
401
|
-
const debugSessionId = computed(
|
|
489
|
+
const debugSessionId = computed(
|
|
490
|
+
() => currentConversation.value?.threadSessionId ?? "Sess\xE3o ainda n\xE3o criada"
|
|
491
|
+
);
|
|
402
492
|
async function copyDebugInfo() {
|
|
403
493
|
const conversation = currentConversation.value;
|
|
404
494
|
const conversationId = conversation?.id ?? activeConversationId.value;
|
|
@@ -422,7 +512,10 @@ async function copyDebugInfo() {
|
|
|
422
512
|
await navigator.clipboard.writeText(JSON.stringify(debugInfo, null, 2));
|
|
423
513
|
statusToast.update({ text: "Dados de debug copiados", icon: "i-ph-check" });
|
|
424
514
|
} catch {
|
|
425
|
-
statusToast.update({
|
|
515
|
+
statusToast.update({
|
|
516
|
+
text: "Erro ao copiar dados de debug",
|
|
517
|
+
icon: "i-ph-warning"
|
|
518
|
+
});
|
|
426
519
|
}
|
|
427
520
|
}
|
|
428
521
|
function startEditing() {
|
|
@@ -439,7 +532,10 @@ async function saveTitle() {
|
|
|
439
532
|
const trimmed = editTitle.value.trim();
|
|
440
533
|
if (trimmed && trimmed !== currentConversation.value?.title && currentConversation.value) {
|
|
441
534
|
optimisticTitle.value = trimmed;
|
|
442
|
-
const success = await renameConversation(
|
|
535
|
+
const success = await renameConversation(
|
|
536
|
+
currentConversation.value.id,
|
|
537
|
+
trimmed
|
|
538
|
+
);
|
|
443
539
|
if (!success)
|
|
444
540
|
optimisticTitle.value = null;
|
|
445
541
|
}
|
|
@@ -510,27 +606,48 @@ async function handleDelete() {
|
|
|
510
606
|
sidebarCollapsed ? 'chat-sidebar--collapsed' : ''
|
|
511
607
|
]"
|
|
512
608
|
:style="{ '--chat-sidebar-width': `${sidebarWidth}px` }"
|
|
513
|
-
h-full
|
|
609
|
+
h-full
|
|
610
|
+
flex-shrink-0
|
|
611
|
+
relative
|
|
514
612
|
>
|
|
515
613
|
<div class="chat-sidebar__clip">
|
|
516
614
|
<div
|
|
517
615
|
class="chat-sidebar__panel"
|
|
518
616
|
:inert="sidebarCollapsed || void 0"
|
|
519
|
-
h-full
|
|
617
|
+
h-full
|
|
618
|
+
flex="~ col"
|
|
520
619
|
bg-neutral-50
|
|
521
620
|
:style="{ width: `${sidebarWidth}px` }"
|
|
522
|
-
:class="
|
|
621
|
+
:class="
|
|
622
|
+
sidebarPosition === 'right' ? 'border-l-0.5px border-l-neutral-200' : 'border-r-0.5px border-r-neutral-200'
|
|
623
|
+
"
|
|
523
624
|
>
|
|
524
625
|
<div px-12px pt-16px pb-8px flex gap-8px>
|
|
525
626
|
<button
|
|
526
|
-
flex
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
627
|
+
flex
|
|
628
|
+
items-center
|
|
629
|
+
justify-center
|
|
630
|
+
gap-6px
|
|
631
|
+
h-32px
|
|
632
|
+
px-12px
|
|
633
|
+
flex-1
|
|
634
|
+
min-w-0
|
|
635
|
+
bg-white
|
|
636
|
+
b=".5px neutral-300"
|
|
637
|
+
rounded-10px
|
|
638
|
+
hover:bg-neutral-50
|
|
639
|
+
transition-colors
|
|
640
|
+
cursor-pointer
|
|
530
641
|
@click="() => handleNewConversation()"
|
|
531
642
|
>
|
|
532
643
|
<span i-ph-chat-circle text-12px text-gray-900 />
|
|
533
|
-
<span
|
|
644
|
+
<span
|
|
645
|
+
text-14px
|
|
646
|
+
font-semibold
|
|
647
|
+
text-neutral-900
|
|
648
|
+
tracking="-.15px"
|
|
649
|
+
leading-18px
|
|
650
|
+
>
|
|
534
651
|
Nova conversa
|
|
535
652
|
</span>
|
|
536
653
|
</button>
|
|
@@ -538,9 +655,13 @@ async function handleDelete() {
|
|
|
538
655
|
</div>
|
|
539
656
|
|
|
540
657
|
<div
|
|
541
|
-
min-h-0
|
|
658
|
+
min-h-0
|
|
659
|
+
overflow-y-auto
|
|
660
|
+
px-4px
|
|
542
661
|
:class="$slots['sidebar-bottom'] ? '' : 'flex-1'"
|
|
543
|
-
:style="
|
|
662
|
+
:style="
|
|
663
|
+
$slots['sidebar-bottom'] ? { flexGrow: 100 - sidebarBottomHeight, flexBasis: 0 } : void 0
|
|
664
|
+
"
|
|
544
665
|
>
|
|
545
666
|
<ChatConversationList
|
|
546
667
|
:conversations="visibleConversations"
|
|
@@ -550,13 +671,13 @@ async function handleDelete() {
|
|
|
550
671
|
:reset-conversation="handleNewConversation"
|
|
551
672
|
:start-conversation="handleNewConversation"
|
|
552
673
|
:loading="conversationsLoading"
|
|
553
|
-
:hide-folder-hint="hideFolderHint"
|
|
554
674
|
/>
|
|
555
675
|
</div>
|
|
556
676
|
|
|
557
677
|
<div
|
|
558
678
|
v-if="$slots['sidebar-bottom']"
|
|
559
|
-
min-h-0
|
|
679
|
+
min-h-0
|
|
680
|
+
overflow-y-auto
|
|
560
681
|
b-t=".5px neutral-200"
|
|
561
682
|
:style="{ flexGrow: sidebarBottomHeight, flexBasis: 0 }"
|
|
562
683
|
>
|
|
@@ -569,7 +690,9 @@ async function handleDelete() {
|
|
|
569
690
|
v-if="sidebarCollapsible"
|
|
570
691
|
type="button"
|
|
571
692
|
class="chat-sidebar__toggle"
|
|
572
|
-
:aria-label="
|
|
693
|
+
:aria-label="
|
|
694
|
+
sidebarCollapsed ? 'Expandir conversas' : 'Recolher conversas'
|
|
695
|
+
"
|
|
573
696
|
:aria-expanded="!sidebarCollapsed"
|
|
574
697
|
@click="toggleSidebarCollapsed"
|
|
575
698
|
>
|
|
@@ -578,9 +701,14 @@ async function handleDelete() {
|
|
|
578
701
|
</div>
|
|
579
702
|
|
|
580
703
|
<!-- Main content -->
|
|
581
|
-
<div
|
|
582
|
-
|
|
583
|
-
|
|
704
|
+
<div
|
|
705
|
+
flex-1
|
|
706
|
+
h-full
|
|
707
|
+
flex="~ col"
|
|
708
|
+
overflow-hidden
|
|
709
|
+
relative
|
|
710
|
+
style="--chat-panel-offset: 0px"
|
|
711
|
+
>
|
|
584
712
|
<ChatMobileShell
|
|
585
713
|
v-if="isMobile"
|
|
586
714
|
v-model:drawer-open="drawerOpen"
|
|
@@ -602,8 +730,8 @@ async function handleDelete() {
|
|
|
602
730
|
:has-pending-message="hasPendingMessage"
|
|
603
731
|
:hide-settings="hideSettings"
|
|
604
732
|
:hide-sidebar="hideSidebar"
|
|
605
|
-
:hide-folder-hint="hideFolderHint"
|
|
606
733
|
:is-editing="isEditing"
|
|
734
|
+
:suggestions="resolvedSuggestions"
|
|
607
735
|
:loading="loading"
|
|
608
736
|
:messages="messages"
|
|
609
737
|
:agent-input-schema="visibleTelaAgentInputSchema"
|
|
@@ -637,10 +765,7 @@ async function handleDelete() {
|
|
|
637
765
|
@tab-change="handleTabChange"
|
|
638
766
|
>
|
|
639
767
|
<template #loading>
|
|
640
|
-
<ChatMessageList
|
|
641
|
-
:messages="[]"
|
|
642
|
-
loading
|
|
643
|
-
/>
|
|
768
|
+
<ChatMessageList :messages="[]" loading variant="mobile" />
|
|
644
769
|
<ChatMessageInput
|
|
645
770
|
v-model:selected-model="selectedModel"
|
|
646
771
|
:disabled="true"
|
|
@@ -651,43 +776,54 @@ async function handleDelete() {
|
|
|
651
776
|
</template>
|
|
652
777
|
|
|
653
778
|
<template #empty>
|
|
654
|
-
<
|
|
655
|
-
|
|
656
|
-
:
|
|
779
|
+
<TelaChatEmptyState
|
|
780
|
+
compact
|
|
781
|
+
:title="`Ol\xE1, ${currentUser?.name?.split(' ')[0] ?? 'usu\xE1rio'}`"
|
|
782
|
+
description="Como posso te ajudar hoje?"
|
|
657
783
|
>
|
|
658
|
-
<
|
|
659
|
-
<
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
784
|
+
<TelaChatSuggestions v-if="resolvedSuggestions.length">
|
|
785
|
+
<TelaChatSuggestion
|
|
786
|
+
v-for="suggestion in resolvedSuggestions"
|
|
787
|
+
:key="suggestion.title"
|
|
788
|
+
:suggestion="suggestion.prompt"
|
|
789
|
+
@click="applySuggestion($event)"
|
|
790
|
+
>
|
|
791
|
+
{{ suggestion.title }}
|
|
792
|
+
</TelaChatSuggestion>
|
|
793
|
+
</TelaChatSuggestions>
|
|
794
|
+
|
|
795
|
+
<TelaChatPromptInputHints size="sm" :hints="PROMPT_INPUT_HINTS" />
|
|
796
|
+
|
|
797
|
+
<template #input>
|
|
798
|
+
<ChatMessageInput
|
|
799
|
+
ref="messageInputRef"
|
|
800
|
+
v-model:selected-model="selectedModel"
|
|
801
|
+
:disabled="hasPendingMessage"
|
|
802
|
+
:loading="hasPendingMessage"
|
|
803
|
+
:creator-name="currentUser?.name ?? void 0"
|
|
804
|
+
:creator-email="
|
|
805
|
+
currentConversation?.createdBy ?? currentUser?.email ?? void 0
|
|
806
|
+
"
|
|
807
|
+
:creator-image="currentUser?.image ?? void 0"
|
|
808
|
+
:messages="messages"
|
|
809
|
+
:conversation-files="conversationFiles"
|
|
810
|
+
:workspace-settings="effectiveWorkspaceSettings"
|
|
811
|
+
:agent-input-schema="visibleTelaAgentInputSchema"
|
|
812
|
+
:agent-input-schema-loading="visibleTelaAgentInputSchemaLoading"
|
|
813
|
+
:agent-skills="agentSkills"
|
|
814
|
+
:agent-context-files="agentContextFiles"
|
|
815
|
+
:show-cancel-button="resolvedFeatures.showCancelButton"
|
|
816
|
+
centered
|
|
817
|
+
@send="handleSend"
|
|
818
|
+
@cancel="cancelConversation"
|
|
819
|
+
/>
|
|
820
|
+
</template>
|
|
821
|
+
</TelaChatEmptyState>
|
|
687
822
|
</template>
|
|
688
823
|
|
|
689
824
|
<ChatMessageList
|
|
690
825
|
:messages="messages"
|
|
826
|
+
variant="mobile"
|
|
691
827
|
@retry="handleRetry"
|
|
692
828
|
/>
|
|
693
829
|
<ChatMessageInput
|
|
@@ -696,7 +832,9 @@ async function handleDelete() {
|
|
|
696
832
|
:disabled="hasPendingMessage"
|
|
697
833
|
:loading="hasPendingMessage"
|
|
698
834
|
:creator-name="currentUser?.name ?? void 0"
|
|
699
|
-
:creator-email="
|
|
835
|
+
:creator-email="
|
|
836
|
+
currentConversation?.createdBy ?? currentUser?.email ?? void 0
|
|
837
|
+
"
|
|
700
838
|
:creator-image="currentUser?.image ?? void 0"
|
|
701
839
|
:messages="messages"
|
|
702
840
|
:conversation-files="conversationFiles"
|
|
@@ -710,13 +848,10 @@ async function handleDelete() {
|
|
|
710
848
|
@send="handleSend"
|
|
711
849
|
@cancel="cancelConversation"
|
|
712
850
|
/>
|
|
713
|
-
<p text-center text-12px font-400 leading-16px text-tertiary my-8px>
|
|
714
|
-
As respostas podem conter erros. Verifique documentos originais.
|
|
715
|
-
</p>
|
|
716
851
|
</ChatMobileShell>
|
|
717
852
|
|
|
718
853
|
<ChatTopbar
|
|
719
|
-
v-if="currentConversation && !isMobile"
|
|
854
|
+
v-if="currentConversation && !isMobile && !compact"
|
|
720
855
|
:title="displayTitle"
|
|
721
856
|
:creator-name="conversationCreator?.name ?? void 0"
|
|
722
857
|
:creator-email="currentConversation.createdBy ?? void 0"
|
|
@@ -745,7 +880,12 @@ async function handleDelete() {
|
|
|
745
880
|
|
|
746
881
|
<div
|
|
747
882
|
v-if="!isMobile && showOutdatedBanner"
|
|
748
|
-
|
|
883
|
+
flex
|
|
884
|
+
items-center
|
|
885
|
+
h-36px
|
|
886
|
+
px-12px
|
|
887
|
+
bg="#FFF1D8"
|
|
888
|
+
:class="compact ? '' : 'mt-64px'"
|
|
749
889
|
>
|
|
750
890
|
<div flex items-center gap-8px flex-1>
|
|
751
891
|
<span i-ph-warning text-12px text-gray-900 shrink-0 />
|
|
@@ -758,17 +898,27 @@ async function handleDelete() {
|
|
|
758
898
|
</div>
|
|
759
899
|
<div flex items-center gap-24px shrink-0>
|
|
760
900
|
<button
|
|
761
|
-
flex
|
|
762
|
-
|
|
763
|
-
|
|
901
|
+
flex
|
|
902
|
+
items-center
|
|
903
|
+
gap-4px
|
|
904
|
+
px-10px
|
|
905
|
+
py-4px
|
|
906
|
+
b=".5px gray-500"
|
|
907
|
+
rounded-8px
|
|
908
|
+
class="hover:bg-white/50"
|
|
909
|
+
transition-colors
|
|
764
910
|
@click="() => handleNewConversation()"
|
|
765
911
|
>
|
|
766
912
|
<span i-ph-plus text-12px text-gray-900 />
|
|
767
913
|
<span text-12px font-580 text-gray-900 leading-16px>Nova conversa</span>
|
|
768
914
|
</button>
|
|
769
915
|
<button
|
|
770
|
-
flex
|
|
771
|
-
|
|
916
|
+
flex
|
|
917
|
+
items-center
|
|
918
|
+
justify-center
|
|
919
|
+
class="hover:bg-black/5"
|
|
920
|
+
transition-colors
|
|
921
|
+
rounded-4px
|
|
772
922
|
@click="dismissOutdatedBanner"
|
|
773
923
|
>
|
|
774
924
|
<span i-ph-x text-12px text-gray-900 />
|
|
@@ -776,11 +926,17 @@ async function handleDelete() {
|
|
|
776
926
|
</div>
|
|
777
927
|
</div>
|
|
778
928
|
|
|
779
|
-
<template
|
|
929
|
+
<template
|
|
930
|
+
v-if="!isMobile && activeTab === 'files' && currentConversation"
|
|
931
|
+
>
|
|
780
932
|
<ChatFilesView :conversation-id="currentConversation.id" />
|
|
781
933
|
</template>
|
|
782
934
|
|
|
783
|
-
<template
|
|
935
|
+
<template
|
|
936
|
+
v-else-if="
|
|
937
|
+
!isMobile && activeTab === 'usage' && resolvedFeatures.showUsageTab && currentConversation
|
|
938
|
+
"
|
|
939
|
+
>
|
|
784
940
|
<ChatUsageView
|
|
785
941
|
:conversation-id="currentConversation.id"
|
|
786
942
|
:created-at="currentConversation.createdAt"
|
|
@@ -788,10 +944,14 @@ async function handleDelete() {
|
|
|
788
944
|
/>
|
|
789
945
|
</template>
|
|
790
946
|
|
|
791
|
-
<
|
|
947
|
+
<TelaChatBody
|
|
948
|
+
v-else-if="!isMobile && loading"
|
|
949
|
+
:variant="compact ? 'widget' : 'page'"
|
|
950
|
+
>
|
|
792
951
|
<ChatMessageList
|
|
793
952
|
:messages="[]"
|
|
794
953
|
loading
|
|
954
|
+
:variant="compact ? 'widget' : 'page'"
|
|
795
955
|
/>
|
|
796
956
|
<ChatMessageInput
|
|
797
957
|
v-model:selected-model="selectedModel"
|
|
@@ -800,28 +960,43 @@ async function handleDelete() {
|
|
|
800
960
|
:agent-input-schema-loading="visibleTelaAgentInputSchemaLoading"
|
|
801
961
|
:show-cancel-button="resolvedFeatures.showCancelButton"
|
|
802
962
|
/>
|
|
803
|
-
</
|
|
963
|
+
</TelaChatBody>
|
|
804
964
|
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
965
|
+
<!-- Outside TelaChatBody on purpose: the body pins any [data-chat-prompt-input]
|
|
966
|
+
to its bottom edge, which would tear the input out of the empty-state stack. -->
|
|
967
|
+
<TelaChatEmptyState
|
|
968
|
+
v-else-if="!isMobile && !hasMessages"
|
|
969
|
+
:compact="compact"
|
|
970
|
+
:title="`Ol\xE1, ${currentUser?.name?.split(' ')[0] ?? 'usu\xE1rio'}`"
|
|
971
|
+
description="Como posso te ajudar hoje?"
|
|
972
|
+
:class="currentConversation && !compact ? 'pt-64px' : ''"
|
|
973
|
+
>
|
|
974
|
+
<TelaChatSuggestions v-if="resolvedSuggestions.length">
|
|
975
|
+
<TelaChatSuggestion
|
|
976
|
+
v-for="suggestion in resolvedSuggestions"
|
|
977
|
+
:key="suggestion.title"
|
|
978
|
+
:suggestion="suggestion.prompt"
|
|
979
|
+
@click="applySuggestion($event)"
|
|
980
|
+
>
|
|
981
|
+
{{ suggestion.title }}
|
|
982
|
+
</TelaChatSuggestion>
|
|
983
|
+
</TelaChatSuggestions>
|
|
984
|
+
|
|
985
|
+
<TelaChatPromptInputHints
|
|
986
|
+
:size="compact ? 'sm' : 'md'"
|
|
987
|
+
:hints="PROMPT_INPUT_HINTS"
|
|
988
|
+
/>
|
|
989
|
+
|
|
990
|
+
<template #input>
|
|
818
991
|
<ChatMessageInput
|
|
819
992
|
ref="messageInputRef"
|
|
820
993
|
v-model:selected-model="selectedModel"
|
|
821
994
|
:disabled="hasPendingMessage"
|
|
822
995
|
:loading="hasPendingMessage"
|
|
823
996
|
:creator-name="currentUser?.name ?? void 0"
|
|
824
|
-
:creator-email="
|
|
997
|
+
:creator-email="
|
|
998
|
+
currentConversation?.createdBy ?? currentUser?.email ?? void 0
|
|
999
|
+
"
|
|
825
1000
|
:creator-image="currentUser?.image ?? void 0"
|
|
826
1001
|
:messages="messages"
|
|
827
1002
|
:conversation-files="conversationFiles"
|
|
@@ -835,12 +1010,16 @@ async function handleDelete() {
|
|
|
835
1010
|
@send="handleSend"
|
|
836
1011
|
@cancel="cancelConversation"
|
|
837
1012
|
/>
|
|
838
|
-
</
|
|
839
|
-
</
|
|
1013
|
+
</template>
|
|
1014
|
+
</TelaChatEmptyState>
|
|
840
1015
|
|
|
841
|
-
<
|
|
1016
|
+
<TelaChatBody
|
|
1017
|
+
v-else-if="!isMobile"
|
|
1018
|
+
:variant="compact ? 'widget' : 'page'"
|
|
1019
|
+
>
|
|
842
1020
|
<ChatMessageList
|
|
843
1021
|
:messages="messages"
|
|
1022
|
+
:variant="compact ? 'widget' : 'page'"
|
|
844
1023
|
@retry="handleRetry"
|
|
845
1024
|
/>
|
|
846
1025
|
<ChatMessageInput
|
|
@@ -849,7 +1028,9 @@ async function handleDelete() {
|
|
|
849
1028
|
:disabled="hasPendingMessage"
|
|
850
1029
|
:loading="hasPendingMessage"
|
|
851
1030
|
:creator-name="currentUser?.name ?? void 0"
|
|
852
|
-
:creator-email="
|
|
1031
|
+
:creator-email="
|
|
1032
|
+
currentConversation?.createdBy ?? currentUser?.email ?? void 0
|
|
1033
|
+
"
|
|
853
1034
|
:creator-image="currentUser?.image ?? void 0"
|
|
854
1035
|
:messages="messages"
|
|
855
1036
|
:conversation-files="conversationFiles"
|
|
@@ -863,10 +1044,7 @@ async function handleDelete() {
|
|
|
863
1044
|
@send="handleSend"
|
|
864
1045
|
@cancel="cancelConversation"
|
|
865
1046
|
/>
|
|
866
|
-
|
|
867
|
-
As respostas podem conter erros. Verifique documentos originais.
|
|
868
|
-
</p>
|
|
869
|
-
</template>
|
|
1047
|
+
</TelaChatBody>
|
|
870
1048
|
|
|
871
1049
|
<Transition name="fade">
|
|
872
1050
|
<div
|
|
@@ -874,10 +1052,23 @@ async function handleDelete() {
|
|
|
874
1052
|
class="absolute inset-0 z-50 flex items-center justify-center bg-white/90 backdrop-blur-sm"
|
|
875
1053
|
>
|
|
876
1054
|
<div
|
|
877
|
-
flex="~ col"
|
|
878
|
-
|
|
1055
|
+
flex="~ col"
|
|
1056
|
+
items-center
|
|
1057
|
+
gap-16px
|
|
1058
|
+
p-40px
|
|
1059
|
+
rounded-24px
|
|
1060
|
+
border="2 dashed gray-300"
|
|
1061
|
+
bg-gray-50
|
|
879
1062
|
>
|
|
880
|
-
<div
|
|
1063
|
+
<div
|
|
1064
|
+
w-64px
|
|
1065
|
+
h-64px
|
|
1066
|
+
rounded-full
|
|
1067
|
+
bg-gray-100
|
|
1068
|
+
flex
|
|
1069
|
+
items-center
|
|
1070
|
+
justify-center
|
|
1071
|
+
>
|
|
881
1072
|
<span i-ph-upload-simple text-32px text-gray-500 />
|
|
882
1073
|
</div>
|
|
883
1074
|
<div text-center>
|
|
@@ -901,7 +1092,8 @@ async function handleDelete() {
|
|
|
901
1092
|
@confirm="handleDelete"
|
|
902
1093
|
@cancel="showDeleteModal = false"
|
|
903
1094
|
>
|
|
904
|
-
Tem certeza que deseja excluir esta conversa? Esta ação não pode ser
|
|
1095
|
+
Tem certeza que deseja excluir esta conversa? Esta ação não pode ser
|
|
1096
|
+
desfeita.
|
|
905
1097
|
</TelaConfirmationModal>
|
|
906
1098
|
|
|
907
1099
|
<TelaModal
|
|
@@ -918,11 +1110,13 @@ async function handleDelete() {
|
|
|
918
1110
|
Conversation Id
|
|
919
1111
|
</p>
|
|
920
1112
|
<div
|
|
921
|
-
px-12px
|
|
1113
|
+
px-12px
|
|
1114
|
+
py-10px
|
|
922
1115
|
rounded-8px
|
|
923
1116
|
bg-gray-50
|
|
924
1117
|
justify-between
|
|
925
|
-
flex
|
|
1118
|
+
flex
|
|
1119
|
+
items-center
|
|
926
1120
|
border="0.5px gray-200"
|
|
927
1121
|
>
|
|
928
1122
|
<p text-13px text-gray-700 break-all leading-18px>
|
|
@@ -936,11 +1130,13 @@ async function handleDelete() {
|
|
|
936
1130
|
Session Id
|
|
937
1131
|
</p>
|
|
938
1132
|
<div
|
|
939
|
-
px-12px
|
|
1133
|
+
px-12px
|
|
1134
|
+
py-10px
|
|
940
1135
|
rounded-8px
|
|
941
1136
|
bg-gray-50
|
|
942
1137
|
justify-between
|
|
943
|
-
flex
|
|
1138
|
+
flex
|
|
1139
|
+
items-center
|
|
944
1140
|
border="0.5px gray-200"
|
|
945
1141
|
>
|
|
946
1142
|
<p text-13px text-gray-700 break-all leading-18px>
|
|
@@ -955,7 +1151,13 @@ async function handleDelete() {
|
|
|
955
1151
|
<p text-12px font-400 leading-16px text-tertiary>
|
|
956
1152
|
Inclui os ids da conversa e os links de debug no Datadog e no Tela
|
|
957
1153
|
</p>
|
|
958
|
-
<TelaButton
|
|
1154
|
+
<TelaButton
|
|
1155
|
+
variant="primary"
|
|
1156
|
+
icon="i-ph-copy"
|
|
1157
|
+
leading
|
|
1158
|
+
flex-shrink-0
|
|
1159
|
+
@click="copyDebugInfo"
|
|
1160
|
+
>
|
|
959
1161
|
Copiar dados completos
|
|
960
1162
|
</TelaButton>
|
|
961
1163
|
</div>
|
|
@@ -971,7 +1173,9 @@ async function handleDelete() {
|
|
|
971
1173
|
|
|
972
1174
|
<div
|
|
973
1175
|
v-if="isPreviewPanelOpen && !isMobile"
|
|
974
|
-
h-full
|
|
1176
|
+
h-full
|
|
1177
|
+
flex-shrink-0
|
|
1178
|
+
pt-64px
|
|
975
1179
|
:style="{ width: `${previewPanelWidth}px` }"
|
|
976
1180
|
>
|
|
977
1181
|
<FilePreviewPanel />
|
|
@@ -979,14 +1183,19 @@ async function handleDelete() {
|
|
|
979
1183
|
|
|
980
1184
|
<div
|
|
981
1185
|
v-if="isCitationPanelOpen && !isMobile"
|
|
982
|
-
h-full
|
|
1186
|
+
h-full
|
|
1187
|
+
flex-shrink-0
|
|
1188
|
+
pt-64px
|
|
983
1189
|
w-440px
|
|
984
1190
|
>
|
|
985
1191
|
<CitationDocumentPanel />
|
|
986
1192
|
</div>
|
|
987
1193
|
<div
|
|
988
1194
|
v-else-if="isCitationPanelOpen && isMobile"
|
|
989
|
-
fixed
|
|
1195
|
+
fixed
|
|
1196
|
+
inset-0
|
|
1197
|
+
z-50
|
|
1198
|
+
bg-neutral-50
|
|
990
1199
|
>
|
|
991
1200
|
<CitationDocumentPanel />
|
|
992
1201
|
</div>
|
|
@@ -994,5 +1203,9 @@ async function handleDelete() {
|
|
|
994
1203
|
</template>
|
|
995
1204
|
|
|
996
1205
|
<style scoped>
|
|
997
|
-
.
|
|
1206
|
+
.chat-sidebar{width:var(--chat-sidebar-width)}.chat-sidebar__clip{display:flex;height:100%;width:100%}.chat-sidebar__panel{flex:none}.chat-sidebar--collapsible{min-width:0;transition:width .26s cubic-bezier(.2,.8,.2,1)}.chat-sidebar--collapsible .chat-sidebar__clip{overflow:hidden}.chat-sidebar--collapsible.chat-sidebar--right .chat-sidebar__clip{justify-content:flex-end}.chat-sidebar--collapsible .chat-sidebar__panel{transition:opacity .2s ease}.chat-sidebar--collapsed{width:0}.chat-sidebar--collapsed .chat-sidebar__panel{opacity:0}.chat-sidebar__toggle{align-items:center;background:#fff;border:.5px solid #e5e5e5;border-radius:8px;box-shadow:0 1px 2px rgba(16,24,40,.06);cursor:pointer;display:flex;height:44px;justify-content:center;padding:0;position:absolute;top:50%;transition:transform .26s cubic-bezier(.2,.8,.2,1),background-color .12s ease;width:20px;z-index:20}.chat-sidebar__toggle:hover{background:#fafafa}.chat-sidebar--right .chat-sidebar__toggle{left:0;transform:translate(-50%,-50%)}.chat-sidebar--right.chat-sidebar--collapsed .chat-sidebar__toggle{transform:translate(-100%,-50%)}.chat-sidebar--left .chat-sidebar__toggle{right:0;transform:translate(50%,-50%)}.chat-sidebar--left.chat-sidebar--collapsed .chat-sidebar__toggle{transform:translate(100%,-50%)}@media (prefers-reduced-motion:reduce){.chat-sidebar__clip,.chat-sidebar__panel,.chat-sidebar__toggle{transition:none}}
|
|
1207
|
+
</style>
|
|
1208
|
+
|
|
1209
|
+
<style>
|
|
1210
|
+
[data-chat-body][data-variant=page] [data-chat-prompt-input]{margin-inline:auto!important;max-width:700px}
|
|
998
1211
|
</style>
|