@larkup/workspace-app 0.0.0-stage → 0.2.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 (440) hide show
  1. package/LICENSE +176 -0
  2. package/README.md +4 -2
  3. package/assets/github.svg +3 -0
  4. package/assets/icons/Confluence.png +0 -0
  5. package/assets/icons/Instagram.png +0 -0
  6. package/assets/icons/Northflank.png +0 -0
  7. package/assets/icons/Salesforce.png +0 -0
  8. package/assets/icons/agentskills.png +0 -0
  9. package/assets/icons/airtable.png +0 -0
  10. package/assets/icons/asana.png +0 -0
  11. package/assets/icons/ashby.png +0 -0
  12. package/assets/icons/audio.png +0 -0
  13. package/assets/icons/aws-kendra.png +0 -0
  14. package/assets/icons/aws.svg +38 -0
  15. package/assets/icons/azure-ai-search.png +0 -0
  16. package/assets/icons/azure.svg +1 -0
  17. package/assets/icons/bigquery.png +0 -0
  18. package/assets/icons/bing.png +0 -0
  19. package/assets/icons/bitbucket.png +0 -0
  20. package/assets/icons/brave.png +0 -0
  21. package/assets/icons/browserbase.png +0 -0
  22. package/assets/icons/calendly.png +0 -0
  23. package/assets/icons/chroma.png +0 -0
  24. package/assets/icons/cloudflare.png +0 -0
  25. package/assets/icons/cohere.svg +30 -0
  26. package/assets/icons/databricks.png +0 -0
  27. package/assets/icons/daytonaio.png +0 -0
  28. package/assets/icons/daytonaio2.png +0 -0
  29. package/assets/icons/deepgram.png +0 -0
  30. package/assets/icons/deepl.png +0 -0
  31. package/assets/icons/digital-ocean.webp +0 -0
  32. package/assets/icons/discord.png +0 -0
  33. package/assets/icons/e2b-2.png +0 -0
  34. package/assets/icons/e2b.png +0 -0
  35. package/assets/icons/elevenlabs.png +0 -0
  36. package/assets/icons/email.png +0 -0
  37. package/assets/icons/exa.png +0 -0
  38. package/assets/icons/excel.png +0 -0
  39. package/assets/icons/fal.png +0 -0
  40. package/assets/icons/firecrawl.png +0 -0
  41. package/assets/icons/firecrawl2.png +0 -0
  42. package/assets/icons/flyio.jpeg +0 -0
  43. package/assets/icons/gcp.svg +1 -0
  44. package/assets/icons/gemini.svg +1 -0
  45. package/assets/icons/gmail.png +0 -0
  46. package/assets/icons/google-analytics.png +0 -0
  47. package/assets/icons/google-calender.png +0 -0
  48. package/assets/icons/google-docs.png +0 -0
  49. package/assets/icons/google-drive.png +0 -0
  50. package/assets/icons/google-maps.png +0 -0
  51. package/assets/icons/google-meet.png +0 -0
  52. package/assets/icons/google-sheets.png +0 -0
  53. package/assets/icons/google-slides.png +0 -0
  54. package/assets/icons/google-tasks.png +0 -0
  55. package/assets/icons/google.png +0 -0
  56. package/assets/icons/grok.png +0 -0
  57. package/assets/icons/hubspot.png +0 -0
  58. package/assets/icons/image.png +0 -0
  59. package/assets/icons/jina.svg +1 -0
  60. package/assets/icons/jira.png +0 -0
  61. package/assets/icons/lancedb2.png +0 -0
  62. package/assets/icons/linear.png +0 -0
  63. package/assets/icons/linux.png +0 -0
  64. package/assets/icons/looker.png +0 -0
  65. package/assets/icons/luma.png +0 -0
  66. package/assets/icons/mac.png +0 -0
  67. package/assets/icons/markdown.png +0 -0
  68. package/assets/icons/mcp.png +0 -0
  69. package/assets/icons/mcp.svg +1 -0
  70. package/assets/icons/messenger.svg +1 -0
  71. package/assets/icons/microsoft-intra.png +0 -0
  72. package/assets/icons/microsoft-onenote.png +0 -0
  73. package/assets/icons/microsoft-planner.png +0 -0
  74. package/assets/icons/microsoft-teams.png +0 -0
  75. package/assets/icons/miro.png +0 -0
  76. package/assets/icons/mistral.svg +469 -0
  77. package/assets/icons/modal.png +0 -0
  78. package/assets/icons/ngrok.png +0 -0
  79. package/assets/icons/nomic.png +0 -0
  80. package/assets/icons/onedrive.png +0 -0
  81. package/assets/icons/openai.svg +1 -0
  82. package/assets/icons/outlook-calendar.png +0 -0
  83. package/assets/icons/outlook-email.png +0 -0
  84. package/assets/icons/outlook.png +0 -0
  85. package/assets/icons/pdf.png +0 -0
  86. package/assets/icons/personio.png +0 -0
  87. package/assets/icons/pgvector2.png +0 -0
  88. package/assets/icons/phone.png +0 -0
  89. package/assets/icons/pinecone.png +0 -0
  90. package/assets/icons/pipedrive.png +0 -0
  91. package/assets/icons/power-pi.png +0 -0
  92. package/assets/icons/pylon.png +0 -0
  93. package/assets/icons/python.png +0 -0
  94. package/assets/icons/qdrant.svg +35 -0
  95. package/assets/icons/revai.png +0 -0
  96. package/assets/icons/revai.svg +1 -0
  97. package/assets/icons/sap.png +0 -0
  98. package/assets/icons/serpapi.svg +34 -0
  99. package/assets/icons/serper.png +0 -0
  100. package/assets/icons/servicenow.png +0 -0
  101. package/assets/icons/sharepoint.png +0 -0
  102. package/assets/icons/slack.png +0 -0
  103. package/assets/icons/snowflake.png +0 -0
  104. package/assets/icons/statistia.png +0 -0
  105. package/assets/icons/stripe.png +0 -0
  106. package/assets/icons/supabase.png +0 -0
  107. package/assets/icons/tableau.png +0 -0
  108. package/assets/icons/tavily.png +0 -0
  109. package/assets/icons/telegram.png +0 -0
  110. package/assets/icons/typescript.png +0 -0
  111. package/assets/icons/vercel copy.svg +1 -0
  112. package/assets/icons/vercel.svg +1 -0
  113. package/assets/icons/vertex-ai.png +0 -0
  114. package/assets/icons/video.png +0 -0
  115. package/assets/icons/voyage-light.png +0 -0
  116. package/assets/icons/weaviate.webp +0 -0
  117. package/assets/icons/webcontainers.svg +11 -0
  118. package/assets/icons/webhook.png +0 -0
  119. package/assets/icons/whatsapp copy.png +0 -0
  120. package/assets/icons/whatsapp.png +0 -0
  121. package/assets/icons/windows.png +0 -0
  122. package/assets/icons/word.png +0 -0
  123. package/assets/icons/zendesk.png +0 -0
  124. package/assets/icons/zoom.png +0 -0
  125. package/assets/notion-white.png +0 -0
  126. package/assets/notion.png +0 -0
  127. package/dist-types/asset-server.d.ts +3 -0
  128. package/dist-types/asset-server.d.ts.map +1 -0
  129. package/dist-types/components/alerts/generic-alert.d.ts +15 -0
  130. package/dist-types/components/alerts/generic-alert.d.ts.map +1 -0
  131. package/dist-types/components/chat/canvas/doc-editor-provider.d.ts +62 -0
  132. package/dist-types/components/chat/canvas/doc-editor-provider.d.ts.map +1 -0
  133. package/dist-types/components/chat/canvas/document-canvas.d.ts +7 -0
  134. package/dist-types/components/chat/canvas/document-canvas.d.ts.map +1 -0
  135. package/dist-types/components/chat/canvas/document-field.d.ts +13 -0
  136. package/dist-types/components/chat/canvas/document-field.d.ts.map +1 -0
  137. package/dist-types/components/chat/canvas/document-viewer.d.ts +2 -0
  138. package/dist-types/components/chat/canvas/document-viewer.d.ts.map +1 -0
  139. package/dist-types/components/chat/canvas/file-attachment-button.d.ts +9 -0
  140. package/dist-types/components/chat/canvas/file-attachment-button.d.ts.map +1 -0
  141. package/dist-types/components/chat/chat-workspace.d.ts +4 -0
  142. package/dist-types/components/chat/chat-workspace.d.ts.map +1 -0
  143. package/dist-types/components/chat/message-actions.d.ts +11 -0
  144. package/dist-types/components/chat/message-actions.d.ts.map +1 -0
  145. package/dist-types/components/chat/message-item.d.ts +20 -0
  146. package/dist-types/components/chat/message-item.d.ts.map +1 -0
  147. package/dist-types/components/chat/message-queue.d.ts +15 -0
  148. package/dist-types/components/chat/message-queue.d.ts.map +1 -0
  149. package/dist-types/components/chat/tools/chat-chart.d.ts +6 -0
  150. package/dist-types/components/chat/tools/chat-chart.d.ts.map +1 -0
  151. package/dist-types/components/chat/tools/chat-citations.d.ts +32 -0
  152. package/dist-types/components/chat/tools/chat-citations.d.ts.map +1 -0
  153. package/dist-types/components/chat/tools/chat-data-table.d.ts +14 -0
  154. package/dist-types/components/chat/tools/chat-data-table.d.ts.map +1 -0
  155. package/dist-types/components/chat/tools/chat-file-export.d.ts +5 -0
  156. package/dist-types/components/chat/tools/chat-file-export.d.ts.map +1 -0
  157. package/dist-types/components/chat/tools/chat-media-preview.d.ts +35 -0
  158. package/dist-types/components/chat/tools/chat-media-preview.d.ts.map +1 -0
  159. package/dist-types/components/chat/tools/chat-sandbox-result.d.ts +17 -0
  160. package/dist-types/components/chat/tools/chat-sandbox-result.d.ts.map +1 -0
  161. package/dist-types/components/chat/tools/chat-signature-request.d.ts +13 -0
  162. package/dist-types/components/chat/tools/chat-signature-request.d.ts.map +1 -0
  163. package/dist-types/components/chat/tools/chat-tabs.d.ts +17 -0
  164. package/dist-types/components/chat/tools/chat-tabs.d.ts.map +1 -0
  165. package/dist-types/components/chat/tools/corpus-data-result.d.ts +36 -0
  166. package/dist-types/components/chat/tools/corpus-data-result.d.ts.map +1 -0
  167. package/dist-types/components/chat/tools/knowledge-base-result.d.ts +14 -0
  168. package/dist-types/components/chat/tools/knowledge-base-result.d.ts.map +1 -0
  169. package/dist-types/components/chat/tools/visual-placement-modal.d.ts +23 -0
  170. package/dist-types/components/chat/tools/visual-placement-modal.d.ts.map +1 -0
  171. package/dist-types/components/configure/custom-model-modal.d.ts +13 -0
  172. package/dist-types/components/configure/custom-model-modal.d.ts.map +1 -0
  173. package/dist-types/components/configure/store-fields.d.ts +11 -0
  174. package/dist-types/components/configure/store-fields.d.ts.map +1 -0
  175. package/dist-types/components/data/corpus-panel.d.ts +12 -0
  176. package/dist-types/components/data/corpus-panel.d.ts.map +1 -0
  177. package/dist-types/components/data/data-entry-mode-switch.d.ts +13 -0
  178. package/dist-types/components/data/data-entry-mode-switch.d.ts.map +1 -0
  179. package/dist-types/components/data/data-primary-action.d.ts +7 -0
  180. package/dist-types/components/data/data-primary-action.d.ts.map +1 -0
  181. package/dist-types/components/data/data-workspace.d.ts +6 -0
  182. package/dist-types/components/data/data-workspace.d.ts.map +1 -0
  183. package/dist-types/components/data/groups-panel.d.ts +5 -0
  184. package/dist-types/components/data/groups-panel.d.ts.map +1 -0
  185. package/dist-types/components/data/integration-resources-panel.d.ts +9 -0
  186. package/dist-types/components/data/integration-resources-panel.d.ts.map +1 -0
  187. package/dist-types/components/data/integrations-panel.d.ts +5 -0
  188. package/dist-types/components/data/integrations-panel.d.ts.map +1 -0
  189. package/dist-types/components/data/jobs-panel.d.ts +6 -0
  190. package/dist-types/components/data/jobs-panel.d.ts.map +1 -0
  191. package/dist-types/components/data/jobs-tracking-button.d.ts +2 -0
  192. package/dist-types/components/data/jobs-tracking-button.d.ts.map +1 -0
  193. package/dist-types/components/data/live-media-progress.d.ts +9 -0
  194. package/dist-types/components/data/live-media-progress.d.ts.map +1 -0
  195. package/dist-types/components/data/media-indexing-jobs-panel.d.ts +34 -0
  196. package/dist-types/components/data/media-indexing-jobs-panel.d.ts.map +1 -0
  197. package/dist-types/components/data/media-panel.d.ts +58 -0
  198. package/dist-types/components/data/media-panel.d.ts.map +1 -0
  199. package/dist-types/components/data/notion-panel.d.ts +6 -0
  200. package/dist-types/components/data/notion-panel.d.ts.map +1 -0
  201. package/dist-types/components/data/paste-panel.d.ts +7 -0
  202. package/dist-types/components/data/paste-panel.d.ts.map +1 -0
  203. package/dist-types/components/data/project-data-page.d.ts +3 -0
  204. package/dist-types/components/data/project-data-page.d.ts.map +1 -0
  205. package/dist-types/components/data/scrape-panel.d.ts +9 -0
  206. package/dist-types/components/data/scrape-panel.d.ts.map +1 -0
  207. package/dist-types/components/data/tabular-preview.d.ts +10 -0
  208. package/dist-types/components/data/tabular-preview.d.ts.map +1 -0
  209. package/dist-types/components/data/tool-indexing-dialog.d.ts +54 -0
  210. package/dist-types/components/data/tool-indexing-dialog.d.ts.map +1 -0
  211. package/dist-types/components/data/upload-panel.d.ts +7 -0
  212. package/dist-types/components/data/upload-panel.d.ts.map +1 -0
  213. package/dist-types/components/data/web-crawler-status.d.ts +3 -0
  214. package/dist-types/components/data/web-crawler-status.d.ts.map +1 -0
  215. package/dist-types/components/projects/project-form-dialog.d.ts +10 -0
  216. package/dist-types/components/projects/project-form-dialog.d.ts.map +1 -0
  217. package/dist-types/components/projects/project-provider.d.ts +34 -0
  218. package/dist-types/components/projects/project-provider.d.ts.map +1 -0
  219. package/dist-types/components/settings/general/agent-customization-section.d.ts +2 -0
  220. package/dist-types/components/settings/general/agent-customization-section.d.ts.map +1 -0
  221. package/dist-types/components/settings/general/mcp-connections-section.d.ts +2 -0
  222. package/dist-types/components/settings/general/mcp-connections-section.d.ts.map +1 -0
  223. package/dist-types/components/settings/general/model-combobox.d.ts +24 -0
  224. package/dist-types/components/settings/general/model-combobox.d.ts.map +1 -0
  225. package/dist-types/components/settings/general/models-section.d.ts +2 -0
  226. package/dist-types/components/settings/general/models-section.d.ts.map +1 -0
  227. package/dist-types/components/settings/general/sandbox-section.d.ts +7 -0
  228. package/dist-types/components/settings/general/sandbox-section.d.ts.map +1 -0
  229. package/dist-types/components/settings/general/search-scraping-section.d.ts +2 -0
  230. package/dist-types/components/settings/general/search-scraping-section.d.ts.map +1 -0
  231. package/dist-types/components/settings/general/storage-indexing-section.d.ts +2 -0
  232. package/dist-types/components/settings/general/storage-indexing-section.d.ts.map +1 -0
  233. package/dist-types/components/ui/alert-dialog.d.ts +19 -0
  234. package/dist-types/components/ui/alert-dialog.d.ts.map +1 -0
  235. package/dist-types/components/ui/alert.d.ts +11 -0
  236. package/dist-types/components/ui/alert.d.ts.map +1 -0
  237. package/dist-types/components/ui/badge.d.ts +8 -0
  238. package/dist-types/components/ui/badge.d.ts.map +1 -0
  239. package/dist-types/components/ui/card.d.ts +2 -0
  240. package/dist-types/components/ui/card.d.ts.map +1 -0
  241. package/dist-types/components/ui/checkbox.d.ts +4 -0
  242. package/dist-types/components/ui/checkbox.d.ts.map +1 -0
  243. package/dist-types/components/ui/collapsible.d.ts +6 -0
  244. package/dist-types/components/ui/collapsible.d.ts.map +1 -0
  245. package/dist-types/components/ui/command.d.ts +20 -0
  246. package/dist-types/components/ui/command.d.ts.map +1 -0
  247. package/dist-types/components/ui/dialog.d.ts +18 -0
  248. package/dist-types/components/ui/dialog.d.ts.map +1 -0
  249. package/dist-types/components/ui/dropdown-menu.d.ts +30 -0
  250. package/dist-types/components/ui/dropdown-menu.d.ts.map +1 -0
  251. package/dist-types/components/ui/input-group.d.ts +19 -0
  252. package/dist-types/components/ui/input-group.d.ts.map +1 -0
  253. package/dist-types/components/ui/input.d.ts +4 -0
  254. package/dist-types/components/ui/input.d.ts.map +1 -0
  255. package/dist-types/components/ui/line-tabs.d.ts +15 -0
  256. package/dist-types/components/ui/line-tabs.d.ts.map +1 -0
  257. package/dist-types/components/ui/popover.d.ts +10 -0
  258. package/dist-types/components/ui/popover.d.ts.map +1 -0
  259. package/dist-types/components/ui/progress.d.ts +8 -0
  260. package/dist-types/components/ui/progress.d.ts.map +1 -0
  261. package/dist-types/components/ui/scroll-area.d.ts +6 -0
  262. package/dist-types/components/ui/scroll-area.d.ts.map +1 -0
  263. package/dist-types/components/ui/sheet.d.ts +15 -0
  264. package/dist-types/components/ui/sheet.d.ts.map +1 -0
  265. package/dist-types/components/ui/slider.d.ts +4 -0
  266. package/dist-types/components/ui/slider.d.ts.map +1 -0
  267. package/dist-types/components/ui/switch.d.ts +6 -0
  268. package/dist-types/components/ui/switch.d.ts.map +1 -0
  269. package/dist-types/components/ui/table.d.ts +2 -0
  270. package/dist-types/components/ui/table.d.ts.map +1 -0
  271. package/dist-types/components/ui/tabs.d.ts +11 -0
  272. package/dist-types/components/ui/tabs.d.ts.map +1 -0
  273. package/dist-types/components/ui/textarea.d.ts +2 -0
  274. package/dist-types/components/ui/textarea.d.ts.map +1 -0
  275. package/dist-types/components/ui/tooltip.d.ts +7 -0
  276. package/dist-types/components/ui/tooltip.d.ts.map +1 -0
  277. package/dist-types/hooks/use-copy-to-clipboard.d.ts +5 -0
  278. package/dist-types/hooks/use-copy-to-clipboard.d.ts.map +1 -0
  279. package/dist-types/hooks/use-integration-auth.d.ts +10 -0
  280. package/dist-types/hooks/use-integration-auth.d.ts.map +1 -0
  281. package/dist-types/hooks/use-live-media-progress.d.ts +14 -0
  282. package/dist-types/hooks/use-live-media-progress.d.ts.map +1 -0
  283. package/dist-types/hooks/use-notion-auth.d.ts +9 -0
  284. package/dist-types/hooks/use-notion-auth.d.ts.map +1 -0
  285. package/dist-types/host.d.ts +20 -0
  286. package/dist-types/host.d.ts.map +1 -0
  287. package/dist-types/lib/browser-cache.d.ts +7 -0
  288. package/dist-types/lib/browser-cache.d.ts.map +1 -0
  289. package/dist-types/lib/chat/chart-config.d.ts +2 -0
  290. package/dist-types/lib/chat/chart-config.d.ts.map +1 -0
  291. package/dist-types/lib/chat/data-export.d.ts +2 -0
  292. package/dist-types/lib/chat/data-export.d.ts.map +1 -0
  293. package/dist-types/lib/chat/live-tool-progress.d.ts +44 -0
  294. package/dist-types/lib/chat/live-tool-progress.d.ts.map +1 -0
  295. package/dist-types/lib/chat/message-feedback.d.ts +2 -0
  296. package/dist-types/lib/chat/message-feedback.d.ts.map +1 -0
  297. package/dist-types/lib/chat/table-presentation.d.ts +2 -0
  298. package/dist-types/lib/chat/table-presentation.d.ts.map +1 -0
  299. package/dist-types/lib/chat/tool-output.d.ts +3 -0
  300. package/dist-types/lib/chat/tool-output.d.ts.map +1 -0
  301. package/dist-types/lib/chat-supporting-clip.d.ts +11 -0
  302. package/dist-types/lib/chat-supporting-clip.d.ts.map +1 -0
  303. package/dist-types/lib/constants/stores.d.ts +6 -0
  304. package/dist-types/lib/constants/stores.d.ts.map +1 -0
  305. package/dist-types/lib/constants/tools.d.ts +27 -0
  306. package/dist-types/lib/constants/tools.d.ts.map +1 -0
  307. package/dist-types/lib/error-formatter.d.ts +2 -0
  308. package/dist-types/lib/error-formatter.d.ts.map +1 -0
  309. package/dist-types/lib/jobs-client.d.ts +7 -0
  310. package/dist-types/lib/jobs-client.d.ts.map +1 -0
  311. package/dist-types/lib/media/pdf.d.ts +6 -0
  312. package/dist-types/lib/media/pdf.d.ts.map +1 -0
  313. package/dist-types/lib/media/progress.d.ts +61 -0
  314. package/dist-types/lib/media/progress.d.ts.map +1 -0
  315. package/dist-types/lib/media/source-selection.d.ts +10 -0
  316. package/dist-types/lib/media/source-selection.d.ts.map +1 -0
  317. package/dist-types/lib/media/tool-indexing-estimate.d.ts +13 -0
  318. package/dist-types/lib/media/tool-indexing-estimate.d.ts.map +1 -0
  319. package/dist-types/lib/media/video-intelligence-capacity.d.ts +2 -0
  320. package/dist-types/lib/media/video-intelligence-capacity.d.ts.map +1 -0
  321. package/dist-types/lib/media/video-runtime-scope.d.ts +2 -0
  322. package/dist-types/lib/media/video-runtime-scope.d.ts.map +1 -0
  323. package/dist-types/lib/shared/error-formatter.d.ts +2 -0
  324. package/dist-types/lib/shared/error-formatter.d.ts.map +1 -0
  325. package/dist-types/lib/utils.d.ts +3 -0
  326. package/dist-types/lib/utils.d.ts.map +1 -0
  327. package/dist-types/storage.d.ts +5 -0
  328. package/dist-types/storage.d.ts.map +1 -0
  329. package/dist-types/store/chat-store.d.ts +19 -0
  330. package/dist-types/store/chat-store.d.ts.map +1 -0
  331. package/dist-types/store/scrape-store.d.ts +42 -0
  332. package/dist-types/store/scrape-store.d.ts.map +1 -0
  333. package/package.json +579 -3
  334. package/scripts/build-assets.mjs +12 -0
  335. package/src/asset-data.json +1 -0
  336. package/src/asset-server.ts +19 -0
  337. package/src/components/alerts/generic-alert.tsx +76 -0
  338. package/src/components/chat/canvas/doc-editor-provider.tsx +338 -0
  339. package/src/components/chat/canvas/document-canvas.tsx +98 -0
  340. package/src/components/chat/canvas/document-field.tsx +167 -0
  341. package/src/components/chat/canvas/document-viewer.tsx +446 -0
  342. package/src/components/chat/canvas/file-attachment-button.tsx +88 -0
  343. package/src/components/chat/chat-workspace.tsx +1552 -0
  344. package/src/components/chat/message-actions.tsx +96 -0
  345. package/src/components/chat/message-item.tsx +1398 -0
  346. package/src/components/chat/message-queue.tsx +86 -0
  347. package/src/components/chat/tools/chat-chart.tsx +558 -0
  348. package/src/components/chat/tools/chat-citations.tsx +152 -0
  349. package/src/components/chat/tools/chat-data-table.tsx +373 -0
  350. package/src/components/chat/tools/chat-file-export.tsx +49 -0
  351. package/src/components/chat/tools/chat-media-preview.tsx +466 -0
  352. package/src/components/chat/tools/chat-sandbox-result.tsx +130 -0
  353. package/src/components/chat/tools/chat-signature-request.tsx +810 -0
  354. package/src/components/chat/tools/chat-tabs.tsx +59 -0
  355. package/src/components/chat/tools/corpus-data-result.tsx +194 -0
  356. package/src/components/chat/tools/knowledge-base-result.tsx +345 -0
  357. package/src/components/chat/tools/visual-placement-modal.tsx +308 -0
  358. package/src/components/configure/custom-model-modal.tsx +209 -0
  359. package/src/components/configure/store-fields.tsx +129 -0
  360. package/src/components/data/corpus-panel.tsx +1223 -0
  361. package/src/components/data/data-entry-mode-switch.tsx +53 -0
  362. package/src/components/data/data-primary-action.ts +6 -0
  363. package/src/components/data/data-workspace.tsx +623 -0
  364. package/src/components/data/groups-panel.tsx +530 -0
  365. package/src/components/data/integration-resources-panel.tsx +282 -0
  366. package/src/components/data/integrations-panel.tsx +392 -0
  367. package/src/components/data/jobs-panel.tsx +490 -0
  368. package/src/components/data/jobs-tracking-button.tsx +224 -0
  369. package/src/components/data/live-media-progress.tsx +79 -0
  370. package/src/components/data/media-indexing-jobs-panel.tsx +190 -0
  371. package/src/components/data/media-panel.tsx +2905 -0
  372. package/src/components/data/notion-panel.tsx +408 -0
  373. package/src/components/data/paste-panel.tsx +82 -0
  374. package/src/components/data/project-data-page.tsx +55 -0
  375. package/src/components/data/scrape-panel.tsx +1290 -0
  376. package/src/components/data/tabular-preview.tsx +205 -0
  377. package/src/components/data/tool-indexing-dialog.tsx +210 -0
  378. package/src/components/data/upload-panel.tsx +1313 -0
  379. package/src/components/data/web-crawler-status.tsx +132 -0
  380. package/src/components/projects/project-form-dialog.tsx +97 -0
  381. package/src/components/projects/project-provider.tsx +143 -0
  382. package/src/components/settings/general/agent-customization-section.tsx +620 -0
  383. package/src/components/settings/general/mcp-connections-section.tsx +907 -0
  384. package/src/components/settings/general/model-combobox.tsx +235 -0
  385. package/src/components/settings/general/models-section.tsx +909 -0
  386. package/src/components/settings/general/sandbox-section.tsx +394 -0
  387. package/src/components/settings/general/search-scraping-section.tsx +757 -0
  388. package/src/components/settings/general/storage-indexing-section.tsx +394 -0
  389. package/src/components/ui/alert-dialog.tsx +162 -0
  390. package/src/components/ui/alert.tsx +69 -0
  391. package/src/components/ui/badge.tsx +49 -0
  392. package/src/components/ui/card.tsx +9 -0
  393. package/src/components/ui/checkbox.tsx +28 -0
  394. package/src/components/ui/collapsible.tsx +17 -0
  395. package/src/components/ui/command.tsx +175 -0
  396. package/src/components/ui/dialog.tsx +138 -0
  397. package/src/components/ui/dropdown-menu.tsx +267 -0
  398. package/src/components/ui/input-group.tsx +146 -0
  399. package/src/components/ui/input.tsx +19 -0
  400. package/src/components/ui/line-tabs.tsx +49 -0
  401. package/src/components/ui/popover.tsx +77 -0
  402. package/src/components/ui/progress.tsx +66 -0
  403. package/src/components/ui/scroll-area.tsx +51 -0
  404. package/src/components/ui/sheet.tsx +125 -0
  405. package/src/components/ui/slider.tsx +52 -0
  406. package/src/components/ui/switch.tsx +32 -0
  407. package/src/components/ui/table.tsx +10 -0
  408. package/src/components/ui/tabs.tsx +77 -0
  409. package/src/components/ui/textarea.tsx +1 -0
  410. package/src/components/ui/tooltip.tsx +54 -0
  411. package/src/hooks/use-copy-to-clipboard.ts +25 -0
  412. package/src/hooks/use-integration-auth.ts +39 -0
  413. package/src/hooks/use-live-media-progress.ts +71 -0
  414. package/src/hooks/use-notion-auth.ts +66 -0
  415. package/src/host.ts +55 -0
  416. package/src/lib/browser-cache.ts +17 -0
  417. package/src/lib/chat/chart-config.ts +1 -0
  418. package/src/lib/chat/data-export.ts +1 -0
  419. package/src/lib/chat/live-tool-progress.ts +69 -0
  420. package/src/lib/chat/message-feedback.ts +1 -0
  421. package/src/lib/chat/table-presentation.ts +1 -0
  422. package/src/lib/chat/tool-output.ts +14 -0
  423. package/src/lib/chat-supporting-clip.ts +16 -0
  424. package/src/lib/constants/stores.ts +12 -0
  425. package/src/lib/constants/tools.ts +178 -0
  426. package/src/lib/error-formatter.ts +30 -0
  427. package/src/lib/jobs-client.ts +27 -0
  428. package/src/lib/media/pdf.ts +57 -0
  429. package/src/lib/media/progress.ts +209 -0
  430. package/src/lib/media/source-selection.ts +47 -0
  431. package/src/lib/media/tool-indexing-estimate.ts +39 -0
  432. package/src/lib/media/video-intelligence-capacity.ts +1 -0
  433. package/src/lib/media/video-runtime-scope.ts +1 -0
  434. package/src/lib/shared/error-formatter.ts +1 -0
  435. package/src/lib/utils.ts +6 -0
  436. package/src/source.css +1 -0
  437. package/src/storage.ts +16 -0
  438. package/src/store/chat-store.ts +19 -0
  439. package/src/store/scrape-store.ts +76 -0
  440. package/src/styles.d.ts +1 -0
