@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,223 @@
1
+ <script setup>
2
+ import { formatRelativeTime } from "../../utils/format-time";
3
+ import { capitalizeFirst } from "../../utils/string";
4
+ const props = defineProps({
5
+ title: { type: String, required: true },
6
+ creatorName: { type: String, required: false },
7
+ creatorEmail: { type: String, required: false },
8
+ creatorImage: { type: String, required: false },
9
+ updatedAt: { type: [String, Date], required: true },
10
+ isEditing: { type: Boolean, required: true },
11
+ editTitle: { type: String, required: true },
12
+ generatingTitle: { type: Boolean, required: false },
13
+ filesCount: { type: Number, required: false },
14
+ activeTab: { type: String, required: false },
15
+ showOutdatedBadge: { type: Boolean, required: false },
16
+ showUsageTab: { type: Boolean, required: false },
17
+ showDebugOption: { type: Boolean, required: false }
18
+ });
19
+ const emit = defineEmits(["update:isEditing", "update:editTitle", "saveTitle", "cancelEditing", "rename", "duplicate", "export", "copyLink", "debug", "delete", "tabChange"]);
20
+ const titleInputRef = ref(null);
21
+ const currentTab = computed(() => props.activeTab ?? "chat");
22
+ const headerMenuItems = computed(() => {
23
+ const items = [
24
+ {
25
+ label: "Renomear",
26
+ icon: "i-ph-pencil-simple",
27
+ click: () => emit("rename")
28
+ },
29
+ {
30
+ label: "Duplicar",
31
+ icon: "i-ph-copy",
32
+ click: () => emit("duplicate")
33
+ },
34
+ {
35
+ label: "Exportar",
36
+ icon: "i-ph-download-simple",
37
+ click: () => emit("export")
38
+ },
39
+ {
40
+ label: "Copiar link",
41
+ icon: "i-ph-link",
42
+ click: () => emit("copyLink")
43
+ }
44
+ ];
45
+ if (props.showDebugOption) {
46
+ items.push({
47
+ label: "Debug",
48
+ icon: "i-ph-bug",
49
+ click: () => emit("debug")
50
+ });
51
+ }
52
+ items.push({
53
+ label: "Excluir",
54
+ icon: "i-ph-trash",
55
+ color: "negative",
56
+ click: () => emit("delete")
57
+ });
58
+ return items;
59
+ });
60
+ function handleTitleKeydown(event) {
61
+ if (event.key === "Enter") {
62
+ event.preventDefault();
63
+ emit("saveTitle");
64
+ } else if (event.key === "Escape") {
65
+ event.preventDefault();
66
+ emit("cancelEditing");
67
+ }
68
+ }
69
+ watch(() => props.isEditing, (editing) => {
70
+ if (editing) {
71
+ nextTick(() => {
72
+ titleInputRef.value?.focus();
73
+ titleInputRef.value?.select();
74
+ });
75
+ }
76
+ });
77
+ </script>
78
+
79
+ <template>
80
+ <div
81
+ flex items-center gap-16px
82
+ pl-24px pr-16px h-64px
83
+ b-b=".5px solid rgba(0,0,0,0.08)"
84
+ bg="white/94"
85
+ backdrop-blur-sm
86
+ absolute top-0 right-0 z-10
87
+ :style="{ left: 'var(--chat-panel-offset)' }"
88
+ >
89
+ <div flex="~ col 1" gap-4px min-w-0>
90
+ <input
91
+ v-if="isEditing"
92
+ ref="titleInputRef"
93
+ :value="editTitle"
94
+ type="text"
95
+ heading-h4-semibold text-primary
96
+ bg-white border border-gray-200 rounded-6px px-8px py-2px
97
+ outline-none focus:border-gray-400
98
+ @input="emit('update:editTitle', $event.target.value)"
99
+ @keydown="handleTitleKeydown"
100
+ @blur="emit('saveTitle')"
101
+ >
102
+ <p v-else text-16px font-580 text-primary leading-20px tracking="-.2px" truncate>
103
+ {{ capitalizeFirst(title) }}<span v-if="generatingTitle" class="typing-cursor">|</span>
104
+ </p>
105
+
106
+ <div flex items-center gap-8px>
107
+ <div flex items-center gap-4px>
108
+ <div flex items-center pr-2px>
109
+ <div
110
+ w-16px h-16px rounded-full overflow-hidden flex-shrink-0
111
+ b="2px white"
112
+ >
113
+ <img
114
+ v-if="creatorImage"
115
+ :src="creatorImage"
116
+ :alt="creatorName ?? 'Usu\xE1rio'"
117
+ w-full h-full object-cover
118
+ >
119
+ <div v-else w-full h-full bg-gray-200 flex items-center justify-center>
120
+ <span text-8px text-gray-500 font-medium>
121
+ {{ (creatorName ?? creatorEmail ?? "U").charAt(0).toUpperCase() }}
122
+ </span>
123
+ </div>
124
+ </div>
125
+ </div>
126
+ <span text-12px text-secondary leading-16px truncate>
127
+ {{ creatorName ?? creatorEmail ?? "Usu\xE1rio" }}
128
+ </span>
129
+ </div>
130
+ <span text-12px text-tertiary leading-16px>
131
+ Atualizado {{ formatRelativeTime(updatedAt) }}
132
+ </span>
133
+ </div>
134
+ </div>
135
+
136
+ <div flex gap-2px items-start rounded-10px shrink-0>
137
+ <button
138
+ flex gap-8px items-center px-12px py-7px rounded-10px
139
+ :class="currentTab === 'chat' ? 'bg-neutral-100' : 'hover:bg-neutral-50'"
140
+ @click="emit('tabChange', 'chat')"
141
+ >
142
+ <span
143
+ text-14px font-580 leading-18px tracking="-.15px"
144
+ :class="currentTab === 'chat' ? 'text-gray-900' : 'text-gray-500'"
145
+ >
146
+ Chat
147
+ </span>
148
+ </button>
149
+
150
+ <button
151
+ flex gap-8px items-center px-12px py-7px rounded-10px
152
+ :class="currentTab === 'files' ? 'bg-neutral-100' : 'hover:bg-neutral-50'"
153
+ @click="emit('tabChange', 'files')"
154
+ >
155
+ <span
156
+ text-14px font-580 leading-18px tracking="-.15px"
157
+ :class="currentTab === 'files' ? 'text-gray-900' : 'text-gray-500'"
158
+ >
159
+ Arquivos
160
+ </span>
161
+ <div
162
+ v-if="filesCount !== void 0 && filesCount > 0"
163
+ bg-gray-200 rounded-5px px-5px py-3px
164
+ flex items-center justify-center
165
+ >
166
+ <span text-9px font-580 text-secondary leading-10px tracking-1px uppercase>
167
+ {{ filesCount }}
168
+ </span>
169
+ </div>
170
+ </button>
171
+
172
+ <button
173
+ v-if="showUsageTab"
174
+ flex gap-8px items-center px-12px py-7px rounded-10px
175
+ :class="currentTab === 'usage' ? 'bg-neutral-100' : 'hover:bg-neutral-50'"
176
+ @click="emit('tabChange', 'usage')"
177
+ >
178
+ <span
179
+ text-14px font-580 leading-18px tracking="-.15px"
180
+ :class="currentTab === 'usage' ? 'text-gray-900' : 'text-gray-500'"
181
+ >
182
+ Uso
183
+ </span>
184
+ </button>
185
+ </div>
186
+
187
+ <div flex="~ 1" items-center justify-end gap-12px min-w-0>
188
+ <TelaTooltip v-if="showOutdatedBadge">
189
+ <div
190
+ flex items-center justify-center
191
+ px-5px py-3px
192
+ bg="#e8e8e8" rounded-5px
193
+ cursor-default
194
+ >
195
+ <span text-9px font-580 text-gray-500 leading-10px tracking-1px uppercase whitespace-nowrap>
196
+ Chat Desatualizado
197
+ </span>
198
+ </div>
199
+ <template #content>
200
+ <div max-w-240px text-center>
201
+ Inicie uma nova conversa para usar as configurações atualizadas do workspace
202
+ </div>
203
+ </template>
204
+ </TelaTooltip>
205
+
206
+ <TelaDropdownMenu :items="headerMenuItems" align="end">
207
+ <button
208
+ flex items-center justify-center
209
+ w-32px h-32px rounded-10px
210
+ bg-gray-80
211
+ hover:bg-gray-100
212
+ transition-colors
213
+ >
214
+ <div i-ph-dots-three text-20px text-gray-900 />
215
+ </button>
216
+ </TelaDropdownMenu>
217
+ </div>
218
+ </div>
219
+ </template>
220
+
221
+ <style scoped>
222
+ .typing-cursor{animation:blink .7s infinite;color:#6b7280;font-weight:400}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}
223
+ </style>
@@ -0,0 +1,43 @@
1
+ import type { TopbarTab } from '../../types/chat.js';
2
+ type __VLS_Props = {
3
+ title: string;
4
+ creatorName?: string;
5
+ creatorEmail?: string;
6
+ creatorImage?: string;
7
+ updatedAt: string | Date;
8
+ isEditing: boolean;
9
+ editTitle: string;
10
+ generatingTitle?: boolean;
11
+ filesCount?: number;
12
+ activeTab?: TopbarTab;
13
+ showOutdatedBadge?: boolean;
14
+ showUsageTab?: boolean;
15
+ showDebugOption?: boolean;
16
+ };
17
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
18
+ saveTitle: () => any;
19
+ cancelEditing: () => any;
20
+ "update:isEditing": (value: boolean) => any;
21
+ "update:editTitle": (value: string) => any;
22
+ rename: () => any;
23
+ duplicate: () => any;
24
+ export: () => any;
25
+ copyLink: () => any;
26
+ debug: () => any;
27
+ delete: () => any;
28
+ tabChange: (tab: TopbarTab) => any;
29
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
30
+ onSaveTitle?: (() => any) | undefined;
31
+ onCancelEditing?: (() => any) | undefined;
32
+ "onUpdate:isEditing"?: ((value: boolean) => any) | undefined;
33
+ "onUpdate:editTitle"?: ((value: string) => any) | undefined;
34
+ onRename?: (() => any) | undefined;
35
+ onDuplicate?: (() => any) | undefined;
36
+ onExport?: (() => any) | undefined;
37
+ onCopyLink?: (() => any) | undefined;
38
+ onDebug?: (() => any) | undefined;
39
+ onDelete?: (() => any) | undefined;
40
+ onTabChange?: ((tab: TopbarTab) => any) | undefined;
41
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
42
+ declare const _default: typeof __VLS_export;
43
+ export default _default;
@@ -0,0 +1,8 @@
1
+ type __VLS_Props = {
2
+ conversationId: string;
3
+ createdAt?: string | Date;
4
+ updatedAt?: string | Date;
5
+ };
6
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
7
+ declare const _default: typeof __VLS_export;
8
+ export default _default;
@@ -0,0 +1,393 @@
1
+ <script setup>
2
+ import { formatTokenCount, formatCost, formatCredits, formatModelName } from "../../utils/calculate-usage";
3
+ import { formatDateWithTime } from "../../utils/format-time";
4
+ const props = defineProps({
5
+ conversationId: { type: String, required: true },
6
+ createdAt: { type: [String, Date], required: false },
7
+ updatedAt: { type: [String, Date], required: false }
8
+ });
9
+ const chatApi = useChatApi();
10
+ const usageData = ref(null);
11
+ const billing = ref(null);
12
+ const loading = ref(false);
13
+ const error = ref(null);
14
+ function formatBillingCost(cost) {
15
+ if (!billing.value || billing.value.mode === "credits") {
16
+ return formatCredits(cost);
17
+ }
18
+ return formatCost(cost);
19
+ }
20
+ async function fetchUsage() {
21
+ if (!props.conversationId)
22
+ return;
23
+ loading.value = true;
24
+ error.value = null;
25
+ try {
26
+ const response = await $fetch(
27
+ chatApi.path(`/conversations/${props.conversationId}/usage`),
28
+ chatApi.withChatHeaders()
29
+ );
30
+ if (response.error) {
31
+ error.value = response.error;
32
+ } else {
33
+ usageData.value = response.usage;
34
+ billing.value = response.billing;
35
+ }
36
+ } catch (err) {
37
+ console.error("Failed to fetch usage data:", err);
38
+ error.value = "Falha ao carregar dados de uso";
39
+ } finally {
40
+ loading.value = false;
41
+ }
42
+ }
43
+ onMounted(fetchUsage);
44
+ watch(() => props.conversationId, fetchUsage);
45
+ const cacheInsight = computed(() => {
46
+ if (!usageData.value)
47
+ return { percentage: 0, reusedTokens: 0, storedTokens: 0, hasData: false };
48
+ const hasData = usageData.value.tokens.cacheRead > 0 || usageData.value.tokens.cacheCreation > 0;
49
+ return {
50
+ percentage: Math.round(usageData.value.metrics.cacheHitRate * 100),
51
+ reusedTokens: usageData.value.tokens.cacheRead,
52
+ storedTokens: usageData.value.tokens.cacheCreation,
53
+ hasData
54
+ };
55
+ });
56
+ const costBreakdown = computed(() => {
57
+ if (!usageData.value)
58
+ return [];
59
+ const total = usageData.value.cost.total;
60
+ return [
61
+ {
62
+ label: "Envio",
63
+ tooltip: "Texto enviado ao modelo: perguntas, contexto e instru\xE7\xF5es",
64
+ tokens: usageData.value.tokens.prompt,
65
+ cost: usageData.value.cost.prompt,
66
+ percentage: total > 0 ? Math.round(usageData.value.cost.prompt / total * 100) : 0
67
+ },
68
+ {
69
+ label: "Respostas",
70
+ tooltip: "Texto gerado pelo modelo",
71
+ tokens: usageData.value.tokens.completion,
72
+ cost: usageData.value.cost.completion,
73
+ percentage: total > 0 ? Math.round(usageData.value.cost.completion / total * 100) : 0
74
+ }
75
+ ];
76
+ });
77
+ const modelRows = computed(() => {
78
+ if (!usageData.value)
79
+ return [];
80
+ const totalCost = usageData.value.cost.total;
81
+ return usageData.value.models.map((m) => {
82
+ const totalTokens = m.inputTokens + m.outputTokens + m.cacheReadTokens + m.cacheCreationTokens;
83
+ return {
84
+ modelId: m.model,
85
+ modelName: formatModelName(m.model),
86
+ tokens: formatTokenCount(totalTokens),
87
+ cost: formatBillingCost(m.cost),
88
+ costShare: totalCost > 0 ? m.cost / totalCost * 100 : 0
89
+ };
90
+ });
91
+ });
92
+ const costBarSegments = computed(() => {
93
+ if (!usageData.value || usageData.value.cost.total === 0)
94
+ return [];
95
+ const total = usageData.value.cost.total;
96
+ return [
97
+ {
98
+ label: "Envio",
99
+ percentage: usageData.value.cost.prompt / total * 100,
100
+ colorClass: "bg-indigo-400"
101
+ },
102
+ {
103
+ label: "Respostas",
104
+ percentage: usageData.value.cost.completion / total * 100,
105
+ colorClass: "bg-amber-400"
106
+ }
107
+ ];
108
+ });
109
+ </script>
110
+
111
+ <template>
112
+ <div flex="~ col" gap-24px px-48px py-32px mt-64px overflow-y-auto h-full>
113
+ <div v-if="loading" flex="~ col" items-center justify-center h-300px gap-16px>
114
+ <span i-ph-spinner animate-spin text-32px text-tertiary />
115
+ <p body-14-regular text-tertiary>
116
+ Carregando dados de uso...
117
+ </p>
118
+ </div>
119
+
120
+ <div v-else-if="error" flex="~ col" items-center justify-center h-300px gap-16px>
121
+ <span i-ph-warning text-32px text-warning />
122
+ <p body-14-regular text-tertiary>
123
+ {{ error }}
124
+ </p>
125
+ <button
126
+ px-16px py-8px
127
+ bg-muted rounded-8px
128
+ body-14-regular text-primary
129
+ hover:bg-lowered transition cursor-pointer
130
+ @click="fetchUsage"
131
+ >
132
+ Tentar novamente
133
+ </button>
134
+ </div>
135
+
136
+ <div v-else-if="!usageData" flex="~ col" items-center justify-center h-300px gap-16px>
137
+ <span i-ph-chart-bar text-32px text-subtle />
138
+ <p body-14-regular text-tertiary>
139
+ Nenhum dado de uso disponível ainda
140
+ </p>
141
+ </div>
142
+
143
+ <template v-else>
144
+ <!-- Top section: 2 columns -->
145
+ <div flex gap-24px items-start>
146
+ <!-- Left column: Custo total + metadata -->
147
+ <div flex="~ col 1" gap-26px min-w-200px>
148
+ <div flex="~ col" gap-4px>
149
+ <span body-12-regular text-secondary>Custo total</span>
150
+ <span heading-h2-semibold text-primary>
151
+ {{ formatBillingCost(usageData.cost.total) }}
152
+ </span>
153
+ </div>
154
+
155
+ <div flex="~ col" gap-8px>
156
+ <div flex items-center justify-between>
157
+ <span flex items-center gap-4px body-12-regular text-secondary>
158
+ Tokens utilizados
159
+ <TelaTooltip content="Unidade de medida do texto processado pela IA" :delay-duration="300">
160
+ <span inline-flex items-center mt-3px>
161
+ <span i-ph-info w-12px h-12px text-tertiary />
162
+ </span>
163
+ </TelaTooltip>
164
+ </span>
165
+ <span body-12-semibold text-primary>{{ formatTokenCount(usageData.tokens.total) }}</span>
166
+ </div>
167
+ <div flex items-center justify-between>
168
+ <span body-12-regular text-secondary>Data de criação</span>
169
+ <span body-12-semibold text-primary>{{ formatDateWithTime(createdAt) }}</span>
170
+ </div>
171
+ <div flex items-center justify-between>
172
+ <span body-12-regular text-secondary>Último uso</span>
173
+ <span body-12-semibold text-primary>{{ formatDateWithTime(updatedAt) }}</span>
174
+ </div>
175
+ <div v-if="usageData.metrics.webSearchRequests > 0 || usageData.metrics.webFetchRequests > 0" flex items-center justify-between>
176
+ <span body-12-regular text-secondary>Buscas na web</span>
177
+ <span body-12-semibold text-primary>{{ usageData.metrics.webSearchRequests + usageData.metrics.webFetchRequests }}</span>
178
+ </div>
179
+ </div>
180
+ </div>
181
+
182
+ <div border-l-0.5px border-subtle self-stretch />
183
+
184
+ <!-- Right column: Cost breakdown + Cache insight -->
185
+ <div flex="~ col 1" gap-24px min-w-240px>
186
+ <!-- Cost breakdown -->
187
+ <div flex="~ col" gap-16px>
188
+ <span heading-h5-semibold text-primary>
189
+ Detalhamento de custos
190
+ </span>
191
+
192
+ <div flex="~ col" gap-8px>
193
+ <div
194
+ v-for="item in costBreakdown"
195
+ :key="item.label"
196
+ flex items-center justify-between
197
+ >
198
+ <span flex items-center gap-4px body-12-regular text-secondary>
199
+ {{ item.label }}
200
+ <TelaTooltip :content="item.tooltip" :delay-duration="300">
201
+ <span inline-flex items-center mt-3px>
202
+ <span i-ph-info w-12px h-12px text-tertiary />
203
+ </span>
204
+ </TelaTooltip>
205
+ </span>
206
+ <div flex gap-8px items-center body-12-regular text-right>
207
+ <span text-tertiary>{{ formatTokenCount(item.tokens) }} tokens</span>
208
+ <span body-12-semibold text-primary>{{ formatBillingCost(item.cost) }}</span>
209
+ <span text-tertiary>({{ item.percentage }}%)</span>
210
+ </div>
211
+ </div>
212
+ </div>
213
+
214
+ <div v-if="costBarSegments.length > 0" flex="~ col" gap-8px>
215
+ <div flex h-8px rounded-full overflow-hidden bg-muted>
216
+ <div
217
+ v-for="seg in costBarSegments"
218
+ :key="seg.label"
219
+ :class="seg.colorClass"
220
+ :style="{ width: `${Math.max(seg.percentage, 1)}%` }"
221
+ h-full transition-all duration-300
222
+ />
223
+ </div>
224
+ <div flex gap-12px>
225
+ <div
226
+ v-for="seg in costBarSegments"
227
+ :key="seg.label"
228
+ flex gap-4px items-center
229
+ >
230
+ <div w-6px h-6px rounded-full :class="seg.colorClass" />
231
+ <span body-11-regular text-tertiary>{{ seg.label }}</span>
232
+ </div>
233
+ </div>
234
+ </div>
235
+ </div>
236
+
237
+ <!-- Cache insight -->
238
+ <template v-if="cacheInsight.hasData">
239
+ <div border-t-0.5px border-subtle />
240
+
241
+ <div flex="~ col">
242
+ <div flex="~ col" gap-4px>
243
+ <div flex items-baseline gap-6px>
244
+ <span heading-h2-semibold text-primary>
245
+ {{ cacheInsight.percentage }}%
246
+ </span>
247
+ <span body-13-medium text-secondary>
248
+ do contexto foi reutilizado
249
+ </span>
250
+ </div>
251
+ <span body-11-regular text-tertiary>
252
+ Contexto reutilizado reduz o custo de processamento
253
+ </span>
254
+ </div>
255
+
256
+ <span body-11-regular text-tertiary mt-16px mb-6px>
257
+ {{ formatTokenCount(cacheInsight.reusedTokens) }} tokens reutilizados · {{ formatTokenCount(cacheInsight.storedTokens) }} tokens novos
258
+ </span>
259
+
260
+ <div flex="~ col" gap-8px>
261
+ <div flex h-8px rounded-full overflow-hidden bg-emerald-300>
262
+ <div
263
+ :style="{ width: `${cacheInsight.percentage}%` }"
264
+ bg-purple-400 h-full transition-all duration-300
265
+ />
266
+ </div>
267
+ <div flex gap-12px>
268
+ <div flex gap-4px items-center>
269
+ <div w-6px h-6px rounded-full bg-purple-400 />
270
+ <span body-11-regular text-tertiary>Reutilizado</span>
271
+ </div>
272
+ <div flex gap-4px items-center>
273
+ <div w-6px h-6px rounded-full bg-emerald-300 />
274
+ <span body-11-regular text-tertiary>Novo</span>
275
+ </div>
276
+ </div>
277
+ </div>
278
+ </div>
279
+ </template>
280
+ </div>
281
+ </div>
282
+
283
+ <!-- Bottom section: Model table with proportion bars -->
284
+ <div v-if="usageData.models.length > 0" flex="~ col" gap-8px mt-24px>
285
+ <div
286
+ rounded-12px border-0.5px border overflow-hidden
287
+ >
288
+ <TelaTable :has-scroll-area="false">
289
+ <TelaTableHeader>
290
+ <TelaTableRow class="hover:bg-transparent!">
291
+ <TelaTableHead
292
+ h-56px px-12px
293
+ class="body-12-semibold! text-primary! border-b-0.5px! border!"
294
+ >
295
+ <div flex="~ col" gap-2px>
296
+ <span>Modelo</span>
297
+ <span body-11-regular text-tertiary>Modelos auxiliares podem ser utilizados internamente para auxiliar o processamento</span>
298
+ </div>
299
+ </TelaTableHead>
300
+ <TelaTableHead
301
+ h-56px px-12px
302
+ class="body-12-semibold! text-primary! border-b-0.5px! border!"
303
+ >
304
+ <span flex items-center gap-4px>
305
+ Tokens
306
+ <TelaTooltip content="Volume total de texto processado" :delay-duration="300">
307
+ <span inline-flex items-center mt-3px>
308
+ <span i-ph-info w-12px h-12px text-tertiary />
309
+ </span>
310
+ </TelaTooltip>
311
+ </span>
312
+ </TelaTableHead>
313
+ <TelaTableHead
314
+ h-56px px-12px
315
+ class="body-12-semibold! text-primary! border-b-0.5px! border!"
316
+ >
317
+ Custo <span v-if="billing" class="body-12-regular! text-secondary!">
318
+ ({{ billing.mode === "credits" ? "cr\xE9ditos" : "USD" }})
319
+ </span>
320
+ </TelaTableHead>
321
+ <TelaTableHead
322
+ h-56px px-12px w-120px
323
+ class="body-12-semibold! text-primary! border-b-0.5px! border!"
324
+ />
325
+ </TelaTableRow>
326
+ </TelaTableHeader>
327
+ <TelaTableBody>
328
+ <TelaTableRow
329
+ v-for="(row, idx) in modelRows"
330
+ :key="row.modelId"
331
+ bg-white
332
+ class="h-64px! hover:bg-subtle!"
333
+ :class="idx < modelRows.length - 1 ? 'border-b-0.5px! border!' : 'border-b-0!'"
334
+ >
335
+ <TelaTableCell class="body-14-regular! text-primary! px-12px! py-10px!">
336
+ <span flex items-center gap-6px>
337
+ <IconsAnthropic w-14px h-14px flex-shrink-0 text-primary />
338
+ {{ row.modelName }}
339
+ <TelaTooltip :content="row.modelId" :delay-duration="300">
340
+ <span inline-flex items-center>
341
+ <span i-ph-info w-12px h-12px text-tertiary />
342
+ </span>
343
+ </TelaTooltip>
344
+ </span>
345
+ </TelaTableCell>
346
+ <TelaTableCell class="body-14-regular! text-primary! px-12px! py-10px!">
347
+ {{ row.tokens }}
348
+ </TelaTableCell>
349
+ <TelaTableCell class="body-14-regular! text-primary! px-12px! py-10px!">
350
+ {{ row.cost }}
351
+ </TelaTableCell>
352
+ <TelaTableCell class="px-12px! py-10px!">
353
+ <div flex items-center h-full>
354
+ <div
355
+ h-6px rounded-full bg-indigo-400
356
+ :style="{ width: `${Math.max(row.costShare, 2)}%` }"
357
+ transition-all duration-300
358
+ />
359
+ </div>
360
+ </TelaTableCell>
361
+ </TelaTableRow>
362
+ </TelaTableBody>
363
+ </TelaTable>
364
+ </div>
365
+ </div>
366
+
367
+ <div
368
+ v-else
369
+ flex="~ col 1" items-center justify-center gap-24px
370
+ border-0.5px border-subtle rounded-16px
371
+ min-h-300px
372
+ >
373
+ <div
374
+ w-88px h-64px rounded-10px
375
+ bg-white border-0.5px border
376
+ flex items-center justify-center
377
+ shadow-sm
378
+ >
379
+ <span i-ph-chart-bar text-32px text-subtle />
380
+ </div>
381
+
382
+ <div flex="~ col" gap-8px items-center text-center>
383
+ <p heading-h3-semibold text-tertiary>
384
+ Em breve
385
+ </p>
386
+ <p body-14-regular text-subtle>
387
+ Métricas detalhadas
388
+ </p>
389
+ </div>
390
+ </div>
391
+ </template>
392
+ </div>
393
+ </template>
@@ -0,0 +1,8 @@
1
+ type __VLS_Props = {
2
+ conversationId: string;
3
+ createdAt?: string | Date;
4
+ updatedAt?: string | Date;
5
+ };
6
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
7
+ declare const _default: typeof __VLS_export;
8
+ export default _default;