@meistrari/chat-nuxt 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (479) hide show
  1. package/README.md +274 -0
  2. package/dist/module.d.mts +3 -0
  3. package/dist/module.json +9 -0
  4. package/dist/module.mjs +250 -0
  5. package/dist/runtime/assets/css/code-theme.css +1 -0
  6. package/dist/runtime/assets/css/markstream.css +1 -0
  7. package/dist/runtime/components/AppStatusToast.d.vue.ts +3 -0
  8. package/dist/runtime/components/AppStatusToast.vue +42 -0
  9. package/dist/runtime/components/AppStatusToast.vue.d.ts +3 -0
  10. package/dist/runtime/components/TelaChat.d.vue.ts +19 -0
  11. package/dist/runtime/components/TelaChat.vue +25 -0
  12. package/dist/runtime/components/TelaChat.vue.d.ts +19 -0
  13. package/dist/runtime/components/app-markdown-render.d.vue.ts +15 -0
  14. package/dist/runtime/components/app-markdown-render.vue +45 -0
  15. package/dist/runtime/components/app-markdown-render.vue.d.ts +15 -0
  16. package/dist/runtime/components/application-card.d.vue.ts +9 -0
  17. package/dist/runtime/components/application-card.vue +52 -0
  18. package/dist/runtime/components/application-card.vue.d.ts +9 -0
  19. package/dist/runtime/components/audio-preview.d.vue.ts +14 -0
  20. package/dist/runtime/components/audio-preview.vue +52 -0
  21. package/dist/runtime/components/audio-preview.vue.d.ts +14 -0
  22. package/dist/runtime/components/chat/bash-widget.d.vue.ts +9 -0
  23. package/dist/runtime/components/chat/bash-widget.vue +86 -0
  24. package/dist/runtime/components/chat/bash-widget.vue.d.ts +9 -0
  25. package/dist/runtime/components/chat/canvas-selector-modal.d.vue.ts +14 -0
  26. package/dist/runtime/components/chat/canvas-selector-modal.vue +290 -0
  27. package/dist/runtime/components/chat/canvas-selector-modal.vue.d.ts +14 -0
  28. package/dist/runtime/components/chat/context-config.d.vue.ts +30 -0
  29. package/dist/runtime/components/chat/context-config.vue +423 -0
  30. package/dist/runtime/components/chat/context-config.vue.d.ts +30 -0
  31. package/dist/runtime/components/chat/conversation-item.d.vue.ts +20 -0
  32. package/dist/runtime/components/chat/conversation-item.vue +184 -0
  33. package/dist/runtime/components/chat/conversation-item.vue.d.ts +20 -0
  34. package/dist/runtime/components/chat/conversation-list.d.vue.ts +10 -0
  35. package/dist/runtime/components/chat/conversation-list.vue +78 -0
  36. package/dist/runtime/components/chat/conversation-list.vue.d.ts +10 -0
  37. package/dist/runtime/components/chat/doc-sdk-widget.d.vue.ts +9 -0
  38. package/dist/runtime/components/chat/doc-sdk-widget.vue +74 -0
  39. package/dist/runtime/components/chat/doc-sdk-widget.vue.d.ts +9 -0
  40. package/dist/runtime/components/chat/file-preview.d.vue.ts +7 -0
  41. package/dist/runtime/components/chat/file-preview.vue +313 -0
  42. package/dist/runtime/components/chat/file-preview.vue.d.ts +7 -0
  43. package/dist/runtime/components/chat/files-view.d.vue.ts +6 -0
  44. package/dist/runtime/components/chat/files-view.vue +399 -0
  45. package/dist/runtime/components/chat/files-view.vue.d.ts +6 -0
  46. package/dist/runtime/components/chat/generic-tool-widget.d.vue.ts +9 -0
  47. package/dist/runtime/components/chat/generic-tool-widget.vue +334 -0
  48. package/dist/runtime/components/chat/generic-tool-widget.vue.d.ts +9 -0
  49. package/dist/runtime/components/chat/grep-widget.d.vue.ts +9 -0
  50. package/dist/runtime/components/chat/grep-widget.vue +259 -0
  51. package/dist/runtime/components/chat/grep-widget.vue.d.ts +9 -0
  52. package/dist/runtime/components/chat/mention-dropdown.d.vue.ts +14 -0
  53. package/dist/runtime/components/chat/mention-dropdown.vue +90 -0
  54. package/dist/runtime/components/chat/mention-dropdown.vue.d.ts +14 -0
  55. package/dist/runtime/components/chat/message-bubble.d.vue.ts +11 -0
  56. package/dist/runtime/components/chat/message-bubble.vue +288 -0
  57. package/dist/runtime/components/chat/message-bubble.vue.d.ts +11 -0
  58. package/dist/runtime/components/chat/message-input.d.vue.ts +34 -0
  59. package/dist/runtime/components/chat/message-input.vue +428 -0
  60. package/dist/runtime/components/chat/message-input.vue.d.ts +34 -0
  61. package/dist/runtime/components/chat/message-list.d.vue.ts +11 -0
  62. package/dist/runtime/components/chat/message-list.vue +36 -0
  63. package/dist/runtime/components/chat/message-list.vue.d.ts +11 -0
  64. package/dist/runtime/components/chat/model-selector.d.vue.ts +15 -0
  65. package/dist/runtime/components/chat/model-selector.vue +35 -0
  66. package/dist/runtime/components/chat/model-selector.vue.d.ts +15 -0
  67. package/dist/runtime/components/chat/new-conversation-modal.d.vue.ts +14 -0
  68. package/dist/runtime/components/chat/new-conversation-modal.vue +271 -0
  69. package/dist/runtime/components/chat/new-conversation-modal.vue.d.ts +14 -0
  70. package/dist/runtime/components/chat/read-widget.d.vue.ts +9 -0
  71. package/dist/runtime/components/chat/read-widget.vue +195 -0
  72. package/dist/runtime/components/chat/read-widget.vue.d.ts +9 -0
  73. package/dist/runtime/components/chat/reasoning-message.d.vue.ts +13 -0
  74. package/dist/runtime/components/chat/reasoning-message.vue +341 -0
  75. package/dist/runtime/components/chat/reasoning-message.vue.d.ts +13 -0
  76. package/dist/runtime/components/chat/reasoning-step-item.d.vue.ts +37 -0
  77. package/dist/runtime/components/chat/reasoning-step-item.vue +125 -0
  78. package/dist/runtime/components/chat/reasoning-step-item.vue.d.ts +37 -0
  79. package/dist/runtime/components/chat/reasoning-steps.d.vue.ts +12 -0
  80. package/dist/runtime/components/chat/reasoning-steps.vue +47 -0
  81. package/dist/runtime/components/chat/reasoning-steps.vue.d.ts +12 -0
  82. package/dist/runtime/components/chat/reasoning-thought.d.vue.ts +11 -0
  83. package/dist/runtime/components/chat/reasoning-thought.vue +287 -0
  84. package/dist/runtime/components/chat/reasoning-thought.vue.d.ts +11 -0
  85. package/dist/runtime/components/chat/tela-skill-widget.d.vue.ts +9 -0
  86. package/dist/runtime/components/chat/tela-skill-widget.vue +94 -0
  87. package/dist/runtime/components/chat/tela-skill-widget.vue.d.ts +9 -0
  88. package/dist/runtime/components/chat/thinking-indicator.d.vue.ts +3 -0
  89. package/dist/runtime/components/chat/thinking-indicator.vue +52 -0
  90. package/dist/runtime/components/chat/thinking-indicator.vue.d.ts +3 -0
  91. package/dist/runtime/components/chat/thinking-widget.d.vue.ts +8 -0
  92. package/dist/runtime/components/chat/thinking-widget.vue +53 -0
  93. package/dist/runtime/components/chat/thinking-widget.vue.d.ts +8 -0
  94. package/dist/runtime/components/chat/topbar.d.vue.ts +43 -0
  95. package/dist/runtime/components/chat/topbar.vue +223 -0
  96. package/dist/runtime/components/chat/topbar.vue.d.ts +43 -0
  97. package/dist/runtime/components/chat/usage-view.d.vue.ts +8 -0
  98. package/dist/runtime/components/chat/usage-view.vue +393 -0
  99. package/dist/runtime/components/chat/usage-view.vue.d.ts +8 -0
  100. package/dist/runtime/components/chat/vault-link.d.vue.ts +20 -0
  101. package/dist/runtime/components/chat/vault-link.vue +34 -0
  102. package/dist/runtime/components/chat/vault-link.vue.d.ts +20 -0
  103. package/dist/runtime/components/chat/web-search-widget.d.vue.ts +9 -0
  104. package/dist/runtime/components/chat/web-search-widget.vue +121 -0
  105. package/dist/runtime/components/chat/web-search-widget.vue.d.ts +9 -0
  106. package/dist/runtime/components/chat/workstation-query-widget.d.vue.ts +10 -0
  107. package/dist/runtime/components/chat/workstation-query-widget.vue +552 -0
  108. package/dist/runtime/components/chat/workstation-query-widget.vue.d.ts +10 -0
  109. package/dist/runtime/components/chat/workstation-selector-modal.d.vue.ts +14 -0
  110. package/dist/runtime/components/chat/workstation-selector-modal.vue +272 -0
  111. package/dist/runtime/components/chat/workstation-selector-modal.vue.d.ts +14 -0
  112. package/dist/runtime/components/chat/write-widget.d.vue.ts +9 -0
  113. package/dist/runtime/components/chat/write-widget.vue +165 -0
  114. package/dist/runtime/components/chat/write-widget.vue.d.ts +9 -0
  115. package/dist/runtime/components/conversation-files-panel.d.vue.ts +3 -0
  116. package/dist/runtime/components/conversation-files-panel.vue +252 -0
  117. package/dist/runtime/components/conversation-files-panel.vue.d.ts +3 -0
  118. package/dist/runtime/components/csv-preview.d.vue.ts +20 -0
  119. package/dist/runtime/components/csv-preview.vue +157 -0
  120. package/dist/runtime/components/csv-preview.vue.d.ts +20 -0
  121. package/dist/runtime/components/file-preview-panel.d.vue.ts +3 -0
  122. package/dist/runtime/components/file-preview-panel.vue +185 -0
  123. package/dist/runtime/components/file-preview-panel.vue.d.ts +3 -0
  124. package/dist/runtime/components/file-uploader.d.vue.ts +16 -0
  125. package/dist/runtime/components/file-uploader.vue +136 -0
  126. package/dist/runtime/components/file-uploader.vue.d.ts +16 -0
  127. package/dist/runtime/components/icons/anthropic.d.vue.ts +3 -0
  128. package/dist/runtime/components/icons/anthropic.vue +5 -0
  129. package/dist/runtime/components/icons/anthropic.vue.d.ts +3 -0
  130. package/dist/runtime/components/image-preview.d.vue.ts +14 -0
  131. package/dist/runtime/components/image-preview.vue +54 -0
  132. package/dist/runtime/components/image-preview.vue.d.ts +14 -0
  133. package/dist/runtime/components/json-tree-node.d.vue.ts +9 -0
  134. package/dist/runtime/components/json-tree-node.vue +109 -0
  135. package/dist/runtime/components/json-tree-node.vue.d.ts +9 -0
  136. package/dist/runtime/components/json-viewer.d.vue.ts +6 -0
  137. package/dist/runtime/components/json-viewer.vue +88 -0
  138. package/dist/runtime/components/json-viewer.vue.d.ts +6 -0
  139. package/dist/runtime/components/pdf-preview.d.vue.ts +20 -0
  140. package/dist/runtime/components/pdf-preview.vue +89 -0
  141. package/dist/runtime/components/pdf-preview.vue.d.ts +20 -0
  142. package/dist/runtime/components/pdf-viewer.d.vue.ts +10 -0
  143. package/dist/runtime/components/pdf-viewer.vue +265 -0
  144. package/dist/runtime/components/pdf-viewer.vue.d.ts +10 -0
  145. package/dist/runtime/components/powered-by-tela.d.vue.ts +3 -0
  146. package/dist/runtime/components/powered-by-tela.vue +14 -0
  147. package/dist/runtime/components/powered-by-tela.vue.d.ts +3 -0
  148. package/dist/runtime/components/renderers/artifact-display.d.vue.ts +15 -0
  149. package/dist/runtime/components/renderers/artifact-display.vue +105 -0
  150. package/dist/runtime/components/renderers/artifact-display.vue.d.ts +15 -0
  151. package/dist/runtime/components/renderers/audio-renderer.d.vue.ts +7 -0
  152. package/dist/runtime/components/renderers/audio-renderer.vue +52 -0
  153. package/dist/runtime/components/renderers/audio-renderer.vue.d.ts +7 -0
  154. package/dist/runtime/components/renderers/csv-renderer.d.vue.ts +6 -0
  155. package/dist/runtime/components/renderers/csv-renderer.vue +203 -0
  156. package/dist/runtime/components/renderers/csv-renderer.vue.d.ts +6 -0
  157. package/dist/runtime/components/renderers/image-renderer.d.vue.ts +7 -0
  158. package/dist/runtime/components/renderers/image-renderer.vue +44 -0
  159. package/dist/runtime/components/renderers/image-renderer.vue.d.ts +7 -0
  160. package/dist/runtime/components/renderers/markdown-renderer.d.vue.ts +6 -0
  161. package/dist/runtime/components/renderers/markdown-renderer.vue +66 -0
  162. package/dist/runtime/components/renderers/markdown-renderer.vue.d.ts +6 -0
  163. package/dist/runtime/components/renderers/mermaid-diagram.d.vue.ts +7 -0
  164. package/dist/runtime/components/renderers/mermaid-diagram.vue +165 -0
  165. package/dist/runtime/components/renderers/mermaid-diagram.vue.d.ts +7 -0
  166. package/dist/runtime/components/renderers/text-renderer.d.vue.ts +7 -0
  167. package/dist/runtime/components/renderers/text-renderer.vue +70 -0
  168. package/dist/runtime/components/renderers/text-renderer.vue.d.ts +7 -0
  169. package/dist/runtime/components/renderers/video-renderer.d.vue.ts +6 -0
  170. package/dist/runtime/components/renderers/video-renderer.vue +43 -0
  171. package/dist/runtime/components/renderers/video-renderer.vue.d.ts +6 -0
  172. package/dist/runtime/components/text-preview.d.vue.ts +19 -0
  173. package/dist/runtime/components/text-preview.vue +105 -0
  174. package/dist/runtime/components/text-preview.vue.d.ts +19 -0
  175. package/dist/runtime/components/video-preview.d.vue.ts +14 -0
  176. package/dist/runtime/components/video-preview.vue +55 -0
  177. package/dist/runtime/components/video-preview.vue.d.ts +14 -0
  178. package/dist/runtime/composables/PageNavigation.d.ts +13 -0
  179. package/dist/runtime/composables/PageNavigation.js +18 -0
  180. package/dist/runtime/composables/useChat.d.ts +25 -0
  181. package/dist/runtime/composables/useChat.js +512 -0
  182. package/dist/runtime/composables/useChatApi.d.ts +6 -0
  183. package/dist/runtime/composables/useChatApi.js +28 -0
  184. package/dist/runtime/composables/useConversationFiles.d.ts +13 -0
  185. package/dist/runtime/composables/useConversationFiles.js +98 -0
  186. package/dist/runtime/composables/useConversationFilesPanel.d.ts +11 -0
  187. package/dist/runtime/composables/useConversationFilesPanel.js +35 -0
  188. package/dist/runtime/composables/useConversations.d.ts +15 -0
  189. package/dist/runtime/composables/useConversations.js +191 -0
  190. package/dist/runtime/composables/useDiagramExport.d.ts +11 -0
  191. package/dist/runtime/composables/useDiagramExport.js +186 -0
  192. package/dist/runtime/composables/useEmbedConfig.d.ts +13 -0
  193. package/dist/runtime/composables/useEmbedConfig.js +11 -0
  194. package/dist/runtime/composables/useFeatureFlags.d.ts +19 -0
  195. package/dist/runtime/composables/useFeatureFlags.js +67 -0
  196. package/dist/runtime/composables/useFileDrop.d.ts +17 -0
  197. package/dist/runtime/composables/useFileDrop.js +89 -0
  198. package/dist/runtime/composables/useFilePreviewPanel.d.ts +30 -0
  199. package/dist/runtime/composables/useFilePreviewPanel.js +42 -0
  200. package/dist/runtime/composables/useFileUpload.d.ts +7 -0
  201. package/dist/runtime/composables/useFileUpload.js +39 -0
  202. package/dist/runtime/composables/useGitHubSkills.d.ts +6 -0
  203. package/dist/runtime/composables/useGitHubSkills.js +68 -0
  204. package/dist/runtime/composables/useGitHubSkillsCallback.d.ts +5 -0
  205. package/dist/runtime/composables/useGitHubSkillsCallback.js +42 -0
  206. package/dist/runtime/composables/useIDB.d.ts +11 -0
  207. package/dist/runtime/composables/useIDB.js +57 -0
  208. package/dist/runtime/composables/useInputHistory.d.ts +7 -0
  209. package/dist/runtime/composables/useInputHistory.js +36 -0
  210. package/dist/runtime/composables/useKnowledgeSources.d.ts +6 -0
  211. package/dist/runtime/composables/useKnowledgeSources.js +15 -0
  212. package/dist/runtime/composables/useMediaCache.d.ts +13 -0
  213. package/dist/runtime/composables/useMediaCache.js +92 -0
  214. package/dist/runtime/composables/useMentionAutocomplete.d.ts +10 -0
  215. package/dist/runtime/composables/useMentionAutocomplete.js +272 -0
  216. package/dist/runtime/composables/useMermaidRenderer.d.ts +5 -0
  217. package/dist/runtime/composables/useMermaidRenderer.js +121 -0
  218. package/dist/runtime/composables/usePdf.d.ts +21 -0
  219. package/dist/runtime/composables/usePdf.js +138 -0
  220. package/dist/runtime/composables/usePolling.d.ts +12 -0
  221. package/dist/runtime/composables/usePolling.js +55 -0
  222. package/dist/runtime/composables/useSelectedModel.d.ts +4 -0
  223. package/dist/runtime/composables/useSelectedModel.js +46 -0
  224. package/dist/runtime/composables/useSplashScreen.d.ts +3 -0
  225. package/dist/runtime/composables/useSplashScreen.js +4 -0
  226. package/dist/runtime/composables/useStatusToast.d.ts +22 -0
  227. package/dist/runtime/composables/useStatusToast.js +40 -0
  228. package/dist/runtime/composables/useTela.d.ts +12 -0
  229. package/dist/runtime/composables/useTela.js +47 -0
  230. package/dist/runtime/composables/useToolFormatting.d.ts +5 -0
  231. package/dist/runtime/composables/useToolFormatting.js +61 -0
  232. package/dist/runtime/composables/useVault.d.ts +13 -0
  233. package/dist/runtime/composables/useVault.js +35 -0
  234. package/dist/runtime/composables/useVerbConjugation.d.ts +6 -0
  235. package/dist/runtime/composables/useVerbConjugation.js +256 -0
  236. package/dist/runtime/composables/useWorkspaceContextFiles.d.ts +19 -0
  237. package/dist/runtime/composables/useWorkspaceContextFiles.js +74 -0
  238. package/dist/runtime/composables/useWorkspaceCredentials.d.ts +34 -0
  239. package/dist/runtime/composables/useWorkspaceCredentials.js +175 -0
  240. package/dist/runtime/composables/useWorkspaceExternalSkills.d.ts +22 -0
  241. package/dist/runtime/composables/useWorkspaceExternalSkills.js +135 -0
  242. package/dist/runtime/composables/useWorkspaceKnowledgeSources.d.ts +11 -0
  243. package/dist/runtime/composables/useWorkspaceKnowledgeSources.js +88 -0
  244. package/dist/runtime/composables/useWorkspaceMembers.d.ts +13 -0
  245. package/dist/runtime/composables/useWorkspaceMembers.js +37 -0
  246. package/dist/runtime/composables/useWorkspacePersonalization.d.ts +6 -0
  247. package/dist/runtime/composables/useWorkspacePersonalization.js +19 -0
  248. package/dist/runtime/composables/useWorkspaceSettings.d.ts +30 -0
  249. package/dist/runtime/composables/useWorkspaceSettings.js +135 -0
  250. package/dist/runtime/composables/useWorkspaceTelaTools.d.ts +13 -0
  251. package/dist/runtime/composables/useWorkspaceTelaTools.js +91 -0
  252. package/dist/runtime/composables/useWorkspaces.d.ts +5 -0
  253. package/dist/runtime/composables/useWorkspaces.js +14 -0
  254. package/dist/runtime/composables/useZoomPan.d.ts +18 -0
  255. package/dist/runtime/composables/useZoomPan.js +130 -0
  256. package/dist/runtime/embed/components/ChatEmbed.d.vue.ts +23 -0
  257. package/dist/runtime/embed/components/ChatEmbed.vue +27 -0
  258. package/dist/runtime/embed/components/ChatEmbed.vue.d.ts +23 -0
  259. package/dist/runtime/embed/components/ChatEmbedInner.d.vue.ts +19 -0
  260. package/dist/runtime/embed/components/ChatEmbedInner.vue +604 -0
  261. package/dist/runtime/embed/components/ChatEmbedInner.vue.d.ts +19 -0
  262. package/dist/runtime/public/favicon.svg +4 -0
  263. package/dist/runtime/public/files/archive.svg +9 -0
  264. package/dist/runtime/public/files/audio.svg +4 -0
  265. package/dist/runtime/public/files/c.svg +4 -0
  266. package/dist/runtime/public/files/cpp.svg +6 -0
  267. package/dist/runtime/public/files/css.svg +4 -0
  268. package/dist/runtime/public/files/doc.svg +5 -0
  269. package/dist/runtime/public/files/generic.svg +7 -0
  270. package/dist/runtime/public/files/go.svg +6 -0
  271. package/dist/runtime/public/files/html.svg +4 -0
  272. package/dist/runtime/public/files/image.svg +3 -0
  273. package/dist/runtime/public/files/java.svg +7 -0
  274. package/dist/runtime/public/files/javascript.svg +4 -0
  275. package/dist/runtime/public/files/json.svg +5 -0
  276. package/dist/runtime/public/files/markdown.svg +5 -0
  277. package/dist/runtime/public/files/pdf.svg +5 -0
  278. package/dist/runtime/public/files/presentation.svg +5 -0
  279. package/dist/runtime/public/files/python.svg +5 -0
  280. package/dist/runtime/public/files/ruby.svg +5 -0
  281. package/dist/runtime/public/files/rust.svg +13 -0
  282. package/dist/runtime/public/files/sheet.svg +9 -0
  283. package/dist/runtime/public/files/shell.svg +5 -0
  284. package/dist/runtime/public/files/sql.svg +6 -0
  285. package/dist/runtime/public/files/typescript.svg +5 -0
  286. package/dist/runtime/public/files/video.svg +5 -0
  287. package/dist/runtime/public/files/yaml.svg +7 -0
  288. package/dist/runtime/public/github.svg +3 -0
  289. package/dist/runtime/public/robots.txt +1 -0
  290. package/dist/runtime/server/api/admin/trigger-usage-report.post.d.ts +2 -0
  291. package/dist/runtime/server/api/admin/trigger-usage-report.post.js +15 -0
  292. package/dist/runtime/server/api/chat/conversations/[id]/cancel.post.d.ts +1 -0
  293. package/dist/runtime/server/api/chat/conversations/[id]/cancel.post.js +1 -0
  294. package/dist/runtime/server/api/chat/conversations/[id]/clear.post.d.ts +1 -0
  295. package/dist/runtime/server/api/chat/conversations/[id]/clear.post.js +1 -0
  296. package/dist/runtime/server/api/chat/conversations/[id]/duplicate.post.d.ts +1 -0
  297. package/dist/runtime/server/api/chat/conversations/[id]/duplicate.post.js +1 -0
  298. package/dist/runtime/server/api/chat/conversations/[id]/files.get.d.ts +1 -0
  299. package/dist/runtime/server/api/chat/conversations/[id]/files.get.js +1 -0
  300. package/dist/runtime/server/api/chat/conversations/[id]/index.delete.d.ts +1 -0
  301. package/dist/runtime/server/api/chat/conversations/[id]/index.delete.js +1 -0
  302. package/dist/runtime/server/api/chat/conversations/[id]/index.get.d.ts +1 -0
  303. package/dist/runtime/server/api/chat/conversations/[id]/index.get.js +1 -0
  304. package/dist/runtime/server/api/chat/conversations/[id]/index.patch.d.ts +1 -0
  305. package/dist/runtime/server/api/chat/conversations/[id]/index.patch.js +1 -0
  306. package/dist/runtime/server/api/chat/conversations/[id]/messages/[messageId]/retry.post.d.ts +1 -0
  307. package/dist/runtime/server/api/chat/conversations/[id]/messages/[messageId]/retry.post.js +1 -0
  308. package/dist/runtime/server/api/chat/conversations/[id]/messages/index.get.d.ts +1 -0
  309. package/dist/runtime/server/api/chat/conversations/[id]/messages/index.get.js +1 -0
  310. package/dist/runtime/server/api/chat/conversations/[id]/messages/index.post.d.ts +1 -0
  311. package/dist/runtime/server/api/chat/conversations/[id]/messages/index.post.js +1 -0
  312. package/dist/runtime/server/api/chat/conversations/[id]/usage.get.d.ts +1 -0
  313. package/dist/runtime/server/api/chat/conversations/[id]/usage.get.js +1 -0
  314. package/dist/runtime/server/api/chat/conversations/generate-title.post.d.ts +1 -0
  315. package/dist/runtime/server/api/chat/conversations/generate-title.post.js +1 -0
  316. package/dist/runtime/server/api/chat/conversations/index.get.d.ts +1 -0
  317. package/dist/runtime/server/api/chat/conversations/index.get.js +1 -0
  318. package/dist/runtime/server/api/chat/conversations/index.post.d.ts +1 -0
  319. package/dist/runtime/server/api/chat/conversations/index.post.js +1 -0
  320. package/dist/runtime/server/api/chat/workspace/settings.get.d.ts +2 -0
  321. package/dist/runtime/server/api/chat/workspace/settings.get.js +14 -0
  322. package/dist/runtime/server/api/conversations/[id]/cancel.post.d.ts +2 -0
  323. package/dist/runtime/server/api/conversations/[id]/cancel.post.js +58 -0
  324. package/dist/runtime/server/api/conversations/[id]/clear.post.d.ts +2 -0
  325. package/dist/runtime/server/api/conversations/[id]/clear.post.js +38 -0
  326. package/dist/runtime/server/api/conversations/[id]/duplicate.post.d.ts +2 -0
  327. package/dist/runtime/server/api/conversations/[id]/duplicate.post.js +41 -0
  328. package/dist/runtime/server/api/conversations/[id]/files.get.d.ts +2 -0
  329. package/dist/runtime/server/api/conversations/[id]/files.get.js +131 -0
  330. package/dist/runtime/server/api/conversations/[id]/index.delete.d.ts +2 -0
  331. package/dist/runtime/server/api/conversations/[id]/index.delete.js +35 -0
  332. package/dist/runtime/server/api/conversations/[id]/index.get.d.ts +2 -0
  333. package/dist/runtime/server/api/conversations/[id]/index.get.js +34 -0
  334. package/dist/runtime/server/api/conversations/[id]/index.patch.d.ts +2 -0
  335. package/dist/runtime/server/api/conversations/[id]/index.patch.js +54 -0
  336. package/dist/runtime/server/api/conversations/[id]/messages/[messageId]/retry.post.d.ts +2 -0
  337. package/dist/runtime/server/api/conversations/[id]/messages/[messageId]/retry.post.js +168 -0
  338. package/dist/runtime/server/api/conversations/[id]/messages/index.get.d.ts +2 -0
  339. package/dist/runtime/server/api/conversations/[id]/messages/index.get.js +220 -0
  340. package/dist/runtime/server/api/conversations/[id]/messages/index.post.d.ts +2 -0
  341. package/dist/runtime/server/api/conversations/[id]/messages/index.post.js +181 -0
  342. package/dist/runtime/server/api/conversations/[id]/usage.get.d.ts +8 -0
  343. package/dist/runtime/server/api/conversations/[id]/usage.get.js +96 -0
  344. package/dist/runtime/server/api/conversations/generate-title.post.d.ts +2 -0
  345. package/dist/runtime/server/api/conversations/generate-title.post.js +49 -0
  346. package/dist/runtime/server/api/conversations/index.get.d.ts +2 -0
  347. package/dist/runtime/server/api/conversations/index.get.js +11 -0
  348. package/dist/runtime/server/api/conversations/index.post.d.ts +2 -0
  349. package/dist/runtime/server/api/conversations/index.post.js +41 -0
  350. package/dist/runtime/server/api/external-skills/discover.post.d.ts +2 -0
  351. package/dist/runtime/server/api/external-skills/discover.post.js +65 -0
  352. package/dist/runtime/server/api/github/disconnect.post.d.ts +2 -0
  353. package/dist/runtime/server/api/github/disconnect.post.js +21 -0
  354. package/dist/runtime/server/api/github/status.get.d.ts +2 -0
  355. package/dist/runtime/server/api/github/status.get.js +23 -0
  356. package/dist/runtime/server/api/tela/canvas.get.d.ts +2 -0
  357. package/dist/runtime/server/api/tela/canvas.get.js +18 -0
  358. package/dist/runtime/server/api/tela/projects.get.d.ts +2 -0
  359. package/dist/runtime/server/api/tela/projects.get.js +9 -0
  360. package/dist/runtime/server/api/tela/workspaces.get.d.ts +2 -0
  361. package/dist/runtime/server/api/tela/workspaces.get.js +9 -0
  362. package/dist/runtime/server/api/tela/workstations.get.d.ts +2 -0
  363. package/dist/runtime/server/api/tela/workstations.get.js +24 -0
  364. package/dist/runtime/server/api/vault/permalink-metadata.post.d.ts +2 -0
  365. package/dist/runtime/server/api/vault/permalink-metadata.post.js +77 -0
  366. package/dist/runtime/server/api/vault/resolve.post.d.ts +2 -0
  367. package/dist/runtime/server/api/vault/resolve.post.js +82 -0
  368. package/dist/runtime/server/api/vault/upload.post.d.ts +2 -0
  369. package/dist/runtime/server/api/vault/upload.post.js +55 -0
  370. package/dist/runtime/server/api/workspace/credentials/[id].delete.d.ts +2 -0
  371. package/dist/runtime/server/api/workspace/credentials/[id].delete.js +18 -0
  372. package/dist/runtime/server/api/workspace/credentials/[id].put.d.ts +2 -0
  373. package/dist/runtime/server/api/workspace/credentials/[id].put.js +28 -0
  374. package/dist/runtime/server/api/workspace/credentials/index.get.d.ts +2 -0
  375. package/dist/runtime/server/api/workspace/credentials/index.get.js +10 -0
  376. package/dist/runtime/server/api/workspace/credentials/index.post.d.ts +2 -0
  377. package/dist/runtime/server/api/workspace/credentials/index.post.js +33 -0
  378. package/dist/runtime/server/api/workspace/settings.get.d.ts +2 -0
  379. package/dist/runtime/server/api/workspace/settings.get.js +27 -0
  380. package/dist/runtime/server/api/workspace/settings.patch.d.ts +2 -0
  381. package/dist/runtime/server/api/workspace/settings.patch.js +86 -0
  382. package/dist/runtime/server/api/workspace/usage.get.d.ts +48 -0
  383. package/dist/runtime/server/api/workspace/usage.get.js +186 -0
  384. package/dist/runtime/server/db/index.d.ts +6 -0
  385. package/dist/runtime/server/db/index.js +19 -0
  386. package/dist/runtime/server/db/schema/conversation-usage.d.ts +438 -0
  387. package/dist/runtime/server/db/schema/conversation-usage.js +34 -0
  388. package/dist/runtime/server/db/schema/conversations.d.ts +197 -0
  389. package/dist/runtime/server/db/schema/conversations.js +18 -0
  390. package/dist/runtime/server/db/schema/external-skills.d.ts +235 -0
  391. package/dist/runtime/server/db/schema/external-skills.js +26 -0
  392. package/dist/runtime/server/db/schema/index.d.ts +5 -0
  393. package/dist/runtime/server/db/schema/index.js +5 -0
  394. package/dist/runtime/server/db/schema/messages.d.ts +221 -0
  395. package/dist/runtime/server/db/schema/messages.js +19 -0
  396. package/dist/runtime/server/db/schema/workspace-settings.d.ts +164 -0
  397. package/dist/runtime/server/db/schema/workspace-settings.js +15 -0
  398. package/dist/runtime/server/db/schema.d.ts +1 -0
  399. package/dist/runtime/server/db/schema.js +1 -0
  400. package/dist/runtime/server/middleware/domain-validation.d.ts +2 -0
  401. package/dist/runtime/server/middleware/domain-validation.js +22 -0
  402. package/dist/runtime/server/middleware/request-logger.d.ts +2 -0
  403. package/dist/runtime/server/middleware/request-logger.js +15 -0
  404. package/dist/runtime/server/prompts/base-system.d.ts +2 -0
  405. package/dist/runtime/server/prompts/base-system.js +100 -0
  406. package/dist/runtime/server/prompts/base-system.md +99 -0
  407. package/dist/runtime/server/prompts/knowledge-sources.d.ts +2 -0
  408. package/dist/runtime/server/prompts/knowledge-sources.js +37 -0
  409. package/dist/runtime/server/prompts/knowledge-sources.md +36 -0
  410. package/dist/runtime/server/tasks/send-daily-usage-report.d.ts +2 -0
  411. package/dist/runtime/server/tasks/send-daily-usage-report.js +73 -0
  412. package/dist/runtime/server/tsconfig.json +21 -0
  413. package/dist/runtime/server/utils/agent-api.d.ts +39 -0
  414. package/dist/runtime/server/utils/agent-api.js +169 -0
  415. package/dist/runtime/server/utils/auth-api.d.ts +1 -0
  416. package/dist/runtime/server/utils/auth-api.js +25 -0
  417. package/dist/runtime/server/utils/auth.d.ts +17 -0
  418. package/dist/runtime/server/utils/auth.js +28 -0
  419. package/dist/runtime/server/utils/billing.d.ts +37 -0
  420. package/dist/runtime/server/utils/billing.js +68 -0
  421. package/dist/runtime/server/utils/chat-context.d.ts +9 -0
  422. package/dist/runtime/server/utils/chat-context.js +24 -0
  423. package/dist/runtime/server/utils/chat-message-builder.d.ts +4 -0
  424. package/dist/runtime/server/utils/chat-message-builder.js +39 -0
  425. package/dist/runtime/server/utils/chat-prompts.d.ts +7 -0
  426. package/dist/runtime/server/utils/chat-prompts.js +9 -0
  427. package/dist/runtime/server/utils/chat-workspace-settings.d.ts +16 -0
  428. package/dist/runtime/server/utils/chat-workspace-settings.js +115 -0
  429. package/dist/runtime/server/utils/external-skills.d.ts +2 -0
  430. package/dist/runtime/server/utils/external-skills.js +15 -0
  431. package/dist/runtime/server/utils/logger.d.ts +2 -0
  432. package/dist/runtime/server/utils/logger.js +12 -0
  433. package/dist/runtime/server/utils/slack.d.ts +32 -0
  434. package/dist/runtime/server/utils/slack.js +102 -0
  435. package/dist/runtime/server/utils/tela-api.d.ts +2 -0
  436. package/dist/runtime/server/utils/tela-api.js +29 -0
  437. package/dist/runtime/server/utils/vault.d.ts +3 -0
  438. package/dist/runtime/server/utils/vault.js +52 -0
  439. package/dist/runtime/server/utils/workspace-settings-resolver.stub.d.ts +2 -0
  440. package/dist/runtime/server/utils/workspace-settings-resolver.stub.js +1 -0
  441. package/dist/runtime/server/utils/workspace.d.ts +4 -0
  442. package/dist/runtime/server/utils/workspace.js +21 -0
  443. package/dist/runtime/types/agent.d.ts +168 -0
  444. package/dist/runtime/types/agent.js +95 -0
  445. package/dist/runtime/types/chat-workspace-settings-resolver.d.ts +4 -0
  446. package/dist/runtime/types/chat.d.ts +81 -0
  447. package/dist/runtime/types/chat.js +12 -0
  448. package/dist/runtime/types/credential.d.ts +8 -0
  449. package/dist/runtime/types/credential.js +0 -0
  450. package/dist/runtime/types/csv.d.ts +4 -0
  451. package/dist/runtime/types/csv.js +0 -0
  452. package/dist/runtime/types/external-skills.d.ts +8 -0
  453. package/dist/runtime/types/external-skills.js +0 -0
  454. package/dist/runtime/types/feature-flags.d.ts +7 -0
  455. package/dist/runtime/types/feature-flags.js +6 -0
  456. package/dist/runtime/types/reasoning.d.ts +17 -0
  457. package/dist/runtime/types/reasoning.js +0 -0
  458. package/dist/runtime/types/tela.d.ts +46 -0
  459. package/dist/runtime/types/tela.js +0 -0
  460. package/dist/runtime/types/workspace.d.ts +20 -0
  461. package/dist/runtime/types/workspace.js +0 -0
  462. package/dist/runtime/utils/calculate-usage.d.ts +48 -0
  463. package/dist/runtime/utils/calculate-usage.js +63 -0
  464. package/dist/runtime/utils/code-detection.d.ts +1 -0
  465. package/dist/runtime/utils/code-detection.js +24 -0
  466. package/dist/runtime/utils/export-conversation.d.ts +2 -0
  467. package/dist/runtime/utils/export-conversation.js +43 -0
  468. package/dist/runtime/utils/file.d.ts +46 -0
  469. package/dist/runtime/utils/file.js +500 -0
  470. package/dist/runtime/utils/format-time.d.ts +22 -0
  471. package/dist/runtime/utils/format-time.js +96 -0
  472. package/dist/runtime/utils/markdown-nodes.d.ts +22 -0
  473. package/dist/runtime/utils/markdown-nodes.js +40 -0
  474. package/dist/runtime/utils/string.d.ts +4 -0
  475. package/dist/runtime/utils/string.js +5 -0
  476. package/dist/runtime/utils/tela-chat.d.ts +19 -0
  477. package/dist/runtime/utils/tela-chat.js +20 -0
  478. package/dist/types.d.mts +7 -0
  479. package/package.json +72 -0
