diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml index 324ab3702..9aac528a5 100644 --- a/.github/dependabot.yaml +++ b/.github/dependabot.yaml @@ -1,17 +1,19 @@ # https://docs.github.com/en/code-security/dependabot/working-with-dependabot/dependabot-options-reference#package-ecosystem- version: 2 updates: - - package-ecosystem: "cargo" - directory: "src-tauri" + - package-ecosystem: 'cargo' + directory: 'src-tauri' schedule: - interval: "weekly" - - package-ecosystem: "npm" + interval: 'weekly' + open-pull-requests-limit: 0 + - package-ecosystem: 'npm' directories: - - "/" - - "core" - - "docs" - - "extensions" - - "extensions/*" - - "web-app" + - '/' + - 'core' + - 'docs' + - 'extensions' + - 'extensions/*' + - 'web-app' schedule: - interval: "weekly" + interval: 'weekly' + open-pull-requests-limit: 0 diff --git a/Makefile b/Makefile index 77b77022e..023f2c877 100644 --- a/Makefile +++ b/Makefile @@ -43,9 +43,6 @@ test: lint yarn download:bin yarn download:lib yarn test -# yarn build:icon -# yarn copy:assets:tauri -# cargo test --manifest-path src-tauri/Cargo.toml # Builds and publishes the app build-and-publish: install-and-build diff --git a/docs/src/pages/docs/mcp.mdx b/docs/src/pages/docs/mcp.mdx index b496a19ed..03eaa0556 100644 --- a/docs/src/pages/docs/mcp.mdx +++ b/docs/src/pages/docs/mcp.mdx @@ -124,7 +124,7 @@ you will need to wait for a response). Efficient management of tools and their o To illustrate how MCPs can be used within Jan, we will walk through an example using the [Browser MCP](https://browsermcp.io/). -Before we begin, you will need to enable Jan's MCP functionality at `Settings` > `MCP Servers`, and toggle +Before we begin, you will need to enable experimental features at `General` > `Advanced`. Next, go to `Settings` > `MCP Servers`, and toggle the `Allow All MCP Tool Permission` switch ON. ![Turn on the MCP Host](./_assets/mcp-on.png) diff --git a/web-app/package.json b/web-app/package.json index a681b05c4..353c21b28 100644 --- a/web-app/package.json +++ b/web-app/package.json @@ -19,7 +19,7 @@ "@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-hover-card": "^1.1.14", "@radix-ui/react-popover": "^1.1.13", "@radix-ui/react-progress": "^1.1.4", "@radix-ui/react-slider": "^1.3.2", diff --git a/web-app/public/images/model-provider/huggingface.svg b/web-app/public/images/model-provider/huggingface.svg new file mode 100644 index 000000000..0af6921f9 --- /dev/null +++ b/web-app/public/images/model-provider/huggingface.svg @@ -0,0 +1,29 @@ + diff --git a/web-app/src/lib/utils.ts b/web-app/src/lib/utils.ts index 8486bcdb9..e95c8343e 100644 --- a/web-app/src/lib/utils.ts +++ b/web-app/src/lib/utils.ts @@ -12,6 +12,8 @@ export function getProviderLogo(provider: string) { return '/images/model-provider/llamacpp.svg' case 'anthropic': return '/images/model-provider/anthropic.svg' + case 'huggingface': + return '/images/model-provider/huggingface.svg' case 'mistral': return '/images/model-provider/mistral.svg' case 'martian': @@ -47,6 +49,8 @@ export const getProviderTitle = (provider: string) => { return 'OpenRouter' case 'gemini': return 'Gemini' + case 'huggingface': + return 'Hugging Face' default: return provider.charAt(0).toUpperCase() + provider.slice(1) } diff --git a/web-app/src/mock/data.ts b/web-app/src/mock/data.ts index 3610eab97..9f40177bb 100644 --- a/web-app/src/mock/data.ts +++ b/web-app/src/mock/data.ts @@ -281,4 +281,64 @@ export const predefinedProviders = [ ], models: [], }, + { + active: true, + api_key: '', + base_url: 'https://router.huggingface.co/v1', + explore_models_url: + 'https://huggingface.co/models?pipeline_tag=text-generation&inference_provider=all', + provider: 'huggingface', + settings: [ + { + key: 'api-key', + title: 'API Key', + description: + "The Hugging Face API uses tokens for authentication. Visit your [Access Tokens](https://huggingface.co/settings/tokens) page to retrieve the token you'll use in your requests.", + controller_type: 'input', + controller_props: { + placeholder: 'Insert API Token', + value: '', + type: 'password', + input_actions: ['unobscure', 'copy'], + }, + }, + { + key: 'base-url', + title: 'Base URL', + description: + 'The base endpoint to use. See the [Hugging Face Inference Providers documentation](https://huggingface.co/docs/inference-providers) for more information.', + controller_type: 'input', + controller_props: { + placeholder: 'https://router.huggingface.co/v1', + value: 'https://router.huggingface.co/v1', + }, + }, + ], + models: [ + { + id: 'moonshotai/Kimi-K2-Instruct:groq', + name: 'Kimi-K2-Instruct', + version: '1.0', + description: + '1T parameters Moonshot chat model tuned for tool-aware, nuanced responses.', + capabilities: ['completion', 'tools'], + }, + { + id: 'deepseek-ai/DeepSeek-R1-0528', + name: 'DeepSeek-R1-0528', + version: '1.0', + description: + "DeepSeek's flagship reasoning engine with open weights and advanced tool control.", + capabilities: ['completion', 'tools'], + }, + { + id: 'deepseek-ai/DeepSeek-V3-0324', + name: 'DeepSeek-V3-0324', + version: '1.0', + description: + 'Streamlined DeepSeek model focused on fast, high-quality completions and tool use.', + capabilities: ['completion', 'tools'], + }, + ], + }, ] diff --git a/yarn.lock b/yarn.lock index cf44126fe..7fe035c24 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2572,7 +2572,7 @@ __metadata: "@radix-ui/react-accordion": "npm:^1.2.10" "@radix-ui/react-dialog": "npm:^1.1.11" "@radix-ui/react-dropdown-menu": "npm:^2.1.11" - "@radix-ui/react-hover-card": "npm:^1.1.11" + "@radix-ui/react-hover-card": "npm:^1.1.14" "@radix-ui/react-popover": "npm:^1.1.13" "@radix-ui/react-progress": "npm:^1.1.4" "@radix-ui/react-slider": "npm:^1.3.2" @@ -3889,18 +3889,18 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-hover-card@npm:^1.1.11": - version: 1.1.11 - resolution: "@radix-ui/react-hover-card@npm:1.1.11" +"@radix-ui/react-hover-card@npm:^1.1.14": + version: 1.1.14 + resolution: "@radix-ui/react-hover-card@npm:1.1.14" dependencies: "@radix-ui/primitive": "npm:1.1.2" "@radix-ui/react-compose-refs": "npm:1.1.2" "@radix-ui/react-context": "npm:1.1.2" - "@radix-ui/react-dismissable-layer": "npm:1.1.7" - "@radix-ui/react-popper": "npm:1.2.4" - "@radix-ui/react-portal": "npm:1.1.6" + "@radix-ui/react-dismissable-layer": "npm:1.1.10" + "@radix-ui/react-popper": "npm:1.2.7" + "@radix-ui/react-portal": "npm:1.1.9" "@radix-ui/react-presence": "npm:1.1.4" - "@radix-ui/react-primitive": "npm:2.1.0" + "@radix-ui/react-primitive": "npm:2.1.3" "@radix-ui/react-use-controllable-state": "npm:1.2.2" peerDependencies: "@types/react": "*" @@ -3912,7 +3912,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 10c0/bb309a27a37edad7c31a7d8ec392d27f0d62fafb0011624f0dbc607038773091e2981c68aefb96eb24ec3bc18b390a0f8acabe011e6ef57e979e0e72140f6e0e + checksum: 10c0/f352bab22dd81ac2ef1140ca1a8426913010851becd03df9d8b8476bdf6ef7001f0559f6a61c4f98ff8033d6cedacd4c86ad47e4c391385254430e266329a2a0 languageName: node linkType: hard