@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,9 @@
1
+ import type { H3Event } from 'h3';
2
+ import { type AppSession } from '#chat-runtime/server/utils/auth';
3
+ export type ChatContext = {
4
+ user: AppSession['user'];
5
+ workspaceId: string;
6
+ };
7
+ export declare function resolveRequestedWorkspaceId(requestedWorkspaceId: string | null | undefined): string | null;
8
+ export declare function resolveChatContextFromSession(session: AppSession, requestedWorkspaceId?: string | null): ChatContext;
9
+ export declare function resolveChatContext(event: H3Event): ChatContext;
@@ -0,0 +1,24 @@
1
+ import { createError, getHeader } from "h3";
2
+ import { requireUser } from "#chat-runtime/server/utils/auth";
3
+ export function resolveRequestedWorkspaceId(requestedWorkspaceId) {
4
+ const normalized = requestedWorkspaceId?.trim();
5
+ return normalized || null;
6
+ }
7
+ export function resolveChatContextFromSession(session, requestedWorkspaceId) {
8
+ const normalizedRequestedWorkspaceId = resolveRequestedWorkspaceId(requestedWorkspaceId);
9
+ if (normalizedRequestedWorkspaceId && normalizedRequestedWorkspaceId !== session.workspace.id) {
10
+ throw createError({
11
+ statusCode: 403,
12
+ statusMessage: "Forbidden"
13
+ });
14
+ }
15
+ return {
16
+ user: session.user,
17
+ workspaceId: normalizedRequestedWorkspaceId ?? session.workspace.id
18
+ };
19
+ }
20
+ export function resolveChatContext(event) {
21
+ const session = requireUser(event);
22
+ const requestedWorkspaceId = getHeader(event, "x-chat-workspace-id");
23
+ return resolveChatContextFromSession(session, requestedWorkspaceId);
24
+ }
@@ -0,0 +1,4 @@
1
+ import type { KnowledgeSource } from '#chat-runtime/types/chat';
2
+ export declare function renderSystemPrompt(vaultUrl: string): string;
3
+ export declare function truncateTitle(content: string, maxLength?: number): string;
4
+ export declare function buildMessageWithContext(content: string, systemMessage: string | null, knowledgeSources: KnowledgeSource[] | null, isFirstMessage: boolean, renderedSystemPrompt: string): string;
@@ -0,0 +1,39 @@
1
+ import { readChatPromptTemplate } from "#chat-runtime/server/utils/chat-prompts";
2
+ import { getVaultHost } from "#chat-runtime/server/utils/vault";
3
+ const BASE_SYSTEM_PROMPT_TEMPLATE = readChatPromptTemplate("base-system.md");
4
+ const KNOWLEDGE_SOURCES_TEMPLATE = readChatPromptTemplate("knowledge-sources.md");
5
+ export function renderSystemPrompt(vaultUrl) {
6
+ return BASE_SYSTEM_PROMPT_TEMPLATE.replaceAll("{{VAULT_HOST}}", getVaultHost(vaultUrl));
7
+ }
8
+ export function truncateTitle(content, maxLength = 50) {
9
+ const firstLine = content.split("\n")[0]?.trim() ?? "";
10
+ if (firstLine.length <= maxLength)
11
+ return firstLine;
12
+ return `${firstLine.slice(0, maxLength)}...`;
13
+ }
14
+ function buildKnowledgeSourcesContext(knowledgeSources) {
15
+ if (!knowledgeSources || knowledgeSources.length === 0)
16
+ return "";
17
+ const sources = knowledgeSources.map((source) => {
18
+ return `- **${source.name}** (ID: \`${source.id}\`)${source.description ? ` - ${source.description}` : ""}${source.taskCount ? ` [${source.taskCount} documentos processados]` : ""}`;
19
+ }).join("\n");
20
+ return KNOWLEDGE_SOURCES_TEMPLATE.replace("{{SOURCES}}", sources);
21
+ }
22
+ export function buildMessageWithContext(content, systemMessage, knowledgeSources, isFirstMessage, renderedSystemPrompt) {
23
+ if (!isFirstMessage)
24
+ return content;
25
+ const knowledgeContext = buildKnowledgeSourcesContext(knowledgeSources);
26
+ const parts = [renderedSystemPrompt];
27
+ if (systemMessage) {
28
+ parts.push(`# Instru\xE7\xF5es do Usu\xE1rio
29
+ ${systemMessage}`);
30
+ }
31
+ if (knowledgeContext) {
32
+ parts.push(knowledgeContext);
33
+ }
34
+ return `<system_context>
35
+ ${parts.join("\n\n")}
36
+ </system_context>
37
+
38
+ ${content}`;
39
+ }
@@ -0,0 +1,7 @@
1
+ declare const chatPromptTemplates: {
2
+ readonly 'base-system.md': any;
3
+ readonly 'knowledge-sources.md': any;
4
+ };
5
+ export type ChatPromptTemplateName = keyof typeof chatPromptTemplates;
6
+ export declare function readChatPromptTemplate(fileName: ChatPromptTemplateName): string;
7
+ export {};
@@ -0,0 +1,9 @@
1
+ import baseSystemPromptTemplate from "#chat-runtime/server/prompts/base-system";
2
+ import knowledgeSourcesPromptTemplate from "#chat-runtime/server/prompts/knowledge-sources";
3
+ const chatPromptTemplates = {
4
+ "base-system.md": baseSystemPromptTemplate,
5
+ "knowledge-sources.md": knowledgeSourcesPromptTemplate
6
+ };
7
+ export function readChatPromptTemplate(fileName) {
8
+ return chatPromptTemplates[fileName];
9
+ }
@@ -0,0 +1,16 @@
1
+ import type { H3Event } from 'h3';
2
+ import { type useDb } from '#chat-runtime/server/db';
3
+ import type { ResolvedWorkspaceSettings } from '#chat-runtime/server/db/schema';
4
+ import type { ChatContext } from './chat-context.js';
5
+ export type ResolvedWorkspaceSettingsInput = Partial<ResolvedWorkspaceSettings>;
6
+ type DbInstance = ReturnType<typeof useDb>;
7
+ export declare function normalizeResolvedWorkspaceSettings(settings: ResolvedWorkspaceSettingsInput | null | undefined, fallbackUpdatedAt?: Date | string): ResolvedWorkspaceSettings;
8
+ export declare function serializeResolvedWorkspaceSettings(settings: ResolvedWorkspaceSettings): ResolvedWorkspaceSettings;
9
+ export declare function getConversationAppliedSettings(conversation: {
10
+ appliedSettingsSnapshot?: ResolvedWorkspaceSettingsInput | null;
11
+ }, trustedSettings?: ResolvedWorkspaceSettingsInput | null): ResolvedWorkspaceSettings;
12
+ export declare function hasMaterialWorkspaceSettingsMismatch(currentSettings: ResolvedWorkspaceSettingsInput | null | undefined, trustedSettings: ResolvedWorkspaceSettingsInput | null | undefined): boolean;
13
+ export declare function resolveDefaultWorkspaceSettings(db: DbInstance, workspaceId: string): Promise<ResolvedWorkspaceSettings>;
14
+ export declare function resolveWorkspaceSettings(event: H3Event, context: ChatContext, db: DbInstance): Promise<ResolvedWorkspaceSettings>;
15
+ export declare function getWorkspaceSettingsUpdatedAt(settings: ResolvedWorkspaceSettings): Date;
16
+ export {};
@@ -0,0 +1,115 @@
1
+ import { isDeepStrictEqual } from "node:util";
2
+ import { createError } from "h3";
3
+ import { eq } from "drizzle-orm";
4
+ import { z } from "zod";
5
+ import { schema } from "#chat-runtime/server/db";
6
+ import registeredWorkspaceSettingsResolver from "#chat-workspace-settings-resolver";
7
+ import { rowToExternalSkill } from "#chat-runtime/server/utils/external-skills";
8
+ import { logger } from "#chat-runtime/server/utils/logger";
9
+ const contextFileSchema = z.object({
10
+ url: z.string(),
11
+ name: z.string(),
12
+ mimeType: z.string().optional(),
13
+ vaultReference: z.string().optional()
14
+ });
15
+ const resolvedWorkspaceSettingsSchema = z.object({
16
+ systemMessage: z.string().nullable().optional(),
17
+ contextFiles: z.array(contextFileSchema).nullable().optional(),
18
+ canvasTools: z.array(z.object({ id: z.string() }).passthrough()).nullable().optional(),
19
+ knowledgeSources: z.array(z.object({ id: z.string() }).passthrough()).nullable().optional(),
20
+ externalSkills: z.array(z.object({ ref: z.string(), name: z.string() }).passthrough()).nullable().optional(),
21
+ updatedAt: z.union([z.string(), z.date()]).optional()
22
+ });
23
+ function getRegisteredWorkspaceSettingsResolver() {
24
+ const resolver = registeredWorkspaceSettingsResolver;
25
+ return typeof resolver === "function" ? resolver : null;
26
+ }
27
+ export function normalizeResolvedWorkspaceSettings(settings, fallbackUpdatedAt = /* @__PURE__ */ new Date()) {
28
+ return {
29
+ systemMessage: settings?.systemMessage ?? null,
30
+ contextFiles: settings?.contextFiles ?? null,
31
+ canvasTools: settings?.canvasTools ?? null,
32
+ knowledgeSources: settings?.knowledgeSources ?? null,
33
+ externalSkills: settings?.externalSkills ?? null,
34
+ updatedAt: settings?.updatedAt ?? fallbackUpdatedAt
35
+ };
36
+ }
37
+ export function serializeResolvedWorkspaceSettings(settings) {
38
+ return {
39
+ ...settings,
40
+ updatedAt: settings.updatedAt instanceof Date ? settings.updatedAt.toISOString() : settings.updatedAt
41
+ };
42
+ }
43
+ export function getConversationAppliedSettings(conversation, trustedSettings) {
44
+ if (conversation.appliedSettingsSnapshot) {
45
+ return normalizeResolvedWorkspaceSettings(conversation.appliedSettingsSnapshot);
46
+ }
47
+ return normalizeResolvedWorkspaceSettings(trustedSettings);
48
+ }
49
+ export function hasMaterialWorkspaceSettingsMismatch(currentSettings, trustedSettings) {
50
+ const normalizeForCompare = (settings) => ({
51
+ systemMessage: settings?.systemMessage ?? null,
52
+ contextFiles: settings?.contextFiles ?? null,
53
+ canvasTools: settings?.canvasTools ?? null,
54
+ knowledgeSources: settings?.knowledgeSources ?? null,
55
+ externalSkills: settings?.externalSkills ?? null
56
+ });
57
+ return !isDeepStrictEqual(normalizeForCompare(currentSettings), normalizeForCompare(trustedSettings));
58
+ }
59
+ function parseResolverResult(settings) {
60
+ const parsedSettings = resolvedWorkspaceSettingsSchema.safeParse(settings);
61
+ if (!parsedSettings.success) {
62
+ logger.error({
63
+ issues: parsedSettings.error.issues
64
+ }, "Workspace settings resolver returned an invalid payload");
65
+ throw createError({
66
+ statusCode: 500,
67
+ statusMessage: "Failed to resolve chat workspace settings"
68
+ });
69
+ }
70
+ return normalizeResolvedWorkspaceSettings(parsedSettings.data);
71
+ }
72
+ export async function resolveDefaultWorkspaceSettings(db, workspaceId) {
73
+ const [settings, skillRows] = await Promise.all([
74
+ db.select().from(schema.workspaceSettings).where(eq(schema.workspaceSettings.workspaceId, workspaceId)),
75
+ db.select().from(schema.externalSkills).where(eq(schema.externalSkills.workspaceId, workspaceId))
76
+ ]);
77
+ const baseSettings = settings[0];
78
+ const externalSkills = skillRows.map(rowToExternalSkill);
79
+ if (!baseSettings) {
80
+ return normalizeResolvedWorkspaceSettings({
81
+ externalSkills: externalSkills.length > 0 ? externalSkills : null
82
+ }, /* @__PURE__ */ new Date(0));
83
+ }
84
+ return normalizeResolvedWorkspaceSettings({
85
+ systemMessage: baseSettings.systemMessage,
86
+ contextFiles: baseSettings.contextFiles,
87
+ canvasTools: baseSettings.canvasTools,
88
+ knowledgeSources: baseSettings.knowledgeSources,
89
+ externalSkills: externalSkills.length > 0 ? externalSkills : null,
90
+ updatedAt: baseSettings.updatedAt
91
+ }, baseSettings.updatedAt);
92
+ }
93
+ export async function resolveWorkspaceSettings(event, context, db) {
94
+ const resolver = getRegisteredWorkspaceSettingsResolver();
95
+ try {
96
+ const result = resolver ? await resolver(event, context) : await resolveDefaultWorkspaceSettings(db, context.workspaceId);
97
+ return parseResolverResult(result);
98
+ } catch (error) {
99
+ if (error && typeof error === "object" && "statusCode" in error) {
100
+ throw error;
101
+ }
102
+ logger.error({
103
+ error,
104
+ workspaceId: context.workspaceId,
105
+ userId: context.user.id
106
+ }, "Workspace settings resolution failed");
107
+ throw createError({
108
+ statusCode: 500,
109
+ statusMessage: "Failed to resolve chat workspace settings"
110
+ });
111
+ }
112
+ }
113
+ export function getWorkspaceSettingsUpdatedAt(settings) {
114
+ return settings.updatedAt instanceof Date ? settings.updatedAt : new Date(settings.updatedAt);
115
+ }
@@ -0,0 +1,2 @@
1
+ import type { ExternalSkill, ExternalSkillRow } from '#chat-runtime/server/db/schema';
2
+ export declare function rowToExternalSkill(row: ExternalSkillRow): ExternalSkill;
@@ -0,0 +1,15 @@
1
+ export function rowToExternalSkill(row) {
2
+ return {
3
+ ref: row.ref,
4
+ name: row.name,
5
+ description: row.description,
6
+ runtime: row.runtime,
7
+ allowedTools: row.allowedTools,
8
+ isPublic: row.isPublic,
9
+ addedBy: {
10
+ userId: row.addedByUserId,
11
+ username: row.addedByUsername
12
+ },
13
+ addedAt: row.addedAt.toISOString()
14
+ };
15
+ }
@@ -0,0 +1,2 @@
1
+ import type { Logger } from 'pino';
2
+ export declare const logger: Logger;
@@ -0,0 +1,12 @@
1
+ import pino from "@meistrari/logger";
2
+ const isDevelopment = process.env.ENVIRONMENT === "development";
3
+ export const logger = pino({
4
+ level: process.env.LOG_LEVEL || "info",
5
+ transport: isDevelopment ? {
6
+ target: "pino-pretty",
7
+ options: {
8
+ messageKey: "message",
9
+ singleLine: true
10
+ }
11
+ } : void 0
12
+ });
@@ -0,0 +1,32 @@
1
+ interface SlackBlock {
2
+ type: string;
3
+ text?: {
4
+ type: string;
5
+ text: string;
6
+ emoji?: boolean;
7
+ };
8
+ elements?: Array<{
9
+ type: string;
10
+ text: string;
11
+ emoji?: boolean;
12
+ }>;
13
+ }
14
+ interface SlackMessage {
15
+ text?: string;
16
+ blocks?: SlackBlock[];
17
+ }
18
+ export interface WorkspaceUsageData {
19
+ workspaceId: string;
20
+ workspaceName: string;
21
+ totalTokens: number;
22
+ totalCost: number;
23
+ rawCost: number;
24
+ promptTokens: number;
25
+ completionTokens: number;
26
+ conversationCount: number;
27
+ userCount: number;
28
+ billingMode: 'plan' | 'credits';
29
+ }
30
+ export declare function sendSlackMessage(webhookUrl: string, message: SlackMessage): Promise<boolean>;
31
+ export declare function formatUsageReport(workspaceUsage: WorkspaceUsageData[], reportDate: Date): SlackMessage;
32
+ export {};
@@ -0,0 +1,102 @@
1
+ import { logger } from "#chat-runtime/server/utils/logger";
2
+ export async function sendSlackMessage(webhookUrl, message) {
3
+ try {
4
+ const response = await fetch(webhookUrl, {
5
+ method: "POST",
6
+ headers: {
7
+ "Content-Type": "application/json"
8
+ },
9
+ body: JSON.stringify(message)
10
+ });
11
+ if (!response.ok) {
12
+ logger.error({ status: response.status, text: await response.text() }, "Slack webhook error");
13
+ return false;
14
+ }
15
+ return true;
16
+ } catch (error) {
17
+ logger.error(error, "Failed to send Slack message");
18
+ return false;
19
+ }
20
+ }
21
+ function formatNumber(num) {
22
+ return num.toLocaleString("en-US");
23
+ }
24
+ function formatCost(cost, billingMode) {
25
+ if (billingMode === "credits") {
26
+ return `${Math.round(cost)} credits`;
27
+ }
28
+ return `$${cost.toFixed(2)}`;
29
+ }
30
+ function formatDate(date) {
31
+ return date.toLocaleDateString("en-US", {
32
+ weekday: "long",
33
+ year: "numeric",
34
+ month: "long",
35
+ day: "numeric"
36
+ });
37
+ }
38
+ export function formatUsageReport(workspaceUsage, reportDate) {
39
+ const blocks = [];
40
+ blocks.push({
41
+ type: "header",
42
+ text: {
43
+ type: "plain_text",
44
+ text: `\u{1F4CA} Chat Usage Report - ${formatDate(reportDate)}`,
45
+ emoji: true
46
+ }
47
+ });
48
+ blocks.push({
49
+ type: "divider"
50
+ });
51
+ let totalTokens = 0;
52
+ let totalRawCost = 0;
53
+ let totalConversations = 0;
54
+ for (const usage of workspaceUsage) {
55
+ totalTokens += usage.totalTokens;
56
+ totalRawCost += usage.rawCost;
57
+ totalConversations += usage.conversationCount;
58
+ const costText = `${formatCost(usage.totalCost, usage.billingMode)} ($${usage.rawCost.toFixed(2)})`;
59
+ blocks.push({
60
+ type: "section",
61
+ text: {
62
+ type: "mrkdwn",
63
+ text: [
64
+ `*${usage.workspaceName}*`,
65
+ `\u251C Tokens: ${formatNumber(usage.totalTokens)} (prompt: ${formatNumber(usage.promptTokens)} / completion: ${formatNumber(usage.completionTokens)})`,
66
+ `\u251C Cost: ${costText}`,
67
+ `\u251C Conversations: ${formatNumber(usage.conversationCount)}`,
68
+ `\u2514 Users: ${formatNumber(usage.userCount)}`
69
+ ].join("\n")
70
+ }
71
+ });
72
+ }
73
+ blocks.push({
74
+ type: "divider"
75
+ });
76
+ blocks.push({
77
+ type: "section",
78
+ text: {
79
+ type: "mrkdwn",
80
+ text: [
81
+ "*Totals*",
82
+ `\u251C Total Tokens: ${formatNumber(totalTokens)}`,
83
+ `\u251C Total Raw Cost: $${totalRawCost.toFixed(2)}`,
84
+ `\u251C Total Conversations: ${formatNumber(totalConversations)}`,
85
+ `\u2514 Workspaces: ${workspaceUsage.length}`
86
+ ].join("\n")
87
+ }
88
+ });
89
+ blocks.push({
90
+ type: "context",
91
+ elements: [
92
+ {
93
+ type: "mrkdwn",
94
+ text: `Report generated at ${(/* @__PURE__ */ new Date()).toISOString()}`
95
+ }
96
+ ]
97
+ });
98
+ return {
99
+ text: `Daily Usage Report - ${formatDate(reportDate)}`,
100
+ blocks
101
+ };
102
+ }
@@ -0,0 +1,2 @@
1
+ import type { H3Event } from 'h3';
2
+ export declare function telaFetch<T>(event: H3Event, path: string, options?: RequestInit): Promise<T>;
@@ -0,0 +1,29 @@
1
+ import { logger } from "#chat-runtime/server/utils/logger";
2
+ export async function telaFetch(event, path, options) {
3
+ const config = useRuntimeConfig();
4
+ const token = event.context.auth?.token;
5
+ if (!token) {
6
+ throw createError({ statusCode: 401, statusMessage: "No auth token" });
7
+ }
8
+ const start = performance.now();
9
+ const response = await fetch(`${config.telaApiUrl}${path}`, {
10
+ ...options,
11
+ headers: {
12
+ "Authorization": `Bearer ${token}`,
13
+ "Content-Type": "application/json",
14
+ ...options?.headers
15
+ }
16
+ });
17
+ if (!response.ok) {
18
+ logger.error({ status: response.status, statusText: response.statusText, path }, "Tela API request failed");
19
+ throw createError({
20
+ statusCode: response.status,
21
+ statusMessage: `Tela API error: ${response.statusText}`
22
+ });
23
+ }
24
+ logger.debug({ path, durationMs: Math.round(performance.now() - start), status: response.status }, "Tela API request succeeded");
25
+ if (response.status === 204 || response.headers.get("content-length") === "0") {
26
+ return void 0;
27
+ }
28
+ return response.json();
29
+ }
@@ -0,0 +1,3 @@
1
+ export declare function getVaultHost(vaultUrl: string): string;
2
+ export declare function isAllowedPermalinkUrl(url: string, vaultUrl: string): boolean;
3
+ export declare function isAllowedRedirectUrl(url: string, vaultS3Bucket?: string): boolean;
@@ -0,0 +1,52 @@
1
+ const KNOWN_VAULT_HOSTS = /* @__PURE__ */ new Set(["vault.tela.com", "api.tela.com", "api.telastaging.com"]);
2
+ const PERMALINK_PATH_RE = /^(?:\/.*)?\/permalinks\/[a-zA-Z0-9_-]+$/;
3
+ export function getVaultHost(vaultUrl) {
4
+ if (!vaultUrl)
5
+ return "vault.tela.com";
6
+ try {
7
+ const url = new URL(vaultUrl);
8
+ const path = url.pathname.replace(/\/+$/, "");
9
+ return path && path !== "/" ? `${url.host}${path}` : url.host;
10
+ } catch {
11
+ return "vault.tela.com";
12
+ }
13
+ }
14
+ function parseVaultHost(vaultUrl) {
15
+ if (!vaultUrl)
16
+ return null;
17
+ try {
18
+ return new URL(vaultUrl).host;
19
+ } catch {
20
+ return null;
21
+ }
22
+ }
23
+ export function isAllowedPermalinkUrl(url, vaultUrl) {
24
+ try {
25
+ const parsed = new URL(url);
26
+ if (parsed.protocol !== "https:")
27
+ return false;
28
+ if (!PERMALINK_PATH_RE.test(parsed.pathname))
29
+ return false;
30
+ const allowedHosts = new Set(KNOWN_VAULT_HOSTS);
31
+ const envHost = parseVaultHost(vaultUrl);
32
+ if (envHost)
33
+ allowedHosts.add(envHost);
34
+ return allowedHosts.has(parsed.host);
35
+ } catch {
36
+ return false;
37
+ }
38
+ }
39
+ export function isAllowedRedirectUrl(url, vaultS3Bucket) {
40
+ try {
41
+ const parsed = new URL(url);
42
+ if (parsed.protocol !== "https:")
43
+ return false;
44
+ if (vaultS3Bucket) {
45
+ const escaped = vaultS3Bucket.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
46
+ return new RegExp(`^${escaped}\\.s3(\\.[a-z0-9-]+)?\\.amazonaws\\.com$`).test(parsed.host);
47
+ }
48
+ return /\.s3(\.[a-z0-9-]+)?\.amazonaws\.com$/.test(parsed.host);
49
+ } catch {
50
+ return false;
51
+ }
52
+ }
@@ -0,0 +1,2 @@
1
+ declare const _default: null;
2
+ export default _default;
@@ -0,0 +1 @@
1
+ export default null;
@@ -0,0 +1,4 @@
1
+ import type { H3Event } from 'h3';
2
+ import { type useDb } from '#chat-runtime/server/db';
3
+ export declare function getWorkspaceSettings(db: ReturnType<typeof useDb>, workspaceId: string): Promise<any>;
4
+ export declare function resolveWorkspaceCredentials(event: H3Event, workspaceId: string): Promise<Record<string, string>>;
@@ -0,0 +1,21 @@
1
+ import { eq } from "drizzle-orm";
2
+ import { schema } from "#chat-runtime/server/db";
3
+ import { telaFetch } from "#chat-runtime/server/utils/tela-api";
4
+ export async function getWorkspaceSettings(db, workspaceId) {
5
+ const [settings] = await db.select().from(schema.workspaceSettings).where(eq(schema.workspaceSettings.workspaceId, workspaceId));
6
+ return settings ?? null;
7
+ }
8
+ export async function resolveWorkspaceCredentials(event, workspaceId) {
9
+ const config = useRuntimeConfig();
10
+ return await telaFetch(
11
+ event,
12
+ `/workspaces/${workspaceId}/credentials/resolve`,
13
+ {
14
+ headers: {
15
+ "X-Service-Name": "chat-app",
16
+ "X-Service-Key": config.chatAppServiceKey,
17
+ "x-data-token": event.context.auth?.token ?? ""
18
+ }
19
+ }
20
+ ) ?? {};
21
+ }