@@ -0,0 +1,394 @@
1
+ 'use client';
2
+
3
+ import { workspaceCapabilities, workspaceUrl, workspaceFetch as fetch } from '../../../host';
4
+ import { useEffect, useRef, useState } from 'react';
5
+ import useSWR from 'swr';
6
+ import { Loader2, Save, Eye, EyeOff, AlertTriangle, ExternalLink } from 'lucide-react';
7
+ import { Button } from '@larkup/workspace-ui/button';
8
+ import { Input } from '@larkup/workspace-app/components/ui/input';
9
+ import { Label } from '@larkup/workspace-ui/label';
10
+ import {
11
+ Select,
12
+ SelectContent,
13
+ SelectItem,
14
+ SelectTrigger,
15
+ SelectValue,
16
+ } from '@larkup/workspace-ui/select';
17
+ import { toast } from 'sonner';
18
+ import type { RagConfig } from '@larkup/core/types';
19
+ import { SANDBOX_PROVIDER_LIST, getSandboxProvider } from '@larkup/sandbox/registry';
20
+ import type { SandboxBackend } from '@larkup/sandbox/types';
21
+ import {
22
+ Card,
23
+ CardContent,
24
+ CardDescription,
25
+ CardHeader,
26
+ CardTitle,
27
+ CardFooter,
28
+ } from '@larkup/workspace-app/components/ui/card';
29
+ import { Alert, AlertDescription } from '@larkup/workspace-app/components/ui/alert';
30
+ import Image from 'next/image';
31
+
32
+ const fetcher = (url: string) => fetch(url).then((r) => r.json() as Promise<{ config: RagConfig }>);
33
+ const localSandbox = { label: 'Local Sandbox' };
34
+ const defaultLocalSandboxIcon = '/icons/linux.png';
35
+ let cachedLocalSandboxIcon: string | undefined;
36
+
37
+ function getLocalSandboxIcon() {
38
+ if (cachedLocalSandboxIcon) return cachedLocalSandboxIcon;
39
+
40
+ const platform =
41
+ (navigator as Navigator & { userAgentData?: { platform?: string } }).userAgentData?.platform ??
42
+ navigator.userAgent;
43
+ cachedLocalSandboxIcon = /windows/i.test(platform)
44
+ ? '/icons/windows.png'
45
+ : /mac|iphone|ipad|ipod/i.test(platform)
46
+ ? '/icons/mac.png'
47
+ : defaultLocalSandboxIcon;
48
+ return cachedLocalSandboxIcon;
49
+ }
50
+
51
+ export function SandboxSection({
52
+ embedded = false,
53
+ onProviderChange,
54
+ children,
55
+ }: {
56
+ embedded?: boolean;
57
+ onProviderChange?: (provider: SandboxBackend) => void;
58
+ children?: React.ReactNode;
59
+ }) {
60
+ const { data, isLoading, mutate } = useSWR(workspaceUrl('/api/config'), fetcher);
61
+ const [form, setForm] = useState<Partial<RagConfig>>({});
62
+ const [provider, setProvider] = useState<SandboxBackend>('local');
63
+ const [localSandboxIcon, setLocalSandboxIcon] = useState(defaultLocalSandboxIcon);
64
+ const [saving, setSaving] = useState(false);
65
+ const [showSecrets, setShowSecrets] = useState(false);
66
+ const [verifying, setVerifying] = useState(false);
67
+ const migratedLegacyDocker = useRef(false);
68
+
69
+ useEffect(() => {
70
+ setLocalSandboxIcon(getLocalSandboxIcon());
71
+ }, []);
72
+
73
+ useEffect(() => {
74
+ if (data?.config) {
75
+ setForm(data.config);
76
+ const defaultProv = (data.config.defaultSandboxProvider as SandboxBackend) || 'local';
77
+ setProvider(defaultProv);
78
+ onProviderChange?.(defaultProv);
79
+ }
80
+ }, [data]);
81
+
82
+ useEffect(() => {
83
+ if (
84
+ migratedLegacyDocker.current ||
85
+ !data?.config ||
86
+ data.config.defaultSandboxProvider !== 'docker'
87
+ ) {
88
+ return;
89
+ }
90
+ // Keep a one-time compatibility migration for old Docker defaults, but do
91
+ // not surface any automatic sandbox health messages in Settings.
92
+ void fetch(workspaceUrl('/api/sandbox/verify'))
93
+ .then((response) => response.json() as Promise<{ provider?: string; status?: string }>)
94
+ .then(async (status) => {
95
+ if (status.provider !== 'docker' || status.status === 'ready') return;
96
+ migratedLegacyDocker.current = true;
97
+ const response = await fetch(workspaceUrl('/api/config'), {
98
+ method: 'PUT',
99
+ headers: { 'Content-Type': 'application/json' },
100
+ body: JSON.stringify({ ...data.config, defaultSandboxProvider: 'local' }),
101
+ });
102
+ if (!response.ok) return;
103
+ const json = (await response.json()) as { config: RagConfig };
104
+ setForm(json.config);
105
+ setProvider('local');
106
+ onProviderChange?.('local');
107
+ await mutate(json, { revalidate: false });
108
+ })
109
+ .catch(() => {
110
+ migratedLegacyDocker.current = false;
111
+ });
112
+ }, [data, mutate, onProviderChange]);
113
+
114
+ const descriptor = getSandboxProvider(provider);
115
+ const values = form.sandboxProviderConfigs?.[provider] ?? {};
116
+
117
+ const dirty =
118
+ provider !== ((data?.config?.defaultSandboxProvider as SandboxBackend) || 'local') ||
119
+ JSON.stringify(values) !==
120
+ JSON.stringify(data?.config?.sandboxProviderConfigs?.[provider] ?? {});
121
+
122
+ function setFieldValue(key: string, value: string) {
123
+ setForm((prev) => ({
124
+ ...prev,
125
+ sandboxProviderConfigs: {
126
+ ...prev.sandboxProviderConfigs,
127
+ [provider]: { ...prev.sandboxProviderConfigs?.[provider], [key]: value },
128
+ },
129
+ }));
130
+ }
131
+
132
+ async function verifySandbox(showSuccessToast: boolean) {
133
+ setVerifying(true);
134
+ try {
135
+ const res = await fetch(workspaceUrl('/api/sandbox/verify'), {
136
+ method: 'POST',
137
+ headers: { 'Content-Type': 'application/json' },
138
+ body: JSON.stringify({ provider, credentials: values }),
139
+ });
140
+ const json = await res.json();
141
+ if (!res.ok) throw new Error(json.error || 'Verification failed');
142
+
143
+ if (showSuccessToast) {
144
+ toast.success(
145
+ `${
146
+ descriptor?.label ?? (provider === 'docker' ? 'Local Docker' : localSandbox.label)
147
+ } credentials verified!`,
148
+ { position: 'top-right' },
149
+ );
150
+ }
151
+ return true;
152
+ } catch (err) {
153
+ const msg = err instanceof Error ? err.message : 'Verification failed';
154
+ toast.error(msg, { position: 'top-right' });
155
+ return false;
156
+ } finally {
157
+ setVerifying(false);
158
+ }
159
+ }
160
+
161
+ async function handleSave() {
162
+ setSaving(true);
163
+ try {
164
+ // Local Python is provisioned lazily in Larkup's own isolated runtime.
165
+ // It must never depend on packages installed on the host or block saving.
166
+ if (provider !== 'local' && !(await verifySandbox(false))) return;
167
+
168
+ const payload: RagConfig = {
169
+ ...(data?.config as RagConfig),
170
+ defaultSandboxProvider: provider,
171
+ sandboxProviderConfigs: form.sandboxProviderConfigs ?? {},
172
+ };
173
+ const res = await fetch(workspaceUrl('/api/config'), {
174
+ method: 'PUT',
175
+ headers: { 'Content-Type': 'application/json' },
176
+ body: JSON.stringify(payload),
177
+ });
178
+ const json = await res.json();
179
+ if (!res.ok) throw new Error(json.error ?? 'Failed to save');
180
+
181
+ setForm((prev) => ({ ...prev, ...json.config }));
182
+ await mutate(json, { revalidate: false });
183
+ toast.success('Sandbox settings saved');
184
+ } catch (err) {
185
+ toast.error(err instanceof Error ? err.message : 'Failed to save');
186
+ } finally {
187
+ setSaving(false);
188
+ }
189
+ }
190
+
191
+ async function handleVerify() {
192
+ await verifySandbox(true);
193
+ }
194
+
195
+ if (isLoading) {
196
+ return (
197
+ <div className="flex h-40 items-center justify-center">
198
+ <Loader2 className="size-5 animate-spin text-muted-foreground" />
199
+ </div>
200
+ );
201
+ }
202
+
203
+ const providerCard = (
204
+ <Card className="bg-white/70 dark:bg-card/70">
205
+ <CardHeader className="pb-3">
206
+ <CardTitle className="text-sm">Code execution</CardTitle>
207
+ <CardDescription className="text-xs">
208
+ Choose where code-enabled Assistant tools run, and verify any provider credentials here.
209
+ </CardDescription>
210
+ </CardHeader>
211
+ <CardContent className="space-y-4">
212
+ <div className="space-y-1.5">
213
+ <Label className="text-xs">Provider</Label>
214
+ <Select
215
+ value={provider}
216
+ onValueChange={(value) => {
217
+ const p = value as SandboxBackend;
218
+ setProvider(p);
219
+ onProviderChange?.(p);
220
+ }}
221
+ >
222
+ <SelectTrigger className="w-full">
223
+ <div className="flex items-center gap-2">
224
+ <Image
225
+ src={
226
+ descriptor?.icon ?? (provider === 'local' ? localSandboxIcon : '/docker.png')
227
+ }
228
+ alt=""
229
+ width={16}
230
+ height={16}
231
+ />
232
+ <SelectValue placeholder="Select provider">
233
+ {(value: string) =>
234
+ value === 'local'
235
+ ? localSandbox.label
236
+ : value === 'docker'
237
+ ? 'Local Docker'
238
+ : (descriptor?.label ?? value)
239
+ }
240
+ </SelectValue>
241
+ </div>
242
+ </SelectTrigger>
243
+ <SelectContent>
244
+ {(!workspaceCapabilities().sandboxProviders ||
245
+ workspaceCapabilities().sandboxProviders!.includes('local')) && (
246
+ <SelectItem value="local">
247
+ <div className="flex items-center gap-2">
248
+ <Image src={localSandboxIcon} alt="Local Sandbox" width={16} height={16} />
249
+ <span>{localSandbox.label}</span>
250
+ </div>
251
+ </SelectItem>
252
+ )}
253
+ {(!workspaceCapabilities().sandboxProviders ||
254
+ workspaceCapabilities().sandboxProviders!.includes('docker')) && (
255
+ <SelectItem value="docker">
256
+ <div className="flex items-center gap-2">
257
+ <Image src="/docker.png" alt="Docker" width={16} height={16} />
258
+ <span>Local Docker</span>
259
+ </div>
260
+ </SelectItem>
261
+ )}
262
+ {SANDBOX_PROVIDER_LIST.filter(
263
+ (p) =>
264
+ p.executionSupport === 'full' &&
265
+ (!workspaceCapabilities().sandboxProviders ||
266
+ workspaceCapabilities().sandboxProviders!.includes(p.id)),
267
+ ).map((p) => (
268
+ <SelectItem key={p.id} value={p.id}>
269
+ <div className="flex items-center gap-2">
270
+ <Image src={p.icon} alt={p.label} width={16} height={16} />
271
+ <span>{p.label}</span>
272
+ </div>
273
+ </SelectItem>
274
+ ))}
275
+ </SelectContent>
276
+ </Select>
277
+ {provider === 'local' && (
278
+ <p className="pt-1 text-xs text-muted-foreground">
279
+ Runs trusted Python or JavaScript on this computer. No Docker or credentials needed.
280
+ </p>
281
+ )}
282
+ {provider === 'docker' && (
283
+ <p className="pt-1 text-xs text-muted-foreground">
284
+ Runs in a local Docker container. No credentials required — requires Docker to be
285
+ installed and running.
286
+ </p>
287
+ )}
288
+ </div>
289
+
290
+ {descriptor && descriptor.executionSupport === 'unsupported' && (
291
+ <Alert>
292
+ <AlertTriangle className="size-4 text-amber-500" />
293
+ <AlertDescription>{descriptor.executionCaveat}</AlertDescription>
294
+ </Alert>
295
+ )}
296
+
297
+ {descriptor && descriptor.fields.length > 0 && (
298
+ <div className="space-y-4 pt-2">
299
+ <Label className="text-xs">{descriptor.label} credentials</Label>
300
+
301
+ <div className="flex items-center gap-1">
302
+ <div className="w-full">
303
+ {descriptor.fields.map((field, index) => (
304
+ <div key={field.key} className="space-y-1.5">
305
+ <Label className="text-xs" htmlFor={`sandbox-${provider}-${field.key}`}>
306
+ {field.label}
307
+ {field.required && <span className="text-destructive"> *</span>}
308
+ </Label>
309
+ <div className="relative">
310
+ <Input
311
+ id={`sandbox-${provider}-${field.key}`}
312
+ type={field.type === 'password' && !showSecrets ? 'password' : 'text'}
313
+ className={field.type === 'password' ? 'text-sm pr-9' : 'text-sm'}
314
+ value={values[field.key] ?? ''}
315
+ onChange={(e) => setFieldValue(field.key, e.target.value)}
316
+ placeholder={field.placeholder}
317
+ />
318
+ {field.type === 'password' && (
319
+ <button
320
+ type="button"
321
+ onClick={() => setShowSecrets(!showSecrets)}
322
+ className="absolute right-2.5 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground"
323
+ aria-label={showSecrets ? 'Hide secret' : 'Show secret'}
324
+ >
325
+ {showSecrets ? (
326
+ <EyeOff className="size-3.5" />
327
+ ) : (
328
+ <Eye className="size-3.5" />
329
+ )}
330
+ </button>
331
+ )}
332
+ </div>
333
+ {field.help && (
334
+ <div className="flex items-center justify-start gap-2">
335
+ <p className="text-[11px] text-muted-foreground">{field.help}</p>
336
+ {index === 0 && (
337
+ <a
338
+ href={descriptor.docsUrl}
339
+ target="_blank"
340
+ rel="noreferrer"
341
+ className="inline-flex underline shrink-0 items-center gap-1 text-[11px] text-muted-foreground hover:text-foreground"
342
+ >
343
+ Docs <ExternalLink className="size-3" />
344
+ </a>
345
+ )}
346
+ </div>
347
+ )}
348
+ </div>
349
+ ))}
350
+ </div>
351
+ </div>
352
+ </div>
353
+ )}
354
+
355
+ {children}
356
+ </CardContent>
357
+ <CardFooter className="flex justify-end gap-2 border-t pt-4">
358
+ {provider !== 'local' && (
359
+ <Button variant="outline" size="lg" onClick={handleVerify} disabled={verifying}>
360
+ {verifying ? <Loader2 className="size-3.5 animate-spin" /> : null}
361
+ Verify
362
+ </Button>
363
+ )}
364
+ <Button
365
+ size="lg"
366
+ disabled={saving || verifying || !dirty}
367
+ onClick={handleSave}
368
+ className="gap-1.5 px-4"
369
+ >
370
+ {saving ? <Loader2 className="size-3.5 animate-spin" /> : <Save className="size-3.5" />}
371
+ Save sandbox settings
372
+ </Button>
373
+ </CardFooter>
374
+ </Card>
375
+ );
376
+
377
+ if (embedded) return providerCard;
378
+
379
+ return (
380
+ <div className="space-y-6">
381
+ <div className="flex items-center justify-between">
382
+ <div>
383
+ <h2 className="text-lg font-semibold tracking-tight">Code Execution Sandbox</h2>
384
+ <p className="text-sm text-muted-foreground">
385
+ Choose where Assistant tools that run code (e.g. data analysis, corpus analytics)
386
+ execute, and connect the provider&apos;s credentials.
387
+ </p>
388
+ </div>
389
+ </div>
390
+
391
+ {providerCard}
392
+ </div>
393
+ );
394
+ }