@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,334 @@
1
+ <script setup>
2
+ import { isCodeLike } from "../../utils/code-detection";
3
+ const props = defineProps({
4
+ toolUse: { type: Object, required: true },
5
+ toolResult: { type: Object, required: false },
6
+ isActive: { type: Boolean, required: false }
7
+ });
8
+ const expanded = reactive(/* @__PURE__ */ new Map());
9
+ const resultExpanded = ref(false);
10
+ const name = computed(() => props.toolUse.name ?? "");
11
+ const input = computed(() => props.toolUse.input ?? {});
12
+ const todos = computed(() => {
13
+ const t = input.value?.todos;
14
+ return Array.isArray(t) ? t : [];
15
+ });
16
+ const statusVariant = computed(() => {
17
+ if (props.toolResult) {
18
+ return props.toolResult.isError ? "error" : "completed";
19
+ }
20
+ return "executing";
21
+ });
22
+ const statusLabel = computed(() => {
23
+ if (props.toolResult) {
24
+ return props.toolResult.isError ? "Erro" : "Conclu\xEDdo";
25
+ }
26
+ return "Executando...";
27
+ });
28
+ const hasContent = computed(() => {
29
+ return input.value && Object.keys(input.value).length > 0 || !!props.toolResult;
30
+ });
31
+ function isExpanded(key) {
32
+ return expanded.get(key) ?? false;
33
+ }
34
+ function toggle(key) {
35
+ expanded.set(key, !isExpanded(key));
36
+ }
37
+ function toggleResult() {
38
+ resultExpanded.value = !resultExpanded.value;
39
+ }
40
+ function textForValue(value) {
41
+ if (typeof value === "string")
42
+ return value;
43
+ try {
44
+ return JSON.stringify(value, null, 2);
45
+ } catch {
46
+ return String(value);
47
+ }
48
+ }
49
+ function needsToggle(value) {
50
+ return (textForValue(value) ?? "").length > 500;
51
+ }
52
+ const filePath = computed(() => {
53
+ const fp = props.toolUse.input?.file_path;
54
+ return typeof fp === "string" ? fp : null;
55
+ });
56
+ const markdownFields = /* @__PURE__ */ new Set(["description", "prompt", "message"]);
57
+ function shouldRenderAsMarkdown(key) {
58
+ if (key === "content" && filePath.value) {
59
+ return filePath.value.endsWith(".md");
60
+ }
61
+ return markdownFields.has(key);
62
+ }
63
+ const output = computed(() => props.toolResult?.output ?? "");
64
+ const needsToggleResult = computed(() => output.value.length > 500);
65
+ const isOutputCode = computed(() => isCodeLike(output.value));
66
+ const isEmptyMessage = computed(() => {
67
+ if (!output.value || output.value.trim().length === 0)
68
+ return true;
69
+ const trimmed = output.value.trim().toLowerCase();
70
+ const emptyPatterns = /* @__PURE__ */ new Set([
71
+ "no files found",
72
+ "no matches found",
73
+ "no results",
74
+ "nenhum arquivo",
75
+ "nenhum resultado",
76
+ "n\xE3o encontrado",
77
+ "nothing found",
78
+ "vazio"
79
+ ]);
80
+ return emptyPatterns.has(trimmed);
81
+ });
82
+ </script>
83
+
84
+ <template>
85
+ <div class="bg-subtle rounded-16px border border-gray-200">
86
+ <!-- Header -->
87
+ <div class="px-24px py-24px flex items-center justify-between">
88
+ <h3 class="text-20px font-580 leading-24px tracking-[-0.5px] text-primary truncate">
89
+ {{ name }}
90
+ </h3>
91
+ <TelaStatus :variant="statusVariant" :label="statusLabel" />
92
+ </div>
93
+
94
+ <!-- Content -->
95
+ <div v-if="hasContent" class="px-24px pb-24px space-y-16px">
96
+ <!-- Parameters section -->
97
+ <div v-if="input && Object.keys(input).length > 0">
98
+ <!-- Special handling for TodoWrite tool -->
99
+ <div v-if="name === 'TodoWrite' && todos.length > 0">
100
+ <div class="text-14px font-580 leading-16px tracking-[-0.15px] text-gray-700 mb-2">
101
+ Tarefas
102
+ </div>
103
+ <div class="bg-white rounded-xl border-0.5px border-gray-200 px-3 py-2">
104
+ <div class="space-y-2">
105
+ <div v-for="(todo, index) in todos" :key="index" class="py-2 border-b border-gray-100 last:border-0">
106
+ <div class="flex items-start justify-between">
107
+ <div class="flex-1">
108
+ <div class="text-14px text-primary">
109
+ {{ todo.content }}
110
+ </div>
111
+ </div>
112
+ <TelaStatus
113
+ :variant="todo.status === 'completed' ? 'completed' : todo.status === 'in_progress' ? 'executing' : 'pending-run'"
114
+ :label="todo.status === 'in_progress' ? 'em progresso' : todo.status === 'pending' ? 'pendente' : todo.status === 'completed' ? 'conclu\xEDdo' : todo.status"
115
+ class="ml-3"
116
+ />
117
+ </div>
118
+ </div>
119
+ </div>
120
+ </div>
121
+ </div>
122
+
123
+ <!-- Regular Input Parameters -->
124
+ <div v-else>
125
+ <div class="text-14px font-580 leading-16px tracking-[-0.15px] text-gray-700 mb-2">
126
+ Parâmetros
127
+ </div>
128
+ <div class="space-y-12px">
129
+ <div v-for="(value, key) in input" :key="key">
130
+ <div class="text-14px font-580 leading-16px tracking-[-0.15px] text-gray-700 mb-2">
131
+ {{ key }}
132
+ </div>
133
+
134
+ <!-- String values -->
135
+ <div v-if="typeof value === 'string'">
136
+ <div
137
+ v-if="isCodeLike(value)"
138
+ class="bg-[#1e1e1e] rounded-8px p-12px overflow-auto"
139
+ :style="{ maxHeight: isExpanded(key) ? 'none' : '400px' }"
140
+ >
141
+ <pre class="m-0 text-sm text-gray-300 whitespace-pre-wrap font-mono leading-relaxed break-words overflow-wrap-anywhere"><code>{{ value }}</code></pre>
142
+ <div v-if="needsToggle(value)" class="mt-2 flex justify-center">
143
+ <button type="button" class="text-sm text-gray-400 hover:text-gray-300 flex items-center gap-2" :aria-expanded="isExpanded(key)" @click.prevent="toggle(key)">
144
+ {{ isExpanded(key) ? "Ver menos" : "Ver mais" }}
145
+ <i class="i-ph-caret-down" :style="{ transform: isExpanded(key) ? 'rotate(180deg)' : 'rotate(0deg)', transition: 'transform 0.2s' }" aria-hidden="true" />
146
+ </button>
147
+ </div>
148
+ </div>
149
+ <div v-else class="bg-white rounded-xl border-0.5px border-gray-200 px-3 py-2">
150
+ <div
151
+ :style="{ maxHeight: isExpanded(key) ? 'none' : '400px' }"
152
+ class="tool-use-content overflow-auto"
153
+ >
154
+ <ClientOnly v-if="shouldRenderAsMarkdown(key)">
155
+ <AppMarkdownRender
156
+ :content="value"
157
+ :render-code-blocks-as-pre="true"
158
+ :typewriter="false"
159
+ />
160
+ </ClientOnly>
161
+ <pre v-else class="m-0 text-14px text-primary whitespace-pre-wrap font-mono leading-relaxed break-words overflow-wrap-anywhere">{{ value }}</pre>
162
+ </div>
163
+ <div v-if="needsToggle(value)" class="mt-2 flex justify-center">
164
+ <button type="button" class="text-sm text-primary-600 hover:opacity-80 flex items-center gap-2" :aria-expanded="isExpanded(key)" @click.prevent="toggle(key)">
165
+ {{ isExpanded(key) ? "Ver menos" : "Ver mais" }}
166
+ <i class="i-ph-caret-down" :style="{ transform: isExpanded(key) ? 'rotate(180deg)' : 'rotate(0deg)', transition: 'transform 0.2s' }" aria-hidden="true" />
167
+ </button>
168
+ </div>
169
+ </div>
170
+ </div>
171
+
172
+ <!-- Boolean values -->
173
+ <div v-else-if="typeof value === 'boolean'">
174
+ <div class="bg-white rounded-xl border-0.5px border-gray-200 px-3 py-2">
175
+ <span class="text-14px font-mono text-primary">{{ value ? "true" : "false" }}</span>
176
+ </div>
177
+ </div>
178
+
179
+ <!-- Number values -->
180
+ <div v-else-if="typeof value === 'number'">
181
+ <div class="bg-white rounded-xl border-0.5px border-gray-200 px-3 py-2">
182
+ <span class="text-14px font-mono text-primary">{{ value }}</span>
183
+ </div>
184
+ </div>
185
+
186
+ <!-- Array values -->
187
+ <div v-else-if="Array.isArray(value)">
188
+ <div
189
+ v-if="value.length === 0"
190
+ class="bg-white rounded-xl border-0.5px border-gray-200 px-3 py-2"
191
+ >
192
+ <p class="text-14px text-tertiary m-0">
193
+ Array vazio
194
+ </p>
195
+ </div>
196
+ <div v-else class="bg-white rounded-xl border-0.5px border-gray-200 px-3 py-2">
197
+ <div class="text-xs text-gray-500 mb-2">
198
+ {{ value.length }} itens
199
+ </div>
200
+ <div class="space-y-1">
201
+ <div v-for="(item, index) in value" :key="index" class="text-14px text-primary py-0.5">
202
+ <span class="text-gray-500 mr-2 font-mono">{{ index }}:</span>
203
+ <span class="font-mono">{{ typeof item === "string" ? item : JSON.stringify(item) }}</span>
204
+ </div>
205
+ </div>
206
+ </div>
207
+ </div>
208
+
209
+ <!-- Object values -->
210
+ <div v-else-if="typeof value === 'object' && value !== null">
211
+ <div
212
+ v-if="Object.keys(value).length === 0"
213
+ class="bg-white rounded-xl border-0.5px border-gray-200 px-3 py-2"
214
+ >
215
+ <p class="text-14px text-tertiary m-0">
216
+ Objeto vazio
217
+ </p>
218
+ </div>
219
+ <div v-else class="bg-white rounded-xl border-0.5px border-gray-200 px-3 py-2">
220
+ <div class="text-xs text-gray-500 mb-2">
221
+ {{ Object.keys(value).length }} propriedades
222
+ </div>
223
+ <div
224
+ :style="{ maxHeight: isExpanded(key) ? 'none' : '400px' }"
225
+ class="text-14px text-primary font-mono whitespace-pre-wrap break-words overflow-wrap-anywhere overflow-auto"
226
+ >
227
+ <pre class="m-0 break-words overflow-wrap-anywhere">{{ textForValue(value) }}</pre>
228
+ </div>
229
+ <div v-if="needsToggle(value)" class="mt-2 flex justify-center">
230
+ <button type="button" class="text-sm text-primary-600 hover:opacity-80 flex items-center gap-2" :aria-expanded="isExpanded(key)" @click.prevent="toggle(key)">
231
+ {{ isExpanded(key) ? "Ver menos" : "Ver mais" }}
232
+ <i class="i-ph-caret-down" :style="{ transform: isExpanded(key) ? 'rotate(180deg)' : 'rotate(0deg)', transition: 'transform 0.2s' }" aria-hidden="true" />
233
+ </button>
234
+ </div>
235
+ </div>
236
+ </div>
237
+
238
+ <!-- Null values -->
239
+ <div v-else-if="value === null">
240
+ <div class="bg-white rounded-xl border-0.5px border-gray-200 px-3 py-2">
241
+ <span class="text-14px font-mono text-primary">null</span>
242
+ </div>
243
+ </div>
244
+
245
+ <!-- Fallback for other types -->
246
+ <div v-else class="bg-white rounded-xl border-0.5px border-gray-200 px-3 py-2">
247
+ <div
248
+ :style="{ maxHeight: isExpanded(key) ? 'none' : '400px' }"
249
+ class="overflow-auto"
250
+ >
251
+ <pre class="text-14px text-primary font-mono">{{ textForValue(value) }}</pre>
252
+ </div>
253
+ <div v-if="needsToggle(value)" class="mt-2 flex justify-center">
254
+ <button type="button" class="text-sm text-primary-600 hover:opacity-80 flex items-center gap-2" :aria-expanded="isExpanded(key)" @click.prevent="toggle(key)">
255
+ <i class="i-ph-caret-down" :style="{ transform: isExpanded(key) ? 'rotate(180deg)' : 'rotate(0deg)', transition: 'transform 0.2s' }" aria-hidden="true" />
256
+ {{ isExpanded(key) ? "Ver menos" : "Ver mais" }}
257
+ </button>
258
+ </div>
259
+ </div>
260
+ </div>
261
+ </div>
262
+ </div>
263
+ </div>
264
+
265
+ <!-- Result section -->
266
+ <div v-if="toolResult">
267
+ <div class="text-14px font-580 leading-16px tracking-[-0.15px] text-gray-700 mb-2">
268
+ Resultado
269
+ </div>
270
+ <div
271
+ v-if="isOutputCode"
272
+ class="bg-[#1e1e1e] rounded-8px p-12px overflow-auto"
273
+ :style="{ maxHeight: resultExpanded ? 'none' : '400px' }"
274
+ >
275
+ <pre class="font-mono text-12px text-gray-300 whitespace-pre-wrap break-words m-0"><code>{{ output }}</code></pre>
276
+ <div v-if="needsToggleResult" class="mt-2 flex justify-center">
277
+ <button
278
+ type="button"
279
+ class="text-sm text-gray-400 hover:text-gray-300 flex items-center gap-2"
280
+ :aria-expanded="resultExpanded"
281
+ @click="toggleResult"
282
+ >
283
+ {{ resultExpanded ? "Ver menos" : "Ver mais" }}
284
+ <i
285
+ class="i-ph-caret-down"
286
+ :style="{ transform: resultExpanded ? 'rotate(180deg)' : 'rotate(0deg)', transition: 'transform 0.2s' }"
287
+ aria-hidden="true"
288
+ />
289
+ </button>
290
+ </div>
291
+ </div>
292
+ <div
293
+ v-else-if="isEmptyMessage"
294
+ class="bg-white rounded-xl border-0.5px border-gray-200 px-3 py-2"
295
+ >
296
+ <p class="text-14px text-tertiary m-0">
297
+ {{ output || "Nenhum resultado dispon\xEDvel" }}
298
+ </p>
299
+ </div>
300
+ <div
301
+ v-else
302
+ class="bg-white rounded-xl border-0.5px border-gray-200 px-3 py-2"
303
+ :class="toolResult.isError ? 'text-red-600' : 'text-primary'"
304
+ >
305
+ <div
306
+ :style="{ maxHeight: resultExpanded ? 'none' : '400px' }"
307
+ class="overflow-auto"
308
+ >
309
+ <pre class="m-0 text-14px text-primary whitespace-pre-wrap font-mono leading-relaxed break-words overflow-wrap-anywhere">{{ output }}</pre>
310
+ </div>
311
+ <div v-if="needsToggleResult" class="mt-2 flex justify-center">
312
+ <button
313
+ type="button"
314
+ class="text-sm text-primary-600 hover:opacity-80 flex items-center gap-2"
315
+ :aria-expanded="resultExpanded"
316
+ @click="toggleResult"
317
+ >
318
+ {{ resultExpanded ? "Ver menos" : "Ver mais" }}
319
+ <i
320
+ class="i-ph-caret-down"
321
+ :style="{ transform: resultExpanded ? 'rotate(180deg)' : 'rotate(0deg)', transition: 'transform 0.2s' }"
322
+ aria-hidden="true"
323
+ />
324
+ </button>
325
+ </div>
326
+ </div>
327
+ </div>
328
+ </div>
329
+ </div>
330
+ </template>
331
+
332
+ <style scoped>
333
+ .tool-use-content :deep(.markstream-vue *),.tool-use-content :deep(.markstream-vue){font-size:14px}
334
+ </style>
@@ -0,0 +1,9 @@
1
+ import type { ToolUse, ToolResult } from '../../types/reasoning.js';
2
+ type __VLS_Props = {
3
+ toolUse: ToolUse;
4
+ toolResult?: ToolResult;
5
+ isActive?: boolean;
6
+ };
7
+ 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>;
8
+ declare const _default: typeof __VLS_export;
9
+ export default _default;
@@ -0,0 +1,9 @@
1
+ import type { ToolUse, ToolResult } from '../../types/reasoning.js';
2
+ type __VLS_Props = {
3
+ toolUse: ToolUse;
4
+ toolResult?: ToolResult;
5
+ isActive?: boolean;
6
+ };
7
+ 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>;
8
+ declare const _default: typeof __VLS_export;
9
+ export default _default;
@@ -0,0 +1,259 @@
1
+ <script setup>
2
+ const props = defineProps({
3
+ toolUse: { type: Object, required: true },
4
+ toolResult: { type: Object, required: false },
5
+ isActive: { type: Boolean, required: false }
6
+ });
7
+ const pattern = computed(() => {
8
+ const p = props.toolUse.input?.pattern;
9
+ return typeof p === "string" ? p : "";
10
+ });
11
+ const searchPath = computed(() => {
12
+ const p = props.toolUse.input?.path;
13
+ return typeof p === "string" ? p : ".";
14
+ });
15
+ const shortPath = computed(() => {
16
+ if (!searchPath.value || searchPath.value === ".")
17
+ return "diret\xF3rio atual";
18
+ const parts = searchPath.value.split("/");
19
+ if (parts.length <= 2)
20
+ return searchPath.value;
21
+ return `.../${parts.slice(-2).join("/")}`;
22
+ });
23
+ const globFilter = computed(() => {
24
+ const g = props.toolUse.input?.glob;
25
+ return typeof g === "string" ? g : null;
26
+ });
27
+ const typeFilter = computed(() => {
28
+ const t = props.toolUse.input?.type;
29
+ return typeof t === "string" ? t : null;
30
+ });
31
+ const outputMode = computed(() => {
32
+ const mode = props.toolUse.input?.output_mode;
33
+ return typeof mode === "string" ? mode : "files_with_matches";
34
+ });
35
+ const isCaseInsensitive = computed(() => {
36
+ return props.toolUse.input?.["-i"] === true;
37
+ });
38
+ const matchResults = computed(() => {
39
+ if (!props.toolResult?.output || props.toolResult.isError)
40
+ return [];
41
+ const lines = props.toolResult.output.trim().split("\n").filter((l) => l.trim());
42
+ if (outputMode.value === "files_with_matches") {
43
+ return lines.slice(0, 20).map((line) => ({
44
+ type: "file",
45
+ path: line.trim(),
46
+ fileName: line.trim().split("/").pop() || line.trim()
47
+ }));
48
+ }
49
+ if (outputMode.value === "count") {
50
+ return lines.slice(0, 20).map((line) => {
51
+ const [path, count] = line.split(":");
52
+ return {
53
+ type: "count",
54
+ path: path?.trim() || "",
55
+ fileName: path?.trim().split("/").pop() || "",
56
+ count: Number.parseInt(count || "0", 10)
57
+ };
58
+ });
59
+ }
60
+ const results = [];
61
+ for (const line of lines.slice(0, 30)) {
62
+ const match = line.match(/^(.+?):(\d+):(.*)$/);
63
+ if (match && match[1] && match[2]) {
64
+ const filePath = match[1];
65
+ results.push({
66
+ type: "content",
67
+ path: filePath,
68
+ fileName: filePath.split("/").pop() || filePath,
69
+ lineNum: match[2],
70
+ content: match[3] ?? ""
71
+ });
72
+ }
73
+ }
74
+ return results;
75
+ });
76
+ const totalMatches = computed(() => {
77
+ if (!props.toolResult?.output || props.toolResult.isError)
78
+ return 0;
79
+ const lines = props.toolResult.output.trim().split("\n").filter((l) => l.trim());
80
+ if (outputMode.value === "count") {
81
+ return lines.reduce((acc, line) => {
82
+ const count = Number.parseInt(line.split(":")[1] || "0", 10);
83
+ return acc + count;
84
+ }, 0);
85
+ }
86
+ return lines.length;
87
+ });
88
+ const statusVariant = computed(() => {
89
+ if (props.toolResult) {
90
+ if (props.toolResult.isError)
91
+ return "error";
92
+ if (totalMatches.value === 0)
93
+ return "archived";
94
+ return "completed";
95
+ }
96
+ return "running";
97
+ });
98
+ const statusLabel = computed(() => {
99
+ if (!props.toolResult)
100
+ return "Buscando...";
101
+ if (props.toolResult.isError)
102
+ return void 0;
103
+ if (totalMatches.value === 0)
104
+ return "Nenhum resultado";
105
+ if (outputMode.value === "content")
106
+ return `${totalMatches.value} ocorr\xEAncias`;
107
+ return `${totalMatches.value} arquivos`;
108
+ });
109
+ function highlightMatch(content) {
110
+ if (!pattern.value)
111
+ return content;
112
+ try {
113
+ const flags = isCaseInsensitive.value ? "gi" : "g";
114
+ const regex = new RegExp(`(${pattern.value})`, flags);
115
+ return content.replace(regex, '<mark class="bg-amber-300 text-amber-900 px-1 rounded">$1</mark>');
116
+ } catch {
117
+ return content;
118
+ }
119
+ }
120
+ </script>
121
+
122
+ <template>
123
+ <div class="bg-subtle rounded-16px border border-gray-200">
124
+ <!-- Header -->
125
+ <div class="px-24px py-24px flex items-center justify-between">
126
+ <div class="flex-1 min-w-0">
127
+ <h3 class="text-20px font-580 leading-24px tracking-[-0.5px] text-primary truncate">
128
+ Grep
129
+ </h3>
130
+ <p class="text-12px text-secondary truncate mt-2px">
131
+ <span class="font-mono">{{ pattern.length > 30 ? `${pattern.slice(0, 30)}...` : pattern }}</span>
132
+ <span class="opacity-60"> em {{ shortPath }}</span>
133
+ </p>
134
+ </div>
135
+ <TelaStatus :variant="statusVariant" :label="statusLabel" />
136
+ </div>
137
+
138
+ <!-- Content -->
139
+ <div v-if="toolResult" class="px-24px pb-24px space-y-16px">
140
+ <!-- Search info -->
141
+ <div>
142
+ <div class="text-14px font-580 leading-16px tracking-[-0.15px] text-gray-700 mb-2">
143
+ Busca
144
+ </div>
145
+ <div class="bg-white rounded-xl border-0.5px border-gray-200 px-3 py-2">
146
+ <div class="flex items-center gap-12px flex-wrap">
147
+ <div class="flex items-center gap-6px">
148
+ <div class="i-ph-magnifying-glass text-12px text-gray-500" />
149
+ <code class="text-14px text-primary font-mono">{{ pattern }}</code>
150
+ </div>
151
+ <div class="flex items-center gap-6px">
152
+ <div class="i-ph-folder text-12px text-gray-500" />
153
+ <span class="text-14px text-primary font-mono">{{ searchPath }}</span>
154
+ </div>
155
+ <div v-if="globFilter" class="flex items-center gap-6px">
156
+ <div class="i-ph-funnel text-12px text-gray-500" />
157
+ <span class="text-14px text-primary font-mono">{{ globFilter }}</span>
158
+ </div>
159
+ <div v-if="typeFilter" class="flex items-center gap-6px">
160
+ <div class="i-ph-file-code text-12px text-gray-500" />
161
+ <span class="text-14px text-primary font-mono">.{{ typeFilter }}</span>
162
+ </div>
163
+ <div v-if="isCaseInsensitive" class="flex items-center gap-6px">
164
+ <span class="text-11px text-gray-600">ignora maiúsculas</span>
165
+ </div>
166
+ </div>
167
+ </div>
168
+ </div>
169
+
170
+ <!-- Results -->
171
+ <div v-if="matchResults.length > 0">
172
+ <div class="text-14px font-580 leading-16px tracking-[-0.15px] text-gray-700 mb-2">
173
+ Resultados
174
+ </div>
175
+ <div class="bg-white rounded-xl border-0.5px border-gray-200 px-3 py-2">
176
+ <!-- File list mode -->
177
+ <div v-if="outputMode === 'files_with_matches'" class="space-y-6px">
178
+ <div
179
+ v-for="(result, index) in matchResults"
180
+ :key="index"
181
+ class="flex items-center gap-8px py-6px border-b border-gray-100 last:border-0"
182
+ >
183
+ <div class="i-ph-file-code text-14px text-gray-500" />
184
+ <span class="text-14px text-primary truncate flex-1">{{ result.fileName }}</span>
185
+ <span class="text-12px text-gray-500 font-mono truncate">{{ result.path }}</span>
186
+ </div>
187
+ </div>
188
+
189
+ <!-- Count mode -->
190
+ <div v-else-if="outputMode === 'count'" class="space-y-6px">
191
+ <div
192
+ v-for="(result, index) in matchResults"
193
+ :key="index"
194
+ class="flex items-center gap-8px py-6px border-b border-gray-100 last:border-0"
195
+ >
196
+ <div class="i-ph-file-code text-14px text-gray-500" />
197
+ <span class="text-14px text-primary truncate flex-1">{{ result.fileName }}</span>
198
+ <span class="text-12px font-semibold text-primary bg-gray-100 px-6px py-2px rounded">
199
+ {{ result.count }}
200
+ </span>
201
+ </div>
202
+ </div>
203
+
204
+ <!-- Content mode -->
205
+ <div v-else class="space-y-4px font-mono text-14px">
206
+ <div
207
+ v-for="(result, index) in matchResults"
208
+ :key="index"
209
+ class="flex items-start gap-2px py-4px border-b border-gray-100 last:border-0"
210
+ >
211
+ <div class="flex-shrink-0 px-8px text-gray-500 min-w-60px text-right">
212
+ <div class="text-primary truncate text-12px">
213
+ {{ result.fileName }}
214
+ </div>
215
+ <div class="text-gray-500">
216
+ :{{ result.lineNum }}
217
+ </div>
218
+ </div>
219
+ <div
220
+ class="flex-1 px-8px text-primary overflow-x-auto whitespace-pre"
221
+ v-html="highlightMatch(result.content)"
222
+ />
223
+ </div>
224
+ </div>
225
+
226
+ <div v-if="totalMatches > matchResults.length" class="text-center text-gray-500 text-11px mt-8px pt-8px border-t border-gray-100">
227
+ ... mais {{ totalMatches - matchResults.length }} resultados
228
+ </div>
229
+ </div>
230
+ </div>
231
+
232
+ <!-- No results -->
233
+ <div
234
+ v-else-if="toolResult && !toolResult.isError"
235
+ class="bg-white rounded-xl border-0.5px border-gray-200 px-3 py-2"
236
+ >
237
+ <p class="text-14px text-tertiary m-0">
238
+ Nenhuma correspondência encontrada
239
+ </p>
240
+ </div>
241
+
242
+ <!-- Error message -->
243
+ <div v-if="toolResult?.isError">
244
+ <div class="text-14px font-580 leading-16px tracking-[-0.15px] text-gray-700 mb-2">
245
+ Erro
246
+ </div>
247
+ <div class="bg-white rounded-xl border-0.5px border-gray-200 px-3 py-2">
248
+ <p class="text-14px text-red-600 whitespace-pre-wrap break-words m-0">
249
+ {{ toolResult.output }}
250
+ </p>
251
+ </div>
252
+ </div>
253
+ </div>
254
+ </div>
255
+ </template>
256
+
257
+ <style scoped>
258
+ mark{background-color:#fde68a;border-radius:2px;color:#78350f;padding:1px 2px}
259
+ </style>
@@ -0,0 +1,9 @@
1
+ import type { ToolUse, ToolResult } from '../../types/reasoning.js';
2
+ type __VLS_Props = {
3
+ toolUse: ToolUse;
4
+ toolResult?: ToolResult;
5
+ isActive?: boolean;
6
+ };
7
+ 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>;
8
+ declare const _default: typeof __VLS_export;
9
+ export default _default;
@@ -0,0 +1,14 @@
1
+ import type { MentionItem } from '../../types/chat.js';
2
+ type __VLS_Props = {
3
+ items: MentionItem[];
4
+ highlightedIndex: number;
5
+ trigger: '@' | '/';
6
+ query: string;
7
+ };
8
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
9
+ select: (item: MentionItem) => any;
10
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
11
+ onSelect?: ((item: MentionItem) => any) | undefined;
12
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
+ declare const _default: typeof __VLS_export;
14
+ export default _default;