@@ -0,0 +1,604 @@
1
+ <script setup>
2
+ import { exportConversationToMarkdown } from "../../utils/export-conversation";
3
+ import {
4
+ normalizeConversationId,
5
+ resolveChatFeatures,
6
+ resolveConversationCreator
7
+ } from "../../utils/tela-chat";
8
+ const props = defineProps({
9
+ conversationId: { type: [String, null], required: false },
10
+ initialConversationId: { type: [String, null], required: false, default: null },
11
+ hideSidebar: { type: Boolean, required: false, default: true },
12
+ user: { type: [Object, null], required: false },
13
+ features: { type: Object, required: false }
14
+ });
15
+ const emit = defineEmits(["update:conversationId"]);
16
+ const chatApi = useChatApi();
17
+ const embedConfig = useEmbedConfig();
18
+ const { user: authUser } = useTelaApplicationAuth();
19
+ const { getMember } = useWorkspaceMembers();
20
+ const statusToast = useStatusToast();
21
+ const { conversations, fetchConversations, createConversation, deleteConversation, renameConversation, duplicateConversation } = useConversations();
22
+ const { settings: workspaceSettingsState, fetchSettings } = useWorkspaceSettings();
23
+ const effectiveWorkspaceSettings = computed(() => embedConfig?.workspaceSettings.value ?? workspaceSettingsState.value);
24
+ const { closePanel: closeFilesPanel } = useConversationFilesPanel();
25
+ const activeConversationId = ref(
26
+ normalizeConversationId(props.conversationId) ?? normalizeConversationId(props.initialConversationId)
27
+ );
28
+ const loadingConversationId = ref(null);
29
+ const isReady = ref(false);
30
+ const resolvedFeatures = computed(() => resolveChatFeatures(props.features));
31
+ const dropZoneRef = ref(null);
32
+ const activeTab = ref("chat");
33
+ const messageInputRef = ref(null);
34
+ const { isDragging, setupDropZone } = useFileDrop({
35
+ onDrop: (files) => {
36
+ messageInputRef.value?.addFiles(files);
37
+ }
38
+ });
39
+ setupDropZone(dropZoneRef);
40
+ const {
41
+ currentConversation,
42
+ messages,
43
+ loading,
44
+ generatingTitle,
45
+ animatedTitle,
46
+ hasPendingMessage,
47
+ loadConversation,
48
+ sendMessage,
49
+ retryMessage,
50
+ cancelConversation,
51
+ startPolling,
52
+ clearConversation
53
+ } = useChat();
54
+ const conversationModelTarget = computed(() => {
55
+ if (!currentConversation.value)
56
+ return null;
57
+ return {
58
+ id: currentConversation.value.id,
59
+ model: currentConversation.value.model
60
+ };
61
+ });
62
+ const selectedModel = useSelectedModel(conversationModelTarget);
63
+ const conversationIdRef = computed(() => currentConversation.value?.id ?? null);
64
+ const { total, files: conversationFiles } = useConversationFiles(conversationIdRef);
65
+ const filesCount = computed(() => total.value);
66
+ const hasMessages = computed(() => messages.value.length > 0);
67
+ const visibleConversations = computed(
68
+ () => conversations.value.filter((c) => c.title || c.id === activeConversationId.value)
69
+ );
70
+ function syncConversationId(nextConversationId) {
71
+ activeConversationId.value = normalizeConversationId(nextConversationId);
72
+ }
73
+ function updateConversationId(nextConversationId) {
74
+ const normalizedConversationId = normalizeConversationId(nextConversationId);
75
+ const didChange = activeConversationId.value !== normalizedConversationId;
76
+ activeConversationId.value = normalizedConversationId;
77
+ if (didChange) {
78
+ emit("update:conversationId", normalizedConversationId);
79
+ }
80
+ }
81
+ async function ensureConversationLoaded(conversationId) {
82
+ if (currentConversation.value?.id === conversationId) {
83
+ startPolling();
84
+ return;
85
+ }
86
+ if (loadingConversationId.value === conversationId) {
87
+ return;
88
+ }
89
+ loadingConversationId.value = conversationId;
90
+ try {
91
+ await loadConversation(conversationId);
92
+ if (currentConversation.value?.id !== conversationId) {
93
+ statusToast.update({ text: "Erro ao carregar conversa", icon: "i-ph-warning" });
94
+ return;
95
+ }
96
+ startPolling();
97
+ } finally {
98
+ if (loadingConversationId.value === conversationId) {
99
+ loadingConversationId.value = null;
100
+ }
101
+ }
102
+ }
103
+ function resetConversation(shouldEmit = true) {
104
+ clearConversation();
105
+ activeTab.value = "chat";
106
+ closeFilesPanel();
107
+ if (shouldEmit) {
108
+ updateConversationId(null);
109
+ } else {
110
+ syncConversationId(null);
111
+ }
112
+ }
113
+ async function openConversation(nextConversationId) {
114
+ const normalizedConversationId = normalizeConversationId(nextConversationId);
115
+ if (!normalizedConversationId) {
116
+ return;
117
+ }
118
+ updateConversationId(normalizedConversationId);
119
+ await ensureConversationLoaded(normalizedConversationId);
120
+ }
121
+ watch(() => props.conversationId, async (nextConversationId) => {
122
+ if (nextConversationId === void 0) {
123
+ return;
124
+ }
125
+ const normalizedConversationId = normalizeConversationId(nextConversationId);
126
+ if (!isReady.value) {
127
+ syncConversationId(normalizedConversationId);
128
+ return;
129
+ }
130
+ if (normalizedConversationId === activeConversationId.value && currentConversation.value?.id === normalizedConversationId) {
131
+ return;
132
+ }
133
+ if (!normalizedConversationId) {
134
+ resetConversation(false);
135
+ return;
136
+ }
137
+ syncConversationId(normalizedConversationId);
138
+ await ensureConversationLoaded(normalizedConversationId);
139
+ });
140
+ onMounted(async () => {
141
+ const pendingTasks = [fetchConversations()];
142
+ if (!effectiveWorkspaceSettings.value) {
143
+ pendingTasks.push(fetchSettings());
144
+ }
145
+ await Promise.allSettled(pendingTasks);
146
+ isReady.value = true;
147
+ if (activeConversationId.value) {
148
+ await ensureConversationLoaded(activeConversationId.value);
149
+ }
150
+ });
151
+ const MAX_DISMISSED_CHAT_IDS = 100;
152
+ const dismissedChats = ref(/* @__PURE__ */ new Set());
153
+ const dismissedStorageKey = computed(
154
+ () => `embed-dismissed-outdated-settings:${embedConfig?.workspaceId.value.trim() || "default"}`
155
+ );
156
+ onMounted(() => {
157
+ try {
158
+ const stored = localStorage.getItem(dismissedStorageKey.value);
159
+ if (stored)
160
+ dismissedChats.value = new Set(JSON.parse(stored));
161
+ } catch {
162
+ }
163
+ });
164
+ const isSettingsOutdated = computed(() => {
165
+ if (!effectiveWorkspaceSettings.value || !currentConversation.value)
166
+ return false;
167
+ if (!currentConversation.value.appliedSettingsSnapshot)
168
+ return false;
169
+ const rawAppliedAt = currentConversation.value.appliedSettingsSnapshot.updatedAt ?? currentConversation.value.appliedSettingsAt;
170
+ if (!rawAppliedAt)
171
+ return false;
172
+ const appliedAt = new Date(rawAppliedAt).getTime();
173
+ const updatedAt = new Date(effectiveWorkspaceSettings.value.updatedAt).getTime();
174
+ return appliedAt < updatedAt;
175
+ });
176
+ const isBannerDismissed = computed(
177
+ () => currentConversation.value ? dismissedChats.value.has(currentConversation.value.id) : false
178
+ );
179
+ const showOutdatedBanner = computed(() => isSettingsOutdated.value && !isBannerDismissed.value);
180
+ const showOutdatedBadge = computed(() => isSettingsOutdated.value && isBannerDismissed.value);
181
+ function dismissOutdatedBanner() {
182
+ if (!currentConversation.value)
183
+ return;
184
+ dismissedChats.value.delete(currentConversation.value.id);
185
+ dismissedChats.value.add(currentConversation.value.id);
186
+ const nextDismissedChats = [...dismissedChats.value];
187
+ dismissedChats.value = new Set(nextDismissedChats.slice(-MAX_DISMISSED_CHAT_IDS));
188
+ try {
189
+ localStorage.setItem(dismissedStorageKey.value, JSON.stringify([...dismissedChats.value]));
190
+ } catch {
191
+ }
192
+ }
193
+ const optimisticTitle = ref(null);
194
+ const displayTitle = computed(() => {
195
+ if (optimisticTitle.value !== null)
196
+ return optimisticTitle.value;
197
+ if (animatedTitle.value !== null)
198
+ return animatedTitle.value;
199
+ return currentConversation.value?.title ?? "";
200
+ });
201
+ watch(
202
+ () => [currentConversation.value?.id ?? null, currentConversation.value?.title ?? null],
203
+ ([conversationId, conversationTitle], [previousConversationId]) => {
204
+ if (conversationId !== previousConversationId) {
205
+ optimisticTitle.value = null;
206
+ return;
207
+ }
208
+ if (optimisticTitle.value !== null && conversationTitle === optimisticTitle.value) {
209
+ optimisticTitle.value = null;
210
+ }
211
+ }
212
+ );
213
+ const currentUser = computed(() => props.user ?? authUser.value ?? null);
214
+ const conversationCreator = computed(
215
+ () => resolveConversationCreator(currentConversation.value?.userId, {
216
+ currentUser: currentUser.value,
217
+ getMember
218
+ })
219
+ );
220
+ async function handleSend(content, files, model) {
221
+ if (!activeConversationId.value || !currentConversation.value) {
222
+ const conversation = await createConversation({
223
+ model: model ?? selectedModel.value
224
+ });
225
+ if (!conversation)
226
+ return;
227
+ updateConversationId(conversation.id);
228
+ await ensureConversationLoaded(conversation.id);
229
+ if (!currentConversation.value) {
230
+ statusToast.update({ text: "Erro ao carregar conversa", icon: "i-ph-warning" });
231
+ return;
232
+ }
233
+ }
234
+ if (!currentConversation.value)
235
+ return;
236
+ await sendMessage(content, files.length > 0 ? files : void 0, model);
237
+ }
238
+ async function handleRetry(messageId) {
239
+ await retryMessage(messageId);
240
+ }
241
+ async function handleNewConversation() {
242
+ resetConversation();
243
+ }
244
+ function handleTabChange(tab) {
245
+ activeTab.value = tab;
246
+ if (tab === "chat")
247
+ closeFilesPanel();
248
+ }
249
+ const isEditing = ref(false);
250
+ const editTitle = ref("");
251
+ const justStartedEditing = ref(false);
252
+ const showDebugModal = ref(false);
253
+ const debugSessionId = computed(() => currentConversation.value?.threadSessionId ?? "Sess\xE3o ainda n\xE3o criada");
254
+ function startEditing() {
255
+ editTitle.value = displayTitle.value;
256
+ isEditing.value = true;
257
+ justStartedEditing.value = true;
258
+ setTimeout(() => {
259
+ justStartedEditing.value = false;
260
+ }, 100);
261
+ }
262
+ async function saveTitle() {
263
+ if (justStartedEditing.value)
264
+ return;
265
+ const trimmed = editTitle.value.trim();
266
+ if (trimmed && trimmed !== currentConversation.value?.title && currentConversation.value) {
267
+ optimisticTitle.value = trimmed;
268
+ const success = await renameConversation(currentConversation.value.id, trimmed);
269
+ if (!success)
270
+ optimisticTitle.value = null;
271
+ }
272
+ isEditing.value = false;
273
+ justStartedEditing.value = false;
274
+ }
275
+ function cancelEditing() {
276
+ isEditing.value = false;
277
+ editTitle.value = "";
278
+ justStartedEditing.value = false;
279
+ }
280
+ const copiedToClipboard = ref(false);
281
+ async function handleShare() {
282
+ try {
283
+ await navigator.clipboard.writeText(window.location.href);
284
+ copiedToClipboard.value = true;
285
+ statusToast.update({ text: "Link copiado", icon: "i-ph-check" });
286
+ setTimeout(() => {
287
+ copiedToClipboard.value = false;
288
+ }, 2e3);
289
+ } catch {
290
+ statusToast.update({ text: "Erro ao copiar link", icon: "i-ph-warning" });
291
+ }
292
+ }
293
+ async function handleDuplicate() {
294
+ if (!currentConversation.value)
295
+ return;
296
+ const duplicated = await duplicateConversation(currentConversation.value.id);
297
+ if (duplicated) {
298
+ updateConversationId(duplicated.id);
299
+ await ensureConversationLoaded(duplicated.id);
300
+ }
301
+ }
302
+ async function handleExport() {
303
+ if (!currentConversation.value)
304
+ return;
305
+ try {
306
+ const conversation = await $fetch(
307
+ chatApi.path(`/conversations/${currentConversation.value.id}`),
308
+ chatApi.withChatHeaders()
309
+ );
310
+ exportConversationToMarkdown(conversation);
311
+ } catch (err) {
312
+ console.error("Failed to export conversation:", err);
313
+ }
314
+ }
315
+ const showDeleteModal = ref(false);
316
+ async function handleDelete() {
317
+ if (!currentConversation.value)
318
+ return;
319
+ showDeleteModal.value = false;
320
+ const deleted = await deleteConversation(currentConversation.value.id);
321
+ if (deleted) {
322
+ await handleNewConversation();
323
+ }
324
+ }
325
+ onBeforeUnmount(() => {
326
+ clearConversation();
327
+ });
328
+ </script>
329
+
330
+ <template>
331
+ <div ref="dropZoneRef" h-full flex bg-white relative>
332
+ <!-- Sidebar -->
333
+ <div
334
+ v-if="!hideSidebar"
335
+ w-240px h-full flex="~ col" flex-shrink-0
336
+ bg-neutral-50 b-r=".5px neutral-200"
337
+ >
338
+ <div px-12px pt-16px pb-8px>
339
+ <button
340
+ flex items-center justify-center gap-6px
341
+ h-32px px-12px w-full
342
+ bg-white b=".5px neutral-300" rounded-10px
343
+ hover:bg-neutral-50 transition-colors cursor-pointer
344
+ @click="handleNewConversation"
345
+ >
346
+ <span i-ph-chat-circle text-12px text-gray-900 />
347
+ <span text-14px font-semibold text-neutral-900 tracking="-.15px" leading-18px>
348
+ Nova conversa
349
+ </span>
350
+ </button>
351
+ </div>
352
+
353
+ <div flex-1 overflow-y-auto px-4px>
354
+ <div v-if="visibleConversations.length === 0" p-16px text-center>
355
+ <p text-14px text-neutral-400>
356
+ Nenhuma conversa ainda
357
+ </p>
358
+ </div>
359
+ <div v-else flex="~ col" gap-1px px-8px py-8px>
360
+ <button
361
+ v-for="conv in visibleConversations"
362
+ :key="conv.id"
363
+ flex items-center gap-8px h-32px px-8px rounded-8px
364
+ w-full text-left truncate transition-colors cursor-pointer
365
+ :class="conv.id === activeConversationId ? 'bg-neutral-200' : 'hover:bg-neutral-100'"
366
+ @click="openConversation(conv.id)"
367
+ >
368
+ <span text-13px text-neutral-700 truncate>{{ conv.title || "Nova conversa" }}</span>
369
+ </button>
370
+ </div>
371
+ </div>
372
+ </div>
373
+
374
+ <!-- Main content -->
375
+ <div flex-1 h-full flex="~ col" overflow-hidden relative style="--chat-panel-offset: 0px">
376
+ <div v-if="loading && currentConversation" class="loading-bar" />
377
+
378
+ <ChatTopbar
379
+ v-if="currentConversation"
380
+ :title="displayTitle"
381
+ :creator-name="conversationCreator?.name ?? void 0"
382
+ :creator-email="currentConversation.createdBy ?? void 0"
383
+ :creator-image="conversationCreator?.image ?? void 0"
384
+ :updated-at="currentConversation.updatedAt"
385
+ :is-editing="isEditing"
386
+ :edit-title="editTitle"
387
+ :generating-title="generatingTitle"
388
+ :files-count="filesCount"
389
+ :active-tab="activeTab"
390
+ :show-outdated-badge="showOutdatedBadge"
391
+ :show-usage-tab="resolvedFeatures.showUsageTab"
392
+ :show-debug-option="resolvedFeatures.showDebugOption"
393
+ @update:is-editing="isEditing = $event"
394
+ @update:edit-title="editTitle = $event"
395
+ @save-title="saveTitle"
396
+ @cancel-editing="cancelEditing"
397
+ @rename="startEditing"
398
+ @duplicate="handleDuplicate"
399
+ @export="handleExport"
400
+ @copy-link="handleShare"
401
+ @debug="showDebugModal = true"
402
+ @delete="showDeleteModal = true"
403
+ @tab-change="handleTabChange"
404
+ />
405
+
406
+ <div
407
+ v-if="showOutdatedBanner"
408
+ mt-64px flex items-center h-36px px-12px bg="#FFF1D8"
409
+ >
410
+ <div flex items-center gap-8px flex-1>
411
+ <span i-ph-warning text-12px text-gray-900 shrink-0 />
412
+ <span text-12px font-580 text-gray-900 leading-16px>
413
+ Configurações do workspace alteradas
414
+ </span>
415
+ <span text-12px text-gray-700 leading-16px>
416
+ Inicie uma nova conversa para usar as configurações atualizadas
417
+ </span>
418
+ </div>
419
+ <div flex items-center gap-24px shrink-0>
420
+ <button
421
+ flex items-center gap-4px px-10px py-4px
422
+ b=".5px gray-500" rounded-8px
423
+ class="hover:bg-white/50" transition-colors
424
+ @click="handleNewConversation"
425
+ >
426
+ <span i-ph-plus text-12px text-gray-900 />
427
+ <span text-12px font-580 text-gray-900 leading-16px>Nova conversa</span>
428
+ </button>
429
+ <button
430
+ flex items-center justify-center
431
+ class="hover:bg-black/5" transition-colors rounded-4px
432
+ @click="dismissOutdatedBanner"
433
+ >
434
+ <span i-ph-x text-12px text-gray-900 />
435
+ </button>
436
+ </div>
437
+ </div>
438
+
439
+ <template v-if="activeTab === 'files' && currentConversation">
440
+ <ChatFilesView :conversation-id="currentConversation.id" />
441
+ </template>
442
+
443
+ <template v-else-if="activeTab === 'usage' && resolvedFeatures.showUsageTab && currentConversation">
444
+ <ChatUsageView
445
+ :conversation-id="currentConversation.id"
446
+ :created-at="currentConversation.createdAt"
447
+ :updated-at="currentConversation.updatedAt"
448
+ />
449
+ </template>
450
+
451
+ <template v-else-if="loading">
452
+ <div flex-1 pt-64px />
453
+ <ChatMessageInput
454
+ v-model:model="selectedModel"
455
+ :disabled="true"
456
+ />
457
+ </template>
458
+
459
+ <template v-else-if="!hasMessages">
460
+ <div
461
+ flex-1 flex="~ col" items-center justify-center gap-40px px-24px
462
+ :class="currentConversation ? 'pt-64px' : ''"
463
+ >
464
+ <div flex="~ col" items-center gap-8px text-center>
465
+ <h1 text-24px font-semibold text-gray-800 leading-28px tracking="-.8px">
466
+ Olá, {{ currentUser?.name?.split(" ")[0] ?? "usu\xE1rio" }}
467
+ </h1>
468
+ <p text-16px text-gray-500 leading-20px tracking="-.2px">
469
+ Como posso te ajudar hoje?
470
+ </p>
471
+ </div>
472
+ <ChatMessageInput
473
+ ref="messageInputRef"
474
+ v-model:model="selectedModel"
475
+ :disabled="hasPendingMessage"
476
+ :loading="hasPendingMessage"
477
+ :creator-name="currentUser?.name ?? void 0"
478
+ :creator-email="currentConversation?.createdBy ?? currentUser?.email ?? void 0"
479
+ :creator-image="currentUser?.image ?? void 0"
480
+ :messages="messages"
481
+ :conversation-files="conversationFiles"
482
+ :workspace-settings="effectiveWorkspaceSettings"
483
+ centered
484
+ @send="handleSend"
485
+ @cancel="cancelConversation"
486
+ />
487
+ </div>
488
+ </template>
489
+
490
+ <template v-else>
491
+ <ChatMessageList
492
+ :messages="messages"
493
+ @retry="handleRetry"
494
+ />
495
+ <ChatMessageInput
496
+ ref="messageInputRef"
497
+ v-model:model="selectedModel"
498
+ :disabled="hasPendingMessage"
499
+ :loading="hasPendingMessage"
500
+ :creator-name="currentUser?.name ?? void 0"
501
+ :creator-email="currentConversation?.createdBy ?? currentUser?.email ?? void 0"
502
+ :creator-image="currentUser?.image ?? void 0"
503
+ :messages="messages"
504
+ :conversation-files="conversationFiles"
505
+ :workspace-settings="effectiveWorkspaceSettings"
506
+ has-disclaimer
507
+ @send="handleSend"
508
+ @cancel="cancelConversation"
509
+ />
510
+ <p text-center text-12px font-400 leading-16px text-tertiary my-8px>
511
+ As respostas podem conter erros. Verifique documentos originais.
512
+ </p>
513
+ </template>
514
+
515
+ <Transition name="fade">
516
+ <div
517
+ v-if="isDragging"
518
+ class="absolute inset-0 z-50 flex items-center justify-center bg-white/90 backdrop-blur-sm"
519
+ >
520
+ <div
521
+ flex="~ col" items-center gap-16px p-40px rounded-24px
522
+ border="2 dashed gray-300" bg-gray-50
523
+ >
524
+ <div w-64px h-64px rounded-full bg-gray-100 flex items-center justify-center>
525
+ <span i-ph-upload-simple text-32px text-gray-500 />
526
+ </div>
527
+ <div text-center>
528
+ <p text-18px font-semibold text-gray-800>
529
+ Solte o arquivo aqui
530
+ </p>
531
+ <p text-14px text-gray-500 mt-4px>
532
+ O arquivo será anexado à sua mensagem
533
+ </p>
534
+ </div>
535
+ </div>
536
+ </div>
537
+ </Transition>
538
+
539
+ <TelaConfirmationModal
540
+ v-model:open="showDeleteModal"
541
+ title="Excluir conversa"
542
+ variant="danger"
543
+ confirm-button-text="Excluir"
544
+ cancel-button-text="Cancelar"
545
+ @confirm="handleDelete"
546
+ @cancel="showDeleteModal = false"
547
+ >
548
+ Tem certeza que deseja excluir esta conversa? Esta ação não pode ser desfeita.
549
+ </TelaConfirmationModal>
550
+
551
+ <TelaModal
552
+ :model-value="showDebugModal"
553
+ title="Debug"
554
+ hide-dividers
555
+ compact
556
+ class="w-520px!"
557
+ @close="showDebugModal = false"
558
+ >
559
+ <div flex="~ col" w-full my-24px gap-24px>
560
+ <div flex="~ col" gap-4px w-full>
561
+ <p text-14px font-580 text-gray-700 leading-18px>
562
+ Chat Id
563
+ </p>
564
+ <div
565
+ px-12px py-10px
566
+ rounded-8px
567
+ bg-gray-50
568
+ justify-between
569
+ flex items-center
570
+ border="0.5px gray-200"
571
+ >
572
+ <p text-13px text-gray-700 break-all leading-18px>
573
+ {{ activeConversationId ?? "Conversa ainda n\xE3o criada" }}
574
+ </p>
575
+ <TelaCopyButton :content="activeConversationId ?? ''" />
576
+ </div>
577
+ </div>
578
+ <div flex="~ col" gap-4px w-full>
579
+ <p text-14px font-580 text-gray-700 leading-18px>
580
+ Thread Session Id (Agent API)
581
+ </p>
582
+ <div
583
+ px-12px py-10px
584
+ rounded-8px
585
+ bg-gray-50
586
+ justify-between
587
+ flex items-center
588
+ border="0.5px gray-200"
589
+ >
590
+ <p text-13px text-gray-700 break-all leading-18px>
591
+ {{ debugSessionId }}
592
+ </p>
593
+ <TelaCopyButton :content="debugSessionId" />
594
+ </div>
595
+ </div>
596
+ </div>
597
+ </TelaModal>
598
+ </div>
599
+ </div>
600
+ </template>
601
+
602
+ <style scoped>
603
+ .loading-bar{animation:loading-pulse 1.5s ease-in-out infinite;background:linear-gradient(90deg,transparent,#ea580b,#fb923c,#fdba74,transparent);background-size:200% 100%;height:4px;left:0;position:absolute;right:0;top:0;z-index:100}@keyframes loading-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.fade-enter-active,.fade-leave-active{transition:opacity .2s ease}.fade-enter-from,.fade-leave-to{opacity:0}
604
+ </style>
@@ -0,0 +1,19 @@
1
+ import { type ChatActor, type ChatFeatureConfig } from '../../utils/tela-chat.js';
2
+ type EmbedUser = ChatActor;
3
+ type __VLS_Props = {
4
+ conversationId?: string | null;
5
+ initialConversationId?: string | null;
6
+ hideSidebar?: boolean;
7
+ user?: EmbedUser | null;
8
+ features?: Partial<ChatFeatureConfig>;
9
+ };
10
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
11
+ "update:conversationId": (value: string | null) => any;
12
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
13
+ "onUpdate:conversationId"?: ((value: string | null) => any) | undefined;
14
+ }>, {
15
+ initialConversationId: string | null;
16
+ hideSidebar: boolean;
17
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
+ declare const _default: typeof __VLS_export;
19
+ export default _default;
@@ -0,0 +1,4 @@
1
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="16" height="16" rx="2" fill="#3C3C3C" />
3
+ <path d="M3.7 4.15C3.7 3.79 3.99 3.5 4.35 3.5H11.65C12.01 3.5 12.3 3.79 12.3 4.15V10.35C12.3 10.71 12.01 11 11.65 11H8.75L5.85 13.45V11H4.35C3.99 11 3.7 10.71 3.7 10.35V4.15Z" fill="white" />
4
+ </svg>
@@ -0,0 +1,9 @@
1
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M0 8C0 5.19974 0 3.79961 0.544967 2.73005C1.02433 1.78924 1.78924 1.02433 2.73005 0.544967C3.79961 0 5.19974 0 8 0C10.8003 0 12.2004 0 13.27 0.544967C14.2108 1.02433 14.9757 1.78924 15.455 2.73005C16 3.79961 16 5.19974 16 8C16 10.8003 16 12.2004 15.455 13.27C14.9757 14.2108 14.2108 14.9757 13.27 15.455C12.2004 16 10.8003 16 8 16C5.19974 16 3.79961 16 2.73005 15.455C1.78924 14.9757 1.02433 14.2108 0.544967 13.27C0 12.2004 0 10.8003 0 8Z" fill="#FFB800"/>
3
+ <rect x="6.5" y="3" width="3" height="1.5" rx="0.3" fill="white"/>
4
+ <rect x="6.5" y="5" width="3" height="1.5" rx="0.3" fill="#CC9400"/>
5
+ <rect x="6.5" y="7" width="3" height="1.5" rx="0.3" fill="white"/>
6
+ <rect x="6.5" y="9" width="3" height="1.5" rx="0.3" fill="#CC9400"/>
7
+ <rect x="7" y="11" width="2" height="2" rx="0.5" fill="white"/>
8
+ <rect x="7.5" y="11.5" width="1" height="1" rx="0.2" fill="#CC9400"/>
9
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M0 8C0 5.19974 0 3.79961 0.544967 2.73005C1.02433 1.78924 1.78924 1.02433 2.73005 0.544967C3.79961 0 5.19974 0 8 0C10.8003 0 12.2004 0 13.27 0.544967C14.2108 1.02433 14.9757 1.78924 15.455 2.73005C16 3.79961 16 5.19974 16 8C16 10.8003 16 12.2004 15.455 13.27C14.9757 14.2108 14.2108 14.9757 13.27 15.455C12.2004 16 10.8003 16 8 16C5.19974 16 3.79961 16 2.73005 15.455C1.78924 14.9757 1.02433 14.2108 0.544967 13.27C0 12.2004 0 10.8003 0 8Z" fill="#148EB4"/>
3
+ <path d="M6.125 3.0752C6.23772 3.0752 6.34608 3.11952 6.42578 3.19922C6.50548 3.27892 6.5498 3.38728 6.5498 3.5V12.5C6.5498 12.6127 6.50548 12.7211 6.42578 12.8008C6.34608 12.8805 6.23772 12.9248 6.125 12.9248C6.01228 12.9248 5.90392 12.8805 5.82422 12.8008C5.74452 12.7211 5.7002 12.6127 5.7002 12.5V3.5C5.7002 3.38728 5.74452 3.27892 5.82422 3.19922C5.90392 3.11952 6.01228 3.0752 6.125 3.0752ZM8 4.5752C8.11272 4.5752 8.22108 4.61952 8.30078 4.69922C8.38048 4.77892 8.4248 4.88728 8.4248 5V11C8.4248 11.1127 8.38048 11.2211 8.30078 11.3008C8.22108 11.3805 8.11272 11.4248 8 11.4248C7.88728 11.4248 7.77892 11.3805 7.69922 11.3008C7.61952 11.2211 7.5752 11.1127 7.5752 11V5C7.5752 4.88728 7.61952 4.77892 7.69922 4.69922C7.77892 4.61952 7.88728 4.5752 8 4.5752ZM11.75 5.3252C11.8627 5.3252 11.9711 5.36952 12.0508 5.44922C12.1305 5.52892 12.1748 5.63728 12.1748 5.75V10.25C12.1748 10.3627 12.1305 10.4711 12.0508 10.5508C11.9711 10.6305 11.8627 10.6748 11.75 10.6748C11.6373 10.6748 11.5289 10.6305 11.4492 10.5508C11.3695 10.4711 11.3252 10.3627 11.3252 10.25V5.75C11.3252 5.63728 11.3695 5.52892 11.4492 5.44922C11.5289 5.36952 11.6373 5.3252 11.75 5.3252ZM4.25 6.0752C4.36272 6.0752 4.47108 6.11952 4.55078 6.19922C4.63048 6.27892 4.6748 6.38728 4.6748 6.5V9.5C4.6748 9.61272 4.63048 9.72108 4.55078 9.80078C4.47108 9.88048 4.36272 9.9248 4.25 9.9248C4.13728 9.9248 4.02892 9.88048 3.94922 9.80078C3.86952 9.72108 3.8252 9.61272 3.8252 9.5V6.5C3.8252 6.38728 3.86952 6.27892 3.94922 6.19922C4.02892 6.11952 4.13728 6.0752 4.25 6.0752ZM9.875 6.0752C9.98772 6.0752 10.0961 6.11952 10.1758 6.19922C10.2555 6.27892 10.2998 6.38728 10.2998 6.5V9.5C10.2998 9.61272 10.2555 9.72108 10.1758 9.80078C10.0961 9.88048 9.98772 9.9248 9.875 9.9248C9.76228 9.9248 9.65392 9.88048 9.57422 9.80078C9.49452 9.72108 9.4502 9.61272 9.4502 9.5V6.5C9.4502 6.38728 9.49452 6.27892 9.57422 6.19922C9.65392 6.11952 9.76228 6.0752 9.875 6.0752Z" fill="white" stroke="white" stroke-width="0.1"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M0 8C0 5.19974 0 3.79961 0.544967 2.73005C1.02433 1.78924 1.78924 1.02433 2.73005 0.544967C3.79961 0 5.19974 0 8 0C10.8003 0 12.2004 0 13.27 0.544967C14.2108 1.02433 14.9757 1.78924 15.455 2.73005C16 3.79961 16 5.19974 16 8C16 10.8003 16 12.2004 15.455 13.27C14.9757 14.2108 14.2108 14.9757 13.27 15.455C12.2004 16 10.8003 16 8 16C5.19974 16 3.79961 16 2.73005 15.455C1.78924 14.9757 1.02433 14.2108 0.544967 13.27C0 12.2004 0 10.8003 0 8Z" fill="#A8B9CC"/>
3
+ <path d="M11 5.5C10.3 4.6 9.2 4 8 4C5.8 4 4 5.8 4 8C4 10.2 5.8 12 8 12C9.2 12 10.3 11.4 11 10.5" stroke="white" stroke-width="1.5" stroke-linecap="round"/>
4
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M0 8C0 5.19974 0 3.79961 0.544967 2.73005C1.02433 1.78924 1.78924 1.02433 2.73005 0.544967C3.79961 0 5.19974 0 8 0C10.8003 0 12.2004 0 13.27 0.544967C14.2108 1.02433 14.9757 1.78924 15.455 2.73005C16 3.79961 16 5.19974 16 8C16 10.8003 16 12.2004 15.455 13.27C14.9757 14.2108 14.2108 14.9757 13.27 15.455C12.2004 16 10.8003 16 8 16C5.19974 16 3.79961 16 2.73005 15.455C1.78924 14.9757 1.02433 14.2108 0.544967 13.27C0 12.2004 0 10.8003 0 8Z" fill="#00599C"/>
3
+ <path d="M8.5 5.5C7.9 4.6 6.9 4 5.8 4C3.9 4 2.3 5.8 2.3 8C2.3 10.2 3.9 12 5.8 12C6.9 12 7.9 11.4 8.5 10.5" stroke="white" stroke-width="1.2" stroke-linecap="round"/>
4
+ <path d="M10.5 7V9M9.5 8H11.5" stroke="white" stroke-width="1" stroke-linecap="round"/>
5
+ <path d="M13.5 7V9M12.5 8H14.5" stroke="white" stroke-width="1" stroke-linecap="round"/>
6
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M0 8C0 5.19974 0 3.79961 0.544967 2.73005C1.02433 1.78924 1.78924 1.02433 2.73005 0.544967C3.79961 0 5.19974 0 8 0C10.8003 0 12.2004 0 13.27 0.544967C14.2108 1.02433 14.9757 1.78924 15.455 2.73005C16 3.79961 16 5.19974 16 8C16 10.8003 16 12.2004 15.455 13.27C14.9757 14.2108 14.2108 14.9757 13.27 15.455C12.2004 16 10.8003 16 8 16C5.19974 16 3.79961 16 2.73005 15.455C1.78924 14.9757 1.02433 14.2108 0.544967 13.27C0 12.2004 0 10.8003 0 8Z" fill="#264DE4"/>
3
+ <path d="M4 4L4.7 11.5L8 12.5L11.3 11.5L12 4H4ZM10.5 5.5L10.4 6.5H6.6L6.7 7.5H10.3L10 11L8 11.5L6 11L5.9 9.5H6.9L6.95 10.3L8 10.5L9.05 10.3L9.15 8.5H5.8L5.5 5.5H10.5Z" fill="white"/>
4
+ </svg>