From 852ea84cd806e03a7ad60fbd4512c55a0166599d Mon Sep 17 00:00:00 2001 From: Faisal Amir Date: Thu, 15 May 2025 19:38:59 +0700 Subject: [PATCH] epic: Jan with new UI/UX (#4964) * chore: initial new FE setup * chore: update namespace text-left-panel foreground variable * chore: enable dynamic mainview color * chore: remove greetings new chat * chore: fix chat input style * chore: simplify hook useAppearance * chore: enable internationalization * chore: prepare vn locale * chore: keyboardshortcut layout * chore: update keyboard shortcut exclude pathname * chore: update state active setting route * chore: fix update theme by system * chore: handle dynamic primary color * chore: fix left panel navigation active state and styled item privacy analytic * chore: reorder general setting being a first * chore: add function reset appearance * chore: update scrollbar * chore: update delete thread with dialog confirmation * chore: update state dialog inside dropdown menu * chore: wip thread detail or chat page * chore: wip model dropdown * chore: prepare model dropdown select * chore: update model providers setting * chore: show provider on model dropdown based isActive toogle * chore: update layout model provider * chore: update state active on storage * chore: update gap of item dropdown model * chore: update select model base on id * chore: update edit model capabilities * chore: add dialog to add model * chore: update sheet for model setting * chore: add sheet setting each model * chore: make dynamic syntax highlight * chore: fix menu setting appearance theme * chore: markdown render support emoji * chore: markdown support latex * chore: change codeblock default theme * chore: update ui codeblock * chore: custom render link taget new window * chore: fix copy button codeblock * chore: update accent and desctructive color * chore: setup user chat message * chore: prepare some page settings * chore: simple list extension and prepare mcp, local api, and hardware * chore: mcp-serve * chore: MCP server UI * chore: update local api server config * chore: adjust chat input * chore: update local api server log * chore: prepare hub page * chore: remove help page * chore: update mock * chore: prepare http proxy setting UI * chore: adjust local api server and title every action * fix: chore FE package (#4962) * fix: update command which referred to non-existent web app * fix: added commented out macos platform for now * fix: remove the platform name as macos * fix: remove unnecessary line for platform name in HeaderPage component * fix: update dev script to specify port 3000 for Vite * feat: model providers and chat completion * enhancement: threads performance * fix: thread content update * chore: clean up threads * fix: performance issue with streaming and state loop * fix: streaming * fix: react markdow * feat: extension manager * chore: add nodePolyfills include path * chore: improve performance avoid unhandle rejection * chore: update pre margin bottom * chore: swith thread should be deafult scroll to bottom * chore: wip scroll to bottom * chore: add model loader * chore: add platform utils * feat: threads functionality * chore: setup toaster * chore: persist threads deletion * fix: create thread with new message * chore: create new thread should change route path * chore: navigate after delet dialog thread * chore: thread favorites and orders * chore: dismiss deleting modal on delete * chore: remove undefined properties * chore: remove deprecated run step * chore: fix delete thread * chore: create empty thread content on started streaming * chore: correct messages store key * chore: stuck at generating state * chore: preapre chat toolbar * chore: introduce in-memory app state * chore: update extensions migration logic * chore: remove redundant extensions migration gate * chore: message toolbar user and assistant * chore: add logo gemini * feat: remote providers with model capabilities * chore: maintain provider settings * chore: move speed token into chat input * chore: temp harcoded model loader * chore: make chat text selectable and truncate model list * chore: update shortcut UI * Feat/implement threads (#4977) * chore: add fuse.js library for enhanced search functionality * feat: implement thread filtering with Fuse.js for improved search capabilities * fix: update the fuseOptions * feat: add search functionality to LeftPanel and refactor thread retrieval logic * refactor: optimize thread filtering and improve search functionality in LeftPanel * fix: more edits * refactor: remove duplicate import of useAppState in StreamingContent component * chore: update navigate after delete all thread * chore: pass prop speedToken from new chat input * chore: persist provider general settings * chore: styling search left panel * chore: cleanup margin * chore: update size icon * chore: improve chat input * chore: imprve list markdown * chore: animate border * feat: local model provider work * chore: persist manually added model * chore: prepare download management ui and show version on general setting * chore: improve pre tag * chore: remove buton install extension and improve light theme download * chore: add missing hardware information handler * chore: cleanup small ui * chore: update default provider settings * fix: missing fs commands * chore: correct provider models * chore: prepare delete model * chore: handle thinking block * chore: fix conditional message toolbar * chore: pophover download select none * enhancement: add prune mode * chore: model settings * chore: bump engine version tauri * chore: update style thinking * chore: add indicator and toogle mcp server * chore: wip hub * chore: update model settings * chore: mvp hub * chore: add function rename title * chore: update function delete message * chore: update rename title * chore: update model settings * chore: persist MCP configs * refactor: clean up utils * chore: add tools to completion request * chore: clean up * chore: ignore assets --------- Co-authored-by: Ivan Leo Co-authored-by: Louis --- Makefile | 3 +- core/package.json | 18 - core/src/browser/fs.ts | 6 +- core/src/browser/models/manager.ts | 9 +- .../engine-management-extension/src/index.ts | 3 - .../resources/default_settings.json | 13 +- extensions/yarn.lock | 1617 +------- package.json | 5 +- src-tauri/Cargo.toml | 3 +- src-tauri/capabilities/default.json | 5 + src-tauri/capabilities/logs-window.json | 14 + src-tauri/src/core/fs.rs | 21 + src-tauri/src/core/setup.rs | 23 +- src-tauri/src/lib.rs | 2 + src-tauri/tauri.conf.json | 27 +- web-app/.gitignore | 24 + web-app/README.md | 54 + web-app/components.json | 21 + web-app/eslint.config.js | 28 + web-app/index.html | 13 + web-app/package.json | 87 + .../PPEditorialNew/PPEditorialNew-Regular.otf | Bin 0 -> 58264 bytes .../PPEditorialNew-RegularItalic.otf | Bin 0 -> 59116 bytes .../PPEditorialNew-Ultrabold.otf | Bin 0 -> 57664 bytes .../PPEditorialNew-UltraboldItalic.otf | Bin 0 -> 58852 bytes .../PPEditorialNew-Ultralight.otf | Bin 0 -> 57792 bytes .../PPEditorialNew-UltralightItalic.otf | Bin 0 -> 57604 bytes .../images/model-provider/anthropic.svg | 9 + .../public/images/model-provider/cohere.svg | 9 + .../public/images/model-provider/cortex.svg | 14 + .../public/images/model-provider/deepseek.svg | 25 + web-app/public/images/model-provider/dot.svg | 3 + .../public/images/model-provider/gemini.svg | 1 + .../images/model-provider/google-gemini.svg | 1 + .../public/images/model-provider/google.svg | 9 + web-app/public/images/model-provider/groq.svg | 9 + .../images/model-provider/hugging-face.svg | 8 + .../public/images/model-provider/llamacpp.svg | 9 + .../public/images/model-provider/martian.svg | 11 + web-app/public/images/model-provider/meta.svg | 72 + .../public/images/model-provider/mistral.svg | 28 + .../public/images/model-provider/nitro.svg | 6 + .../public/images/model-provider/nvidia.svg | 10 + .../images/model-provider/openRouter.svg | 14 + .../public/images/model-provider/openai.svg | 9 + web-app/public/images/model-provider/send.svg | 3 + web-app/src/components/ui/button.tsx | 53 + web-app/src/components/ui/dialog.tsx | 133 + web-app/src/components/ui/dropdown-menu.tsx | 250 ++ web-app/src/components/ui/hover-card.tsx | 42 + web-app/src/components/ui/input.tsx | 22 + web-app/src/components/ui/popover.tsx | 46 + web-app/src/components/ui/progress.tsx | 29 + web-app/src/components/ui/sheet.tsx | 137 + web-app/src/components/ui/slider.tsx | 61 + web-app/src/components/ui/sonner.tsx | 20 + web-app/src/components/ui/switch.tsx | 29 + web-app/src/components/ui/textarea.tsx | 19 + web-app/src/components/ui/tooltip.tsx | 59 + web-app/src/constants/localStorage.ts | 12 + web-app/src/constants/routes.ts | 19 + web-app/src/containers/ApiPrefixInput.tsx | 34 + web-app/src/containers/Capabilities.tsx | 70 + web-app/src/containers/Card.tsx | 65 + web-app/src/containers/ChatInput.tsx | 353 ++ web-app/src/containers/CodeBlockExample.tsx | 25 + .../src/containers/CodeBlockStyleSwitcher.tsx | 271 ++ .../containers/ColorPickerAppAccentColor.tsx | 90 + .../src/containers/ColorPickerAppBgColor.tsx | 103 + .../ColorPickerAppDestructiveColor.tsx | 95 + .../src/containers/ColorPickerAppMainView.tsx | 78 + .../containers/ColorPickerAppPrimaryColor.tsx | 95 + web-app/src/containers/DownloadManegement.tsx | 87 + .../src/containers/DropdownModelProvider.tsx | 147 + web-app/src/containers/FontSizeSwitcher.tsx | 41 + web-app/src/containers/HeaderPage.tsx | 36 + web-app/src/containers/LanguageSwitcher.tsx | 55 + web-app/src/containers/LeftPanel.tsx | 315 ++ .../src/containers/LineNumbersSwitcher.tsx | 14 + web-app/src/containers/ModelSetting.tsx | 152 + web-app/src/containers/MovingBorder.tsx | 76 + web-app/src/containers/PlatformMetaKey.tsx | 14 + web-app/src/containers/PortInput.tsx | 35 + web-app/src/containers/ProvidersMenu.tsx | 58 + web-app/src/containers/RenderMarkdown.tsx | 173 + web-app/src/containers/ServerHostSwitcher.tsx | 44 + web-app/src/containers/SettingsMenu.tsx | 102 + web-app/src/containers/StreamingContent.tsx | 14 + web-app/src/containers/ThemeSwitcher.tsx | 46 + web-app/src/containers/ThinkingBlock.tsx | 64 + web-app/src/containers/ThreadContent.tsx | 177 + web-app/src/containers/ThreadList.tsx | 324 ++ .../containers/dialogs/AddEditMCPServer.tsx | 339 ++ web-app/src/containers/dialogs/AddModel.tsx | 117 + .../dialogs/DeleteMCPServerConfirm.tsx | 49 + .../src/containers/dialogs/DeleteModel.tsx | 88 + .../containers/dialogs/EditJsonMCPserver.tsx | 88 + web-app/src/containers/dialogs/EditModel.tsx | 220 ++ .../CheckboxControl.tsx | 13 + .../DropdownControl.tsx | 37 + .../dynamicControllerSetting/InputControl.tsx | 66 + .../SliderControl.tsx | 96 + .../TextareaControl.tsx | 34 + .../dynamicControllerSetting/index.tsx | 86 + .../src/containers/loaders/ModelLoader.tsx | 8 + web-app/src/hooks/useAppState.ts | 20 + web-app/src/hooks/useAppearance.ts | 734 ++++ web-app/src/hooks/useCodeblock.ts | 46 + web-app/src/hooks/useGeneralSetting.ts | 25 + web-app/src/hooks/useHotkeys.ts | 83 + web-app/src/hooks/useLeftPanel.ts | 21 + web-app/src/hooks/useLocalApiServer.ts | 47 + web-app/src/hooks/useMCPServers.ts | 158 + web-app/src/hooks/useMessages.ts | 60 + web-app/src/hooks/useModelProvider.ts | 107 + web-app/src/hooks/useModelSources.ts | 70 + web-app/src/hooks/usePrompt.ts | 13 + web-app/src/hooks/useTheme.ts | 55 + web-app/src/hooks/useThreads.ts | 229 ++ web-app/src/i18n.ts | 47 + web-app/src/index.css | 90 + web-app/src/lib/completion.ts | 186 + web-app/src/lib/extension.ts | 246 ++ web-app/src/lib/models.ts | 69 + web-app/src/lib/predefined.ts | 299 ++ web-app/src/lib/service.ts | 84 + web-app/src/lib/utils.ts | 136 + web-app/src/locales/en/chat.json | 9 + web-app/src/locales/en/common.json | 30 + web-app/src/locales/en/settings.json | 19 + web-app/src/locales/id/chat.json | 9 + web-app/src/locales/id/common.json | 30 + web-app/src/locales/id/settings.json | 19 + web-app/src/locales/vn/chat.json | 9 + web-app/src/locales/vn/common.json | 30 + web-app/src/locales/vn/settings.json | 19 + web-app/src/main.tsx | 30 + web-app/src/mock/data.ts | 548 +++ web-app/src/providers/AppearanceProvider.tsx | 272 ++ web-app/src/providers/DataProvider.tsx | 37 + web-app/src/providers/ExtensionProvider.tsx | 33 + web-app/src/providers/KeyboardShortcuts.tsx | 40 + web-app/src/providers/ThemeProvider.tsx | 43 + web-app/src/providers/ToasterProvider.tsx | 25 + web-app/src/routeTree.gen.ts | 405 ++ web-app/src/routes/__root.tsx | 76 + web-app/src/routes/hub.tsx | 259 ++ web-app/src/routes/index.tsx | 39 + web-app/src/routes/local-api-server/logs.tsx | 132 + web-app/src/routes/settings/appearance.tsx | 139 + web-app/src/routes/settings/extensions.tsx | 112 + web-app/src/routes/settings/general.tsx | 109 + web-app/src/routes/settings/https-proxy.tsx | 121 + .../src/routes/settings/local-api-server.tsx | 143 + web-app/src/routes/settings/mcp-servers.tsx | 289 ++ web-app/src/routes/settings/privacy.tsx | 89 + .../settings/providers/$providerName.tsx | 186 + web-app/src/routes/settings/shortcuts.tsx | 93 + web-app/src/routes/threads/$threadId.tsx | 221 ++ web-app/src/services/mcp.ts | 10 + web-app/src/services/messages.ts | 50 + web-app/src/services/models.ts | 99 + web-app/src/services/providers.ts | 83 + web-app/src/services/threads.ts | 119 + web-app/src/styles/font.css | 51 + web-app/src/styles/markdown.css | 198 + web-app/src/types/appearance.d.ts | 2 + web-app/src/types/completion.ts | 9 + web-app/src/types/events.ts | 3 + web-app/src/types/global.d.ts | 22 + web-app/src/types/modelProviders.d.ts | 53 + web-app/src/types/models.ts | 16 + ...ntax-highlighter-virtualized-renderer.d.ts | 14 + web-app/src/types/threads.d.ts | 46 + web-app/src/vite-env.d.ts | 1 + web-app/tsconfig.app.json | 32 + web-app/tsconfig.json | 13 + web-app/tsconfig.node.json | 24 + web-app/vite.config.ts | 55 + .../ChatInput/RichTextEditor.tsx | 2 + .../ThreadCenterPanel/ChatInput/index.tsx | 1 + .../ThreadCenterPanel/EditChatInput/index.tsx | 2 + .../MessageToolbar/index.tsx | 2 + .../Thread/ThreadCenterPanel/index.tsx | 2 + yarn.lock | 3413 ++++++++++++++++- 185 files changed, 16762 insertions(+), 1671 deletions(-) create mode 100644 src-tauri/capabilities/logs-window.json create mode 100644 web-app/.gitignore create mode 100644 web-app/README.md create mode 100644 web-app/components.json create mode 100644 web-app/eslint.config.js create mode 100644 web-app/index.html create mode 100644 web-app/package.json create mode 100644 web-app/public/fonts/PPEditorialNew/PPEditorialNew-Regular.otf create mode 100644 web-app/public/fonts/PPEditorialNew/PPEditorialNew-RegularItalic.otf create mode 100644 web-app/public/fonts/PPEditorialNew/PPEditorialNew-Ultrabold.otf create mode 100644 web-app/public/fonts/PPEditorialNew/PPEditorialNew-UltraboldItalic.otf create mode 100644 web-app/public/fonts/PPEditorialNew/PPEditorialNew-Ultralight.otf create mode 100644 web-app/public/fonts/PPEditorialNew/PPEditorialNew-UltralightItalic.otf create mode 100644 web-app/public/images/model-provider/anthropic.svg create mode 100644 web-app/public/images/model-provider/cohere.svg create mode 100644 web-app/public/images/model-provider/cortex.svg create mode 100644 web-app/public/images/model-provider/deepseek.svg create mode 100644 web-app/public/images/model-provider/dot.svg create mode 100644 web-app/public/images/model-provider/gemini.svg create mode 100644 web-app/public/images/model-provider/google-gemini.svg create mode 100644 web-app/public/images/model-provider/google.svg create mode 100644 web-app/public/images/model-provider/groq.svg create mode 100644 web-app/public/images/model-provider/hugging-face.svg create mode 100644 web-app/public/images/model-provider/llamacpp.svg create mode 100644 web-app/public/images/model-provider/martian.svg create mode 100644 web-app/public/images/model-provider/meta.svg create mode 100644 web-app/public/images/model-provider/mistral.svg create mode 100644 web-app/public/images/model-provider/nitro.svg create mode 100644 web-app/public/images/model-provider/nvidia.svg create mode 100644 web-app/public/images/model-provider/openRouter.svg create mode 100644 web-app/public/images/model-provider/openai.svg create mode 100644 web-app/public/images/model-provider/send.svg create mode 100644 web-app/src/components/ui/button.tsx create mode 100644 web-app/src/components/ui/dialog.tsx create mode 100644 web-app/src/components/ui/dropdown-menu.tsx create mode 100644 web-app/src/components/ui/hover-card.tsx create mode 100644 web-app/src/components/ui/input.tsx create mode 100644 web-app/src/components/ui/popover.tsx create mode 100644 web-app/src/components/ui/progress.tsx create mode 100644 web-app/src/components/ui/sheet.tsx create mode 100644 web-app/src/components/ui/slider.tsx create mode 100644 web-app/src/components/ui/sonner.tsx create mode 100644 web-app/src/components/ui/switch.tsx create mode 100644 web-app/src/components/ui/textarea.tsx create mode 100644 web-app/src/components/ui/tooltip.tsx create mode 100644 web-app/src/constants/localStorage.ts create mode 100644 web-app/src/constants/routes.ts create mode 100644 web-app/src/containers/ApiPrefixInput.tsx create mode 100644 web-app/src/containers/Capabilities.tsx create mode 100644 web-app/src/containers/Card.tsx create mode 100644 web-app/src/containers/ChatInput.tsx create mode 100644 web-app/src/containers/CodeBlockExample.tsx create mode 100644 web-app/src/containers/CodeBlockStyleSwitcher.tsx create mode 100644 web-app/src/containers/ColorPickerAppAccentColor.tsx create mode 100644 web-app/src/containers/ColorPickerAppBgColor.tsx create mode 100644 web-app/src/containers/ColorPickerAppDestructiveColor.tsx create mode 100644 web-app/src/containers/ColorPickerAppMainView.tsx create mode 100644 web-app/src/containers/ColorPickerAppPrimaryColor.tsx create mode 100644 web-app/src/containers/DownloadManegement.tsx create mode 100644 web-app/src/containers/DropdownModelProvider.tsx create mode 100644 web-app/src/containers/FontSizeSwitcher.tsx create mode 100644 web-app/src/containers/HeaderPage.tsx create mode 100644 web-app/src/containers/LanguageSwitcher.tsx create mode 100644 web-app/src/containers/LeftPanel.tsx create mode 100644 web-app/src/containers/LineNumbersSwitcher.tsx create mode 100644 web-app/src/containers/ModelSetting.tsx create mode 100644 web-app/src/containers/MovingBorder.tsx create mode 100644 web-app/src/containers/PlatformMetaKey.tsx create mode 100644 web-app/src/containers/PortInput.tsx create mode 100644 web-app/src/containers/ProvidersMenu.tsx create mode 100644 web-app/src/containers/RenderMarkdown.tsx create mode 100644 web-app/src/containers/ServerHostSwitcher.tsx create mode 100644 web-app/src/containers/SettingsMenu.tsx create mode 100644 web-app/src/containers/StreamingContent.tsx create mode 100644 web-app/src/containers/ThemeSwitcher.tsx create mode 100644 web-app/src/containers/ThinkingBlock.tsx create mode 100644 web-app/src/containers/ThreadContent.tsx create mode 100644 web-app/src/containers/ThreadList.tsx create mode 100644 web-app/src/containers/dialogs/AddEditMCPServer.tsx create mode 100644 web-app/src/containers/dialogs/AddModel.tsx create mode 100644 web-app/src/containers/dialogs/DeleteMCPServerConfirm.tsx create mode 100644 web-app/src/containers/dialogs/DeleteModel.tsx create mode 100644 web-app/src/containers/dialogs/EditJsonMCPserver.tsx create mode 100644 web-app/src/containers/dialogs/EditModel.tsx create mode 100644 web-app/src/containers/dynamicControllerSetting/CheckboxControl.tsx create mode 100644 web-app/src/containers/dynamicControllerSetting/DropdownControl.tsx create mode 100644 web-app/src/containers/dynamicControllerSetting/InputControl.tsx create mode 100644 web-app/src/containers/dynamicControllerSetting/SliderControl.tsx create mode 100644 web-app/src/containers/dynamicControllerSetting/TextareaControl.tsx create mode 100644 web-app/src/containers/dynamicControllerSetting/index.tsx create mode 100644 web-app/src/containers/loaders/ModelLoader.tsx create mode 100644 web-app/src/hooks/useAppState.ts create mode 100644 web-app/src/hooks/useAppearance.ts create mode 100644 web-app/src/hooks/useCodeblock.ts create mode 100644 web-app/src/hooks/useGeneralSetting.ts create mode 100644 web-app/src/hooks/useHotkeys.ts create mode 100644 web-app/src/hooks/useLeftPanel.ts create mode 100644 web-app/src/hooks/useLocalApiServer.ts create mode 100644 web-app/src/hooks/useMCPServers.ts create mode 100644 web-app/src/hooks/useMessages.ts create mode 100644 web-app/src/hooks/useModelProvider.ts create mode 100644 web-app/src/hooks/useModelSources.ts create mode 100644 web-app/src/hooks/usePrompt.ts create mode 100644 web-app/src/hooks/useTheme.ts create mode 100644 web-app/src/hooks/useThreads.ts create mode 100644 web-app/src/i18n.ts create mode 100644 web-app/src/index.css create mode 100644 web-app/src/lib/completion.ts create mode 100644 web-app/src/lib/extension.ts create mode 100644 web-app/src/lib/models.ts create mode 100644 web-app/src/lib/predefined.ts create mode 100644 web-app/src/lib/service.ts create mode 100644 web-app/src/lib/utils.ts create mode 100644 web-app/src/locales/en/chat.json create mode 100644 web-app/src/locales/en/common.json create mode 100644 web-app/src/locales/en/settings.json create mode 100644 web-app/src/locales/id/chat.json create mode 100644 web-app/src/locales/id/common.json create mode 100644 web-app/src/locales/id/settings.json create mode 100644 web-app/src/locales/vn/chat.json create mode 100644 web-app/src/locales/vn/common.json create mode 100644 web-app/src/locales/vn/settings.json create mode 100644 web-app/src/main.tsx create mode 100644 web-app/src/mock/data.ts create mode 100644 web-app/src/providers/AppearanceProvider.tsx create mode 100644 web-app/src/providers/DataProvider.tsx create mode 100644 web-app/src/providers/ExtensionProvider.tsx create mode 100644 web-app/src/providers/KeyboardShortcuts.tsx create mode 100644 web-app/src/providers/ThemeProvider.tsx create mode 100644 web-app/src/providers/ToasterProvider.tsx create mode 100644 web-app/src/routeTree.gen.ts create mode 100644 web-app/src/routes/__root.tsx create mode 100644 web-app/src/routes/hub.tsx create mode 100644 web-app/src/routes/index.tsx create mode 100644 web-app/src/routes/local-api-server/logs.tsx create mode 100644 web-app/src/routes/settings/appearance.tsx create mode 100644 web-app/src/routes/settings/extensions.tsx create mode 100644 web-app/src/routes/settings/general.tsx create mode 100644 web-app/src/routes/settings/https-proxy.tsx create mode 100644 web-app/src/routes/settings/local-api-server.tsx create mode 100644 web-app/src/routes/settings/mcp-servers.tsx create mode 100644 web-app/src/routes/settings/privacy.tsx create mode 100644 web-app/src/routes/settings/providers/$providerName.tsx create mode 100644 web-app/src/routes/settings/shortcuts.tsx create mode 100644 web-app/src/routes/threads/$threadId.tsx create mode 100644 web-app/src/services/mcp.ts create mode 100644 web-app/src/services/messages.ts create mode 100644 web-app/src/services/models.ts create mode 100644 web-app/src/services/providers.ts create mode 100644 web-app/src/services/threads.ts create mode 100644 web-app/src/styles/font.css create mode 100644 web-app/src/styles/markdown.css create mode 100644 web-app/src/types/appearance.d.ts create mode 100644 web-app/src/types/completion.ts create mode 100644 web-app/src/types/events.ts create mode 100644 web-app/src/types/global.d.ts create mode 100644 web-app/src/types/modelProviders.d.ts create mode 100644 web-app/src/types/models.ts create mode 100644 web-app/src/types/react-syntax-highlighter-virtualized-renderer.d.ts create mode 100644 web-app/src/types/threads.d.ts create mode 100644 web-app/src/vite-env.d.ts create mode 100644 web-app/tsconfig.app.json create mode 100644 web-app/tsconfig.json create mode 100644 web-app/tsconfig.node.json create mode 100644 web-app/vite.config.ts diff --git a/Makefile b/Makefile index 2803641fa..b60cd161d 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,6 @@ endif yarn install yarn build:joi yarn build:core - yarn build:server yarn build:extensions check-file-counts: install-and-build @@ -42,7 +41,7 @@ dev: check-file-counts dev-tauri: check-file-counts yarn install:cortex yarn download:bin - yarn dev:tauri + CLEAN=true yarn dev:tauri # Linting lint: check-file-counts diff --git a/core/package.json b/core/package.json index d63fedb98..1e6291375 100644 --- a/core/package.json +++ b/core/package.json @@ -8,31 +8,13 @@ ], "homepage": "https://jan.ai", "license": "AGPL-3.0", - "browser": "dist/index.js", "main": "dist/index.js", - "module": "dist/node/index.cjs.js", "typings": "dist/types/index.d.ts", "files": [ "dist", "types" ], "author": "Jan ", - "exports": { - ".": "./dist/index.js", - "./node": "./dist/node/index.cjs.js" - }, - "typesVersions": { - "*": { - ".": [ - "./dist/index.js.map", - "./dist/types/index.d.ts" - ], - "node": [ - "./dist/node/index.cjs.js.map", - "./dist/types/node/index.d.ts" - ] - } - }, "scripts": { "lint": "tslint --project tsconfig.json -t codeFrame 'src/**/*.ts' 'test/**/*.ts'", "test": "jest", diff --git a/core/src/browser/fs.ts b/core/src/browser/fs.ts index 18f937037..1bbaeb32b 100644 --- a/core/src/browser/fs.ts +++ b/core/src/browser/fs.ts @@ -80,10 +80,8 @@ const getGgufFiles: (paths: string[]) => Promise = (paths) => * @param outsideJanDataFolder - Whether the file is outside the Jan data folder. * @returns {Promise} - A promise that resolves with the file's stats. */ -const fileStat: (path: string, outsideJanDataFolder?: boolean) => Promise = ( - path, - outsideJanDataFolder -) => globalThis.core.api?.fileStat(path, outsideJanDataFolder) +const fileStat: (path: string) => Promise = (path) => + globalThis.core.api?.fileStat({ args: path }) // TODO: Export `dummy` fs functions automatically // Currently adding these manually diff --git a/core/src/browser/models/manager.ts b/core/src/browser/models/manager.ts index d5afe83d5..2c4c8750d 100644 --- a/core/src/browser/models/manager.ts +++ b/core/src/browser/models/manager.ts @@ -38,10 +38,13 @@ export class ModelManager { return this.models.get(id) as T | undefined } + /** - * The instance of the tool manager. + * Shared instance of ExtensionManager. */ - static instance(): ModelManager { - return (window.core?.modelManager as ModelManager) ?? new ModelManager() + static instance() { + if (!window.core.modelManager) + window.core.modelManager = new ModelManager() + return window.core.modelManager as ModelManager } } diff --git a/extensions/engine-management-extension/src/index.ts b/extensions/engine-management-extension/src/index.ts index 029c54646..e0b218880 100644 --- a/extensions/engine-management-extension/src/index.ts +++ b/extensions/engine-management-extension/src/index.ts @@ -56,9 +56,6 @@ export default class JanEngineManagementExtension extends EngineManagementExtens // Update default local engine this.updateDefaultEngine() - // Populate default remote engines - this.populateDefaultRemoteEngines() - // Migrate this.migrate() } diff --git a/extensions/inference-cortex-extension/resources/default_settings.json b/extensions/inference-cortex-extension/resources/default_settings.json index 945f32729..79ca05527 100644 --- a/extensions/inference-cortex-extension/resources/default_settings.json +++ b/extensions/inference-cortex-extension/resources/default_settings.json @@ -26,12 +26,23 @@ "description": "Number of CPU cores used for model processing when running without GPU.", "controllerType": "input", "controllerProps": { - "value": "", + "value": "-1", "placeholder": "Number of CPU threads", "type": "number", "textAlign": "right" } }, + { + "key": "threads_batch", + "title": "Threads (Batch)", + "description": "Number of threads for batch and prompt processing (default: same as Threads).", + "controllerType": "input", + "controllerProps": { + "value": -1, + "placeholder": "-1 (same as Threads)", + "type": "number" + } + }, { "key": "flash_attn", "title": "Flash Attention", diff --git a/extensions/yarn.lock b/extensions/yarn.lock index b87f2b047..1a8e45497 100644 --- a/extensions/yarn.lock +++ b/extensions/yarn.lock @@ -15,23 +15,6 @@ __metadata: languageName: node linkType: hard -"@anthropic-ai/sdk@npm:^0.9.1": - version: 0.9.1 - resolution: "@anthropic-ai/sdk@npm:0.9.1" - dependencies: - "@types/node": "npm:^18.11.18" - "@types/node-fetch": "npm:^2.6.4" - abort-controller: "npm:^3.0.0" - agentkeepalive: "npm:^4.2.1" - digest-fetch: "npm:^1.3.0" - form-data-encoder: "npm:1.7.2" - formdata-node: "npm:^4.3.2" - node-fetch: "npm:^2.6.7" - web-streams-polyfill: "npm:^3.2.1" - checksum: 10c0/de00ec551a5731a30254e9a3a3ed76f05c0865da6cddf32d4010659f72ca2d25985dff7173af850f92ede1e3695e00105f9689aeb875f0e82dc93f1597be0d05 - languageName: node - linkType: hard - "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0, @babel/code-frame@npm:^7.26.2": version: 7.26.2 resolution: "@babel/code-frame@npm:7.26.2" @@ -652,13 +635,7 @@ __metadata: resolution: "@janhq/assistant-extension@workspace:assistant-extension" dependencies: "@janhq/core": ../../core/package.tgz - "@langchain/community": "npm:0.0.13" - "@types/pdf-parse": "npm:^1.1.4" cpx: "npm:^1.5.0" - hnswlib-node: "npm:^1.4.2" - langchain: "npm:^0.0.214" - node-gyp: "npm:^11.0.0" - pdf-parse: "npm:^1.1.1" rimraf: "npm:^3.0.2" rolldown: "npm:1.0.0-beta.1" run-script-os: "npm:^1.1.6" @@ -673,8 +650,6 @@ __metadata: dependencies: "@janhq/core": ../../core/package.tgz cpx: "npm:^1.5.0" - ky: "npm:^1.7.2" - p-queue: "npm:^8.0.1" rimraf: "npm:^3.0.2" rolldown: "npm:1.0.0-beta.1" ts-loader: "npm:^9.5.0" @@ -684,61 +659,61 @@ __metadata: "@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fassistant-extension%40workspace%3Aassistant-extension": version: 0.1.10 - resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=704042&locator=%40janhq%2Fassistant-extension%40workspace%3Aassistant-extension" + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=5531aa&locator=%40janhq%2Fassistant-extension%40workspace%3Aassistant-extension" dependencies: rxjs: "npm:^7.8.1" ulidx: "npm:^2.3.0" - checksum: 10c0/4c53e86e66a5aa291b56a7257a90b31cd06e624d56a1d114d05b2bed46eaa39da5d9ebc5a86131867b2ebda51089b09bdd8a0ed97f329630e1d35d3463e1ba37 + checksum: 10c0/ee7fe21267cf795dba890781d1e7807a6cb3ecb915ce9ecbd3a8386a2ebc916a8b70a775ce5d9d9f74d2ec29e20b65cea4ef6cdd0ea250a8ff2d5e6bd2237b1e languageName: node linkType: hard "@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fconversational-extension%40workspace%3Aconversational-extension": version: 0.1.10 - resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=704042&locator=%40janhq%2Fconversational-extension%40workspace%3Aconversational-extension" + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=5531aa&locator=%40janhq%2Fconversational-extension%40workspace%3Aconversational-extension" dependencies: rxjs: "npm:^7.8.1" ulidx: "npm:^2.3.0" - checksum: 10c0/4c53e86e66a5aa291b56a7257a90b31cd06e624d56a1d114d05b2bed46eaa39da5d9ebc5a86131867b2ebda51089b09bdd8a0ed97f329630e1d35d3463e1ba37 + checksum: 10c0/ee7fe21267cf795dba890781d1e7807a6cb3ecb915ce9ecbd3a8386a2ebc916a8b70a775ce5d9d9f74d2ec29e20b65cea4ef6cdd0ea250a8ff2d5e6bd2237b1e languageName: node linkType: hard "@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fengine-management-extension%40workspace%3Aengine-management-extension": version: 0.1.10 - resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=704042&locator=%40janhq%2Fengine-management-extension%40workspace%3Aengine-management-extension" + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=5531aa&locator=%40janhq%2Fengine-management-extension%40workspace%3Aengine-management-extension" dependencies: rxjs: "npm:^7.8.1" ulidx: "npm:^2.3.0" - checksum: 10c0/4c53e86e66a5aa291b56a7257a90b31cd06e624d56a1d114d05b2bed46eaa39da5d9ebc5a86131867b2ebda51089b09bdd8a0ed97f329630e1d35d3463e1ba37 + checksum: 10c0/ee7fe21267cf795dba890781d1e7807a6cb3ecb915ce9ecbd3a8386a2ebc916a8b70a775ce5d9d9f74d2ec29e20b65cea4ef6cdd0ea250a8ff2d5e6bd2237b1e languageName: node linkType: hard "@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fhardware-management-extension%40workspace%3Ahardware-management-extension": version: 0.1.10 - resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=704042&locator=%40janhq%2Fhardware-management-extension%40workspace%3Ahardware-management-extension" + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=5531aa&locator=%40janhq%2Fhardware-management-extension%40workspace%3Ahardware-management-extension" dependencies: rxjs: "npm:^7.8.1" ulidx: "npm:^2.3.0" - checksum: 10c0/4c53e86e66a5aa291b56a7257a90b31cd06e624d56a1d114d05b2bed46eaa39da5d9ebc5a86131867b2ebda51089b09bdd8a0ed97f329630e1d35d3463e1ba37 + checksum: 10c0/ee7fe21267cf795dba890781d1e7807a6cb3ecb915ce9ecbd3a8386a2ebc916a8b70a775ce5d9d9f74d2ec29e20b65cea4ef6cdd0ea250a8ff2d5e6bd2237b1e languageName: node linkType: hard "@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Finference-cortex-extension%40workspace%3Ainference-cortex-extension": version: 0.1.10 - resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=704042&locator=%40janhq%2Finference-cortex-extension%40workspace%3Ainference-cortex-extension" + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=5531aa&locator=%40janhq%2Finference-cortex-extension%40workspace%3Ainference-cortex-extension" dependencies: rxjs: "npm:^7.8.1" ulidx: "npm:^2.3.0" - checksum: 10c0/4c53e86e66a5aa291b56a7257a90b31cd06e624d56a1d114d05b2bed46eaa39da5d9ebc5a86131867b2ebda51089b09bdd8a0ed97f329630e1d35d3463e1ba37 + checksum: 10c0/ee7fe21267cf795dba890781d1e7807a6cb3ecb915ce9ecbd3a8386a2ebc916a8b70a775ce5d9d9f74d2ec29e20b65cea4ef6cdd0ea250a8ff2d5e6bd2237b1e languageName: node linkType: hard "@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fmodel-extension%40workspace%3Amodel-extension": version: 0.1.10 - resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=704042&locator=%40janhq%2Fmodel-extension%40workspace%3Amodel-extension" + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=5531aa&locator=%40janhq%2Fmodel-extension%40workspace%3Amodel-extension" dependencies: rxjs: "npm:^7.8.1" ulidx: "npm:^2.3.0" - checksum: 10c0/4c53e86e66a5aa291b56a7257a90b31cd06e624d56a1d114d05b2bed46eaa39da5d9ebc5a86131867b2ebda51089b09bdd8a0ed97f329630e1d35d3463e1ba37 + checksum: 10c0/ee7fe21267cf795dba890781d1e7807a6cb3ecb915ce9ecbd3a8386a2ebc916a8b70a775ce5d9d9f74d2ec29e20b65cea4ef6cdd0ea250a8ff2d5e6bd2237b1e languageName: node linkType: hard @@ -764,7 +739,6 @@ __metadata: resolution: "@janhq/hardware-management-extension@workspace:hardware-management-extension" dependencies: "@janhq/core": ../../core/package.tgz - cpu-instructions: "npm:^0.0.13" cpx: "npm:^1.5.0" ky: "npm:^1.7.2" p-queue: "npm:^8.0.1" @@ -1092,605 +1066,6 @@ __metadata: languageName: node linkType: hard -"@langchain/community@npm:0.0.13": - version: 0.0.13 - resolution: "@langchain/community@npm:0.0.13" - dependencies: - "@langchain/core": "npm:~0.1.5" - "@langchain/openai": "npm:~0.0.9" - flat: "npm:^5.0.2" - langsmith: "npm:~0.0.48" - uuid: "npm:^9.0.0" - zod: "npm:^3.22.3" - peerDependencies: - "@aws-crypto/sha256-js": ^5.0.0 - "@aws-sdk/client-bedrock-runtime": ^3.422.0 - "@aws-sdk/client-dynamodb": ^3.310.0 - "@aws-sdk/client-kendra": ^3.352.0 - "@aws-sdk/client-lambda": ^3.310.0 - "@aws-sdk/client-sagemaker-runtime": ^3.310.0 - "@aws-sdk/client-sfn": ^3.310.0 - "@aws-sdk/credential-provider-node": ^3.388.0 - "@clickhouse/client": ^0.2.5 - "@cloudflare/ai": ^1.0.12 - "@datastax/astra-db-ts": 0.1.2 - "@elastic/elasticsearch": ^8.4.0 - "@getmetal/metal-sdk": "*" - "@getzep/zep-js": ^0.9.0 - "@gomomento/sdk": ^1.51.1 - "@gomomento/sdk-core": ^1.51.1 - "@google-ai/generativelanguage": ^0.2.1 - "@gradientai/nodejs-sdk": ^1.2.0 - "@huggingface/inference": ^2.6.4 - "@mozilla/readability": "*" - "@opensearch-project/opensearch": "*" - "@pinecone-database/pinecone": ^1.1.0 - "@planetscale/database": ^1.8.0 - "@qdrant/js-client-rest": ^1.2.0 - "@raycast/api": ^1.55.2 - "@rockset/client": ^0.9.1 - "@smithy/eventstream-codec": ^2.0.5 - "@smithy/protocol-http": ^3.0.6 - "@smithy/signature-v4": ^2.0.10 - "@smithy/util-utf8": ^2.0.0 - "@supabase/postgrest-js": ^1.1.1 - "@supabase/supabase-js": ^2.10.0 - "@tensorflow-models/universal-sentence-encoder": "*" - "@tensorflow/tfjs-converter": "*" - "@tensorflow/tfjs-core": "*" - "@upstash/redis": ^1.20.6 - "@vercel/kv": ^0.2.3 - "@vercel/postgres": ^0.5.0 - "@writerai/writer-sdk": ^0.40.2 - "@xata.io/client": ^0.28.0 - "@xenova/transformers": ^2.5.4 - "@zilliz/milvus2-sdk-node": ">=2.2.7" - cassandra-driver: ^4.7.2 - chromadb: "*" - closevector-common: 0.1.0-alpha.1 - closevector-node: 0.1.0-alpha.10 - closevector-web: 0.1.0-alpha.16 - cohere-ai: ">=6.0.0" - convex: ^1.3.1 - discord.js: ^14.14.1 - faiss-node: ^0.5.1 - firebase-admin: ^11.9.0 - google-auth-library: ^8.9.0 - googleapis: ^126.0.1 - hnswlib-node: ^1.4.2 - html-to-text: ^9.0.5 - ioredis: ^5.3.2 - jsdom: "*" - llmonitor: ^0.5.9 - lodash: ^4.17.21 - mongodb: ^5.2.0 - mysql2: ^3.3.3 - neo4j-driver: "*" - node-llama-cpp: "*" - pg: ^8.11.0 - pg-copy-streams: ^6.0.5 - pickleparser: ^0.2.1 - portkey-ai: ^0.1.11 - redis: ^4.6.4 - replicate: ^0.18.0 - typeorm: ^0.3.12 - typesense: ^1.5.3 - usearch: ^1.1.1 - vectordb: ^0.1.4 - voy-search: 0.6.2 - weaviate-ts-client: ^1.4.0 - web-auth-library: ^1.0.3 - ws: ^8.14.2 - peerDependenciesMeta: - "@aws-crypto/sha256-js": - optional: true - "@aws-sdk/client-bedrock-runtime": - optional: true - "@aws-sdk/client-dynamodb": - optional: true - "@aws-sdk/client-kendra": - optional: true - "@aws-sdk/client-lambda": - optional: true - "@aws-sdk/client-sagemaker-runtime": - optional: true - "@aws-sdk/client-sfn": - optional: true - "@aws-sdk/credential-provider-node": - optional: true - "@clickhouse/client": - optional: true - "@cloudflare/ai": - optional: true - "@datastax/astra-db-ts": - optional: true - "@elastic/elasticsearch": - optional: true - "@getmetal/metal-sdk": - optional: true - "@getzep/zep-js": - optional: true - "@gomomento/sdk": - optional: true - "@gomomento/sdk-core": - optional: true - "@google-ai/generativelanguage": - optional: true - "@gradientai/nodejs-sdk": - optional: true - "@huggingface/inference": - optional: true - "@mozilla/readability": - optional: true - "@opensearch-project/opensearch": - optional: true - "@pinecone-database/pinecone": - optional: true - "@planetscale/database": - optional: true - "@qdrant/js-client-rest": - optional: true - "@raycast/api": - optional: true - "@rockset/client": - optional: true - "@smithy/eventstream-codec": - optional: true - "@smithy/protocol-http": - optional: true - "@smithy/signature-v4": - optional: true - "@smithy/util-utf8": - optional: true - "@supabase/postgrest-js": - optional: true - "@supabase/supabase-js": - optional: true - "@tensorflow-models/universal-sentence-encoder": - optional: true - "@tensorflow/tfjs-converter": - optional: true - "@tensorflow/tfjs-core": - optional: true - "@upstash/redis": - optional: true - "@vercel/kv": - optional: true - "@vercel/postgres": - optional: true - "@writerai/writer-sdk": - optional: true - "@xata.io/client": - optional: true - "@xenova/transformers": - optional: true - "@zilliz/milvus2-sdk-node": - optional: true - cassandra-driver: - optional: true - chromadb: - optional: true - closevector-common: - optional: true - closevector-node: - optional: true - closevector-web: - optional: true - cohere-ai: - optional: true - convex: - optional: true - discord.js: - optional: true - faiss-node: - optional: true - firebase-admin: - optional: true - google-auth-library: - optional: true - googleapis: - optional: true - hnswlib-node: - optional: true - html-to-text: - optional: true - ioredis: - optional: true - jsdom: - optional: true - llmonitor: - optional: true - lodash: - optional: true - mongodb: - optional: true - mysql2: - optional: true - neo4j-driver: - optional: true - node-llama-cpp: - optional: true - pg: - optional: true - pg-copy-streams: - optional: true - pickleparser: - optional: true - portkey-ai: - optional: true - redis: - optional: true - replicate: - optional: true - typeorm: - optional: true - typesense: - optional: true - usearch: - optional: true - vectordb: - optional: true - voy-search: - optional: true - weaviate-ts-client: - optional: true - web-auth-library: - optional: true - ws: - optional: true - checksum: 10c0/384926b577f9815cd24f2afea175a256d2e4deb09ac767e76daf293689870bef9c4c4bd3909428878b997de6cadd277cf3c585bb3f6f7e0672d57119a31c5b47 - languageName: node - linkType: hard - -"@langchain/community@npm:~0.0.13": - version: 0.0.57 - resolution: "@langchain/community@npm:0.0.57" - dependencies: - "@langchain/core": "npm:~0.1.60" - "@langchain/openai": "npm:~0.0.28" - expr-eval: "npm:^2.0.2" - flat: "npm:^5.0.2" - langsmith: "npm:~0.1.1" - uuid: "npm:^9.0.0" - zod: "npm:^3.22.3" - zod-to-json-schema: "npm:^3.22.5" - peerDependencies: - "@aws-crypto/sha256-js": ^5.0.0 - "@aws-sdk/client-bedrock-agent-runtime": ^3.485.0 - "@aws-sdk/client-bedrock-runtime": ^3.422.0 - "@aws-sdk/client-dynamodb": ^3.310.0 - "@aws-sdk/client-kendra": ^3.352.0 - "@aws-sdk/client-lambda": ^3.310.0 - "@aws-sdk/client-sagemaker-runtime": ^3.310.0 - "@aws-sdk/client-sfn": ^3.310.0 - "@aws-sdk/credential-provider-node": ^3.388.0 - "@azure/search-documents": ^12.0.0 - "@clickhouse/client": ^0.2.5 - "@cloudflare/ai": "*" - "@datastax/astra-db-ts": ^1.0.0 - "@elastic/elasticsearch": ^8.4.0 - "@getmetal/metal-sdk": "*" - "@getzep/zep-js": ^0.9.0 - "@gomomento/sdk": ^1.51.1 - "@gomomento/sdk-core": ^1.51.1 - "@google-ai/generativelanguage": ^0.2.1 - "@gradientai/nodejs-sdk": ^1.2.0 - "@huggingface/inference": ^2.6.4 - "@mlc-ai/web-llm": ^0.2.35 - "@mozilla/readability": "*" - "@neondatabase/serverless": "*" - "@opensearch-project/opensearch": "*" - "@pinecone-database/pinecone": "*" - "@planetscale/database": ^1.8.0 - "@premai/prem-sdk": ^0.3.25 - "@qdrant/js-client-rest": ^1.8.2 - "@raycast/api": ^1.55.2 - "@rockset/client": ^0.9.1 - "@smithy/eventstream-codec": ^2.0.5 - "@smithy/protocol-http": ^3.0.6 - "@smithy/signature-v4": ^2.0.10 - "@smithy/util-utf8": ^2.0.0 - "@supabase/postgrest-js": ^1.1.1 - "@supabase/supabase-js": ^2.10.0 - "@tensorflow-models/universal-sentence-encoder": "*" - "@tensorflow/tfjs-converter": "*" - "@tensorflow/tfjs-core": "*" - "@upstash/redis": ^1.20.6 - "@upstash/vector": ^1.0.7 - "@vercel/kv": ^0.2.3 - "@vercel/postgres": ^0.5.0 - "@writerai/writer-sdk": ^0.40.2 - "@xata.io/client": ^0.28.0 - "@xenova/transformers": ^2.5.4 - "@zilliz/milvus2-sdk-node": ">=2.2.7" - better-sqlite3: ^9.4.0 - cassandra-driver: ^4.7.2 - cborg: ^4.1.1 - chromadb: "*" - closevector-common: 0.1.3 - closevector-node: 0.1.6 - closevector-web: 0.1.6 - cohere-ai: "*" - convex: ^1.3.1 - couchbase: ^4.3.0 - discord.js: ^14.14.1 - dria: ^0.0.3 - duck-duck-scrape: ^2.2.5 - faiss-node: ^0.5.1 - firebase-admin: ^11.9.0 || ^12.0.0 - google-auth-library: ^8.9.0 - googleapis: ^126.0.1 - hnswlib-node: ^3.0.0 - html-to-text: ^9.0.5 - interface-datastore: ^8.2.11 - ioredis: ^5.3.2 - it-all: ^3.0.4 - jsdom: "*" - jsonwebtoken: ^9.0.2 - llmonitor: ^0.5.9 - lodash: ^4.17.21 - lunary: ^0.6.11 - mongodb: ">=5.2.0" - mysql2: ^3.3.3 - neo4j-driver: "*" - node-llama-cpp: "*" - pg: ^8.11.0 - pg-copy-streams: ^6.0.5 - pickleparser: ^0.2.1 - portkey-ai: ^0.1.11 - redis: "*" - replicate: ^0.18.0 - typeorm: ^0.3.12 - typesense: ^1.5.3 - usearch: ^1.1.1 - vectordb: ^0.1.4 - voy-search: 0.6.2 - weaviate-ts-client: "*" - web-auth-library: ^1.0.3 - ws: ^8.14.2 - peerDependenciesMeta: - "@aws-crypto/sha256-js": - optional: true - "@aws-sdk/client-bedrock-agent-runtime": - optional: true - "@aws-sdk/client-bedrock-runtime": - optional: true - "@aws-sdk/client-dynamodb": - optional: true - "@aws-sdk/client-kendra": - optional: true - "@aws-sdk/client-lambda": - optional: true - "@aws-sdk/client-sagemaker-runtime": - optional: true - "@aws-sdk/client-sfn": - optional: true - "@aws-sdk/credential-provider-node": - optional: true - "@azure/search-documents": - optional: true - "@clickhouse/client": - optional: true - "@cloudflare/ai": - optional: true - "@datastax/astra-db-ts": - optional: true - "@elastic/elasticsearch": - optional: true - "@getmetal/metal-sdk": - optional: true - "@getzep/zep-js": - optional: true - "@gomomento/sdk": - optional: true - "@gomomento/sdk-core": - optional: true - "@google-ai/generativelanguage": - optional: true - "@gradientai/nodejs-sdk": - optional: true - "@huggingface/inference": - optional: true - "@mlc-ai/web-llm": - optional: true - "@mozilla/readability": - optional: true - "@neondatabase/serverless": - optional: true - "@opensearch-project/opensearch": - optional: true - "@pinecone-database/pinecone": - optional: true - "@planetscale/database": - optional: true - "@premai/prem-sdk": - optional: true - "@qdrant/js-client-rest": - optional: true - "@raycast/api": - optional: true - "@rockset/client": - optional: true - "@smithy/eventstream-codec": - optional: true - "@smithy/protocol-http": - optional: true - "@smithy/signature-v4": - optional: true - "@smithy/util-utf8": - optional: true - "@supabase/postgrest-js": - optional: true - "@supabase/supabase-js": - optional: true - "@tensorflow-models/universal-sentence-encoder": - optional: true - "@tensorflow/tfjs-converter": - optional: true - "@tensorflow/tfjs-core": - optional: true - "@upstash/redis": - optional: true - "@upstash/vector": - optional: true - "@vercel/kv": - optional: true - "@vercel/postgres": - optional: true - "@writerai/writer-sdk": - optional: true - "@xata.io/client": - optional: true - "@xenova/transformers": - optional: true - "@zilliz/milvus2-sdk-node": - optional: true - better-sqlite3: - optional: true - cassandra-driver: - optional: true - cborg: - optional: true - chromadb: - optional: true - closevector-common: - optional: true - closevector-node: - optional: true - closevector-web: - optional: true - cohere-ai: - optional: true - convex: - optional: true - couchbase: - optional: true - discord.js: - optional: true - dria: - optional: true - duck-duck-scrape: - optional: true - faiss-node: - optional: true - firebase-admin: - optional: true - google-auth-library: - optional: true - googleapis: - optional: true - hnswlib-node: - optional: true - html-to-text: - optional: true - interface-datastore: - optional: true - ioredis: - optional: true - it-all: - optional: true - jsdom: - optional: true - jsonwebtoken: - optional: true - llmonitor: - optional: true - lodash: - optional: true - lunary: - optional: true - mongodb: - optional: true - mysql2: - optional: true - neo4j-driver: - optional: true - node-llama-cpp: - optional: true - pg: - optional: true - pg-copy-streams: - optional: true - pickleparser: - optional: true - portkey-ai: - optional: true - redis: - optional: true - replicate: - optional: true - typeorm: - optional: true - typesense: - optional: true - usearch: - optional: true - vectordb: - optional: true - voy-search: - optional: true - weaviate-ts-client: - optional: true - web-auth-library: - optional: true - ws: - optional: true - checksum: 10c0/7d42470c5c42d97c9e9b4925de3fa8a558d785e2c96c347d4a48f97f6396c64e54f3730340c2d262e09440fc664ef44496a9ce09894e75b2e4362017e6bc478c - languageName: node - linkType: hard - -"@langchain/core@npm:>0.1.56 <0.3.0": - version: 0.2.36 - resolution: "@langchain/core@npm:0.2.36" - dependencies: - ansi-styles: "npm:^5.0.0" - camelcase: "npm:6" - decamelize: "npm:1.2.0" - js-tiktoken: "npm:^1.0.12" - langsmith: "npm:^0.1.56-rc.1" - mustache: "npm:^4.2.0" - p-queue: "npm:^6.6.2" - p-retry: "npm:4" - uuid: "npm:^10.0.0" - zod: "npm:^3.22.4" - zod-to-json-schema: "npm:^3.22.3" - checksum: 10c0/ff49119a295e9605258c5e4fbb0628824f6532937f4f5ca4d141f2f5a10856f3d0890be0fc12b0ebba7ab84d9e66839094780d8e6299f46ddce8751fd8a96d1f - languageName: node - linkType: hard - -"@langchain/core@npm:~0.1.5, @langchain/core@npm:~0.1.60": - version: 0.1.63 - resolution: "@langchain/core@npm:0.1.63" - dependencies: - ansi-styles: "npm:^5.0.0" - camelcase: "npm:6" - decamelize: "npm:1.2.0" - js-tiktoken: "npm:^1.0.12" - langsmith: "npm:~0.1.7" - ml-distance: "npm:^4.0.0" - mustache: "npm:^4.2.0" - p-queue: "npm:^6.6.2" - p-retry: "npm:4" - uuid: "npm:^9.0.0" - zod: "npm:^3.22.4" - zod-to-json-schema: "npm:^3.22.3" - checksum: 10c0/44f8b0846439f55e2137fe150275682978b91cf4c2516320c1a17b3180558c3fb709eafc974d5b23dd356006bed542390f52bc7b5a10f8f4284836556a921614 - languageName: node - linkType: hard - -"@langchain/openai@npm:~0.0.28, @langchain/openai@npm:~0.0.9": - version: 0.0.34 - resolution: "@langchain/openai@npm:0.0.34" - dependencies: - "@langchain/core": "npm:>0.1.56 <0.3.0" - js-tiktoken: "npm:^1.0.12" - openai: "npm:^4.41.1" - zod: "npm:^3.22.4" - zod-to-json-schema: "npm:^3.22.3" - checksum: 10c0/16a909b23340d680f3b1de09a56868b0cf00123e992412287987d39e5bf92c40c4247c7113b491f99a98623d12f1c578c3e874a4011d0af5e57212637ceb6328 - languageName: node - linkType: hard - "@napi-rs/wasm-runtime@npm:^0.2.4": version: 0.2.6 resolution: "@napi-rs/wasm-runtime@npm:0.2.6" @@ -2180,16 +1555,6 @@ __metadata: languageName: node linkType: hard -"@types/node-fetch@npm:^2.6.4": - version: 2.6.12 - resolution: "@types/node-fetch@npm:2.6.12" - dependencies: - "@types/node": "npm:*" - form-data: "npm:^4.0.0" - checksum: 10c0/7693acad5499b7df2d1727d46cff092a63896dc04645f36b973dd6dd754a59a7faba76fcb777bdaa35d80625c6a9dd7257cca9c401a4bab03b04480cda7fd1af - languageName: node - linkType: hard - "@types/node@npm:*": version: 22.10.2 resolution: "@types/node@npm:22.10.2" @@ -2199,15 +1564,6 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^18.11.18": - version: 18.19.68 - resolution: "@types/node@npm:18.19.68" - dependencies: - undici-types: "npm:~5.26.4" - checksum: 10c0/8c7f01be218c6e3c1e643173662af27e9a2b568f36c0fe83e4295cf7674fe2a0abb4a1c5d7c7abd3345b9114581387dfd3f14b6d0338daebdce9273cd7ba59ab - languageName: node - linkType: hard - "@types/node@npm:^20.11.4": version: 20.17.10 resolution: "@types/node@npm:20.17.10" @@ -2224,13 +1580,6 @@ __metadata: languageName: node linkType: hard -"@types/pdf-parse@npm:^1.1.4": - version: 1.1.4 - resolution: "@types/pdf-parse@npm:1.1.4" - checksum: 10c0/1192e0a40bae935428a7f02a56d1313474f0d735820824e1d00f06a0330cf89cc18e34d63864202ae997fbd7806952fa68a47a1f0cbc81f8d03000f942543d5c - languageName: node - linkType: hard - "@types/responselike@npm:^1.0.0": version: 1.0.3 resolution: "@types/responselike@npm:1.0.3" @@ -2240,13 +1589,6 @@ __metadata: languageName: node linkType: hard -"@types/retry@npm:0.12.0": - version: 0.12.0 - resolution: "@types/retry@npm:0.12.0" - checksum: 10c0/7c5c9086369826f569b83a4683661557cab1361bac0897a1cefa1a915ff739acd10ca0d62b01071046fe3f5a3f7f2aec80785fe283b75602dc6726781ea3e328 - languageName: node - linkType: hard - "@types/stack-utils@npm:^2.0.0": version: 2.0.3 resolution: "@types/stack-utils@npm:2.0.3" @@ -2261,20 +1603,6 @@ __metadata: languageName: node linkType: hard -"@types/uuid@npm:^10.0.0": - version: 10.0.0 - resolution: "@types/uuid@npm:10.0.0" - checksum: 10c0/9a1404bf287164481cb9b97f6bb638f78f955be57c40c6513b7655160beb29df6f84c915aaf4089a1559c216557dc4d2f79b48d978742d3ae10b937420ddac60 - languageName: node - linkType: hard - -"@types/uuid@npm:^9.0.1": - version: 9.0.8 - resolution: "@types/uuid@npm:9.0.8" - checksum: 10c0/b411b93054cb1d4361919579ef3508a1f12bf15b5fdd97337d3d351bece6c921b52b6daeef89b62340fd73fd60da407878432a1af777f40648cbe53a01723489 - languageName: node - linkType: hard - "@types/yargs-parser@npm:*": version: 21.0.3 resolution: "@types/yargs-parser@npm:21.0.3" @@ -2460,15 +1788,6 @@ __metadata: languageName: node linkType: hard -"abort-controller@npm:^3.0.0": - version: 3.0.0 - resolution: "abort-controller@npm:3.0.0" - dependencies: - event-target-shim: "npm:^5.0.0" - checksum: 10c0/90ccc50f010250152509a344eb2e71977fbf8db0ab8f1061197e3275ddf6c61a41a6edfd7b9409c664513131dd96e962065415325ef23efa5db931b382d24ca5 - languageName: node - linkType: hard - "agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": version: 7.1.3 resolution: "agent-base@npm:7.1.3" @@ -2476,15 +1795,6 @@ __metadata: languageName: node linkType: hard -"agentkeepalive@npm:^4.2.1": - version: 4.5.0 - resolution: "agentkeepalive@npm:4.5.0" - dependencies: - humanize-ms: "npm:^1.2.1" - checksum: 10c0/394ea19f9710f230722996e156607f48fdf3a345133b0b1823244b7989426c16019a428b56c82d3eabef616e938812981d9009f4792ecc66bd6a59e991c62612 - languageName: node - linkType: hard - "ansi-escapes@npm:^4.2.1": version: 4.3.2 resolution: "ansi-escapes@npm:4.3.2" @@ -2560,13 +1870,6 @@ __metadata: languageName: node linkType: hard -"argparse@npm:^2.0.1": - version: 2.0.1 - resolution: "argparse@npm:2.0.1" - checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e - languageName: node - linkType: hard - "arr-diff@npm:^2.0.0": version: 2.0.0 resolution: "arr-diff@npm:2.0.0" @@ -2646,13 +1949,6 @@ __metadata: languageName: node linkType: hard -"asynckit@npm:^0.4.0": - version: 0.4.0 - resolution: "asynckit@npm:0.4.0" - checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d - languageName: node - linkType: hard - "atob@npm:^2.1.2": version: 2.1.2 resolution: "atob@npm:2.1.2" @@ -2758,14 +2054,7 @@ __metadata: languageName: node linkType: hard -"base-64@npm:^0.1.0": - version: 0.1.0 - resolution: "base-64@npm:0.1.0" - checksum: 10c0/fe0dcf076e823f04db7ee9b02495be08a91c445fbc6db03cb9913be9680e2fcc0af8b74459041fe08ad16800b1f65a549501d8f08696a8a6d32880789b7de69d - languageName: node - linkType: hard - -"base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": +"base64-js@npm:^1.3.1": version: 1.5.1 resolution: "base64-js@npm:1.5.1" checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf @@ -2794,20 +2083,6 @@ __metadata: languageName: node linkType: hard -"binary-extensions@npm:^2.2.0": - version: 2.3.0 - resolution: "binary-extensions@npm:2.3.0" - checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 - languageName: node - linkType: hard - -"binary-search@npm:^1.3.5": - version: 1.3.6 - resolution: "binary-search@npm:1.3.6" - checksum: 10c0/786a770e3411cf563c9c7829e2854d79583a207b8faaa5022f93352893e1d06035ae5d80de1b168dcbd9d346fdb0dd2e3d7fcdf309b3a63dc027e92624da32a0 - languageName: node - linkType: hard - "bindings@npm:^1.5.0": version: 1.5.0 resolution: "bindings@npm:1.5.0" @@ -2827,17 +2102,6 @@ __metadata: languageName: node linkType: hard -"bl@npm:^4.0.3": - version: 4.1.0 - resolution: "bl@npm:4.1.0" - dependencies: - buffer: "npm:^5.5.0" - inherits: "npm:^2.0.4" - readable-stream: "npm:^3.4.0" - checksum: 10c0/02847e1d2cb089c9dc6958add42e3cdeaf07d13f575973963335ac0fdece563a50ac770ac4c8fa06492d2dd276f6cc3b7f08c7cd9c7a7ad0f8d388b2a28def5f - languageName: node - linkType: hard - "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" @@ -2965,7 +2229,7 @@ __metadata: languageName: node linkType: hard -"buffer@npm:^5.2.1, buffer@npm:^5.5.0": +"buffer@npm:^5.2.1": version: 5.7.1 resolution: "buffer@npm:5.7.1" dependencies: @@ -3036,13 +2300,6 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:6, camelcase@npm:^6.2.0": - version: 6.3.0 - resolution: "camelcase@npm:6.3.0" - checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 - languageName: node - linkType: hard - "camelcase@npm:^2.0.0": version: 2.1.1 resolution: "camelcase@npm:2.1.1" @@ -3057,6 +2314,13 @@ __metadata: languageName: node linkType: hard +"camelcase@npm:^6.2.0": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 + languageName: node + linkType: hard + "caniuse-lite@npm:^1.0.30001688": version: 1.0.30001690 resolution: "caniuse-lite@npm:1.0.30001690" @@ -3106,13 +2370,6 @@ __metadata: languageName: node linkType: hard -"charenc@npm:0.0.2": - version: 0.0.2 - resolution: "charenc@npm:0.0.2" - checksum: 10c0/a45ec39363a16799d0f9365c8dd0c78e711415113c6f14787a22462ef451f5013efae8a28f1c058f81fc01f2a6a16955f7a5fd0cd56247ce94a45349c89877d8 - languageName: node - linkType: hard - "check-error@npm:^2.1.1": version: 2.1.1 resolution: "check-error@npm:2.1.1" @@ -3140,13 +2397,6 @@ __metadata: languageName: node linkType: hard -"chownr@npm:^1.1.1": - version: 1.1.4 - resolution: "chownr@npm:1.1.4" - checksum: 10c0/ed57952a84cc0c802af900cf7136de643d3aba2eecb59d29344bc2f3f9bf703a301b9d84cdc71f82c3ffc9ccde831b0d92f5b45f91727d6c9da62f23aef9d9db - languageName: node - linkType: hard - "chownr@npm:^3.0.0": version: 3.0.0 resolution: "chownr@npm:3.0.0" @@ -3231,22 +2481,6 @@ __metadata: languageName: node linkType: hard -"combined-stream@npm:^1.0.8": - version: 1.0.8 - resolution: "combined-stream@npm:1.0.8" - dependencies: - delayed-stream: "npm:~1.0.0" - checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5 - languageName: node - linkType: hard - -"commander@npm:^10.0.1": - version: 10.0.1 - resolution: "commander@npm:10.0.1" - checksum: 10c0/53f33d8927758a911094adadda4b2cbac111a5b377d8706700587650fd8f45b0bbe336de4b5c3fe47fd61f420a3d9bd452b6e0e6e5600a7e74d7bf0174f6efe3 - languageName: node - linkType: hard - "commander@npm:^2.8.1": version: 2.20.3 resolution: "commander@npm:2.20.3" @@ -3315,20 +2549,6 @@ __metadata: languageName: node linkType: hard -"cpu-instructions@npm:^0.0.13": - version: 0.0.13 - resolution: "cpu-instructions@npm:0.0.13" - dependencies: - bindings: "npm:^1.5.0" - node-addon-api: "npm:^8.0.0" - node-gyp-build: "npm:^4.8.1" - prebuildify: "npm:^6.0.1" - peerDependencies: - node-gyp: ^10 - checksum: 10c0/60860df7eee1d4f9c7cd710e634c9f0fdb461a5e90ce2a563e691ed23a290eeb9957562bf5149bf72dea8d2ddaacfdc8b0a824754faae8bc397dccc2902839a5 - languageName: node - linkType: hard - "cpx@npm:^1.5.0": version: 1.5.0 resolution: "cpx@npm:1.5.0" @@ -3378,13 +2598,6 @@ __metadata: languageName: node linkType: hard -"crypt@npm:0.0.2": - version: 0.0.2 - resolution: "crypt@npm:0.0.2" - checksum: 10c0/adbf263441dd801665d5425f044647533f39f4612544071b1471962209d235042fb703c27eea2795c7c53e1dfc242405173003f83cf4f4761a633d11f9653f18 - languageName: node - linkType: hard - "currently-unhandled@npm:^0.4.1": version: 0.4.1 resolution: "currently-unhandled@npm:0.4.1" @@ -3415,16 +2628,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:^3.1.0": - version: 3.2.7 - resolution: "debug@npm:3.2.7" - dependencies: - ms: "npm:^2.1.1" - checksum: 10c0/37d96ae42cbc71c14844d2ae3ba55adf462ec89fd3a999459dec3833944cd999af6007ff29c780f1c61153bcaaf2c842d1e4ce1ec621e4fc4923244942e4a02a - languageName: node - linkType: hard - -"decamelize@npm:1.2.0, decamelize@npm:^1.1.2": +"decamelize@npm:^1.1.2": version: 1.2.0 resolution: "decamelize@npm:1.2.0" checksum: 10c0/85c39fe8fbf0482d4a1e224ef0119db5c1897f8503bcef8b826adff7a1b11414972f6fef2d7dec2ee0b4be3863cf64ac1439137ae9e6af23a3d8dcbe26a5b4b2 @@ -3564,13 +2768,6 @@ __metadata: languageName: node linkType: hard -"delayed-stream@npm:~1.0.0": - version: 1.0.0 - resolution: "delayed-stream@npm:1.0.0" - checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 - languageName: node - linkType: hard - "detect-newline@npm:^3.0.0": version: 3.1.0 resolution: "detect-newline@npm:3.1.0" @@ -3585,16 +2782,6 @@ __metadata: languageName: node linkType: hard -"digest-fetch@npm:^1.3.0": - version: 1.3.0 - resolution: "digest-fetch@npm:1.3.0" - dependencies: - base-64: "npm:^0.1.0" - md5: "npm:^2.3.0" - checksum: 10c0/0fb389e33b9c6baf5e6a9ed287aa9d0d8b373d59b49d49c62c261e1ab24eaaf1d5aea3a105c1b31ba4a23e29e129365d839ce4c5974fa004a85d1a4568bc3585 - languageName: node - linkType: hard - "download-cli@npm:^1.1.1": version: 1.1.1 resolution: "download-cli@npm:1.1.1" @@ -3695,7 +2882,7 @@ __metadata: languageName: node linkType: hard -"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": +"end-of-stream@npm:^1.0.0": version: 1.4.4 resolution: "end-of-stream@npm:1.4.4" dependencies: @@ -3870,20 +3057,6 @@ __metadata: languageName: node linkType: hard -"event-target-shim@npm:^5.0.0": - version: 5.0.1 - resolution: "event-target-shim@npm:5.0.1" - checksum: 10c0/0255d9f936215fd206156fd4caa9e8d35e62075d720dc7d847e89b417e5e62cf1ce6c9b4e0a1633a9256de0efefaf9f8d26924b1f3c8620cffb9db78e7d3076b - languageName: node - linkType: hard - -"eventemitter3@npm:^4.0.4": - version: 4.0.7 - resolution: "eventemitter3@npm:4.0.7" - checksum: 10c0/5f6d97cbcbac47be798e6355e3a7639a84ee1f7d9b199a07017f1d2f1e2fe236004d14fa5dfaeba661f94ea57805385e326236a6debbc7145c8877fbc0297c6b - languageName: node - linkType: hard - "eventemitter3@npm:^5.0.1": version: 5.0.1 resolution: "eventemitter3@npm:5.0.1" @@ -3975,13 +3148,6 @@ __metadata: languageName: node linkType: hard -"expr-eval@npm:^2.0.2": - version: 2.0.2 - resolution: "expr-eval@npm:2.0.2" - checksum: 10c0/642f112ff28ea34574c595c3ad73ccd8e638498879a4dd28620c4dabebab2e11987a851266ba81883dae85a5800e0c93b3d06f81718b71a215f831534646e4f2 - languageName: node - linkType: hard - "ext-list@npm:^2.0.0": version: 2.2.2 resolution: "ext-list@npm:2.2.2" @@ -4200,15 +3366,6 @@ __metadata: languageName: node linkType: hard -"flat@npm:^5.0.2": - version: 5.0.2 - resolution: "flat@npm:5.0.2" - bin: - flat: cli.js - checksum: 10c0/f178b13482f0cd80c7fede05f4d10585b1f2fdebf26e12edc138e32d3150c6ea6482b7f12813a1091143bad52bb6d3596bca51a162257a21163c0ff438baa5fe - languageName: node - linkType: hard - "for-in@npm:^1.0.1, for-in@npm:^1.0.2": version: 1.0.2 resolution: "for-in@npm:1.0.2" @@ -4235,34 +3392,6 @@ __metadata: languageName: node linkType: hard -"form-data-encoder@npm:1.7.2": - version: 1.7.2 - resolution: "form-data-encoder@npm:1.7.2" - checksum: 10c0/56553768037b6d55d9de524f97fe70555f0e415e781cb56fc457a68263de3d40fadea2304d4beef2d40b1a851269bd7854e42c362107071892cb5238debe9464 - languageName: node - linkType: hard - -"form-data@npm:^4.0.0": - version: 4.0.1 - resolution: "form-data@npm:4.0.1" - dependencies: - asynckit: "npm:^0.4.0" - combined-stream: "npm:^1.0.8" - mime-types: "npm:^2.1.12" - checksum: 10c0/bb102d570be8592c23f4ea72d7df9daa50c7792eb0cf1c5d7e506c1706e7426a4e4ae48a35b109e91c85f1c0ec63774a21ae252b66f4eb981cb8efef7d0463c8 - languageName: node - linkType: hard - -"formdata-node@npm:^4.3.2": - version: 4.4.1 - resolution: "formdata-node@npm:4.4.1" - dependencies: - node-domexception: "npm:1.0.0" - web-streams-polyfill: "npm:4.0.0-beta.3" - checksum: 10c0/74151e7b228ffb33b565cec69182694ad07cc3fdd9126a8240468bb70a8ba66e97e097072b60bcb08729b24c7ce3fd3e0bd7f1f80df6f9f662b9656786e76f6a - languageName: node - linkType: hard - "fragment-cache@npm:^0.2.1": version: 0.2.1 resolution: "fragment-cache@npm:0.2.1" @@ -4575,17 +3704,6 @@ __metadata: languageName: node linkType: hard -"hnswlib-node@npm:^1.4.2": - version: 1.4.2 - resolution: "hnswlib-node@npm:1.4.2" - dependencies: - bindings: "npm:^1.5.0" - node-addon-api: "npm:^6.0.0" - node-gyp: "npm:latest" - checksum: 10c0/562946c2bfa803080f8b5f67e9e7dd519a3ce5bf8de311bb247fd141eaa43a064d70d7ad5f6f85f98f1d78d6970e4ae2912d0a73039f7968328605c14184f953 - languageName: node - linkType: hard - "hosted-git-info@npm:^2.1.4": version: 2.8.9 resolution: "hosted-git-info@npm:2.8.9" @@ -4634,15 +3752,6 @@ __metadata: languageName: node linkType: hard -"humanize-ms@npm:^1.2.1": - version: 1.2.1 - resolution: "humanize-ms@npm:1.2.1" - dependencies: - ms: "npm:^2.0.0" - checksum: 10c0/f34a2c20161d02303c2807badec2f3b49cbfbbb409abd4f95a07377ae01cfe6b59e3d15ac609cffcd8f2521f0eb37b7e1091acf65da99aa2a4f1ad63c21e7e7a - languageName: node - linkType: hard - "iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" @@ -4697,7 +3806,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:^2.0.1, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 @@ -4730,13 +3839,6 @@ __metadata: languageName: node linkType: hard -"is-any-array@npm:^2.0.0": - version: 2.0.1 - resolution: "is-any-array@npm:2.0.1" - checksum: 10c0/f9807458a51e63ca1ac27fd6f3a3ace8200f077094e00d9b05b24cfbc9d5594d586d6ecf3416271f26939d5cb93fc52ca869cb5744e77318c3f53ec70b08d61f - languageName: node - linkType: hard - "is-arrayish@npm:^0.2.1": version: 0.2.1 resolution: "is-arrayish@npm:0.2.1" @@ -4753,7 +3855,7 @@ __metadata: languageName: node linkType: hard -"is-buffer@npm:^1.1.5, is-buffer@npm:~1.1.6": +"is-buffer@npm:^1.1.5": version: 1.1.6 resolution: "is-buffer@npm:1.1.6" checksum: 10c0/ae18aa0b6e113d6c490ad1db5e8df9bdb57758382b313f5a22c9c61084875c6396d50bbf49315f5b1926d142d74dfb8d31b40d993a383e0a158b15fea7a82234 @@ -5556,15 +4658,6 @@ __metadata: languageName: node linkType: hard -"js-tiktoken@npm:^1.0.12, js-tiktoken@npm:^1.0.7": - version: 1.0.16 - resolution: "js-tiktoken@npm:1.0.16" - dependencies: - base64-js: "npm:^1.5.1" - checksum: 10c0/9c3b7ff9b675334eb939f97fb83da31bb499b2a34cc7da42ee7c1a72f4286b40d2c78c7dca375eece5cc20c35a00f2b6b343387fa14f2472e615cf09b755cfdd - languageName: node - linkType: hard - "js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" @@ -5584,17 +4677,6 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^4.1.0": - version: 4.1.0 - resolution: "js-yaml@npm:4.1.0" - dependencies: - argparse: "npm:^2.0.1" - bin: - js-yaml: bin/js-yaml.js - checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f - languageName: node - linkType: hard - "jsbn@npm:1.1.0": version: 1.1.0 resolution: "jsbn@npm:1.1.0" @@ -5627,13 +4709,6 @@ __metadata: languageName: node linkType: hard -"jsonpointer@npm:^5.0.1": - version: 5.0.1 - resolution: "jsonpointer@npm:5.0.1" - checksum: 10c0/89929e58b400fcb96928c0504fcf4fc3f919d81e9543ceb055df125538470ee25290bb4984251e172e6ef8fcc55761eb998c118da763a82051ad89d4cb073fe7 - languageName: node - linkType: hard - "kind-of@npm:^3.0.2, kind-of@npm:^3.0.3, kind-of@npm:^3.2.0": version: 3.2.2 resolution: "kind-of@npm:3.2.2" @@ -5673,227 +4748,6 @@ __metadata: languageName: node linkType: hard -"langchain@npm:^0.0.214": - version: 0.0.214 - resolution: "langchain@npm:0.0.214" - dependencies: - "@anthropic-ai/sdk": "npm:^0.9.1" - "@langchain/community": "npm:~0.0.13" - "@langchain/core": "npm:~0.1.5" - "@langchain/openai": "npm:~0.0.9" - binary-extensions: "npm:^2.2.0" - expr-eval: "npm:^2.0.2" - js-tiktoken: "npm:^1.0.7" - js-yaml: "npm:^4.1.0" - jsonpointer: "npm:^5.0.1" - langchainhub: "npm:~0.0.6" - langsmith: "npm:~0.0.48" - ml-distance: "npm:^4.0.0" - openapi-types: "npm:^12.1.3" - p-retry: "npm:4" - uuid: "npm:^9.0.0" - yaml: "npm:^2.2.1" - zod: "npm:^3.22.3" - zod-to-json-schema: "npm:3.20.3" - peerDependencies: - "@aws-sdk/client-s3": ^3.310.0 - "@aws-sdk/client-sagemaker-runtime": ^3.310.0 - "@aws-sdk/client-sfn": ^3.310.0 - "@aws-sdk/credential-provider-node": ^3.388.0 - "@azure/storage-blob": ^12.15.0 - "@gomomento/sdk": ^1.51.1 - "@gomomento/sdk-core": ^1.51.1 - "@gomomento/sdk-web": ^1.51.1 - "@google-ai/generativelanguage": ^0.2.1 - "@google-cloud/storage": ^6.10.1 - "@notionhq/client": ^2.2.10 - "@pinecone-database/pinecone": ^1.1.0 - "@supabase/supabase-js": ^2.10.0 - "@vercel/kv": ^0.2.3 - "@xata.io/client": ^0.28.0 - apify-client: ^2.7.1 - assemblyai: ^4.0.0 - axios: "*" - cheerio: ^1.0.0-rc.12 - chromadb: "*" - convex: ^1.3.1 - d3-dsv: ^2.0.0 - epub2: ^3.0.1 - fast-xml-parser: ^4.2.7 - google-auth-library: ^8.9.0 - googleapis: ^126.0.1 - html-to-text: ^9.0.5 - ignore: ^5.2.0 - ioredis: ^5.3.2 - jsdom: "*" - mammoth: ^1.6.0 - mongodb: ^5.2.0 - node-llama-cpp: "*" - notion-to-md: ^3.1.0 - officeparser: ^4.0.4 - pdf-parse: 1.1.1 - peggy: ^3.0.2 - playwright: ^1.32.1 - puppeteer: ^19.7.2 - pyodide: ^0.24.1 - redis: ^4.6.4 - sonix-speech-recognition: ^2.1.1 - srt-parser-2: ^1.2.2 - typeorm: ^0.3.12 - vectordb: ^0.1.4 - weaviate-ts-client: ^1.4.0 - web-auth-library: ^1.0.3 - ws: ^8.14.2 - youtube-transcript: ^1.0.6 - youtubei.js: ^5.8.0 - peerDependenciesMeta: - "@aws-sdk/client-s3": - optional: true - "@aws-sdk/client-sagemaker-runtime": - optional: true - "@aws-sdk/client-sfn": - optional: true - "@aws-sdk/credential-provider-node": - optional: true - "@azure/storage-blob": - optional: true - "@gomomento/sdk": - optional: true - "@gomomento/sdk-core": - optional: true - "@gomomento/sdk-web": - optional: true - "@google-ai/generativelanguage": - optional: true - "@google-cloud/storage": - optional: true - "@notionhq/client": - optional: true - "@pinecone-database/pinecone": - optional: true - "@supabase/supabase-js": - optional: true - "@vercel/kv": - optional: true - "@xata.io/client": - optional: true - apify-client: - optional: true - assemblyai: - optional: true - axios: - optional: true - cheerio: - optional: true - chromadb: - optional: true - convex: - optional: true - d3-dsv: - optional: true - epub2: - optional: true - faiss-node: - optional: true - fast-xml-parser: - optional: true - google-auth-library: - optional: true - googleapis: - optional: true - html-to-text: - optional: true - ignore: - optional: true - ioredis: - optional: true - jsdom: - optional: true - mammoth: - optional: true - mongodb: - optional: true - node-llama-cpp: - optional: true - notion-to-md: - optional: true - officeparser: - optional: true - pdf-parse: - optional: true - peggy: - optional: true - playwright: - optional: true - puppeteer: - optional: true - pyodide: - optional: true - redis: - optional: true - sonix-speech-recognition: - optional: true - srt-parser-2: - optional: true - typeorm: - optional: true - vectordb: - optional: true - weaviate-ts-client: - optional: true - web-auth-library: - optional: true - ws: - optional: true - youtube-transcript: - optional: true - youtubei.js: - optional: true - checksum: 10c0/4c70acd1d7ad8b999a7fa2b86bba15ebe4de74339cba0028141e03f8d38f08f1ee5369a707a5597044321d36e4bafe72eed95c04ebb410aa7e881e833d87c201 - languageName: node - linkType: hard - -"langchainhub@npm:~0.0.6": - version: 0.0.11 - resolution: "langchainhub@npm:0.0.11" - checksum: 10c0/6ed781b9e8165bfb5cedc822a25bc70df0f3fc02662061d19a5e2044243cfae797857a05d139de8f326539b1f3fe03f2662060eed82669e405181f1f0f435c47 - languageName: node - linkType: hard - -"langsmith@npm:^0.1.56-rc.1, langsmith@npm:~0.1.1, langsmith@npm:~0.1.7": - version: 0.1.68 - resolution: "langsmith@npm:0.1.68" - dependencies: - "@types/uuid": "npm:^10.0.0" - commander: "npm:^10.0.1" - p-queue: "npm:^6.6.2" - p-retry: "npm:4" - semver: "npm:^7.6.3" - uuid: "npm:^10.0.0" - peerDependencies: - openai: "*" - peerDependenciesMeta: - openai: - optional: true - checksum: 10c0/ec5f70155ce7c95f2326a3d38b313c404debe954890c1623aa07be3db25aa3d7f5381267ed5f456a2bd814ab7bdebdf467ad5dc89bbc78bcc74f5a60e93c09c1 - languageName: node - linkType: hard - -"langsmith@npm:~0.0.48": - version: 0.0.70 - resolution: "langsmith@npm:0.0.70" - dependencies: - "@types/uuid": "npm:^9.0.1" - commander: "npm:^10.0.1" - p-queue: "npm:^6.6.2" - p-retry: "npm:4" - uuid: "npm:^9.0.0" - bin: - langsmith: dist/cli/main.cjs - checksum: 10c0/54e35456db842630e9a3b93b372636bf5f0ffce0af1711dd647095d9359650cfac7d5f1a0e13a1b7d691ae1dd4884d9e2e85373883542da50e1339ad3ccd1f34 - languageName: node - linkType: hard - "layerr@npm:^3.0.0": version: 3.0.0 resolution: "layerr@npm:3.0.0" @@ -6076,17 +4930,6 @@ __metadata: languageName: node linkType: hard -"md5@npm:^2.3.0": - version: 2.3.0 - resolution: "md5@npm:2.3.0" - dependencies: - charenc: "npm:0.0.2" - crypt: "npm:0.0.2" - is-buffer: "npm:~1.1.6" - checksum: 10c0/14a21d597d92e5b738255fbe7fe379905b8cb97e0a49d44a20b58526a646ec5518c337b817ce0094ca94d3e81a3313879c4c7b510d250c282d53afbbdede9110 - languageName: node - linkType: hard - "meow@npm:^3.3.0": version: 3.7.0 resolution: "meow@npm:3.7.0" @@ -6164,13 +5007,6 @@ __metadata: languageName: node linkType: hard -"mime-db@npm:1.52.0": - version: 1.52.0 - resolution: "mime-db@npm:1.52.0" - checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa - languageName: node - linkType: hard - "mime-db@npm:^1.28.0": version: 1.53.0 resolution: "mime-db@npm:1.53.0" @@ -6178,15 +5014,6 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.12": - version: 2.1.35 - resolution: "mime-types@npm:2.1.35" - dependencies: - mime-db: "npm:1.52.0" - checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 - languageName: node - linkType: hard - "mimic-fn@npm:^2.1.0": version: 2.1.0 resolution: "mimic-fn@npm:2.1.0" @@ -6228,7 +5055,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.1.0, minimist@npm:^1.1.3, minimist@npm:^1.2.5, minimist@npm:^1.2.6": +"minimist@npm:^1.1.0, minimist@npm:^1.1.3, minimist@npm:^1.2.6": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 @@ -6322,13 +5149,6 @@ __metadata: languageName: node linkType: hard -"mkdirp-classic@npm:^0.5.2, mkdirp-classic@npm:^0.5.3": - version: 0.5.3 - resolution: "mkdirp-classic@npm:0.5.3" - checksum: 10c0/95371d831d196960ddc3833cc6907e6b8f67ac5501a6582f47dfae5eb0f092e9f8ce88e0d83afcae95d6e2b61a01741ba03714eeafb6f7a6e9dcc158ac85b168 - languageName: node - linkType: hard - "mkdirp@npm:^0.5.1": version: 0.5.6 resolution: "mkdirp@npm:0.5.6" @@ -6349,52 +5169,6 @@ __metadata: languageName: node linkType: hard -"ml-array-mean@npm:^1.1.6": - version: 1.1.6 - resolution: "ml-array-mean@npm:1.1.6" - dependencies: - ml-array-sum: "npm:^1.1.6" - checksum: 10c0/41ab68308e3472702f775a49c8ab9ee1e678e01cd59dbc59424c0f1017a37df1bb638e702831305f0e6366300eca48353f526773ab8f4d8d142a64d0461f9944 - languageName: node - linkType: hard - -"ml-array-sum@npm:^1.1.6": - version: 1.1.6 - resolution: "ml-array-sum@npm:1.1.6" - dependencies: - is-any-array: "npm:^2.0.0" - checksum: 10c0/fb3973ce2bfa19ab4f5e657f722494425b57025547657d332bf5bafe3e4e7e4bd1e082dfb970bcc0bfa87efa345b80a20a596dbb204be7b4802b52c35fd6cf77 - languageName: node - linkType: hard - -"ml-distance-euclidean@npm:^2.0.0": - version: 2.0.0 - resolution: "ml-distance-euclidean@npm:2.0.0" - checksum: 10c0/877aef472e134f79be9540b02f889b2a27976ca45d77f5d4ef7d8dd24058a60cf4637365b40a5aba1ab5490348a0fb1b3803143b25af88cdc66137fbfd665442 - languageName: node - linkType: hard - -"ml-distance@npm:^4.0.0": - version: 4.0.1 - resolution: "ml-distance@npm:4.0.1" - dependencies: - ml-array-mean: "npm:^1.1.6" - ml-distance-euclidean: "npm:^2.0.0" - ml-tree-similarity: "npm:^1.0.0" - checksum: 10c0/8c2eb077d2ba61437f2414f3b9ca1091c43fcabe2282ecc31d8ebf9e083c1df068e43c67f59a4674e7c8f473201ace4f02779b446427d6169a5d669cae94c816 - languageName: node - linkType: hard - -"ml-tree-similarity@npm:^1.0.0": - version: 1.0.0 - resolution: "ml-tree-similarity@npm:1.0.0" - dependencies: - binary-search: "npm:^1.3.5" - num-sort: "npm:^2.0.0" - checksum: 10c0/e3ecd07bead5d18bc7b6fed1dfefbe65aea4008d5556181b94b7d70550fba543d2501b224f12a9f5197c1d23d95faef2accc7fd265c5afd15ef55a38190ffc6e - languageName: node - linkType: hard - "ms@npm:2.0.0": version: 2.0.0 resolution: "ms@npm:2.0.0" @@ -6402,22 +5176,13 @@ __metadata: languageName: node linkType: hard -"ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3": +"ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 languageName: node linkType: hard -"mustache@npm:^4.2.0": - version: 4.2.0 - resolution: "mustache@npm:4.2.0" - bin: - mustache: bin/mustache - checksum: 10c0/1f8197e8a19e63645a786581d58c41df7853da26702dbc005193e2437c98ca49b255345c173d50c08fe4b4dbb363e53cb655ecc570791f8deb09887248dd34a2 - languageName: node - linkType: hard - "nan@npm:^2.12.1": version: 2.22.0 resolution: "nan@npm:2.22.0" @@ -6469,73 +5234,7 @@ __metadata: languageName: node linkType: hard -"node-abi@npm:^3.3.0": - version: 3.71.0 - resolution: "node-abi@npm:3.71.0" - dependencies: - semver: "npm:^7.3.5" - checksum: 10c0/dbd0792ea729329cd9d099f28a5681ff9e8a6db48cf64e1437bf6a7fd669009d1e758a784619a1c4cc8bfd1ed17162f042c787654edf19a1f64b5018457c9c1f - languageName: node - linkType: hard - -"node-addon-api@npm:^6.0.0": - version: 6.1.0 - resolution: "node-addon-api@npm:6.1.0" - dependencies: - node-gyp: "npm:latest" - checksum: 10c0/d2699c4ad15740fd31482a3b6fca789af7723ab9d393adc6ac45250faaee72edad8f0b10b2b9d087df0de93f1bdc16d97afdd179b26b9ebc9ed68b569faa4bac - languageName: node - linkType: hard - -"node-addon-api@npm:^8.0.0": - version: 8.3.0 - resolution: "node-addon-api@npm:8.3.0" - dependencies: - node-gyp: "npm:latest" - checksum: 10c0/0ed4206cb68921b33fc637c6f7ffcb91fcde85aea88ea60fadb7b0537bf177226a5600584eac9db2aff93600041d42796fb20576b3299b9be6ff7539592b2180 - languageName: node - linkType: hard - -"node-domexception@npm:1.0.0": - version: 1.0.0 - resolution: "node-domexception@npm:1.0.0" - checksum: 10c0/5e5d63cda29856402df9472335af4bb13875e1927ad3be861dc5ebde38917aecbf9ae337923777af52a48c426b70148815e890a5d72760f1b4d758cc671b1a2b - languageName: node - linkType: hard - -"node-ensure@npm:^0.0.0": - version: 0.0.0 - resolution: "node-ensure@npm:0.0.0" - checksum: 10c0/7af391aee024a8b7df77c239ed8b90417e3f2539824fa06b60f243ce14c75ee455766464c7c3ba9407d5b1e4d1d74ed5cf5f8af10c67b0fc05aa6e29f5d2462b - languageName: node - linkType: hard - -"node-fetch@npm:^2.6.7": - version: 2.7.0 - resolution: "node-fetch@npm:2.7.0" - dependencies: - whatwg-url: "npm:^5.0.0" - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: 10c0/b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8 - languageName: node - linkType: hard - -"node-gyp-build@npm:^4.8.1": - version: 4.8.4 - resolution: "node-gyp-build@npm:4.8.4" - bin: - node-gyp-build: bin.js - node-gyp-build-optional: optional.js - node-gyp-build-test: build-test.js - checksum: 10c0/444e189907ece2081fe60e75368784f7782cfddb554b60123743dfb89509df89f1f29c03bbfa16b3a3e0be3f48799a4783f487da6203245fa5bed239ba7407e1 - languageName: node - linkType: hard - -"node-gyp@npm:^11.0.0, node-gyp@npm:latest": +"node-gyp@npm:latest": version: 11.0.0 resolution: "node-gyp@npm:11.0.0" dependencies: @@ -6618,15 +5317,6 @@ __metadata: languageName: node linkType: hard -"npm-run-path@npm:^3.1.0": - version: 3.1.0 - resolution: "npm-run-path@npm:3.1.0" - dependencies: - path-key: "npm:^3.0.0" - checksum: 10c0/8399f01239e9a5bf5a10bddbc71ecac97e0b7890e5b78abe9731fc759db48865b0686cc86ec079cd254a98ba119a3fa08f1b23f9de1a5428c19007bbc7b5a728 - languageName: node - linkType: hard - "npm-run-path@npm:^4.0.1": version: 4.0.1 resolution: "npm-run-path@npm:4.0.1" @@ -6636,13 +5326,6 @@ __metadata: languageName: node linkType: hard -"num-sort@npm:^2.0.0": - version: 2.1.0 - resolution: "num-sort@npm:2.1.0" - checksum: 10c0/cc1d43adbc9adfd5d208a8eb653827277376ff2e6eb75379f96e6a23d481040e317e63505e075b84ce49e19b9d960570646096428a715d12c5ef1381504d5135 - languageName: node - linkType: hard - "object-assign@npm:^4.0.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" @@ -6689,7 +5372,7 @@ __metadata: languageName: node linkType: hard -"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": +"once@npm:^1.3.0, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" dependencies: @@ -6707,35 +5390,6 @@ __metadata: languageName: node linkType: hard -"openai@npm:^4.41.1": - version: 4.77.0 - resolution: "openai@npm:4.77.0" - dependencies: - "@types/node": "npm:^18.11.18" - "@types/node-fetch": "npm:^2.6.4" - abort-controller: "npm:^3.0.0" - agentkeepalive: "npm:^4.2.1" - form-data-encoder: "npm:1.7.2" - formdata-node: "npm:^4.3.2" - node-fetch: "npm:^2.6.7" - peerDependencies: - zod: ^3.23.8 - peerDependenciesMeta: - zod: - optional: true - bin: - openai: bin/cli - checksum: 10c0/438e5acbcdc592ff192f294e936c10a8b71edf898b53afacb937da45f8d4e221e041bfcc84d6174c8dcb9ed4080b32760f8d94de1fcec7ab889046f1e1173f68 - languageName: node - linkType: hard - -"openapi-types@npm:^12.1.3": - version: 12.1.3 - resolution: "openapi-types@npm:12.1.3" - checksum: 10c0/4ad4eb91ea834c237edfa6ab31394e87e00c888fc2918009763389c00d02342345195d6f302d61c3fd807f17723cd48df29b47b538b68375b3827b3758cd520f - languageName: node - linkType: hard - "p-cancelable@npm:^0.3.0": version: 0.3.0 resolution: "p-cancelable@npm:0.3.0" @@ -6793,16 +5447,6 @@ __metadata: languageName: node linkType: hard -"p-queue@npm:^6.6.2": - version: 6.6.2 - resolution: "p-queue@npm:6.6.2" - dependencies: - eventemitter3: "npm:^4.0.4" - p-timeout: "npm:^3.2.0" - checksum: 10c0/5739ecf5806bbeadf8e463793d5e3004d08bb3f6177bd1a44a005da8fd81bb90f80e4633e1fb6f1dfd35ee663a5c0229abe26aebb36f547ad5a858347c7b0d3e - languageName: node - linkType: hard - "p-queue@npm:^8.0.1": version: 8.0.1 resolution: "p-queue@npm:8.0.1" @@ -6813,16 +5457,6 @@ __metadata: languageName: node linkType: hard -"p-retry@npm:4": - version: 4.6.2 - resolution: "p-retry@npm:4.6.2" - dependencies: - "@types/retry": "npm:0.12.0" - retry: "npm:^0.13.1" - checksum: 10c0/d58512f120f1590cfedb4c2e0c42cb3fa66f3cea8a4646632fcb834c56055bb7a6f138aa57b20cc236fb207c9d694e362e0b5c2b14d9b062f67e8925580c73b0 - languageName: node - linkType: hard - "p-timeout@npm:^1.1.1": version: 1.2.1 resolution: "p-timeout@npm:1.2.1" @@ -6832,15 +5466,6 @@ __metadata: languageName: node linkType: hard -"p-timeout@npm:^3.2.0": - version: 3.2.0 - resolution: "p-timeout@npm:3.2.0" - dependencies: - p-finally: "npm:^1.0.0" - checksum: 10c0/524b393711a6ba8e1d48137c5924749f29c93d70b671e6db761afa784726572ca06149c715632da8f70c090073afb2af1c05730303f915604fd38ee207b70a61 - languageName: node - linkType: hard - "p-timeout@npm:^6.1.2": version: 6.1.3 resolution: "p-timeout@npm:6.1.3" @@ -6974,16 +5599,6 @@ __metadata: languageName: node linkType: hard -"pdf-parse@npm:^1.1.1": - version: 1.1.1 - resolution: "pdf-parse@npm:1.1.1" - dependencies: - debug: "npm:^3.1.0" - node-ensure: "npm:^0.0.0" - checksum: 10c0/cba2b6ddfbfa73d94ff0cd342cbe8ef2ef0501863ada687eddf99487a4d06766e00fc44525c40cef3b01f04376cb99d5873ab789bd3e2379a28c3ae5377f3298 - languageName: node - linkType: hard - "pend@npm:~1.2.0": version: 1.2.0 resolution: "pend@npm:1.2.0" @@ -7069,22 +5684,6 @@ __metadata: languageName: node linkType: hard -"prebuildify@npm:^6.0.1": - version: 6.0.1 - resolution: "prebuildify@npm:6.0.1" - dependencies: - minimist: "npm:^1.2.5" - mkdirp-classic: "npm:^0.5.3" - node-abi: "npm:^3.3.0" - npm-run-path: "npm:^3.1.0" - pump: "npm:^3.0.0" - tar-fs: "npm:^2.1.0" - bin: - prebuildify: bin.js - checksum: 10c0/869a02fefe17ac5263194fa16db903640eeaaf2af68d52957016dbcfff6718cdf7909f3146bb420d39653f06d19edf9770a461226682304f743b9ddbb49c14a3 - languageName: node - linkType: hard - "prepend-http@npm:^1.0.1": version: 1.0.4 resolution: "prepend-http@npm:1.0.4" @@ -7151,16 +5750,6 @@ __metadata: languageName: node linkType: hard -"pump@npm:^3.0.0": - version: 3.0.2 - resolution: "pump@npm:3.0.2" - dependencies: - end-of-stream: "npm:^1.1.0" - once: "npm:^1.3.1" - checksum: 10c0/5ad655cb2a7738b4bcf6406b24ad0970d680649d996b55ad20d1be8e0c02394034e4c45ff7cd105d87f1e9b96a0e3d06fd28e11fae8875da26e7f7a8e2c9726f - languageName: node - linkType: hard - "pure-rand@npm:^6.0.0": version: 6.1.0 resolution: "pure-rand@npm:6.1.0" @@ -7222,17 +5811,6 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0": - version: 3.6.2 - resolution: "readable-stream@npm:3.6.2" - dependencies: - inherits: "npm:^2.0.3" - string_decoder: "npm:^1.1.1" - util-deprecate: "npm:^1.0.1" - checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 - languageName: node - linkType: hard - "readdirp@npm:^2.0.0": version: 2.2.1 resolution: "readdirp@npm:2.2.1" @@ -7387,13 +5965,6 @@ __metadata: languageName: node linkType: hard -"retry@npm:^0.13.1": - version: 0.13.1 - resolution: "retry@npm:0.13.1" - checksum: 10c0/9ae822ee19db2163497e074ea919780b1efa00431d197c7afdb950e42bf109196774b92a49fc9821f0b8b328a98eea6017410bfc5e8a0fc19c85c6d11adb3772 - languageName: node - linkType: hard - "rimraf@npm:^3.0.2": version: 3.0.2 resolution: "rimraf@npm:3.0.2" @@ -7619,7 +6190,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.1, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.1": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 @@ -8029,15 +6600,6 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:^1.1.1": - version: 1.3.0 - resolution: "string_decoder@npm:1.3.0" - dependencies: - safe-buffer: "npm:~5.2.0" - checksum: 10c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d - languageName: node - linkType: hard - "string_decoder@npm:~1.1.1": version: 1.1.1 resolution: "string_decoder@npm:1.1.1" @@ -8165,18 +6727,6 @@ __metadata: languageName: node linkType: hard -"tar-fs@npm:^2.1.0": - version: 2.1.1 - resolution: "tar-fs@npm:2.1.1" - dependencies: - chownr: "npm:^1.1.1" - mkdirp-classic: "npm:^0.5.2" - pump: "npm:^3.0.0" - tar-stream: "npm:^2.1.4" - checksum: 10c0/871d26a934bfb7beeae4c4d8a09689f530b565f79bd0cf489823ff0efa3705da01278160da10bb006d1a793fa0425cf316cec029b32a9159eacbeaff4965fb6d - languageName: node - linkType: hard - "tar-stream@npm:^1.5.2": version: 1.6.2 resolution: "tar-stream@npm:1.6.2" @@ -8192,19 +6742,6 @@ __metadata: languageName: node linkType: hard -"tar-stream@npm:^2.1.4": - version: 2.2.0 - resolution: "tar-stream@npm:2.2.0" - dependencies: - bl: "npm:^4.0.3" - end-of-stream: "npm:^1.4.1" - fs-constants: "npm:^1.0.0" - inherits: "npm:^2.0.3" - readable-stream: "npm:^3.1.1" - checksum: 10c0/2f4c910b3ee7196502e1ff015a7ba321ec6ea837667220d7bcb8d0852d51cb04b87f7ae471008a6fb8f5b1a1b5078f62f3a82d30c706f20ada1238ac797e7692 - languageName: node - linkType: hard - "tar@npm:^7.4.3": version: 7.4.3 resolution: "tar@npm:7.4.3" @@ -8333,13 +6870,6 @@ __metadata: languageName: node linkType: hard -"tr46@npm:~0.0.3": - version: 0.0.3 - resolution: "tr46@npm:0.0.3" - checksum: 10c0/047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11 - languageName: node - linkType: hard - "trim-newlines@npm:^1.0.0": version: 1.0.0 resolution: "trim-newlines@npm:1.0.0" @@ -8498,13 +7028,6 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~5.26.4": - version: 5.26.5 - resolution: "undici-types@npm:5.26.5" - checksum: 10c0/bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 - languageName: node - linkType: hard - "undici-types@npm:~6.19.2": version: 6.19.8 resolution: "undici-types@npm:6.19.8" @@ -8603,31 +7126,13 @@ __metadata: languageName: node linkType: hard -"util-deprecate@npm:^1.0.1, util-deprecate@npm:~1.0.1": +"util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 languageName: node linkType: hard -"uuid@npm:^10.0.0": - version: 10.0.0 - resolution: "uuid@npm:10.0.0" - bin: - uuid: dist/bin/uuid - checksum: 10c0/eab18c27fe4ab9fb9709a5d5f40119b45f2ec8314f8d4cf12ce27e4c6f4ffa4a6321dc7db6c515068fa373c075b49691ba969f0010bf37f44c37ca40cd6bf7fe - languageName: node - linkType: hard - -"uuid@npm:^9.0.0": - version: 9.0.1 - resolution: "uuid@npm:9.0.1" - bin: - uuid: dist/bin/uuid - checksum: 10c0/1607dd32ac7fc22f2d8f77051e6a64845c9bce5cd3dd8aa0070c074ec73e666a1f63c7b4e0f4bf2bc8b9d59dc85a15e17807446d9d2b17c8485fbc2147b27f9b - languageName: node - linkType: hard - "v8-to-istanbul@npm:^9.0.1": version: 9.3.0 resolution: "v8-to-istanbul@npm:9.3.0" @@ -8846,37 +7351,6 @@ __metadata: languageName: node linkType: hard -"web-streams-polyfill@npm:4.0.0-beta.3": - version: 4.0.0-beta.3 - resolution: "web-streams-polyfill@npm:4.0.0-beta.3" - checksum: 10c0/a9596779db2766990117ed3a158e0b0e9f69b887a6d6ba0779940259e95f99dc3922e534acc3e5a117b5f5905300f527d6fbf8a9f0957faf1d8e585ce3452e8e - languageName: node - linkType: hard - -"web-streams-polyfill@npm:^3.2.1": - version: 3.3.3 - resolution: "web-streams-polyfill@npm:3.3.3" - checksum: 10c0/64e855c47f6c8330b5436147db1c75cb7e7474d924166800e8e2aab5eb6c76aac4981a84261dd2982b3e754490900b99791c80ae1407a9fa0dcff74f82ea3a7f - languageName: node - linkType: hard - -"webidl-conversions@npm:^3.0.0": - version: 3.0.1 - resolution: "webidl-conversions@npm:3.0.1" - checksum: 10c0/5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db - languageName: node - linkType: hard - -"whatwg-url@npm:^5.0.0": - version: 5.0.0 - resolution: "whatwg-url@npm:5.0.0" - dependencies: - tr46: "npm:~0.0.3" - webidl-conversions: "npm:^3.0.0" - checksum: 10c0/1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5 - languageName: node - linkType: hard - "which@npm:^2.0.1": version: 2.0.2 resolution: "which@npm:2.0.2" @@ -8985,15 +7459,6 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.2.1": - version: 2.6.1 - resolution: "yaml@npm:2.6.1" - bin: - yaml: bin.mjs - checksum: 10c0/aebf07f61c72b38c74d2b60c3a3ccf89ee4da45bcd94b2bfb7899ba07a5257625a7c9f717c65a6fc511563d48001e01deb1d9e55f0133f3e2edf86039c8c1be7 - languageName: node - linkType: hard - "yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" @@ -9033,25 +7498,7 @@ __metadata: languageName: node linkType: hard -"zod-to-json-schema@npm:3.20.3": - version: 3.20.3 - resolution: "zod-to-json-schema@npm:3.20.3" - peerDependencies: - zod: ^3.20.0 - checksum: 10c0/02e343df79936323482fd153c4e4ab68c0ced02fc2fdd8711cb6b21d158179e44202aa490c66bcd0bece99080fcd4ca5993d08a7bf2dcf4dcff2502239c5e6a0 - languageName: node - linkType: hard - -"zod-to-json-schema@npm:^3.22.3, zod-to-json-schema@npm:^3.22.5": - version: 3.24.1 - resolution: "zod-to-json-schema@npm:3.24.1" - peerDependencies: - zod: ^3.24.1 - checksum: 10c0/dd4e72085003e41a3f532bd00061f27041418a4eb176aa6ce33042db08d141bd37707017ee9117d97738ae3f22fc3e1404ea44e6354634ac5da79d7d3173b4ee - languageName: node - linkType: hard - -"zod@npm:^3.22.3, zod@npm:^3.22.4, zod@npm:^3.23.8": +"zod@npm:^3.23.8": version: 3.24.1 resolution: "zod@npm:3.24.1" checksum: 10c0/0223d21dbaa15d8928fe0da3b54696391d8e3e1e2d0283a1a070b5980a1dbba945ce631c2d1eccc088fdbad0f2dfa40155590bf83732d3ac4fcca2cc9237591b diff --git a/package.json b/package.json index dcbf93831..d434e5cb8 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "core", "electron", "web", + "web-app", "server" ] }, @@ -20,7 +21,7 @@ "copy:assets:tauri": "cpx \"pre-install/*.tgz\" \"src-tauri/resources/pre-install/\" && cpx \"themes/**\" \"src-tauri/resources/themes\"", "dev:electron": "yarn copy:assets && yarn workspace jan dev", "dev:web:standalone": "concurrently \"yarn workspace @janhq/web dev\" \"wait-on http://localhost:3000 && rsync -av --prune-empty-dirs --include '*/' --include 'dist/***' --include 'package.json' --include 'tsconfig.json' --exclude '*' ./extensions/ web/.next/static/extensions/\"", - "dev:web": "yarn workspace @janhq/web dev", + "dev:web": "yarn workspace @janhq/web-app dev", "dev:server": "yarn workspace @janhq/server dev", "dev": "concurrently -n \"NEXT,ELECTRON\" -c \"yellow,blue\" --kill-others \"yarn dev:web\" \"yarn dev:electron\"", "install:cortex:linux:darwin": "cd src-tauri/binaries && ./download.sh", @@ -34,7 +35,7 @@ "build:icon": "tauri icon ./src-tauri/icons/icon.png", "build:server": "cd server && yarn build", "build:core": "cd core && yarn build && yarn pack", - "build:web": "yarn workspace @janhq/web build && cpx \"web/out/**\" \"electron/renderer/\"", + "build:web": "yarn workspace @janhq/web-app build", "build:electron": "yarn copy:assets && yarn workspace jan build", "build:electron:test": "yarn workspace jan build:test", "build:extensions": "rimraf ./pre-install/*.tgz || true && yarn workspace @janhq/core build && cd extensions && yarn install && yarn workspaces foreach -Apt run build:publish", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 5ed527678..01a7f3030 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -19,11 +19,12 @@ tauri-build = { version = "2.0.2", features = [] } serde_json = "1.0" serde = { version = "1.0", features = ["derive"] } log = "0.4" -tauri = { version = "2.1.0", features = [ "protocol-asset", "macos-private-api", +tauri = { version = "2.4.0", features = [ "protocol-asset", "macos-private-api", "test", ] } tauri-plugin-log = "2.0.0-rc" tauri-plugin-shell = "2.2.0" +tauri-plugin-os = "2.2.1" flate2 = "1.0" tar = "0.4" rand = "0.8" diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json index fd73a02b3..9bf874d1a 100644 --- a/src-tauri/capabilities/default.json +++ b/src-tauri/capabilities/default.json @@ -9,9 +9,14 @@ "permissions": [ "core:default", "core:window:allow-start-dragging", + "core:window:allow-set-theme", "shell:allow-spawn", "shell:allow-open", + "core:app:allow-set-app-theme", + "core:window:allow-set-focus", + "os:default", "log:default", + "core:webview:allow-create-webview-window", { "identifier": "http:default", "allow": [ diff --git a/src-tauri/capabilities/logs-window.json b/src-tauri/capabilities/logs-window.json new file mode 100644 index 000000000..ef56e6f75 --- /dev/null +++ b/src-tauri/capabilities/logs-window.json @@ -0,0 +1,14 @@ +{ + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "logs-window", + "description": "enables permissions for the logs window", + "windows": ["logs-window-local-api-server"], + "permissions": [ + "core:default", + "core:window:allow-start-dragging", + "core:window:allow-set-theme", + "log:default", + "core:webview:allow-create-webview-window", + "core:window:allow-set-focus" + ] +} diff --git a/src-tauri/src/core/fs.rs b/src-tauri/src/core/fs.rs index 66486cf0a..b633f965b 100644 --- a/src-tauri/src/core/fs.rs +++ b/src-tauri/src/core/fs.rs @@ -50,6 +50,27 @@ pub fn exists_sync( Ok(path.exists()) } +#[tauri::command] +pub fn file_stat( + app_handle: tauri::AppHandle, + args: String, +) -> Result { + if args.is_empty() { + return Err("file_stat error: Invalid argument".to_string()); + } + + let path = resolve_path(app_handle, &args); + let metadata = fs::metadata(&path).map_err(|e| e.to_string())?; + let is_directory = metadata.is_dir(); + let file_size = if is_directory { 0 } else { metadata.len() }; + // return { isDirectory, fileSize } object + let result = format!( + "{{\"isDirectory\": {}, \"fileSize\": {}}}", + is_directory, file_size + ); + Ok(result) +} + #[tauri::command] pub fn read_file_sync( app_handle: tauri::AppHandle, diff --git a/src-tauri/src/core/setup.rs b/src-tauri/src/core/setup.rs index d70af1c70..4001fac19 100644 --- a/src-tauri/src/core/setup.rs +++ b/src-tauri/src/core/setup.rs @@ -33,9 +33,6 @@ pub fn install_extensions(app: tauri::AppHandle, force: bool) -> Result<(), Stri .clone() .unwrap_or_else(|| "".to_string()); - if !force && stored_version == app_version { - return Ok(()); - } let extensions_path = get_jan_extensions_path(app.clone()); let pre_install_path = app .path() @@ -44,6 +41,16 @@ pub fn install_extensions(app: tauri::AppHandle, force: bool) -> Result<(), Stri .join("resources") .join("pre-install"); + let mut clean_up = force; + + // Check CLEAN environment variable to optionally skip extension install + if std::env::var("CLEAN").is_ok() { + clean_up = true; + } + if !clean_up && stored_version == app_version && extensions_path.exists() { + return Ok(()); + } + // Attempt to remove extensions folder if extensions_path.exists() { fs::remove_dir_all(&extensions_path).unwrap_or_else(|_| { @@ -51,10 +58,6 @@ pub fn install_extensions(app: tauri::AppHandle, force: bool) -> Result<(), Stri }); } - if !force { - return Ok(()); - }; - // Attempt to create it again if !extensions_path.exists() { fs::create_dir_all(&extensions_path).map_err(|e| e.to_string())?; @@ -197,7 +200,9 @@ pub fn setup_mcp(app: &App) { if let Err(e) = run_mcp_commands(app_path_str, servers).await { log::error!("Failed to run mcp commands: {}", e); } - app_handle.emit("mcp-update", "MCP servers updated").unwrap(); + app_handle + .emit("mcp-update", "MCP servers updated") + .unwrap(); }); } @@ -217,7 +222,7 @@ pub fn setup_sidecar(app: &App) -> Result<(), String> { "--cors", "ON", "--allowed_origins", - "http://localhost:3000,tauri://localhost,http://tauri.localhost", + "http://localhost:3000,http://localhost:1420", "config", "--api_keys", app_state.inner().app_token.as_deref().unwrap_or(""), diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index afe5dc735..0709a6a2a 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -14,6 +14,7 @@ use reqwest::blocking::Client; #[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() { tauri::Builder::default() + .plugin(tauri_plugin_os::init()) .plugin(tauri_plugin_http::init()) .plugin(tauri_plugin_store::Builder::new().build()) .plugin(tauri_plugin_shell::init()) @@ -25,6 +26,7 @@ pub fn run() { core::fs::readdir_sync, core::fs::read_file_sync, core::fs::rm, + core::fs::file_stat, // App commands core::cmd::get_themes, core::cmd::get_app_configurations, diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 35e7b1fa5..add04d07b 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -4,8 +4,8 @@ "version": "0.5.16", "identifier": "jan.ai.app", "build": { - "frontendDist": "../web/out", - "devUrl": "http://localhost:3000", + "frontendDist": "../web-app/dist", + "devUrl": "http://localhost:1420", "beforeDevCommand": "cross-env IS_TAURI=true yarn dev:web", "beforeBuildCommand": "cross-env IS_TAURI=true yarn build:web" }, @@ -13,22 +13,25 @@ "macOSPrivateApi": true, "windows": [ { + "label": "main", "title": "Jan", "width": 1024, - "height": 768, + "height": 800, "resizable": true, "fullscreen": false, + "center": true, "hiddenTitle": true, "transparent": true, + "trafficLightPosition": { + "x": 12, + "y": 22 + }, + "decorations": true, "titleBarStyle": "Overlay", "windowEffects": { - "effects": [ - "fullScreenUI", - "mica", - "blur", - "acrylic" - ], - "state": "active" + "effects": ["fullScreenUI", "mica", "blur", "acrylic"], + "state": "active", + "radius": 8 } } ], @@ -55,6 +58,10 @@ } }, "plugins": { + "os": { + "version": "latest", + "resolve": true + }, "updater": { "pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IDJFNDEzMEVCMUEzNUFENDQKUldSRXJUVWE2ekJCTGc1Mm1BVXgrWmtES3huUlBFR0lCdG5qbWFvMzgyNDhGN3VTTko5Q1NtTW0K", "endpoints": [ diff --git a/web-app/.gitignore b/web-app/.gitignore new file mode 100644 index 000000000..a547bf36d --- /dev/null +++ b/web-app/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/web-app/README.md b/web-app/README.md new file mode 100644 index 000000000..40ede56ea --- /dev/null +++ b/web-app/README.md @@ -0,0 +1,54 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: + +```js +export default tseslint.config({ + extends: [ + // Remove ...tseslint.configs.recommended and replace with this + ...tseslint.configs.recommendedTypeChecked, + // Alternatively, use this for stricter rules + ...tseslint.configs.strictTypeChecked, + // Optionally, add this for stylistic rules + ...tseslint.configs.stylisticTypeChecked, + ], + languageOptions: { + // other options... + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + }, +}) +``` + +You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: + +```js +// eslint.config.js +import reactX from 'eslint-plugin-react-x' +import reactDom from 'eslint-plugin-react-dom' + +export default tseslint.config({ + plugins: { + // Add the react-x and react-dom plugins + 'react-x': reactX, + 'react-dom': reactDom, + }, + rules: { + // other rules... + // Enable its recommended typescript rules + ...reactX.configs['recommended-typescript'].rules, + ...reactDom.configs.recommended.rules, + }, +}) +``` diff --git a/web-app/components.json b/web-app/components.json new file mode 100644 index 000000000..73afbdbcc --- /dev/null +++ b/web-app/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/index.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} \ No newline at end of file diff --git a/web-app/eslint.config.js b/web-app/eslint.config.js new file mode 100644 index 000000000..092408a9f --- /dev/null +++ b/web-app/eslint.config.js @@ -0,0 +1,28 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +) diff --git a/web-app/index.html b/web-app/index.html new file mode 100644 index 000000000..e4b78eae1 --- /dev/null +++ b/web-app/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + TS + + +
+ + + diff --git a/web-app/package.json b/web-app/package.json new file mode 100644 index 000000000..06bb5bfc0 --- /dev/null +++ b/web-app/package.json @@ -0,0 +1,87 @@ +{ + "name": "@janhq/web-app", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@dnd-kit/core": "^6.3.1", + "@dnd-kit/modifiers": "^9.0.0", + "@dnd-kit/sortable": "^10.0.0", + "@janhq/core": "link:../core", + "@radix-ui/react-accordion": "^1.2.10", + "@radix-ui/react-dialog": "^1.1.11", + "@radix-ui/react-dropdown-menu": "^2.1.11", + "@radix-ui/react-hover-card": "^1.1.11", + "@radix-ui/react-popover": "^1.1.13", + "@radix-ui/react-progress": "^1.1.4", + "@radix-ui/react-slider": "^1.3.2", + "@radix-ui/react-slot": "^1.2.0", + "@radix-ui/react-switch": "^1.2.2", + "@radix-ui/react-tooltip": "^1.2.4", + "@tabler/icons-react": "^3.31.0", + "@tailwindcss/vite": "^4.1.4", + "@tanstack/react-router": "^1.116.0", + "@tanstack/react-router-devtools": "^1.116.0", + "@tauri-apps/api": "^2.5.0", + "@tauri-apps/plugin-os": "^2.2.1", + "@types/react-syntax-highlighter": "^15.5.13", + "@types/uuid": "^10.0.0", + "@uiw/react-textarea-code-editor": "^3.1.1", + "class-variance-authority": "^0.7.1", + "culori": "^4.0.1", + "fuse.js": "^7.1.0", + "i18next": "^25.0.1", + "katex": "^0.16.22", + "lodash.debounce": "^4.0.8", + "lucide-react": "^0.503.0", + "motion": "^12.10.5", + "next-themes": "^0.4.6", + "react": "^19.0.0", + "react-colorful": "^5.6.1", + "react-dom": "^19.0.0", + "react-i18next": "^15.5.1", + "react-markdown": "^10.1.0", + "react-syntax-highlighter": "^15.6.1", + "react-syntax-highlighter-virtualized-renderer": "^1.1.0", + "react-textarea-autosize": "^8.5.9", + "rehype-katex": "^7.0.1", + "rehype-raw": "^7.0.0", + "remark-emoji": "^5.0.1", + "remark-gfm": "^4.0.1", + "remark-math": "^6.0.0", + "sonner": "^2.0.3", + "tailwindcss": "^4.1.4", + "token.js": "npm:token.js-fork@0.7.5", + "tw-animate-css": "^1.2.7", + "ulidx": "^2.4.1", + "unified": "^11.0.5", + "uuid": "^11.1.0", + "zustand": "^5.0.3" + }, + "devDependencies": { + "@eslint/js": "^9.22.0", + "@tanstack/router-plugin": "^1.116.1", + "@types/culori": "^2.1.1", + "@types/lodash.debounce": "^4", + "@types/node": "^22.14.1", + "@types/react": "^19.0.10", + "@types/react-dom": "^19.0.4", + "@vitejs/plugin-react": "^4.3.4", + "clsx": "^2.1.1", + "eslint": "^9.22.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^16.0.0", + "tailwind-merge": "^3.2.0", + "typescript": "~5.7.2", + "typescript-eslint": "^8.26.1", + "vite": "^6.3.0", + "vite-plugin-node-polyfills": "^0.23.0" + } +} diff --git a/web-app/public/fonts/PPEditorialNew/PPEditorialNew-Regular.otf b/web-app/public/fonts/PPEditorialNew/PPEditorialNew-Regular.otf new file mode 100644 index 0000000000000000000000000000000000000000..778c9025d9eadd014f48c8327ab6df8f7184e8cd GIT binary patch literal 58264 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 literal 0 HcmV?d00001 diff --git a/web-app/public/fonts/PPEditorialNew/PPEditorialNew-RegularItalic.otf b/web-app/public/fonts/PPEditorialNew/PPEditorialNew-RegularItalic.otf new file mode 100644 index 0000000000000000000000000000000000000000..d20c33a63883d016e3b8ea476847b58b10a50d4a GIT binary patch literal 59116 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 literal 0 HcmV?d00001 diff --git a/web-app/public/fonts/PPEditorialNew/PPEditorialNew-Ultralight.otf b/web-app/public/fonts/PPEditorialNew/PPEditorialNew-Ultralight.otf new file mode 100644 index 0000000000000000000000000000000000000000..59addeb80b578f4b94b4b7d9a6ed9c93932697f5 GIT binary patch literal 57792 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
  • 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 literal 0 HcmV?d00001 diff --git a/web-app/public/fonts/PPEditorialNew/PPEditorialNew-UltralightItalic.otf b/web-app/public/fonts/PPEditorialNew/PPEditorialNew-UltralightItalic.otf new file mode 100644 index 0000000000000000000000000000000000000000..d3e636b53ac64cb98b3902ad26d6b562e7386c9b GIT binary patch literal 57604 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 literal 0 HcmV?d00001 diff --git a/web-app/public/images/model-provider/anthropic.svg b/web-app/public/images/model-provider/anthropic.svg new file mode 100644 index 000000000..1f3f18dcf --- /dev/null +++ b/web-app/public/images/model-provider/anthropic.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/web-app/public/images/model-provider/cohere.svg b/web-app/public/images/model-provider/cohere.svg new file mode 100644 index 000000000..0ff4f0029 --- /dev/null +++ b/web-app/public/images/model-provider/cohere.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/web-app/public/images/model-provider/cortex.svg b/web-app/public/images/model-provider/cortex.svg new file mode 100644 index 000000000..c0ebd58bf --- /dev/null +++ b/web-app/public/images/model-provider/cortex.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/web-app/public/images/model-provider/deepseek.svg b/web-app/public/images/model-provider/deepseek.svg new file mode 100644 index 000000000..6f4b775d3 --- /dev/null +++ b/web-app/public/images/model-provider/deepseek.svg @@ -0,0 +1,25 @@ + + + + +Created with Pixso. + + diff --git a/web-app/public/images/model-provider/dot.svg b/web-app/public/images/model-provider/dot.svg new file mode 100644 index 000000000..f667c20b1 --- /dev/null +++ b/web-app/public/images/model-provider/dot.svg @@ -0,0 +1,3 @@ + + + diff --git a/web-app/public/images/model-provider/gemini.svg b/web-app/public/images/model-provider/gemini.svg new file mode 100644 index 000000000..787c83710 --- /dev/null +++ b/web-app/public/images/model-provider/gemini.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-app/public/images/model-provider/google-gemini.svg b/web-app/public/images/model-provider/google-gemini.svg new file mode 100644 index 000000000..787c83710 --- /dev/null +++ b/web-app/public/images/model-provider/google-gemini.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-app/public/images/model-provider/google.svg b/web-app/public/images/model-provider/google.svg new file mode 100644 index 000000000..1c44dd330 --- /dev/null +++ b/web-app/public/images/model-provider/google.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/web-app/public/images/model-provider/groq.svg b/web-app/public/images/model-provider/groq.svg new file mode 100644 index 000000000..9c2e0a34a --- /dev/null +++ b/web-app/public/images/model-provider/groq.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/web-app/public/images/model-provider/hugging-face.svg b/web-app/public/images/model-provider/hugging-face.svg new file mode 100644 index 000000000..9ac72080a --- /dev/null +++ b/web-app/public/images/model-provider/hugging-face.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/web-app/public/images/model-provider/llamacpp.svg b/web-app/public/images/model-provider/llamacpp.svg new file mode 100644 index 000000000..b54b58925 --- /dev/null +++ b/web-app/public/images/model-provider/llamacpp.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/web-app/public/images/model-provider/martian.svg b/web-app/public/images/model-provider/martian.svg new file mode 100644 index 000000000..b5ceacdf8 --- /dev/null +++ b/web-app/public/images/model-provider/martian.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/web-app/public/images/model-provider/meta.svg b/web-app/public/images/model-provider/meta.svg new file mode 100644 index 000000000..91bdf9783 --- /dev/null +++ b/web-app/public/images/model-provider/meta.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web-app/public/images/model-provider/mistral.svg b/web-app/public/images/model-provider/mistral.svg new file mode 100644 index 000000000..22233c55c --- /dev/null +++ b/web-app/public/images/model-provider/mistral.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web-app/public/images/model-provider/nitro.svg b/web-app/public/images/model-provider/nitro.svg new file mode 100644 index 000000000..775517a75 --- /dev/null +++ b/web-app/public/images/model-provider/nitro.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/web-app/public/images/model-provider/nvidia.svg b/web-app/public/images/model-provider/nvidia.svg new file mode 100644 index 000000000..09c2194ec --- /dev/null +++ b/web-app/public/images/model-provider/nvidia.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/web-app/public/images/model-provider/openRouter.svg b/web-app/public/images/model-provider/openRouter.svg new file mode 100644 index 000000000..62ff2b424 --- /dev/null +++ b/web-app/public/images/model-provider/openRouter.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/web-app/public/images/model-provider/openai.svg b/web-app/public/images/model-provider/openai.svg new file mode 100644 index 000000000..8f0785415 --- /dev/null +++ b/web-app/public/images/model-provider/openai.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/web-app/public/images/model-provider/send.svg b/web-app/public/images/model-provider/send.svg new file mode 100644 index 000000000..28d30299f --- /dev/null +++ b/web-app/public/images/model-provider/send.svg @@ -0,0 +1,3 @@ + + + diff --git a/web-app/src/components/ui/button.tsx b/web-app/src/components/ui/button.tsx new file mode 100644 index 000000000..fc78d306b --- /dev/null +++ b/web-app/src/components/ui/button.tsx @@ -0,0 +1,53 @@ +import * as React from 'react' +import { Slot } from '@radix-ui/react-slot' +import { cva, type VariantProps } from 'class-variance-authority' + +import { cn } from '@/lib/utils' + +const buttonVariants = cva( + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-pointer", + { + variants: { + variant: { + default: 'bg-primary text-primary-fg shadow-xs hover:bg-primary/90', + destructive: + 'bg-destructive shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive-fg', + link: 'underline-offset-4 hover:underline', + }, + size: { + default: 'h-7 px-3 py-2 has-[>svg]:px-3 rounded-sm', + sm: 'h-6 rounded gap-1.5 px-2 has-[>svg]:px-2.5', + lg: 'h-9 rounded-md px-6 has-[>svg]:px-4', + icon: 'size-8', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, + } +) + +function Button({ + className, + variant, + size, + asChild = false, + ...props +}: React.ComponentProps<'button'> & + VariantProps & { + asChild?: boolean + }) { + const Comp = asChild ? Slot : 'button' + + return ( + + ) +} + +// eslint-disable-next-line react-refresh/only-export-components +export { Button, buttonVariants } diff --git a/web-app/src/components/ui/dialog.tsx b/web-app/src/components/ui/dialog.tsx new file mode 100644 index 000000000..cb2391c81 --- /dev/null +++ b/web-app/src/components/ui/dialog.tsx @@ -0,0 +1,133 @@ +import * as React from 'react' +import * as DialogPrimitive from '@radix-ui/react-dialog' +import { XIcon } from 'lucide-react' + +import { cn } from '@/lib/utils' + +function Dialog({ + ...props +}: React.ComponentProps) { + return +} + +function DialogTrigger({ + ...props +}: React.ComponentProps) { + return +} + +function DialogPortal({ + ...props +}: React.ComponentProps) { + return +} + +function DialogClose({ + ...props +}: React.ComponentProps) { + return +} + +function DialogOverlay({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function DialogContent({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + + + + {children} + + + Close + + + + ) +} + +function DialogHeader({ className, ...props }: React.ComponentProps<'div'>) { + return ( +
    + ) +} + +function DialogFooter({ className, ...props }: React.ComponentProps<'div'>) { + return ( +
    + ) +} + +function DialogTitle({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function DialogDescription({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogOverlay, + DialogPortal, + DialogTitle, + DialogTrigger, +} diff --git a/web-app/src/components/ui/dropdown-menu.tsx b/web-app/src/components/ui/dropdown-menu.tsx new file mode 100644 index 000000000..aaf562d13 --- /dev/null +++ b/web-app/src/components/ui/dropdown-menu.tsx @@ -0,0 +1,250 @@ +import * as React from 'react' +import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu' +import { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react' + +import { cn } from '@/lib/utils' + +function DropdownMenu({ + ...props +}: React.ComponentProps) { + return +} + +function DropdownMenuPortal({ + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function DropdownMenuTrigger({ + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function DropdownMenuContent({ + className, + sideOffset = 4, + ...props +}: React.ComponentProps) { + return ( + + + + ) +} + +function DropdownMenuGroup({ + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function DropdownMenuItem({ + className, + inset, + ...props +}: React.ComponentProps & { + inset?: boolean +}) { + return ( + + ) +} + +function DropdownMenuCheckboxItem({ + className, + children, + checked, + ...props +}: React.ComponentProps) { + return ( + + + + + + + {children} + + ) +} + +function DropdownMenuRadioGroup({ + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function DropdownMenuRadioItem({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + + + + + + + {children} + + ) +} + +function DropdownMenuLabel({ + className, + inset, + ...props +}: React.ComponentProps & { + inset?: boolean +}) { + return ( + + ) +} + +function DropdownMenuSeparator({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function DropdownMenuShortcut({ + className, + ...props +}: React.ComponentProps<'span'>) { + return ( + + ) +} + +function DropdownMenuSub({ + ...props +}: React.ComponentProps) { + return +} + +function DropdownMenuSubTrigger({ + className, + inset, + children, + ...props +}: React.ComponentProps & { + inset?: boolean +}) { + return ( + + {children} + + + ) +} + +function DropdownMenuSubContent({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { + DropdownMenu, + DropdownMenuPortal, + DropdownMenuTrigger, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuLabel, + DropdownMenuItem, + DropdownMenuCheckboxItem, + DropdownMenuRadioGroup, + DropdownMenuRadioItem, + DropdownMenuSeparator, + DropdownMenuShortcut, + DropdownMenuSub, + DropdownMenuSubTrigger, + DropdownMenuSubContent, +} diff --git a/web-app/src/components/ui/hover-card.tsx b/web-app/src/components/ui/hover-card.tsx new file mode 100644 index 000000000..00236b08a --- /dev/null +++ b/web-app/src/components/ui/hover-card.tsx @@ -0,0 +1,42 @@ +import * as React from 'react' +import * as HoverCardPrimitive from '@radix-ui/react-hover-card' + +import { cn } from '@/lib/utils' + +function HoverCard({ + ...props +}: React.ComponentProps) { + return +} + +function HoverCardTrigger({ + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function HoverCardContent({ + className, + align = 'center', + sideOffset = 4, + ...props +}: React.ComponentProps) { + return ( + + + + ) +} + +export { HoverCard, HoverCardTrigger, HoverCardContent } diff --git a/web-app/src/components/ui/input.tsx b/web-app/src/components/ui/input.tsx new file mode 100644 index 000000000..1d7dd9120 --- /dev/null +++ b/web-app/src/components/ui/input.tsx @@ -0,0 +1,22 @@ +import * as React from 'react' + +import { cn } from '@/lib/utils' + +function Input({ className, type, ...props }: React.ComponentProps<'input'>) { + return ( + + ) +} + +export { Input } diff --git a/web-app/src/components/ui/popover.tsx b/web-app/src/components/ui/popover.tsx new file mode 100644 index 000000000..01aeb7580 --- /dev/null +++ b/web-app/src/components/ui/popover.tsx @@ -0,0 +1,46 @@ +import * as React from 'react' +import * as PopoverPrimitive from '@radix-ui/react-popover' + +import { cn } from '@/lib/utils' + +function Popover({ + ...props +}: React.ComponentProps) { + return +} + +function PopoverTrigger({ + ...props +}: React.ComponentProps) { + return +} + +function PopoverContent({ + className, + align = 'center', + sideOffset = 4, + ...props +}: React.ComponentProps) { + return ( + + + + ) +} + +function PopoverAnchor({ + ...props +}: React.ComponentProps) { + return +} + +export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor } diff --git a/web-app/src/components/ui/progress.tsx b/web-app/src/components/ui/progress.tsx new file mode 100644 index 000000000..e8b378c97 --- /dev/null +++ b/web-app/src/components/ui/progress.tsx @@ -0,0 +1,29 @@ +import * as React from 'react' +import * as ProgressPrimitive from '@radix-ui/react-progress' + +import { cn } from '@/lib/utils' + +function Progress({ + className, + value, + ...props +}: React.ComponentProps) { + return ( + + + + ) +} + +export { Progress } diff --git a/web-app/src/components/ui/sheet.tsx b/web-app/src/components/ui/sheet.tsx new file mode 100644 index 000000000..bc09f428d --- /dev/null +++ b/web-app/src/components/ui/sheet.tsx @@ -0,0 +1,137 @@ +import * as React from 'react' +import * as SheetPrimitive from '@radix-ui/react-dialog' +import { XIcon } from 'lucide-react' + +import { cn } from '@/lib/utils' + +function Sheet({ ...props }: React.ComponentProps) { + return +} + +function SheetTrigger({ + ...props +}: React.ComponentProps) { + return +} + +function SheetClose({ + ...props +}: React.ComponentProps) { + return +} + +function SheetPortal({ + ...props +}: React.ComponentProps) { + return +} + +function SheetOverlay({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function SheetContent({ + className, + children, + side = 'right', + ...props +}: React.ComponentProps & { + side?: 'top' | 'right' | 'bottom' | 'left' +}) { + return ( + + + + {children} + + + Close + + + + ) +} + +function SheetHeader({ className, ...props }: React.ComponentProps<'div'>) { + return ( +
    + ) +} + +function SheetFooter({ className, ...props }: React.ComponentProps<'div'>) { + return ( +
    + ) +} + +function SheetTitle({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function SheetDescription({ + className, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { + Sheet, + SheetTrigger, + SheetClose, + SheetContent, + SheetHeader, + SheetFooter, + SheetTitle, + SheetDescription, +} diff --git a/web-app/src/components/ui/slider.tsx b/web-app/src/components/ui/slider.tsx new file mode 100644 index 000000000..74c8ebe05 --- /dev/null +++ b/web-app/src/components/ui/slider.tsx @@ -0,0 +1,61 @@ +import * as React from 'react' +import * as SliderPrimitive from '@radix-ui/react-slider' + +import { cn } from '@/lib/utils' + +function Slider({ + className, + defaultValue, + value, + min = 0, + max = 100, + ...props +}: React.ComponentProps) { + const _values = React.useMemo( + () => + Array.isArray(value) + ? value + : Array.isArray(defaultValue) + ? defaultValue + : [min, max], + [value, defaultValue, min, max] + ) + + return ( + + + + + {Array.from({ length: _values.length }, (_, index) => ( + + ))} + + ) +} + +export { Slider } diff --git a/web-app/src/components/ui/sonner.tsx b/web-app/src/components/ui/sonner.tsx new file mode 100644 index 000000000..ea7312970 --- /dev/null +++ b/web-app/src/components/ui/sonner.tsx @@ -0,0 +1,20 @@ +import { Toaster as Sonner, ToasterProps } from 'sonner' + +const Toaster = ({ ...props }: ToasterProps) => { + return ( + + ) +} + +export { Toaster } diff --git a/web-app/src/components/ui/switch.tsx b/web-app/src/components/ui/switch.tsx new file mode 100644 index 000000000..866d5d88e --- /dev/null +++ b/web-app/src/components/ui/switch.tsx @@ -0,0 +1,29 @@ +import * as React from 'react' +import * as SwitchPrimitive from '@radix-ui/react-switch' + +import { cn } from '@/lib/utils' + +function Switch({ + className, + ...props +}: React.ComponentProps) { + return ( + + + + ) +} + +export { Switch } diff --git a/web-app/src/components/ui/textarea.tsx b/web-app/src/components/ui/textarea.tsx new file mode 100644 index 000000000..fbe9d8f32 --- /dev/null +++ b/web-app/src/components/ui/textarea.tsx @@ -0,0 +1,19 @@ +import * as React from 'react' + +import { cn } from '@/lib/utils' + +function Textarea({ className, ...props }: React.ComponentProps<'textarea'>) { + return ( +