From 6d2cd637a63b11472c7937cd75d4224d4712d5ab Mon Sep 17 00:00:00 2001 From: Jingyi-Dify Date: Thu, 7 May 2026 17:45:13 -0700 Subject: [PATCH] feat: add integrations tools page with prebuilt icons - add the integrations page sidebar with collapsible icon-only navigation and Figma-aligned marketplace card - move custom integration SVGs into the iconify collection and document the Tailwind i-custom workflow - preserve source SVG collection dimensions when flattening generated icon data so existing main nav icons keep their 20x20 viewBox - add an icon dimension guard for layout-sensitive generated icons - update model provider routing, i18n, and focused frontend tests --- .../references/performance.md | 11 + packages/iconify-collections/README.md | 43 ++ .../vender/integrations/agent-strategy.svg | 3 + .../vender/integrations/api-extension.svg | 3 + .../vender/integrations/custom-tool.svg | 3 + .../assets/vender/integrations/extension.svg | 3 + .../assets/vender/integrations/mcp.svg | 6 + .../assets/vender/integrations/panel-left.svg | 3 + .../assets/vender/integrations/tools.svg | 3 + .../assets/vender/integrations/trigger.svg | 10 + .../vender/integrations/workflow-as-tool.svg | 3 + .../custom-public/icons.json | 270 +++++++--- .../custom-vender/icons.json | 464 +++++++++++++----- .../custom-vender/info.json | 2 +- packages/iconify-collections/package.json | 1 + .../scripts/check-icon-dimensions.ts | 94 ++++ .../scripts/generate-collections.ts | 12 +- web/AGENTS.md | 8 + web/app/(commonLayout)/tools/page.tsx | 4 +- .../__tests__/constants.spec.ts | 10 +- .../account-setting/__tests__/index.spec.tsx | 3 +- .../header/account-setting/destinations.ts | 2 +- .../header/account-setting/index.tsx | 26 +- .../__tests__/index.non-cloud.spec.tsx | 13 +- .../__tests__/index.spec.tsx | 16 +- .../model-provider-page/index.tsx | 152 ++++-- .../install-from-marketplace.tsx | 6 +- .../provider-added-card/index.tsx | 118 +++++ .../provider-added-card/quota-panel.tsx | 3 +- .../system-model-selector/index.tsx | 5 +- .../__tests__/integrations-page.spec.tsx | 90 ++++ .../components/tools/integrations-page.tsx | 369 ++++++++++++++ web/i18n/ar-TN/common.json | 14 + web/i18n/de-DE/common.json | 14 + web/i18n/en-US/common.json | 14 + web/i18n/es-ES/common.json | 14 + web/i18n/fa-IR/common.json | 14 + web/i18n/fr-FR/common.json | 14 + web/i18n/hi-IN/common.json | 14 + web/i18n/id-ID/common.json | 14 + web/i18n/it-IT/common.json | 14 + web/i18n/ja-JP/common.json | 14 + web/i18n/ko-KR/common.json | 14 + web/i18n/nl-NL/common.json | 14 + web/i18n/pl-PL/common.json | 14 + web/i18n/pt-BR/common.json | 14 + web/i18n/ro-RO/common.json | 14 + web/i18n/ru-RU/common.json | 14 + web/i18n/sl-SI/common.json | 14 + web/i18n/th-TH/common.json | 14 + web/i18n/tr-TR/common.json | 14 + web/i18n/uk-UA/common.json | 14 + web/i18n/vi-VN/common.json | 14 + web/i18n/zh-Hans/common.json | 14 + web/i18n/zh-Hant/common.json | 14 + 55 files changed, 1805 insertions(+), 276 deletions(-) create mode 100644 packages/iconify-collections/README.md create mode 100644 packages/iconify-collections/assets/vender/integrations/agent-strategy.svg create mode 100644 packages/iconify-collections/assets/vender/integrations/api-extension.svg create mode 100644 packages/iconify-collections/assets/vender/integrations/custom-tool.svg create mode 100644 packages/iconify-collections/assets/vender/integrations/extension.svg create mode 100644 packages/iconify-collections/assets/vender/integrations/mcp.svg create mode 100644 packages/iconify-collections/assets/vender/integrations/panel-left.svg create mode 100644 packages/iconify-collections/assets/vender/integrations/tools.svg create mode 100644 packages/iconify-collections/assets/vender/integrations/trigger.svg create mode 100644 packages/iconify-collections/assets/vender/integrations/workflow-as-tool.svg create mode 100644 packages/iconify-collections/scripts/check-icon-dimensions.ts create mode 100644 web/app/components/tools/__tests__/integrations-page.spec.tsx create mode 100644 web/app/components/tools/integrations-page.tsx diff --git a/.agents/skills/frontend-code-review/references/performance.md b/.agents/skills/frontend-code-review/references/performance.md index 2d60072f5c..253b52f47a 100644 --- a/.agents/skills/frontend-code-review/references/performance.md +++ b/.agents/skills/frontend-code-review/references/performance.md @@ -43,3 +43,14 @@ const config = useMemo(() => ({ config={config} /> ``` + +## Custom SVG icon generation + +IsUrgent: False +Category: Performance + +### Description + +New custom SVG icons should be added to `packages/iconify-collections/assets/...`, generated with `pnpm --filter @dify/iconify-collections generate`, checked with `pnpm --filter @dify/iconify-collections check:dimensions`, and consumed through Tailwind `i-custom-*` classes. Do not add new generated React icon components or JSON files under `web/app/components/base/icons/src/...` for new custom SVG icons. + +When reviewing generated `packages/iconify-collections/custom-*/icons.json` diffs, verify unrelated existing icons did not lose or change intrinsic `width` / `height`, especially layout-sensitive groups such as `main-nav-*`. diff --git a/packages/iconify-collections/README.md b/packages/iconify-collections/README.md new file mode 100644 index 0000000000..f36b63d03b --- /dev/null +++ b/packages/iconify-collections/README.md @@ -0,0 +1,43 @@ +# @dify/iconify-collections + +Pre-generated Iconify collections for Dify custom SVG icons. The web app imports these collections from this package so Tailwind does not need to scan and build custom SVG icon data from the old `web/app/components/base/icons/src` tree during dev startup. + +## Adding Custom SVG Icons + +Add new SVG source files under one of these directories: + +- `assets/public/...` for multi-color or public brand-like icons. +- `assets/vender/...` for UI vendor icons that should render with `currentColor`. + +After adding or changing SVG files, regenerate the packaged collections: + +```bash +pnpm --filter @dify/iconify-collections generate +``` + +Then run the dimension guard: + +```bash +pnpm --filter @dify/iconify-collections check:dimensions +``` + +This protects existing icon groups with layout-sensitive intrinsic sizes, such as the `main-nav-*` icons that must remain `20x20` after collection flattening. + +Commit both the SVG source files and the generated package files under `custom-public/` or `custom-vender/`. +Restart the web dev server after regenerating icons. Tailwind loads this plugin collection at startup, so an already-running dev server may not render newly-added `i-custom-*` classes until it restarts. + +Use the generated icons through Tailwind icon classes in frontend code. For example: + +```text +assets/vender/integrations/mcp.svg +``` + +becomes: + +```tsx + +``` + +Do not add new generated React icon components or JSON files under `web/app/components/base/icons/src/...` for new custom SVG icons. That path is legacy; new custom icons should flow through this package and be consumed as `i-custom-*` classes. + +When reviewing generated `icons.json` diffs, check that unrelated existing icon groups did not lose or change their intrinsic `width` and `height`. If a group is layout-sensitive, add it to `scripts/check-icon-dimensions.ts`. diff --git a/packages/iconify-collections/assets/vender/integrations/agent-strategy.svg b/packages/iconify-collections/assets/vender/integrations/agent-strategy.svg new file mode 100644 index 0000000000..8dd5385fde --- /dev/null +++ b/packages/iconify-collections/assets/vender/integrations/agent-strategy.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/iconify-collections/assets/vender/integrations/api-extension.svg b/packages/iconify-collections/assets/vender/integrations/api-extension.svg new file mode 100644 index 0000000000..97dd93a77b --- /dev/null +++ b/packages/iconify-collections/assets/vender/integrations/api-extension.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/iconify-collections/assets/vender/integrations/custom-tool.svg b/packages/iconify-collections/assets/vender/integrations/custom-tool.svg new file mode 100644 index 0000000000..15c6324fbf --- /dev/null +++ b/packages/iconify-collections/assets/vender/integrations/custom-tool.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/iconify-collections/assets/vender/integrations/extension.svg b/packages/iconify-collections/assets/vender/integrations/extension.svg new file mode 100644 index 0000000000..ea3735aff6 --- /dev/null +++ b/packages/iconify-collections/assets/vender/integrations/extension.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/iconify-collections/assets/vender/integrations/mcp.svg b/packages/iconify-collections/assets/vender/integrations/mcp.svg new file mode 100644 index 0000000000..a4a15f99f7 --- /dev/null +++ b/packages/iconify-collections/assets/vender/integrations/mcp.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/packages/iconify-collections/assets/vender/integrations/panel-left.svg b/packages/iconify-collections/assets/vender/integrations/panel-left.svg new file mode 100644 index 0000000000..fb0378e557 --- /dev/null +++ b/packages/iconify-collections/assets/vender/integrations/panel-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/iconify-collections/assets/vender/integrations/tools.svg b/packages/iconify-collections/assets/vender/integrations/tools.svg new file mode 100644 index 0000000000..d88b285bce --- /dev/null +++ b/packages/iconify-collections/assets/vender/integrations/tools.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/iconify-collections/assets/vender/integrations/trigger.svg b/packages/iconify-collections/assets/vender/integrations/trigger.svg new file mode 100644 index 0000000000..80b9bba35f --- /dev/null +++ b/packages/iconify-collections/assets/vender/integrations/trigger.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/packages/iconify-collections/assets/vender/integrations/workflow-as-tool.svg b/packages/iconify-collections/assets/vender/integrations/workflow-as-tool.svg new file mode 100644 index 0000000000..570957b06c --- /dev/null +++ b/packages/iconify-collections/assets/vender/integrations/workflow-as-tool.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/iconify-collections/custom-public/icons.json b/packages/iconify-collections/custom-public/icons.json index 13d8400b89..9e7ad319b8 100644 --- a/packages/iconify-collections/custom-public/icons.json +++ b/packages/iconify-collections/custom-public/icons.json @@ -1,6 +1,6 @@ { "prefix": "custom-public", - "lastModified": 1776670621, + "lastModified": 1778201271, "icons": { "avatar-user": { "body": "", @@ -9,11 +9,13 @@ }, "billing-ar-cube-1": { "body": "", - "width": 28 + "width": 28, + "height": 28 }, "billing-asterisk": { "body": "", - "width": 28 + "width": 28, + "height": 28 }, "billing-aws-marketplace-dark": { "body": "", @@ -31,10 +33,14 @@ "height": 20 }, "billing-buildings": { - "body": "" + "body": "", + "width": 29, + "height": 28 }, "billing-diamond": { - "body": "" + "body": "", + "width": 29, + "height": 28 }, "billing-google-cloud": { "body": "", @@ -42,10 +48,14 @@ "height": 18 }, "billing-group-2": { - "body": "" + "body": "", + "width": 29, + "height": 28 }, "billing-keyframe": { - "body": "" + "body": "", + "width": 29, + "height": 28 }, "billing-sparkles-soft": { "body": "", @@ -132,31 +142,49 @@ "height": 22 }, "files-csv": { - "body": "" + "body": "", + "width": 32, + "height": 34 }, "files-doc": { - "body": "" + "body": "", + "width": 32, + "height": 34 }, "files-docx": { - "body": "" + "body": "", + "width": 32, + "height": 34 }, "files-html": { - "body": "" + "body": "", + "width": 32, + "height": 34 }, "files-json": { - "body": "" + "body": "", + "width": 32, + "height": 34 }, "files-md": { - "body": "" + "body": "", + "width": 32, + "height": 34 }, "files-pdf": { - "body": "" + "body": "", + "width": 32, + "height": 34 }, "files-txt": { - "body": "" + "body": "", + "width": 32, + "height": 34 }, "files-unknown": { - "body": "" + "body": "", + "width": 32, + "height": 34 }, "files-xlsx": { "body": "", @@ -184,10 +212,14 @@ "height": 74 }, "knowledge-option-card-effect-orange": { - "body": "" + "body": "", + "width": 220, + "height": 220 }, "knowledge-option-card-effect-purple": { - "body": "" + "body": "", + "width": 220, + "height": 220 }, "knowledge-option-card-effect-teal": { "body": "", @@ -205,33 +237,49 @@ "height": 500 }, "knowledge-dataset-card-external-knowledge-base": { - "body": "" + "body": "", + "width": 18, + "height": 18 }, "knowledge-dataset-card-general": { - "body": "" + "body": "", + "width": 18, + "height": 18 }, "knowledge-dataset-card-graph": { - "body": "" + "body": "", + "width": 18, + "height": 18 }, "knowledge-dataset-card-parent-child": { - "body": "" + "body": "", + "width": 18, + "height": 18 }, "knowledge-dataset-card-qa": { - "body": "" + "body": "", + "width": 18, + "height": 18 }, "knowledge-online-drive-buckets-blue": { "body": "", - "height": 21 + "height": 21, + "width": 20 }, "knowledge-online-drive-buckets-gray": { "body": "", - "width": 18 + "width": 18, + "height": 19 }, "knowledge-online-drive-folder": { - "body": "" + "body": "", + "width": 20, + "height": 19 }, "llm-anthropic": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "llm-anthropic-dark": { "body": "", @@ -255,32 +303,43 @@ }, "llm-azure-openai-service": { "body": "", - "width": 56 + "width": 56, + "height": 24 }, "llm-azure-openai-service-text": { "body": "", - "width": 212 + "width": 212, + "height": 24 }, "llm-azureai": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "llm-azureai-text": { "body": "", - "width": 92 + "width": 92, + "height": 24 }, "llm-baichuan": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "llm-baichuan-text": { "body": "", - "width": 130 + "width": 130, + "height": 24 }, "llm-chatglm": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "llm-chatglm-text": { "body": "", - "width": 100 + "width": 100, + "height": 24 }, "llm-cohere": { "body": "", @@ -289,7 +348,8 @@ }, "llm-cohere-text": { "body": "", - "width": 120 + "width": 120, + "height": 24 }, "llm-deepseek": { "body": "", @@ -302,10 +362,14 @@ "height": 40 }, "llm-gpt-3": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "llm-gpt-4": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "llm-grok": { "body": "", @@ -313,33 +377,44 @@ "height": 40 }, "llm-huggingface": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "llm-huggingface-text": { "body": "", - "width": 120 + "width": 120, + "height": 24 }, "llm-huggingface-text-hub": { "body": "", - "width": 151 + "width": 151, + "height": 24 }, "llm-iflytek-spark": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "llm-iflytek-spark-text": { "body": "", - "width": 150 + "width": 150, + "height": 24 }, "llm-iflytek-spark-text-cn": { "body": "", - "width": 84 + "width": 84, + "height": 24 }, "llm-jina": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "llm-jina-text": { "body": "", - "width": 58 + "width": 58, + "height": 24 }, "llm-microsoft": { "body": "", @@ -347,16 +422,24 @@ "height": 22 }, "llm-openai-black": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "llm-openai-blue": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "llm-openai-green": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "llm-openai-teal": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "llm-openai-text": { "body": "", @@ -364,16 +447,24 @@ "height": 20 }, "llm-openai-transparent": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "llm-openai-violet": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "llm-openai-yellow": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "llm-openllm": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "llm-openllm-text": { "body": "", @@ -381,21 +472,29 @@ "height": 25 }, "llm-replicate": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "llm-replicate-text": { "body": "", - "width": 92 + "width": 92, + "height": 24 }, "llm-xorbits-inference": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "llm-xorbits-inference-text": { "body": "", - "width": 152 + "width": 152, + "height": 24 }, "llm-zhipuai": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "llm-zhipuai-text": { "body": "", @@ -416,7 +515,9 @@ "height": 12 }, "other-default-tool-icon": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "other-icon-3-dots": { "body": "", @@ -424,7 +525,9 @@ "height": 16 }, "other-message-3-fill": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "other-row-struct": { "body": "", @@ -447,16 +550,24 @@ "height": 24 }, "plugins-partner-dark": { - "body": "" + "body": "", + "width": 20, + "height": 20 }, "plugins-partner-light": { - "body": "" + "body": "", + "width": 20, + "height": 20 }, "plugins-verified-dark": { - "body": "" + "body": "", + "width": 20, + "height": 20 }, "plugins-verified-light": { - "body": "" + "body": "", + "width": 20, + "height": 20 }, "plugins-web-reader": { "body": "", @@ -469,19 +580,29 @@ "height": 24 }, "thought-data-set": { - "body": "" + "body": "", + "width": 12, + "height": 12 }, "thought-loading": { - "body": "" + "body": "", + "width": 12, + "height": 12 }, "thought-search": { - "body": "" + "body": "", + "width": 12, + "height": 12 }, "thought-thought-list": { - "body": "" + "body": "", + "width": 12, + "height": 12 }, "thought-web-reader": { - "body": "" + "body": "", + "width": 12, + "height": 12 }, "tracing-aliyun-icon": { "body": "", @@ -493,7 +614,8 @@ "height": 24 }, "tracing-arize-icon": { - "body": "" + "body": "", + "width": 74 }, "tracing-arize-icon-big": { "body": "", @@ -510,7 +632,8 @@ "height": 24 }, "tracing-langfuse-icon": { - "body": "" + "body": "", + "width": 74 }, "tracing-langfuse-icon-big": { "body": "", @@ -546,7 +669,8 @@ "height": 24 }, "tracing-phoenix-icon": { - "body": "" + "body": "", + "width": 74 }, "tracing-phoenix-icon-big": { "body": "", diff --git a/packages/iconify-collections/custom-vender/icons.json b/packages/iconify-collections/custom-vender/icons.json index bf6b4bb8a7..5293600cfc 100644 --- a/packages/iconify-collections/custom-vender/icons.json +++ b/packages/iconify-collections/custom-vender/icons.json @@ -1,36 +1,101 @@ { "prefix": "custom-vender", - "lastModified": 1776670621, + "lastModified": 1778201271, "icons": { "features-citations": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "features-content-moderation": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "features-document": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "features-folder-upload": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "features-love-message": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "features-message-fast": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "features-microphone-01": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "features-text-to-audio": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "features-virtual-assistant": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "features-vision": { - "body": "" + "body": "", + "width": 24, + "height": 24 + }, + "integrations-agent-strategy": { + "body": "", + "width": 15.3333, + "height": 14.6667 + }, + "integrations-api-extension": { + "body": "", + "width": 14, + "height": 12.9447 + }, + "integrations-custom-tool": { + "body": "", + "width": 12.6667, + "height": 14.6667 + }, + "integrations-extension": { + "body": "", + "width": 12, + "height": 13.3333 + }, + "integrations-mcp": { + "body": "", + "width": 13.4445, + "height": 14.6667 + }, + "integrations-panel-left": { + "body": "", + "width": 14.5, + "height": 14.5 + }, + "integrations-tools": { + "body": "", + "width": 12.3333, + "height": 14 + }, + "integrations-trigger": { + "body": "", + "width": 13.325, + "height": 13.325 + }, + "integrations-workflow-as-tool": { + "body": "", + "height": 12, + "width": 12.6667 }, "knowledge-add-chunks": { "body": "", @@ -62,7 +127,8 @@ }, "knowledge-economic": { "body": "", - "height": 18 + "height": 18, + "width": 18 }, "knowledge-full-text-search": { "body": "", @@ -70,11 +136,13 @@ }, "knowledge-general-chunk": { "body": "", - "height": 18 + "height": 18, + "width": 18 }, "knowledge-high-quality": { "body": "", - "height": 18 + "height": 18, + "width": 18 }, "knowledge-hybrid-search": { "body": "", @@ -82,11 +150,13 @@ }, "knowledge-parent-child-chunk": { "body": "", - "height": 18 + "height": 18, + "width": 18 }, "knowledge-question-and-answer": { "body": "", - "height": 18 + "height": 18, + "width": 18 }, "knowledge-search-lines-sparkle": { "body": "", @@ -121,7 +191,9 @@ "height": 16 }, "line-arrows-arrow-up-right": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "line-arrows-chevron-down-double": { "body": "", @@ -129,7 +201,9 @@ "height": 13 }, "line-arrows-chevron-right": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "line-arrows-chevron-selector-vertical": { "body": "", @@ -137,7 +211,9 @@ "height": 24 }, "line-arrows-iconr": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "line-arrows-refresh-ccw-01": { "body": "", @@ -155,10 +231,14 @@ "height": 16 }, "line-communication-ai-text": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "line-communication-chat-bot": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "line-communication-chat-bot-slim": { "body": "", @@ -166,7 +246,9 @@ "height": 48 }, "line-communication-cute-robot": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "line-communication-message-check-remove": { "body": "", @@ -230,7 +312,9 @@ "body": "" }, "line-editor-align-left": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "line-editor-bezier-curve-03": { "body": "", @@ -243,16 +327,24 @@ "height": 16 }, "line-editor-colors": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "line-editor-image-indent-left": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "line-editor-left-indent-02": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "line-editor-letter-spacing-01": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "line-editor-type-square": { "body": "", @@ -306,10 +398,14 @@ "height": 14 }, "line-financeAndECommerce-balance": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "line-financeAndECommerce-coins-stacked-01": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "line-financeAndECommerce-credits-coin": { "body": "", @@ -322,7 +418,9 @@ "height": 16 }, "line-financeAndECommerce-receipt-list": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "line-financeAndECommerce-tag-01": { "body": "", @@ -469,10 +567,14 @@ "body": "" }, "line-layout-align-left-01": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "line-layout-align-right-01": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "line-layout-grid-01": { "body": "", @@ -480,7 +582,9 @@ "height": 16 }, "line-layout-layout-grid-02": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "line-mediaAndDevices-microphone-01": { "body": "" @@ -577,6 +681,16 @@ "width": 24, "height": 24 }, + "main-nav-credits": { + "body": "", + "width": 24, + "height": 24 + }, + "main-nav-help": { + "body": "", + "width": 24, + "height": 24 + }, "main-nav-home": { "body": "", "width": 20, @@ -597,6 +711,31 @@ "width": 20, "height": 20 }, + "main-nav-knowledge": { + "body": "", + "width": 20, + "height": 20 + }, + "main-nav-knowledge-active": { + "body": "", + "width": 20, + "height": 20 + }, + "main-nav-marketplace": { + "body": "", + "width": 20, + "height": 20 + }, + "main-nav-marketplace-active": { + "body": "", + "width": 20, + "height": 20 + }, + "main-nav-quick-search": { + "body": "", + "width": 24, + "height": 24 + }, "main-nav-studio": { "body": "", "width": 20, @@ -607,21 +746,30 @@ "width": 20, "height": 20 }, + "main-nav-workspace-settings": { + "body": "", + "width": 16, + "height": 16 + }, "other-anthropic-text": { "body": "", "width": 90, "height": 20 }, "other-generator": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "other-group": { "body": "", - "height": 16 + "height": 16, + "width": 14 }, "other-hourglass-shape": { "body": "", - "width": 8 + "width": 8, + "height": 14 }, "other-mcp": { "body": "", @@ -654,10 +802,14 @@ "height": 16 }, "pipeline-pipeline-fill": { - "body": "" + "body": "", + "width": 18, + "height": 18 }, "pipeline-pipeline-line": { - "body": "" + "body": "", + "width": 18, + "height": 18 }, "plugin-box-sparkle-fill": { "body": "", @@ -673,10 +825,14 @@ "body": "" }, "solid-FinanceAndECommerce-gold-coin": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-FinanceAndECommerce-scales-02": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-alertsAndFeedback-alert-triangle": { "body": "", @@ -703,10 +859,14 @@ "height": 24 }, "solid-communication-ai-text": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-communication-bubble-text-mod": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-communication-chat-bot": { "body": "", @@ -714,22 +874,34 @@ "height": 12 }, "solid-communication-cute-robot": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-communication-edit-list": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-communication-list-sparkle": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-communication-logic": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-communication-message-dots-circle": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-communication-message-fast": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-communication-message-heart-circle": { "body": "", @@ -799,7 +971,9 @@ "height": 24 }, "solid-editor-brush-01": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-editor-citations": { "body": "", @@ -807,13 +981,19 @@ "height": 16 }, "solid-editor-colors": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-editor-paragraph": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-editor-type-square": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-education-beaker-02": { "body": "", @@ -821,13 +1001,19 @@ "height": 12 }, "solid-education-bubble-text": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-education-heart-02": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-education-unblur": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-files-file-05": { "body": "" @@ -857,10 +1043,14 @@ "height": 16 }, "solid-general-check-done-01": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-general-download-02": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-general-edit-03": { "body": "", @@ -868,10 +1058,14 @@ "height": 12 }, "solid-general-edit-04": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-general-eye": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-general-github": { "body": "", @@ -884,7 +1078,9 @@ "height": 16 }, "solid-general-plus-circle": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-general-question-triangle": { "body": "", @@ -892,10 +1088,14 @@ "height": 12 }, "solid-general-search-md": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-general-target-04": { - "body": "" + "body": "", + "width": 24, + "height": 24 }, "solid-general-tool-03": { "body": "", @@ -921,19 +1121,29 @@ "body": "" }, "solid-mediaAndDevices-audio-support-icon": { - "body": "" + "body": "", + "width": 12, + "height": 12 }, "solid-mediaAndDevices-document-support-icon": { - "body": "" + "body": "", + "width": 12, + "height": 12 }, "solid-mediaAndDevices-magic-box": { - "body": "" + "body": "", + "width": 12, + "height": 12 }, "solid-mediaAndDevices-magic-eyes": { - "body": "" + "body": "", + "width": 12, + "height": 12 }, "solid-mediaAndDevices-magic-wand": { - "body": "" + "body": "", + "width": 12, + "height": 12 }, "solid-mediaAndDevices-microphone-01": { "body": "", @@ -941,10 +1151,14 @@ "height": 16 }, "solid-mediaAndDevices-play": { - "body": "" + "body": "", + "width": 12, + "height": 12 }, "solid-mediaAndDevices-robot": { - "body": "" + "body": "", + "width": 12, + "height": 12 }, "solid-mediaAndDevices-sliders-02": { "body": "", @@ -962,7 +1176,9 @@ "height": 20 }, "solid-mediaAndDevices-video-support-icon": { - "body": "" + "body": "", + "width": 12, + "height": 12 }, "solid-security-lock-01": { "body": "", @@ -1009,7 +1225,9 @@ "height": 16 }, "workflow-answer": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "workflow-api-aggregate": { "body": "", @@ -1022,16 +1240,24 @@ "height": 16 }, "workflow-asterisk": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "workflow-calendar-check-line": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "workflow-code": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "workflow-datasource": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "workflow-docs-extractor": { "body": "", @@ -1039,13 +1265,19 @@ "height": 16 }, "workflow-end": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "workflow-home": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "workflow-http": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "workflow-human-in-loop": { "body": "", @@ -1053,10 +1285,14 @@ "height": 16 }, "workflow-if-else": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "workflow-iteration": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "workflow-iteration-start": { "body": "", @@ -1069,7 +1305,9 @@ "height": 12 }, "workflow-knowledge-base": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "workflow-knowledge-retrieval": { "body": "", @@ -1082,7 +1320,9 @@ "height": 16 }, "workflow-llm": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "workflow-loop": { "body": "", @@ -1095,10 +1335,14 @@ "height": 16 }, "workflow-parameter-extractor": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "workflow-question-classifier": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "workflow-schedule": { "body": "", @@ -1106,13 +1350,19 @@ "height": 16 }, "workflow-templating-transform": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "workflow-trigger-all": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "workflow-variable-x": { - "body": "" + "body": "", + "width": 14, + "height": 14 }, "workflow-webhook-line": { "body": "", @@ -1123,46 +1373,6 @@ "body": "", "width": 16, "height": 16 - }, - "main-nav-credits": { - "body": "", - "width": 24, - "height": 24 - }, - "main-nav-help": { - "body": "", - "width": 24, - "height": 24 - }, - "main-nav-quick-search": { - "body": "", - "width": 24, - "height": 24 - }, - "main-nav-knowledge": { - "body": "", - "width": 20, - "height": 20 - }, - "main-nav-knowledge-active": { - "body": "", - "width": 20, - "height": 20 - }, - "main-nav-marketplace": { - "body": "", - "width": 20, - "height": 20 - }, - "main-nav-marketplace-active": { - "body": "", - "width": 20, - "height": 20 - }, - "main-nav-workspace-settings": { - "body": "", - "width": 16, - "height": 16 } } } diff --git a/packages/iconify-collections/custom-vender/info.json b/packages/iconify-collections/custom-vender/info.json index 27ee20eb64..15170831f9 100644 --- a/packages/iconify-collections/custom-vender/info.json +++ b/packages/iconify-collections/custom-vender/info.json @@ -1,7 +1,7 @@ { "prefix": "custom-vender", "name": "Dify Custom Vender", - "total": 291, + "total": 300, "version": "0.0.0-private", "author": { "name": "LangGenius, Inc.", diff --git a/packages/iconify-collections/package.json b/packages/iconify-collections/package.json index 752b7ce437..eeec58e1fa 100644 --- a/packages/iconify-collections/package.json +++ b/packages/iconify-collections/package.json @@ -23,6 +23,7 @@ "./custom-vender/chars.json": "./custom-vender/chars.json" }, "scripts": { + "check:dimensions": "tsx ./scripts/check-icon-dimensions.ts", "generate": "tsx ./scripts/generate-collections.ts" }, "devDependencies": { diff --git a/packages/iconify-collections/scripts/check-icon-dimensions.ts b/packages/iconify-collections/scripts/check-icon-dimensions.ts new file mode 100644 index 0000000000..ab933fdf29 --- /dev/null +++ b/packages/iconify-collections/scripts/check-icon-dimensions.ts @@ -0,0 +1,94 @@ +import { readFile } from 'node:fs/promises' +import path from 'node:path' +import { fileURLToPath } from 'node:url' + +type IconData = { + width?: number + height?: number +} + +type IconCollection = { + icons: Record + width?: number + height?: number +} + +type DimensionRule = { + collection: 'custom-vender' + icons: string[] + width: number + height: number +} + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) +const packageDir = path.resolve(__dirname, '..') + +const dimensionRules: DimensionRule[] = [ + { + collection: 'custom-vender', + icons: [ + 'main-nav-home', + 'main-nav-home-active', + 'main-nav-integrations', + 'main-nav-integrations-active', + 'main-nav-knowledge', + 'main-nav-knowledge-active', + 'main-nav-marketplace', + 'main-nav-marketplace-active', + 'main-nav-studio', + 'main-nav-studio-active', + ], + width: 20, + height: 20, + }, +] + +const readCollection = async (collection: DimensionRule['collection']): Promise => { + return JSON.parse( + await readFile(path.resolve(packageDir, collection, 'icons.json'), 'utf8'), + ) as IconCollection +} + +const main = async () => { + const collections = new Map() + const failures: string[] = [] + + for (const rule of dimensionRules) { + if (!collections.has(rule.collection)) + collections.set(rule.collection, await readCollection(rule.collection)) + + const collection = collections.get(rule.collection)! + + for (const iconName of rule.icons) { + const icon = collection.icons[iconName] + const width = icon?.width ?? collection.width ?? 16 + const height = icon?.height ?? collection.height ?? 16 + + if (!icon) { + failures.push(`${rule.collection}:${iconName} is missing`) + continue + } + + if (width !== rule.width || height !== rule.height) { + failures.push( + `${rule.collection}:${iconName} expected ${rule.width}x${rule.height}, got ${width}x${height}`, + ) + } + } + } + + if (failures.length) { + console.error('Icon dimension check failed:') + for (const failure of failures) + console.error(`- ${failure}`) + process.exitCode = 1 + return + } + + console.log('Icon dimension check passed.') +} + +main().catch((error: unknown) => { + console.error(error) + process.exitCode = 1 +}) diff --git a/packages/iconify-collections/scripts/generate-collections.ts b/packages/iconify-collections/scripts/generate-collections.ts index 5cc67dd588..0a4d969fff 100644 --- a/packages/iconify-collections/scripts/generate-collections.ts +++ b/packages/iconify-collections/scripts/generate-collections.ts @@ -21,6 +21,8 @@ type AliasData = Omit & { type ImportedCollection = { icons?: Record aliases?: Record + width?: number + height?: number lastModified?: number } @@ -60,11 +62,17 @@ const flattenCollections = (collections: ImportedCollections, prefix: string) => const segment = collectionKey.slice(prefix.length + 1) const namePrefix = segment ? `${segment}-` : '' + const applyCollectionSize = (iconData: T): T => ({ + ...iconData, + ...(iconData.width === undefined && collection.width !== undefined ? { width: collection.width } : {}), + ...(iconData.height === undefined && collection.height !== undefined ? { height: collection.height } : {}), + }) + for (const [iconName, iconData] of Object.entries(collection.icons ?? {})) - icons[`${namePrefix}${iconName}`] = iconData + icons[`${namePrefix}${iconName}`] = applyCollectionSize(iconData) for (const [aliasName, aliasData] of Object.entries(collection.aliases ?? {})) - aliases[`${namePrefix}${aliasName}`] = aliasData + aliases[`${namePrefix}${aliasName}`] = applyCollectionSize(aliasData) if (typeof collection.lastModified === 'number') lastModified = Math.max(lastModified, collection.lastModified) diff --git a/web/AGENTS.md b/web/AGENTS.md index dc72a293d1..212177c7c5 100644 --- a/web/AGENTS.md +++ b/web/AGENTS.md @@ -13,6 +13,14 @@ - `frontend-query-mutation` is the source of truth for Dify frontend contracts, query and mutation call-site patterns, conditional queries, invalidation, and mutation error handling. +## SVG Icons (Mandatory) + +- New custom SVG icons must be added under `../packages/iconify-collections/assets/...`. +- Run `pnpm --filter @dify/iconify-collections generate` and consume generated icons with Tailwind `i-custom-*` classes. +- Restart the web dev server after regenerating icons because Tailwind loads the custom icon collection at startup. +- Do not add new generated React icon components or JSON files under `app/components/base/icons/src/...`. +- See `../packages/iconify-collections/README.md` for the full workflow. + ## Design Token Mapping - When translating Figma designs to code, read `../packages/dify-ui/AGENTS.md` for the Figma `--radius/*` token to Tailwind `rounded-*` class mapping. The two scales are offset by one step. diff --git a/web/app/(commonLayout)/tools/page.tsx b/web/app/(commonLayout)/tools/page.tsx index be8344660d..c9ff11216f 100644 --- a/web/app/(commonLayout)/tools/page.tsx +++ b/web/app/(commonLayout)/tools/page.tsx @@ -2,13 +2,13 @@ import type { FC } from 'react' import * as React from 'react' import { useTranslation } from 'react-i18next' -import ToolProviderList from '@/app/components/tools/provider-list' +import IntegrationsPage from '@/app/components/tools/integrations-page' import useDocumentTitle from '@/hooks/use-document-title' const ToolsList: FC = () => { const { t } = useTranslation() useDocumentTitle(t('menus.tools', { ns: 'common' })) - return + return } export default React.memo(ToolsList) diff --git a/web/app/components/header/account-setting/__tests__/constants.spec.ts b/web/app/components/header/account-setting/__tests__/constants.spec.ts index cf18f0b7e9..ff58b5ef80 100644 --- a/web/app/components/header/account-setting/__tests__/constants.spec.ts +++ b/web/app/components/header/account-setting/__tests__/constants.spec.ts @@ -45,14 +45,14 @@ describe('AccountSetting Constants', () => { expect(isValidAccountSettingTab('invalid')).toBe(false) }) - it('should keep migrated setting destinations disabled until integrations sections are ready', () => { - expect(enableMovedAccountSettingDestinations).toBe(false) + it('should map migrated setting tabs to integrations sections', () => { + expect(enableMovedAccountSettingDestinations).toBe(true) expect(movedAccountSettingDestinations[ACCOUNT_SETTING_TAB.PROVIDER]).toBe('/tools?section=provider') expect(movedAccountSettingDestinations[ACCOUNT_SETTING_TAB.DATA_SOURCE]).toBe('/tools?section=data-source') expect(movedAccountSettingDestinations[ACCOUNT_SETTING_TAB.API_BASED_EXTENSION]).toBe('/tools?section=api-based-extension') - expect(getMovedAccountSettingDestination(ACCOUNT_SETTING_TAB.PROVIDER)).toBeUndefined() - expect(getMovedAccountSettingDestination(ACCOUNT_SETTING_TAB.DATA_SOURCE)).toBeUndefined() - expect(getMovedAccountSettingDestination(ACCOUNT_SETTING_TAB.API_BASED_EXTENSION)).toBeUndefined() + expect(getMovedAccountSettingDestination(ACCOUNT_SETTING_TAB.PROVIDER)).toBe('/tools?section=provider') + expect(getMovedAccountSettingDestination(ACCOUNT_SETTING_TAB.DATA_SOURCE)).toBe('/tools?section=data-source') + expect(getMovedAccountSettingDestination(ACCOUNT_SETTING_TAB.API_BASED_EXTENSION)).toBe('/tools?section=api-based-extension') expect(getMovedAccountSettingDestination(ACCOUNT_SETTING_TAB.BILLING)).toBeUndefined() }) }) diff --git a/web/app/components/header/account-setting/__tests__/index.spec.tsx b/web/app/components/header/account-setting/__tests__/index.spec.tsx index 6194f7bad3..7e4e9077ec 100644 --- a/web/app/components/header/account-setting/__tests__/index.spec.tsx +++ b/web/app/components/header/account-setting/__tests__/index.spec.tsx @@ -174,7 +174,8 @@ describe('AccountSetting', () => { // Assert // Assert - expect(screen.getByText('common.userProfile.settings'))!.toBeInTheDocument() + expect(screen.getByText('common.settings.workspaceSettings'))!.toBeInTheDocument() + expect(screen.queryByText('common.settings.workplaceGroup'))!.not.toBeInTheDocument() expect(screen.queryByText('common.settings.provider'))!.not.toBeInTheDocument() expect(screen.getAllByText('common.settings.members').length).toBeGreaterThan(0) expect(screen.getByText('common.settings.billing'))!.toBeInTheDocument() diff --git a/web/app/components/header/account-setting/destinations.ts b/web/app/components/header/account-setting/destinations.ts index cf88efb0c0..c26e61ab35 100644 --- a/web/app/components/header/account-setting/destinations.ts +++ b/web/app/components/header/account-setting/destinations.ts @@ -7,7 +7,7 @@ export const movedAccountSettingDestinations: Partial { if (!enableMovedAccountSettingDestinations) diff --git a/web/app/components/header/account-setting/index.tsx b/web/app/components/header/account-setting/index.tsx index 67d156d23e..e7076a7020 100644 --- a/web/app/components/header/account-setting/index.tsx +++ b/web/app/components/header/account-setting/index.tsx @@ -5,7 +5,6 @@ import { cn } from '@langgenius/dify-ui/cn' import { ScrollArea } from '@langgenius/dify-ui/scroll-area' import { useCallback, useState } from 'react' import { useTranslation } from 'react-i18next' -import SearchInput from '@/app/components/base/search-input' import BillingPage from '@/app/components/billing/billing-page' import CustomPage from '@/app/components/custom/custom-page' import { @@ -148,16 +147,13 @@ export default function AccountSetting({ show onClose={handleClose} > -
-
-
{t('userProfile.settings', { ns: 'common' })}
+
+
+
{t('settings.workspaceSettings', { ns: 'common' })}
{ menuItems.map(menuItem => (
- {!isCurrentWorkspaceDatasetOperator && ( -
{menuItem.name}
- )}
{ menuItem.items.map(item => ( @@ -212,18 +208,14 @@ export default function AccountSetting({
{activeItem?.description}
)}
- {activeMenu === ACCOUNT_SETTING_TAB.PROVIDER && ( -
- -
- )}
- {activeMenu === ACCOUNT_SETTING_TAB.PROVIDER && } + {activeMenu === ACCOUNT_SETTING_TAB.PROVIDER && ( + + )} {activeMenu === ACCOUNT_SETTING_TAB.MEMBERS && } {activeMenu === ACCOUNT_SETTING_TAB.BILLING && } {activeMenu === ACCOUNT_SETTING_TAB.DATA_SOURCE && } diff --git a/web/app/components/header/account-setting/model-provider-page/__tests__/index.non-cloud.spec.tsx b/web/app/components/header/account-setting/model-provider-page/__tests__/index.non-cloud.spec.tsx index 8f9366635d..84aad65f68 100644 --- a/web/app/components/header/account-setting/model-provider-page/__tests__/index.non-cloud.spec.tsx +++ b/web/app/components/header/account-setting/model-provider-page/__tests__/index.non-cloud.spec.tsx @@ -59,6 +59,17 @@ vi.mock('../install-from-marketplace', () => ({ default: () =>
, })) +vi.mock('@/app/components/plugins/plugin-page/use-reference-setting', () => ({ + default: () => ({ + referenceSetting: { permission: {}, auto_upgrade: {} }, + setReferenceSettings: vi.fn(), + }), +})) + +vi.mock('@/app/components/plugins/reference-setting-modal', () => ({ + default: () =>
, +})) + vi.mock('@/service/client', async (importOriginal) => { const actual = await importOriginal() const originalPlugins = actual.consoleQuery.plugins as unknown as Record @@ -91,7 +102,7 @@ vi.mock('@/service/client', async (importOriginal) => { describe('ModelProviderPage non-cloud branch', () => { it('should skip the quota panel when cloud edition is disabled', () => { - renderWithSystemFeatures(, { + renderWithSystemFeatures(, { systemFeatures: { enable_marketplace: false }, }) diff --git a/web/app/components/header/account-setting/model-provider-page/__tests__/index.spec.tsx b/web/app/components/header/account-setting/model-provider-page/__tests__/index.spec.tsx index 6bf818a544..31d2e60fa1 100644 --- a/web/app/components/header/account-setting/model-provider-page/__tests__/index.spec.tsx +++ b/web/app/components/header/account-setting/model-provider-page/__tests__/index.spec.tsx @@ -21,7 +21,7 @@ const renderModelProviderPage = ( props: { searchText?: string, enableMarketplace?: boolean } = {}, ) => { const { searchText = '', enableMarketplace = true } = props - return renderWithSystemFeatures(, { + return renderWithSystemFeatures(, { systemFeatures: { enable_marketplace: enableMarketplace }, }) } @@ -71,6 +71,17 @@ vi.mock('../install-from-marketplace', () => ({ default: () =>
, })) +vi.mock('@/app/components/plugins/plugin-page/use-reference-setting', () => ({ + default: () => ({ + referenceSetting: { permission: {}, auto_upgrade: {} }, + setReferenceSettings: vi.fn(), + }), +})) + +vi.mock('@/app/components/plugins/reference-setting-modal', () => ({ + default: () =>
, +})) + vi.mock('../provider-added-card', () => ({ default: ({ provider }: { provider: { provider: string } }) =>
{provider.provider}
, })) @@ -147,8 +158,9 @@ describe('ModelProviderPage', () => { it('should render main elements', () => { renderModelProviderPage() - expect(screen.getByText('common.modelProvider.models')).toBeInTheDocument() + expect(screen.getByPlaceholderText('common.operation.search')).toBeInTheDocument() expect(screen.getByTestId('system-model-selector')).toBeInTheDocument() + expect(screen.getByText('plugin.autoUpdate.updateSettings')).toBeInTheDocument() expect(screen.getByTestId('install-from-marketplace')).toBeInTheDocument() }) diff --git a/web/app/components/header/account-setting/model-provider-page/index.tsx b/web/app/components/header/account-setting/model-provider-page/index.tsx index 6522ea2db4..1b72d53bea 100644 --- a/web/app/components/header/account-setting/model-provider-page/index.tsx +++ b/web/app/components/header/account-setting/model-provider-page/index.tsx @@ -5,9 +5,12 @@ import type { PluginDetail } from '@/app/components/plugins/types' import { cn } from '@langgenius/dify-ui/cn' import { useQuery, useSuspenseQuery } from '@tanstack/react-query' import { useDebounce } from 'ahooks' -import { useMemo } from 'react' +import { useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' +import SearchInput from '@/app/components/base/search-input' import { usePluginsWithLatestVersion } from '@/app/components/plugins/hooks' +import useReferenceSetting from '@/app/components/plugins/plugin-page/use-reference-setting' +import ReferenceSettingModal from '@/app/components/plugins/reference-setting-modal' import { IS_CLOUD_EDITION } from '@/config' import { useProviderContext } from '@/context/provider-context' import { consoleQuery } from '@/service/client' @@ -22,20 +25,23 @@ import { import InstallFromMarketplace from './install-from-marketplace' import ProviderAddedCard from './provider-added-card' import QuotaPanel from './provider-added-card/quota-panel' +import { providerSupportsCredits } from './supports-credits' import SystemModelSelector from './system-model-selector' import { providerToPluginId } from './utils' type SystemModelConfigStatus = 'no-provider' | 'none-configured' | 'partially-configured' | 'fully-configured' type Props = { + onSearchTextChange: (value: string) => void searchText: string } const FixedModelProvider = ['langgenius/openai/openai', 'langgenius/anthropic/anthropic'] -const ModelProviderPage = ({ searchText }: Props) => { +const ModelProviderPage = ({ onSearchTextChange, searchText }: Props) => { const debouncedSearchText = useDebounce(searchText, { wait: 500 }) const { t } = useTranslation() + const [showUpdateSettingModal, setShowUpdateSettingModal] = useState(false) const { data: textGenerationDefaultModel, isLoading: isTextGenerationDefaultModelLoading } = useDefaultModel(ModelTypeEnum.textGeneration) const { data: embeddingsDefaultModel, isLoading: isEmbeddingsDefaultModelLoading } = useDefaultModel(ModelTypeEnum.textEmbedding) const { data: rerankDefaultModel, isLoading: isRerankDefaultModelLoading } = useDefaultModel(ModelTypeEnum.rerank) @@ -43,6 +49,10 @@ const ModelProviderPage = ({ searchText }: Props) => { const { data: ttsDefaultModel, isLoading: isTTSDefaultModelLoading } = useDefaultModel(ModelTypeEnum.tts) const { modelProviders: providers } = useProviderContext() const { data: systemFeatures } = useSuspenseQuery(systemFeaturesQueryOptions()) + const { + referenceSetting, + setReferenceSettings, + } = useReferenceSetting() const allPluginIds = useMemo(() => { return [...new Set(providers.map(p => providerToPluginId(p.provider)).filter(Boolean))] @@ -128,36 +138,70 @@ const ModelProviderPage = ({ searchText }: Props) => { return [filteredConfiguredProviders, filteredNotConfiguredProviders] }, [configuredProviders, debouncedSearchText, notConfiguredProviders]) + const [creditsBackedProviders, otherConfiguredProviders] = useMemo(() => { + const creditsBackedProviders: ModelProvider[] = [] + const otherConfiguredProviders: ModelProvider[] = [] + + filteredConfiguredProviders.forEach((provider) => { + if (providerSupportsCredits(provider, systemFeatures.trial_models)) + creditsBackedProviders.push(provider) + else + otherConfiguredProviders.push(provider) + }) + + return [creditsBackedProviders, otherConfiguredProviders] + }, [filteredConfiguredProviders, systemFeatures.trial_models]) + const hasConfiguredProviders = creditsBackedProviders.length > 0 || otherConfiguredProviders.length > 0 return (
-
-
{t('modelProvider.models', { ns: 'common' })}
-
- {showWarning &&
} - {showWarning && ( -
- - {t(warningTextKey, { ns: 'common' })} -
+
+ +
+ +
+ > + {showWarning &&
} + {showWarning && ( +
+ + {t(warningTextKey, { ns: 'common' })} +
+ )} + +
{IS_CLOUD_EDITION && } - {!filteredConfiguredProviders?.length && ( + {!hasConfiguredProviders && (
@@ -166,23 +210,46 @@ const ModelProviderPage = ({ searchText }: Props) => {
{t('modelProvider.emptyProviderTip', { ns: 'common' })}
)} - {!!filteredConfiguredProviders?.length && ( -
- {filteredConfiguredProviders?.map(provider => ( - - ))} -
+ {!!creditsBackedProviders.length && ( +
+
+
{t('modelProvider.creditsBackedProviders', { ns: 'common' })}
+
{t('modelProvider.creditsBackedProvidersDesc', { ns: 'common' })}
+
+
+ {creditsBackedProviders.map(provider => ( + + ))} +
+
+ )} + {!!otherConfiguredProviders.length && ( +
+
{t('modelProvider.configuredProviders', { ns: 'common' })}
+
+ {otherConfiguredProviders.map(provider => ( + + ))} +
+
)} {!!filteredNotConfiguredProviders?.length && ( - <> -
{t('modelProvider.toBeConfigured', { ns: 'common' })}
-
+
+
{t('modelProvider.toBeConfigured', { ns: 'common' })}
+
{filteredNotConfiguredProviders?.map(provider => ( { /> ))}
- +
)} { enableMarketplace && ( @@ -200,6 +267,13 @@ const ModelProviderPage = ({ searchText }: Props) => { /> ) } + {showUpdateSettingModal && referenceSetting && ( + setShowUpdateSettingModal(false)} + onSave={setReferenceSettings} + /> + )}
) } diff --git a/web/app/components/header/account-setting/model-provider-page/install-from-marketplace.tsx b/web/app/components/header/account-setting/model-provider-page/install-from-marketplace.tsx index dd4784916f..96fa797c4f 100644 --- a/web/app/components/header/account-setting/model-provider-page/install-from-marketplace.tsx +++ b/web/app/components/header/account-setting/model-provider-page/install-from-marketplace.tsx @@ -36,11 +36,11 @@ const InstallFromMarketplace = ({ if (plugin.type === 'bundle') return null - return + return }, []) return ( -
+
+ )} + {!showModelProvider && notConfigured && ( +
+ + {t('modelProvider.configureTip', { ns: 'common' })} +
+ )} + {showCredential && ( + + )} + {showCustomModelActions && ( +
+ + +
+ )} +
+ {!showCollapsedSection && ( +
+ setExpanded(false)} + onChange={refreshModelList} + /> +
+ )} +
+ ) + } + return (
= ({
- {t('modelProvider.quota', { ns: 'common' })} + {t('modelProvider.quotaLabel', { ns: 'common' })} {tipText} @@ -110,6 +110,7 @@ const QuotaPanel: FC = ({ {credits > 0 ? {formatNumber(credits)} : {t('modelProvider.card.quotaExhausted', { ns: 'common' })}} + {t('modelProvider.credits', { ns: 'common' })} {nextCreditResetDate ? ( <> diff --git a/web/app/components/header/account-setting/model-provider-page/system-model-selector/index.tsx b/web/app/components/header/account-setting/model-provider-page/system-model-selector/index.tsx index 8ceaaaa32e..49dddd303c 100644 --- a/web/app/components/header/account-setting/model-provider-page/system-model-selector/index.tsx +++ b/web/app/components/header/account-setting/model-provider-page/system-model-selector/index.tsx @@ -4,6 +4,7 @@ import type { DefaultModelResponse, } from '../declarations' import { Button } from '@langgenius/dify-ui/button' +import { cn } from '@langgenius/dify-ui/cn' import { Dialog, DialogCloseButton, @@ -27,6 +28,7 @@ import { import ModelSelector from '../model-selector' type SystemModelSelectorProps = { + className?: string textGenerationDefaultModel: DefaultModelResponse | undefined embeddingsDefaultModel: DefaultModelResponse | undefined rerankDefaultModel: DefaultModelResponse | undefined @@ -51,6 +53,7 @@ type SystemModelTipKey | 'modelProvider.ttsModel.tip' const SystemModel: FC = ({ + className, textGenerationDefaultModel, embeddingsDefaultModel, rerankDefaultModel, @@ -148,7 +151,7 @@ const SystemModel: FC = ({ return ( <> +
+ {!sidebarCollapsed && ( +
+ + +
+ )} + +
+ {!sidebarCollapsed && ( +
+
+
+
+
+ 🕹️ +
+
+
+
+
+
+ 📙 +
+
+
+
+
+
+ 🤖 +
+
+
+
+
+ {t('settings.discoverMoreIntegrationsInMarketplace', { ns: 'common' })} +
+
+ )} + +
+ {!isToolSection && ( +
+
+
{activeItem?.label}
+ {section === 'provider' && ( +
+ {t('modelProvider.pageDesc', { ns: 'common' })} +
+ )} +
+
+ )} +
+ {section === 'provider' && ( +
+ +
+ )} + {section === 'data-source' && ( +
+ +
+ )} + {section === 'api-based-extension' && ( +
+ +
+ )} + {isToolSection && } +
+
+
+ ) +} diff --git a/web/i18n/ar-TN/common.json b/web/i18n/ar-TN/common.json index eb25d74750..55e1d161b5 100644 --- a/web/i18n/ar-TN/common.json +++ b/web/i18n/ar-TN/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "تكوين", "modelProvider.configLoadBalancing": "تكوين موازنة التحميل", "modelProvider.configureTip": "قم بإعداد مفتاح api أو أضف نموذجًا للاستخدام", + "modelProvider.configuredProviders": "Configured providers", "modelProvider.confirmDelete": "تأكيد الحذف؟", "modelProvider.credits": "أرصدة الرسائل", + "modelProvider.creditsBackedProviders": "Available with Message Credits", + "modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.", "modelProvider.defaultConfig": "التكوين الافتراضي", "modelProvider.deprecated": "مهمل", "modelProvider.discoverMore": "اكتشف المزيد في ", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "لم يتم العثور على نموذج لـ {{model}}", "modelProvider.noneConfigured": "قم بتكوين نموذج نظام افتراضي لتشغيل التطبيقات", "modelProvider.notConfigured": "لم يتم تكوين نموذج النظام بالكامل بعد", + "modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.", "modelProvider.parameters": "المعلمات", "modelProvider.parametersInvalidRemoved": "بعض المعلمات غير صالحة وتمت إزالتها", "modelProvider.priorityUsing": "أولوية الاستخدام", "modelProvider.providerManaged": "مدار من قبل المزود", "modelProvider.providerManagedDescription": "استخدم مجموعة واحدة من بيانات الاعتماد المقدمة من مزود النموذج.", "modelProvider.quota": "حصة", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "الرموز المجانية المتاحة المتبقية", "modelProvider.rerankModel.key": "نموذج إعادة الترتيب", "modelProvider.rerankModel.tip": "سيعيد نموذج إعادة الترتيب ترتيب قائمة المستندات المرشحة بناءً على المطابقة الدلالية مع استعلام المستخدم، مما يحسن نتائج الترتيب الدلالي", @@ -628,16 +633,25 @@ "provider.validating": "جارٍ التحقق من المفتاح...", "settings.account": "حسابي", "settings.accountGroup": "عام", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "ملحق API", "settings.billing": "الفوترة", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "مصدر البيانات", + "settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace", + "settings.expand": "Expand", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "عام", "settings.integrations": "التكاملات", "settings.language": "اللغة", "settings.members": "الأعضاء", "settings.plugin": "الإضافات", "settings.provider": "مزود النموذج", + "settings.trigger": "Trigger", "settings.workplaceGroup": "مساحة العمل", + "settings.workspaceSettings": "إعدادات مساحة العمل", "tag.addNew": "إضافة علامة جديدة", "tag.addTag": "إضافة علامات", "tag.create": "إنشاء", diff --git a/web/i18n/de-DE/common.json b/web/i18n/de-DE/common.json index d0324bbae5..c2fb835435 100644 --- a/web/i18n/de-DE/common.json +++ b/web/i18n/de-DE/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "Konfigurieren", "modelProvider.configLoadBalancing": "Lastenausgleich für die Konfiguration", "modelProvider.configureTip": "Einrichten des API-Schlüssels oder Hinzufügen des zu verwendenden Modells", + "modelProvider.configuredProviders": "Configured providers", "modelProvider.confirmDelete": "Löschung bestätigen?", "modelProvider.credits": "Nachrichtenguthaben", + "modelProvider.creditsBackedProviders": "Available with Message Credits", + "modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.", "modelProvider.defaultConfig": "Standardkonfiguration", "modelProvider.deprecated": "Veraltet", "modelProvider.discoverMore": "Erfahren Sie mehr in", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "Kein Modell für {{model}} gefunden", "modelProvider.noneConfigured": "Konfigurieren Sie ein Standard-Systemmodell, um Anwendungen auszuführen", "modelProvider.notConfigured": "Das Systemmodell wurde noch nicht vollständig konfiguriert, und einige Funktionen sind möglicherweise nicht verfügbar.", + "modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.", "modelProvider.parameters": "PARAMETER", "modelProvider.parametersInvalidRemoved": "Einige Parameter sind ungültig und wurden entfernt.", "modelProvider.priorityUsing": "Bevorzugte Nutzung", "modelProvider.providerManaged": "Vom Anbieter verwaltet", "modelProvider.providerManagedDescription": "Verwenden Sie den einzelnen Satz von Anmeldeinformationen, der vom Modellanbieter bereitgestellt wird.", "modelProvider.quota": "Kontingent", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "Verbleibende verfügbare kostenlose Token", "modelProvider.rerankModel.key": "Rerank-Modell", "modelProvider.rerankModel.tip": "Rerank-Modell wird die Kandidatendokumentenliste basierend auf der semantischen Übereinstimmung mit der Benutzeranfrage neu ordnen und die Ergebnisse der semantischen Rangordnung verbessern", @@ -628,16 +633,25 @@ "provider.validating": "Schlüssel wird validiert...", "settings.account": "Mein Konto", "settings.accountGroup": "KONTO", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "API-Erweiterung", "settings.billing": "Abrechnung", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "Datenquelle", + "settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace", + "settings.expand": "Expand", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "ALLGEMEIN", "settings.integrations": "Integrationen", "settings.language": "Sprache", "settings.members": "Mitglieder", "settings.plugin": "Plugins", "settings.provider": "Modellanbieter", + "settings.trigger": "Trigger", "settings.workplaceGroup": "ARBEITSBEREICH", + "settings.workspaceSettings": "Arbeitsbereich-Einstellungen", "tag.addNew": "Neues Tag hinzufügen", "tag.addTag": "Tags hinzufügen", "tag.create": "Erstellen", diff --git a/web/i18n/en-US/common.json b/web/i18n/en-US/common.json index 603111bffb..9d363366af 100644 --- a/web/i18n/en-US/common.json +++ b/web/i18n/en-US/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "Config", "modelProvider.configLoadBalancing": "Config Load Balancing", "modelProvider.configureTip": "Set up api-key or add model to use", + "modelProvider.configuredProviders": "Configured providers", "modelProvider.confirmDelete": "Confirm deletion?", "modelProvider.credits": "Message Credits", + "modelProvider.creditsBackedProviders": "Available with Message Credits", + "modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.", "modelProvider.defaultConfig": "Default Config", "modelProvider.deprecated": "Deprecated", "modelProvider.discoverMore": "Discover more in ", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "No model found for {{model}}", "modelProvider.noneConfigured": "Configure a default system model to run applications", "modelProvider.notConfigured": "The system model has not yet been fully configured", + "modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.", "modelProvider.parameters": "PARAMETERS", "modelProvider.parametersInvalidRemoved": "Some parameters are invalid and have been removed", "modelProvider.priorityUsing": "Prioritize using", "modelProvider.providerManaged": "Provider managed", "modelProvider.providerManagedDescription": "Use the single set of credentials provided by the model provider.", "modelProvider.quota": "AI Credits", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "Remaining available free tokens", "modelProvider.rerankModel.key": "Rerank Model", "modelProvider.rerankModel.tip": "Rerank model will reorder the candidate document list based on the semantic match with user query, improving the results of semantic ranking", @@ -628,16 +633,25 @@ "provider.validating": "Validating key...", "settings.account": "My account", "settings.accountGroup": "GENERAL", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "API Extension", "settings.billing": "Billing", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "Data Source", + "settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace", + "settings.expand": "Expand", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "GENERAL", "settings.integrations": "Integrations", "settings.language": "Language", "settings.members": "Members", "settings.plugin": "Plugins", "settings.provider": "Model Provider", + "settings.trigger": "Trigger", "settings.workplaceGroup": "WORKSPACE", + "settings.workspaceSettings": "Workspace Settings", "tag.addNew": "Add new tag", "tag.addTag": "Add tags", "tag.create": "Create", diff --git a/web/i18n/es-ES/common.json b/web/i18n/es-ES/common.json index 1724161e71..bbde3e2cc3 100644 --- a/web/i18n/es-ES/common.json +++ b/web/i18n/es-ES/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "Configurar", "modelProvider.configLoadBalancing": "Configurar Balanceo de Carga", "modelProvider.configureTip": "Configurar la clave de API o agregar el modelo que se va a usar", + "modelProvider.configuredProviders": "Configured providers", "modelProvider.confirmDelete": "¿Confirmar eliminación?", "modelProvider.credits": "Créditos de Mensaje", + "modelProvider.creditsBackedProviders": "Available with Message Credits", + "modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.", "modelProvider.defaultConfig": "Configuración Predeterminada", "modelProvider.deprecated": "Desaprobado", "modelProvider.discoverMore": "Descubre más en", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "No se encontró modelo para {{model}}", "modelProvider.noneConfigured": "Configura un modelo de sistema predeterminado para ejecutar aplicaciones", "modelProvider.notConfigured": "El modelo del sistema aún no ha sido completamente configurado, y algunas funciones pueden no estar disponibles.", + "modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.", "modelProvider.parameters": "PARÁMETROS", "modelProvider.parametersInvalidRemoved": "Algunos parámetros son inválidos y han sido eliminados", "modelProvider.priorityUsing": "Uso prioritario", "modelProvider.providerManaged": "Gestionado por el proveedor", "modelProvider.providerManagedDescription": "Usa el único conjunto de credenciales proporcionado por el proveedor del modelo.", "modelProvider.quota": "Cuota", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "Tokens gratuitos restantes disponibles", "modelProvider.rerankModel.key": "Modelo de Reordenar", "modelProvider.rerankModel.tip": "El modelo de reordenar reordenará la lista de documentos candidatos basada en la coincidencia semántica con la consulta del usuario, mejorando los resultados de clasificación semántica", @@ -628,16 +633,25 @@ "provider.validating": "Validando clave...", "settings.account": "Mi cuenta", "settings.accountGroup": "CUENTA", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "Extensión basada en API", "settings.billing": "Facturación", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "Fuente de Datos", + "settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace", + "settings.expand": "Expand", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "GENERAL", "settings.integrations": "Integraciones", "settings.language": "Idioma", "settings.members": "Miembros", "settings.plugin": "Plugins", "settings.provider": "Proveedor de Modelo", + "settings.trigger": "Trigger", "settings.workplaceGroup": "ESPACIO DE TRABAJO", + "settings.workspaceSettings": "Configuración del espacio de trabajo", "tag.addNew": "Agregar nueva etiqueta", "tag.addTag": "Agregar etiquetas", "tag.create": "Crear", diff --git a/web/i18n/fa-IR/common.json b/web/i18n/fa-IR/common.json index 14f8fd8a9f..ec89ed0762 100644 --- a/web/i18n/fa-IR/common.json +++ b/web/i18n/fa-IR/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "پیکربندی", "modelProvider.configLoadBalancing": "پیکربندی تعادل بار", "modelProvider.configureTip": "api-key را راه اندازی کنید یا مدل را برای استفاده اضافه کنید", + "modelProvider.configuredProviders": "Configured providers", "modelProvider.confirmDelete": "تأیید حذف؟", "modelProvider.credits": "اعتبار پیام", + "modelProvider.creditsBackedProviders": "Available with Message Credits", + "modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.", "modelProvider.defaultConfig": "پیکربندی پیش‌فرض", "modelProvider.deprecated": "منسوخ شده", "modelProvider.discoverMore": "اطلاعات بیشتر در", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "هیچ مدلی برای {{model}} یافت نشد", "modelProvider.noneConfigured": "یک مدل سیستم پیش‌فرض برای اجرای برنامه‌ها پیکربندی کنید", "modelProvider.notConfigured": "مدل سیستم هنوز به طور کامل پیکربندی نشده است و برخی از عملکردها ممکن است در دسترس نباشند.", + "modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.", "modelProvider.parameters": "پارامترها", "modelProvider.parametersInvalidRemoved": "برخی پارامترها نامعتبر هستند و حذف شده‌اند", "modelProvider.priorityUsing": "استفاده با اولویت", "modelProvider.providerManaged": "مدیریت شده توسط ارائه‌دهنده", "modelProvider.providerManagedDescription": "استفاده از مجموعه واحد اعتبارنامه ارائه شده توسط ارائه‌دهنده مدل.", "modelProvider.quota": "سهمیه", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "توکن‌های رایگان باقی‌مانده در دسترس", "modelProvider.rerankModel.key": "مدل رتبه‌بندی مجدد", "modelProvider.rerankModel.tip": "مدل رتبه‌بندی مجدد، لیست اسناد کاندید را بر اساس تطابق معنایی با پرسش کاربر مرتب می‌کند و نتایج رتبه‌بندی معنایی را بهبود می‌بخشد", @@ -628,16 +633,25 @@ "provider.validating": "در حال اعتبارسنجی کلید...", "settings.account": "حساب من", "settings.accountGroup": "حساب کاربری", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "توسعه مبتنی بر API", "settings.billing": "صورتحساب", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "منبع داده", + "settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace", + "settings.expand": "Expand", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "عمومی", "settings.integrations": "ادغام‌ها", "settings.language": "زبان", "settings.members": "اعضا", "settings.plugin": "افزونه‌ها", "settings.provider": "ارائه دهنده مدل", + "settings.trigger": "Trigger", "settings.workplaceGroup": "فضای کاری", + "settings.workspaceSettings": "تنظیمات فضای کاری", "tag.addNew": "افزودن برچسب جدید", "tag.addTag": "افزودن برچسب‌ها", "tag.create": "ایجاد", diff --git a/web/i18n/fr-FR/common.json b/web/i18n/fr-FR/common.json index f22b4590b3..2f739dbc57 100644 --- a/web/i18n/fr-FR/common.json +++ b/web/i18n/fr-FR/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "Configuration", "modelProvider.configLoadBalancing": "Équilibrage de charge de configuration", "modelProvider.configureTip": "Configurer api-key ou ajouter un modèle à utiliser", + "modelProvider.configuredProviders": "Configured providers", "modelProvider.confirmDelete": "confirmer la suppression?", "modelProvider.credits": "Crédits de Messages", + "modelProvider.creditsBackedProviders": "Available with Message Credits", + "modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.", "modelProvider.defaultConfig": "Configuration par défaut", "modelProvider.deprecated": "Obsolète", "modelProvider.discoverMore": "Découvrez-en plus dans", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "Aucun modèle trouvé pour {{model}}", "modelProvider.noneConfigured": "Configurez un modèle système par défaut pour exécuter les applications", "modelProvider.notConfigured": "Le modèle du système n'a pas encore été entièrement configuré, et certaines fonctions peuvent être indisponibles.", + "modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.", "modelProvider.parameters": "PARAMÈTRES", "modelProvider.parametersInvalidRemoved": "Certains paramètres sont invalides et ont été supprimés.", "modelProvider.priorityUsing": "Prioriser l'utilisation", "modelProvider.providerManaged": "Géré par le fournisseur", "modelProvider.providerManagedDescription": "Utilisez l’ensemble unique d’informations d’identification fourni par le fournisseur de modèle.", "modelProvider.quota": "Quota", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "Tokens gratuits restants disponibles", "modelProvider.rerankModel.key": "Modèle de Réorganisation", "modelProvider.rerankModel.tip": "Le modèle de réorganisation réorganisera la liste des documents candidats en fonction de la correspondance sémantique avec la requête de l'utilisateur, améliorant ainsi les résultats du classement sémantique.", @@ -628,16 +633,25 @@ "provider.validating": "Validation de la clé...", "settings.account": "Mon compte", "settings.accountGroup": "COMPTE", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "Extension API", "settings.billing": "Facturation", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "Source de Données", + "settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace", + "settings.expand": "Expand", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "GÉNÉRALITÉS", "settings.integrations": "Intégrations", "settings.language": "Langue", "settings.members": "Membres", "settings.plugin": "Plugins", "settings.provider": "Fournisseur de Modèle", + "settings.trigger": "Trigger", "settings.workplaceGroup": "ESPACE DE TRAVAIL", + "settings.workspaceSettings": "Paramètres de l’espace de travail", "tag.addNew": "Ajouter une nouvelle balise", "tag.addTag": "ajouter une balise", "tag.create": "Créer", diff --git a/web/i18n/hi-IN/common.json b/web/i18n/hi-IN/common.json index 3cacc75ce0..fdace0bf63 100644 --- a/web/i18n/hi-IN/common.json +++ b/web/i18n/hi-IN/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "कॉन्फ़िग", "modelProvider.configLoadBalancing": "लोड बैलेंसिंग कॉन्फ़िग करें", "modelProvider.configureTip": "एपीआई-कुंजी सेट करें या उपयोग के लिए मॉडल जोड़ें", + "modelProvider.configuredProviders": "Configured providers", "modelProvider.confirmDelete": "हटाने की पुष्टि करें?", "modelProvider.credits": "संदेश क्रेडिट्स", + "modelProvider.creditsBackedProviders": "Available with Message Credits", + "modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.", "modelProvider.defaultConfig": "डिफ़ॉल्ट कॉन्फ़िग", "modelProvider.deprecated": "अप्रचलित", "modelProvider.discoverMore": "और अधिक खोजें", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "{{model}} के लिए कोई मॉडल नहीं मिला", "modelProvider.noneConfigured": "एप्लिकेशन चलाने के लिए एक डिफ़ॉल्ट सिस्टम मॉडल कॉन्फ़िगर करें", "modelProvider.notConfigured": "सिस्टम मॉडल को अभी पूरी तरह से कॉन्फ़िगर नहीं किया गया है, और कुछ कार्य उपलब्ध नहीं हो सकते हैं।", + "modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.", "modelProvider.parameters": "पैरामीटर", "modelProvider.parametersInvalidRemoved": "कुछ पैरामीटर अमान्य हैं और हटा दिए गए हैं", "modelProvider.priorityUsing": "प्राथमिकता का उपयोग", "modelProvider.providerManaged": "प्रदाता प्रबंधित", "modelProvider.providerManagedDescription": "मॉडल प्रदाता द्वारा प्रदान की गई एकल सेट की साख का उपयोग करें।", "modelProvider.quota": "कोटा", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "बचे हुए उपलब्ध मुफ्त टोकन", "modelProvider.rerankModel.key": "रीरैंक मॉडल", "modelProvider.rerankModel.tip": "रीरैंक मॉडल उपयोगकर्ता प्रश्न के साथ सांविधिक मेल के आधार पर उम्मीदवार दस्तावेज़ सूची को पुनः क्रमित करेगा, सांविधिक रैंकिंग के परिणामों में सुधार करेगा।", @@ -628,16 +633,25 @@ "provider.validating": "कुंजी का सत्यापन हो रहा है...", "settings.account": "मेरा खाता", "settings.accountGroup": "खाता", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "API विस्तार", "settings.billing": "बिलिंग", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "डेटा स्रोत", + "settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace", + "settings.expand": "Expand", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "सामान्य", "settings.integrations": "एकीकरण", "settings.language": "भाषा", "settings.members": "सदस्य", "settings.plugin": "प्लगइन्स", "settings.provider": "मॉडल प्रदाता", + "settings.trigger": "Trigger", "settings.workplaceGroup": "कार्यस्थल", + "settings.workspaceSettings": "कार्यस्थल सेटिंग्स", "tag.addNew": "नया टैग जोड़ें", "tag.addTag": "टैग जोड़ें", "tag.create": "बनाएं", diff --git a/web/i18n/id-ID/common.json b/web/i18n/id-ID/common.json index a94c669366..6e648728af 100644 --- a/web/i18n/id-ID/common.json +++ b/web/i18n/id-ID/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "Konfigurasi", "modelProvider.configLoadBalancing": "Penyeimbangan Beban Konfigurasi", "modelProvider.configureTip": "Menyiapkan api-key atau menambahkan model untuk digunakan", + "modelProvider.configuredProviders": "Configured providers", "modelProvider.confirmDelete": "Mengkonfirmasi penghapusan?", "modelProvider.credits": "Kredit Pesan", + "modelProvider.creditsBackedProviders": "Available with Message Credits", + "modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.", "modelProvider.defaultConfig": "Konfigurasi Default", "modelProvider.deprecated": "Usang", "modelProvider.discoverMore": "Temukan lebih lanjut di", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "Tidak ditemukan model untuk {{model}}", "modelProvider.noneConfigured": "Konfigurasikan model sistem default untuk menjalankan aplikasi", "modelProvider.notConfigured": "Model sistem belum sepenuhnya dikonfigurasi", + "modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.", "modelProvider.parameters": "PARAMETER", "modelProvider.parametersInvalidRemoved": "Beberapa parameter tidak valid dan telah dihapus", "modelProvider.priorityUsing": "Prioritaskan penggunaan", "modelProvider.providerManaged": "Penyedia dikelola", "modelProvider.providerManagedDescription": "Gunakan satu set kredensial yang disediakan oleh penyedia model.", "modelProvider.quota": "Kuota", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "Token gratis yang masih tersedia", "modelProvider.rerankModel.key": "Peringkat ulang Model", "modelProvider.rerankModel.tip": "Model rerank akan menyusun ulang daftar dokumen kandidat berdasarkan kecocokan semantik dengan kueri pengguna, meningkatkan hasil peringkat semantik", @@ -628,16 +633,25 @@ "provider.validating": "Memvalidasi kunci...", "settings.account": "Akun saya", "settings.accountGroup": "UMUM", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "Ekstensi API", "settings.billing": "Penagihan", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "Sumber Data", + "settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace", + "settings.expand": "Expand", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "UMUM", "settings.integrations": "Integrasi", "settings.language": "Bahasa", "settings.members": "Anggota", "settings.plugin": "Plugin", "settings.provider": "Penyedia Model", + "settings.trigger": "Trigger", "settings.workplaceGroup": "WORKSPACE", + "settings.workspaceSettings": "Pengaturan Workspace", "tag.addNew": "Tambahkan tag baru", "tag.addTag": "Tambahkan tag", "tag.create": "Menciptakan", diff --git a/web/i18n/it-IT/common.json b/web/i18n/it-IT/common.json index 3265adc01c..615067982d 100644 --- a/web/i18n/it-IT/common.json +++ b/web/i18n/it-IT/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "Configura", "modelProvider.configLoadBalancing": "Configura Bilanciamento del Carico", "modelProvider.configureTip": "Configura la chiave API o aggiungi il modello da utilizzare", + "modelProvider.configuredProviders": "Configured providers", "modelProvider.confirmDelete": "confermare l'eliminazione?", "modelProvider.credits": "Crediti Messaggi", + "modelProvider.creditsBackedProviders": "Available with Message Credits", + "modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.", "modelProvider.defaultConfig": "Config predefinito", "modelProvider.deprecated": "Deprecato", "modelProvider.discoverMore": "Scopri di più in", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "Nessun modello trovato per {{model}}", "modelProvider.noneConfigured": "Configura un modello di sistema predefinito per eseguire le applicazioni", "modelProvider.notConfigured": "Il modello di sistema non è ancora stato completamente configurato e alcune funzioni potrebbero non essere disponibili.", + "modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.", "modelProvider.parameters": "PARAMETRI", "modelProvider.parametersInvalidRemoved": "Alcuni parametri non sono validi e sono stati rimossi.", "modelProvider.priorityUsing": "Utilizzo prioritario", "modelProvider.providerManaged": "Gestito dal fornitore", "modelProvider.providerManagedDescription": "Usa il singolo set di credenziali fornito dal fornitore del modello.", "modelProvider.quota": "Quota", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "Token gratuiti rimanenti disponibili", "modelProvider.rerankModel.key": "Modello di Rerank", "modelProvider.rerankModel.tip": "Il modello di rerank riordinerà la lista dei documenti candidati basandosi sulla corrispondenza semantica con la query dell'utente, migliorando i risultati del ranking semantico", @@ -628,16 +633,25 @@ "provider.validating": "Convalida chiave in corso...", "settings.account": "Il mio account", "settings.accountGroup": "ACCOUNT", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "Estensione API", "settings.billing": "Fatturazione", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "Fonte Dati", + "settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace", + "settings.expand": "Expand", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "GENERALE", "settings.integrations": "Integrazioni", "settings.language": "Lingua", "settings.members": "Membri", "settings.plugin": "Plugin", "settings.provider": "Fornitore di Modelli", + "settings.trigger": "Trigger", "settings.workplaceGroup": "WORKSPACE", + "settings.workspaceSettings": "Impostazioni workspace", "tag.addNew": "Aggiungi nuovo tag", "tag.addTag": "Aggiungi tag", "tag.create": "Crea", diff --git a/web/i18n/ja-JP/common.json b/web/i18n/ja-JP/common.json index 4d443e93d7..c5653fe707 100644 --- a/web/i18n/ja-JP/common.json +++ b/web/i18n/ja-JP/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "設定", "modelProvider.configLoadBalancing": "負荷分散の設定", "modelProvider.configureTip": "API キーを設定するか、使用するモデルを追加してください", + "modelProvider.configuredProviders": "Configured providers", "modelProvider.confirmDelete": "削除を確認", "modelProvider.credits": "クレジット", + "modelProvider.creditsBackedProviders": "Available with Message Credits", + "modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.", "modelProvider.defaultConfig": "デフォルトの設定", "modelProvider.deprecated": "廃止予定", "modelProvider.discoverMore": "もっと発見する", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "{{model}}に対するモデルが見つかりません", "modelProvider.noneConfigured": "アプリケーションを実行するためにデフォルトのシステムモデルを設定してください", "modelProvider.notConfigured": "システムモデルがまだ完全に設定されておらず、一部の機能が利用できない場合があります。", + "modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.", "modelProvider.parameters": "パラメータ", "modelProvider.parametersInvalidRemoved": "いくつかのパラメータが無効であり、削除されました。", "modelProvider.priorityUsing": "優先利用", "modelProvider.providerManaged": "プロバイダ管理", "modelProvider.providerManagedDescription": "モデルプロバイダによって提供される認証情報を使用します。", "modelProvider.quota": "クォータ", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "残りの無料トークン", "modelProvider.rerankModel.key": "Rerank モデル", "modelProvider.rerankModel.tip": "Rerank モデルは、ユーザークエリとの意味的一致に基づいて候補文書リストを再配置し、意味的ランキングの結果を向上させます。", @@ -628,16 +633,25 @@ "provider.validating": "キーの検証中...", "settings.account": "マイアカウント", "settings.accountGroup": "アカウント", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "API 拡張", "settings.billing": "請求", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "データソース", + "settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace", + "settings.expand": "Expand", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "一般", "settings.integrations": "統合", "settings.language": "言語", "settings.members": "メンバー", "settings.plugin": "プラグイン", "settings.provider": "モデルプロバイダー", + "settings.trigger": "Trigger", "settings.workplaceGroup": "ワークスペース", + "settings.workspaceSettings": "ワークスペース設定", "tag.addNew": "新しいタグを追加", "tag.addTag": "タグを追加", "tag.create": "作成", diff --git a/web/i18n/ko-KR/common.json b/web/i18n/ko-KR/common.json index e04d5e6b5c..0c47de1aab 100644 --- a/web/i18n/ko-KR/common.json +++ b/web/i18n/ko-KR/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "설정", "modelProvider.configLoadBalancing": "Config 로드 밸런싱", "modelProvider.configureTip": "api-key 설정 또는 사용할 모델 추가", + "modelProvider.configuredProviders": "Configured providers", "modelProvider.confirmDelete": "삭제를 확인하시겠습니까?", "modelProvider.credits": "메시지 크레딧", + "modelProvider.creditsBackedProviders": "Available with Message Credits", + "modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.", "modelProvider.defaultConfig": "기본 구성", "modelProvider.deprecated": "사용 중단됨", "modelProvider.discoverMore": "더 알아보기", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "{{model}}에 대한 모델을 찾을 수 없습니다", "modelProvider.noneConfigured": "애플리케이션을 실행하려면 기본 시스템 모델을 구성하세요", "modelProvider.notConfigured": "시스템 모델이 아직 완전히 설정되지 않아 일부 기능을 사용할 수 없습니다.", + "modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.", "modelProvider.parameters": "매개변수", "modelProvider.parametersInvalidRemoved": "일부 매개변수가 유효하지 않아 제거되었습니다.", "modelProvider.priorityUsing": "우선 사용", "modelProvider.providerManaged": "제공자 관리", "modelProvider.providerManagedDescription": "모델 공급자가 제공하는 단일 자격 증명 집합을 사용합니다.", "modelProvider.quota": "할당량", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "남은 무료 토큰 사용 가능", "modelProvider.rerankModel.key": "재랭크 모델", "modelProvider.rerankModel.tip": "재랭크 모델은 사용자 쿼리와의 의미적 일치를 기반으로 후보 문서 목록을 재배열하여 의미적 순위를 향상시킵니다.", @@ -628,16 +633,25 @@ "provider.validating": "키를 확인하는 중...", "settings.account": "내 계정", "settings.accountGroup": "계정", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "API 확장", "settings.billing": "청구", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "데이터 소스", + "settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace", + "settings.expand": "Expand", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "일반", "settings.integrations": "통합", "settings.language": "언어", "settings.members": "멤버", "settings.plugin": "플러그인", "settings.provider": "모델 제공자", + "settings.trigger": "Trigger", "settings.workplaceGroup": "작업 공간", + "settings.workspaceSettings": "작업 공간 설정", "tag.addNew": "새 태그 추가", "tag.addTag": "태그 추가", "tag.create": "생성", diff --git a/web/i18n/nl-NL/common.json b/web/i18n/nl-NL/common.json index 0d86cafa14..7db25b4d56 100644 --- a/web/i18n/nl-NL/common.json +++ b/web/i18n/nl-NL/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "Config", "modelProvider.configLoadBalancing": "Config Load Balancing", "modelProvider.configureTip": "Set up api-key or add model to use", + "modelProvider.configuredProviders": "Configured providers", "modelProvider.confirmDelete": "Confirm deletion?", "modelProvider.credits": "Message Credits", + "modelProvider.creditsBackedProviders": "Available with Message Credits", + "modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.", "modelProvider.defaultConfig": "Default Config", "modelProvider.deprecated": "Deprecated", "modelProvider.discoverMore": "Discover more in ", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "No model found for {{model}}", "modelProvider.noneConfigured": "Configureer een standaard systeemmodel om applicaties uit te voeren", "modelProvider.notConfigured": "The system model has not yet been fully configured", + "modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.", "modelProvider.parameters": "PARAMETERS", "modelProvider.parametersInvalidRemoved": "Some parameters are invalid and have been removed", "modelProvider.priorityUsing": "Prioritize using", "modelProvider.providerManaged": "Provider managed", "modelProvider.providerManagedDescription": "Use the single set of credentials provided by the model provider.", "modelProvider.quota": "Quota", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "Remaining available free tokens", "modelProvider.rerankModel.key": "Rerank Model", "modelProvider.rerankModel.tip": "Rerank model will reorder the candidate document list based on the semantic match with user query, improving the results of semantic ranking", @@ -628,16 +633,25 @@ "provider.validating": "Validating key...", "settings.account": "My account", "settings.accountGroup": "GENERAL", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "API Extension", "settings.billing": "Billing", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "Data Source", + "settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace", + "settings.expand": "Expand", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "GENERAL", "settings.integrations": "Integrations", "settings.language": "Language", "settings.members": "Members", "settings.plugin": "Plugins", "settings.provider": "Model Provider", + "settings.trigger": "Trigger", "settings.workplaceGroup": "WORKSPACE", + "settings.workspaceSettings": "Workspace-instellingen", "tag.addNew": "Add new tag", "tag.addTag": "Add tags", "tag.create": "Create", diff --git a/web/i18n/pl-PL/common.json b/web/i18n/pl-PL/common.json index 9eb4755f0a..802d01d1db 100644 --- a/web/i18n/pl-PL/common.json +++ b/web/i18n/pl-PL/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "Konfiguracja", "modelProvider.configLoadBalancing": "Równoważenie obciążenia konfiguracji", "modelProvider.configureTip": "Konfigurowanie klucza interfejsu API lub dodawanie modelu do użycia", + "modelProvider.configuredProviders": "Configured providers", "modelProvider.confirmDelete": "potwierdzić usunięcie?", "modelProvider.credits": "Kredyty wiadomości", + "modelProvider.creditsBackedProviders": "Available with Message Credits", + "modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.", "modelProvider.defaultConfig": "Domyślna konfiguracja", "modelProvider.deprecated": "Przestarzałe", "modelProvider.discoverMore": "Dowiedz się więcej w", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "Nie znaleziono modelu dla {{model}}", "modelProvider.noneConfigured": "Skonfiguruj domyślny model systemowy, aby uruchamiać aplikacje", "modelProvider.notConfigured": "Systemowy model nie został jeszcze w pełni skonfigurowany, co może skutkować niedostępnością niektórych funkcji.", + "modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.", "modelProvider.parameters": "PARAMETRY", "modelProvider.parametersInvalidRemoved": "Niektóre parametry są nieprawidłowe i zostały usunięte.", "modelProvider.priorityUsing": "Priorytetyzacja użycia", "modelProvider.providerManaged": "Zarządzany przez dostawcę", "modelProvider.providerManagedDescription": "Użyj pojedynczego zestawu poświadczeń dostarczonych przez dostawcę modelu.", "modelProvider.quota": "Limit", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "Pozostałe dostępne darmowe tokeny", "modelProvider.rerankModel.key": "Model ponownego rankingu", "modelProvider.rerankModel.tip": "Model ponownego rankingu zmieni kolejność listy dokumentów kandydatów na podstawie semantycznego dopasowania z zapytaniem użytkownika, poprawiając wyniki rankingu semantycznego", @@ -628,16 +633,25 @@ "provider.validating": "Weryfikowanie klucza...", "settings.account": "Moje konto", "settings.accountGroup": "KONTO", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "Rozszerzenie API", "settings.billing": "Rozliczenia", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "Źródło danych", + "settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace", + "settings.expand": "Expand", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "OGÓLNE", "settings.integrations": "Integracje", "settings.language": "Język", "settings.members": "Członkowie", "settings.plugin": "Pluginy", "settings.provider": "Dostawca modelu", + "settings.trigger": "Trigger", "settings.workplaceGroup": "PRZESTRZEŃ ROBOCZA", + "settings.workspaceSettings": "Ustawienia przestrzeni roboczej", "tag.addNew": "Dodaj nowy tag", "tag.addTag": "Dodaj tagi", "tag.create": "Utwórz", diff --git a/web/i18n/pt-BR/common.json b/web/i18n/pt-BR/common.json index 0ff4f91584..9f2e387d2f 100644 --- a/web/i18n/pt-BR/common.json +++ b/web/i18n/pt-BR/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "Configuração", "modelProvider.configLoadBalancing": "Balanceamento de carga de configuração", "modelProvider.configureTip": "Configure a chave de API ou adicione o modelo a ser usado", + "modelProvider.configuredProviders": "Configured providers", "modelProvider.confirmDelete": "confirmar exclusão?", "modelProvider.credits": "Créditos de Mensagem", + "modelProvider.creditsBackedProviders": "Available with Message Credits", + "modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.", "modelProvider.defaultConfig": "Configuração padrão", "modelProvider.deprecated": "Obsoleto", "modelProvider.discoverMore": "Descubra mais em", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "Nenhum modelo encontrado para {{model}}", "modelProvider.noneConfigured": "Configure um modelo de sistema padrão para executar aplicações", "modelProvider.notConfigured": "O modelo do sistema ainda não foi totalmente configurado e algumas funções podem estar indisponíveis.", + "modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.", "modelProvider.parameters": "PARÂMETROS", "modelProvider.parametersInvalidRemoved": "Alguns parâmetros são inválidos e foram removidos", "modelProvider.priorityUsing": "Uso prioritário", "modelProvider.providerManaged": "Gerenciado pelo provedor", "modelProvider.providerManagedDescription": "Use o único conjunto de credenciais fornecido pelo provedor de modelo.", "modelProvider.quota": "Quota", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "Tokens gratuitos disponíveis restantes", "modelProvider.rerankModel.key": "Modelo de Reordenação", "modelProvider.rerankModel.tip": "O modelo de reordenaenação reorganizará a lista de documentos candidatos com base na correspondência semântica com a consulta do usuário, melhorando os resultados da classificação semântica", @@ -628,16 +633,25 @@ "provider.validating": "Validando chave...", "settings.account": "Minha conta", "settings.accountGroup": "CONTA", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "Extensão baseada em API", "settings.billing": "Faturamento", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "Fonte de dados", + "settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace", + "settings.expand": "Expand", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "GERAL", "settings.integrations": "Integrações", "settings.language": "Idioma", "settings.members": "Membros", "settings.plugin": "Plugins", "settings.provider": "Fornecedor de modelo", + "settings.trigger": "Trigger", "settings.workplaceGroup": "ESPAÇO DE TRABALHO", + "settings.workspaceSettings": "Configurações do espaço de trabalho", "tag.addNew": "Adicionar nova tag", "tag.addTag": "adicionar etiqueta", "tag.create": "Criar", diff --git a/web/i18n/ro-RO/common.json b/web/i18n/ro-RO/common.json index db60f1e42d..24ddc0a372 100644 --- a/web/i18n/ro-RO/common.json +++ b/web/i18n/ro-RO/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "Configurare", "modelProvider.configLoadBalancing": "Echilibrarea încărcării de configurare", "modelProvider.configureTip": "Configurați api-key sau adăugați modelul de utilizat", + "modelProvider.configuredProviders": "Configured providers", "modelProvider.confirmDelete": "confirmați ștergerea?", "modelProvider.credits": "Credite mesaje", + "modelProvider.creditsBackedProviders": "Available with Message Credits", + "modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.", "modelProvider.defaultConfig": "Configurație implicită", "modelProvider.deprecated": "Învechit", "modelProvider.discoverMore": "Descoperă mai multe în", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "Nu a fost găsit niciun model pentru {{model}}", "modelProvider.noneConfigured": "Configurați un model de sistem implicit pentru a rula aplicații", "modelProvider.notConfigured": "Modelul de sistem nu a fost încă configurat complet, iar unele funcții pot fi indisponibile.", + "modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.", "modelProvider.parameters": "PARAMETRI", "modelProvider.parametersInvalidRemoved": "Unele parametrii sunt invalizi și au fost eliminați.", "modelProvider.priorityUsing": "Prioritizează utilizarea", "modelProvider.providerManaged": "Gestionat de furnizor", "modelProvider.providerManagedDescription": "Utilizați setul unic de acreditări furnizat de furnizorul de modele.", "modelProvider.quota": "Cotă", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "Jetoane gratuite disponibile rămase", "modelProvider.rerankModel.key": "Model de reordonare", "modelProvider.rerankModel.tip": "Modelul de reordonare va reordona lista de documente candidate pe baza potrivirii semantice cu interogarea utilizatorului, îmbunătățind rezultatele clasificării semantice", @@ -628,16 +633,25 @@ "provider.validating": "Se validează cheia...", "settings.account": "Contul meu", "settings.accountGroup": "CONT", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "Extensie API", "settings.billing": "Facturare", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "Sursă de date", + "settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace", + "settings.expand": "Expand", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "GENERAL", "settings.integrations": "Integrări", "settings.language": "Limbă", "settings.members": "Membri", "settings.plugin": "Plugin-uri", "settings.provider": "Furnizor de modele", + "settings.trigger": "Trigger", "settings.workplaceGroup": "SPAȚIU DE LUCRU", + "settings.workspaceSettings": "Setări spațiu de lucru", "tag.addNew": "Adăugați o etichetă nouă", "tag.addTag": "Adăugați etichete", "tag.create": "Creați", diff --git a/web/i18n/ru-RU/common.json b/web/i18n/ru-RU/common.json index 245e805b7a..6410cb22ae 100644 --- a/web/i18n/ru-RU/common.json +++ b/web/i18n/ru-RU/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "Настройка", "modelProvider.configLoadBalancing": "Настроить балансировку нагрузки", "modelProvider.configureTip": "Настройте api-ключ или добавьте модель для использования", + "modelProvider.configuredProviders": "Configured providers", "modelProvider.confirmDelete": "Подтвердить удаление?", "modelProvider.credits": "Кредиты на сообщения", + "modelProvider.creditsBackedProviders": "Available with Message Credits", + "modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.", "modelProvider.defaultConfig": "Настройка по умолчанию", "modelProvider.deprecated": "Устаревший", "modelProvider.discoverMore": "Узнайте больше в", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "Модель не найдена для {{model}}", "modelProvider.noneConfigured": "Настройте системную модель по умолчанию для запуска приложений", "modelProvider.notConfigured": "Системная модель еще не полностью настроена, и некоторые функции могут быть недоступны.", + "modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.", "modelProvider.parameters": "ПАРАМЕТРЫ", "modelProvider.parametersInvalidRemoved": "Некоторые параметры недействительны и были удалены", "modelProvider.priorityUsing": "Приоритетное использование", "modelProvider.providerManaged": "Управляется поставщиком", "modelProvider.providerManagedDescription": "Используйте один набор учетных данных, предоставленный поставщиком модели.", "modelProvider.quota": "Квота", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "Оставшиеся доступные бесплатные токены", "modelProvider.rerankModel.key": "Модель повторного ранжирования", "modelProvider.rerankModel.tip": "Модель повторного ранжирования изменит порядок списка документов-кандидатов на основе семантического соответствия запросу пользователя, улучшая результаты семантического ранжирования", @@ -628,16 +633,25 @@ "provider.validating": "Проверка ключа...", "settings.account": "Моя учетная запись", "settings.accountGroup": "АККАУНТ", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "API расширение", "settings.billing": "Оплата", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "Источник данных", + "settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace", + "settings.expand": "Expand", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "ОБЩЕЕ", "settings.integrations": "Интеграции", "settings.language": "Язык", "settings.members": "Участники", "settings.plugin": "Плагины", "settings.provider": "Поставщик модели", + "settings.trigger": "Trigger", "settings.workplaceGroup": "РАБОЧЕЕ ПРОСТРАНСТВО", + "settings.workspaceSettings": "Настройки рабочего пространства", "tag.addNew": "Добавить новый тег", "tag.addTag": "Добавить теги", "tag.create": "Создать", diff --git a/web/i18n/sl-SI/common.json b/web/i18n/sl-SI/common.json index 41df9487c3..0273eb0c0c 100644 --- a/web/i18n/sl-SI/common.json +++ b/web/i18n/sl-SI/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "Konfiguracija", "modelProvider.configLoadBalancing": "Konfiguracija uravnoteženja obremenitev", "modelProvider.configureTip": "Nastavitev tipke API ali dodajanje modela za uporabo", + "modelProvider.configuredProviders": "Configured providers", "modelProvider.confirmDelete": "Potrdite izbris?", "modelProvider.credits": "Sporočilni krediti", + "modelProvider.creditsBackedProviders": "Available with Message Credits", + "modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.", "modelProvider.defaultConfig": "Privzeta konfiguracija", "modelProvider.deprecated": "Zastarelo", "modelProvider.discoverMore": "Odkrijte več v", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "Za {{model}} ni najden noben model", "modelProvider.noneConfigured": "Konfigurirajte privzeti sistemski model za zaganjanje aplikacij", "modelProvider.notConfigured": "Sistemski model še ni popolnoma konfiguriran, nekatere funkcije morda ne bodo na voljo.", + "modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.", "modelProvider.parameters": "PARAMETRI", "modelProvider.parametersInvalidRemoved": "Nekateri parametri so neveljavni in so bili odstranjeni.", "modelProvider.priorityUsing": "Prednostna uporaba", "modelProvider.providerManaged": "Upravljano s strani ponudnika", "modelProvider.providerManagedDescription": "Uporabite enoten sklop poverilnic, ki jih zagotovi ponudnik modela.", "modelProvider.quota": "Kvote", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "Preostali razpoložljivi brezplačni žetoni", "modelProvider.rerankModel.key": "Model za prerazvrstitev", "modelProvider.rerankModel.tip": "Model za prerazvrstitev bo prerazporedil seznam kandidatskih dokumentov na podlagi semantične ujemanja z uporabniško poizvedbo, s čimer se izboljšajo rezultati semantičnega razvrščanja.", @@ -628,16 +633,25 @@ "provider.validating": "Preverjam ključ...", "settings.account": "Moj račun", "settings.accountGroup": "SPLOŠNO", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "Razširitev API-ja", "settings.billing": "Zaračunavanje", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "Vir podatkov", + "settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace", + "settings.expand": "Expand", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "SPLOŠNO", "settings.integrations": "Integracije", "settings.language": "Jezik", "settings.members": "Člani", "settings.plugin": "Vtičniki", "settings.provider": "Ponudnik modelov", + "settings.trigger": "Trigger", "settings.workplaceGroup": "DELOVNI PROSTOR", + "settings.workspaceSettings": "Nastavitve delovnega prostora", "tag.addNew": "Dodajanje nove oznake", "tag.addTag": "Dodajanje oznak", "tag.create": "Ustvariti", diff --git a/web/i18n/th-TH/common.json b/web/i18n/th-TH/common.json index 833dd1964c..9eff16bf55 100644 --- a/web/i18n/th-TH/common.json +++ b/web/i18n/th-TH/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "กําหนดค่า", "modelProvider.configLoadBalancing": "กําหนดค่าโหลดบาลานซ์", "modelProvider.configureTip": "ตั้งค่า api-key หรือเพิ่มโมเดลเพื่อใช้", + "modelProvider.configuredProviders": "Configured providers", "modelProvider.confirmDelete": "ยืนยันการลบ?", "modelProvider.credits": "เครดิตข้อความ", + "modelProvider.creditsBackedProviders": "Available with Message Credits", + "modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.", "modelProvider.defaultConfig": "การกําหนดค่าเริ่มต้น", "modelProvider.deprecated": "เลิกใช้งานแล้ว", "modelProvider.discoverMore": "ดูเพิ่มเติมใน", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "ไม่พบแบบจําลองสําหรับ {{model}}", "modelProvider.noneConfigured": "กำหนดค่าโมเดลระบบเริ่มต้นเพื่อเรียกใช้แอปพลิเคชัน", "modelProvider.notConfigured": "โมเดลระบบยังไม่ได้รับการกําหนดค่าอย่างสมบูรณ์ และฟังก์ชันบางอย่างอาจไม่พร้อมใช้งาน", + "modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.", "modelProvider.parameters": "พารามิเตอร์", "modelProvider.parametersInvalidRemoved": "บางพารามิเตอร์ไม่ถูกต้องและถูกนำออก", "modelProvider.priorityUsing": "จัดลําดับความสําคัญของการใช้", "modelProvider.providerManaged": "จัดการผู้ให้บริการ", "modelProvider.providerManagedDescription": "ใช้ข้อมูลประจําตัวชุดเดียวที่ผู้ให้บริการโมเดลให้มา", "modelProvider.quota": "โควตา", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "โทเค็นฟรีที่เหลืออยู่", "modelProvider.rerankModel.key": "จัดอันดับโมเดลใหม่", "modelProvider.rerankModel.tip": "โมเดล Rerank จะจัดลําดับรายการเอกสารผู้สมัครใหม่ตามการจับคู่ความหมายกับการสืบค้นของผู้ใช้ ซึ่งช่วยปรับปรุงผลลัพธ์ของการจัดอันดับความหมาย", @@ -628,16 +633,25 @@ "provider.validating": "กําลังตรวจสอบความถูกต้องของคีย์...", "settings.account": "บัญชีของฉัน", "settings.accountGroup": "ทั่วไป", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "ส่วนขยาย API", "settings.billing": "เรียก เก็บ เงิน", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "แหล่งข้อมูล", + "settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace", + "settings.expand": "Expand", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "ทั่วไป", "settings.integrations": "บูรณาการ", "settings.language": "ภาษา", "settings.members": "สมาชิก", "settings.plugin": "ปลั๊กอิน", "settings.provider": "ผู้ให้บริการโมเดล", + "settings.trigger": "Trigger", "settings.workplaceGroup": "พื้นที่", + "settings.workspaceSettings": "การตั้งค่าพื้นที่ทำงาน", "tag.addNew": "เพิ่มแท็กใหม่", "tag.addTag": "เพิ่มแท็ก", "tag.create": "สร้าง", diff --git a/web/i18n/tr-TR/common.json b/web/i18n/tr-TR/common.json index f50c7ca296..28e67653bb 100644 --- a/web/i18n/tr-TR/common.json +++ b/web/i18n/tr-TR/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "Yapılandır", "modelProvider.configLoadBalancing": "Yük Dengelemeyi Yapılandır", "modelProvider.configureTip": "Api-key'i ayarlayın veya kullanmak için model ekleyin", + "modelProvider.configuredProviders": "Configured providers", "modelProvider.confirmDelete": "silme onayı?", "modelProvider.credits": "Mesaj Kredileri", + "modelProvider.creditsBackedProviders": "Available with Message Credits", + "modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.", "modelProvider.defaultConfig": "Varsayılan Yapılandırma", "modelProvider.deprecated": "Kullanım dışı", "modelProvider.discoverMore": "Daha fazlasını keşfedin", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "{{model}} için model bulunamadı", "modelProvider.noneConfigured": "Uygulamaları çalıştırmak için varsayılan bir sistem modeli yapılandırın", "modelProvider.notConfigured": "Sistem modeli henüz tam olarak yapılandırılmadı ve bazı işlevler kullanılamayabilir.", + "modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.", "modelProvider.parameters": "PARAMETRELER", "modelProvider.parametersInvalidRemoved": "Bazı parametreler geçersizdir ve kaldırılmıştır.", "modelProvider.priorityUsing": "Öncelikli Kullanım", "modelProvider.providerManaged": "Sağlayıcı tarafından yönetilen", "modelProvider.providerManagedDescription": "Model sağlayıcı tarafından sağlanan tek bir kimlik bilgisi grubunu kullanın.", "modelProvider.quota": "Kota", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "Kalan kullanılabilir ücretsiz tokenler", "modelProvider.rerankModel.key": "Yeniden Sıralama Modeli", "modelProvider.rerankModel.tip": "Yeniden sıralama modeli, kullanıcı sorgusuyla anlam eşleştirmesine dayalı olarak aday belge listesini yeniden sıralayacak ve anlam sıralama sonuçlarını iyileştirecektir.", @@ -628,16 +633,25 @@ "provider.validating": "Anahtar doğrulanıyor...", "settings.account": "Hesabım", "settings.accountGroup": "HESAP", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "API Uzantısı", "settings.billing": "Faturalandırma", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "Veri Kaynağı", + "settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace", + "settings.expand": "Expand", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "GENEL", "settings.integrations": "Entegrasyonlar", "settings.language": "Dil", "settings.members": "Üyeler", "settings.plugin": "Eklentiler", "settings.provider": "Model Sağlayıcı", + "settings.trigger": "Trigger", "settings.workplaceGroup": "ÇALIŞMA ALANI", + "settings.workspaceSettings": "Çalışma alanı ayarları", "tag.addNew": "Yeni etiket ekle", "tag.addTag": "Etiket ekle", "tag.create": "Oluştur", diff --git a/web/i18n/uk-UA/common.json b/web/i18n/uk-UA/common.json index 6bb425a045..bd8de62192 100644 --- a/web/i18n/uk-UA/common.json +++ b/web/i18n/uk-UA/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "Налаштування", "modelProvider.configLoadBalancing": "Балансування навантаження конфігурації", "modelProvider.configureTip": "Налаштуйте api-ключ або додайте модель для використання", + "modelProvider.configuredProviders": "Configured providers", "modelProvider.confirmDelete": "підтвердити видалення?", "modelProvider.credits": "Кредити повідомлень", + "modelProvider.creditsBackedProviders": "Available with Message Credits", + "modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.", "modelProvider.defaultConfig": "Конфігурація за замовчуванням", "modelProvider.deprecated": "Застарілий", "modelProvider.discoverMore": "Відкрийте для себе більше в", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "Модель для {{model}} не знайдено", "modelProvider.noneConfigured": "Налаштуйте системну модель за замовчуванням для запуску застосунків", "modelProvider.notConfigured": "Системну модель ще не повністю налаштовано, і деякі функції можуть бути недоступні.", + "modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.", "modelProvider.parameters": "ПАРАМЕТРИ", "modelProvider.parametersInvalidRemoved": "Деякі параметри є недійсними і були видалені", "modelProvider.priorityUsing": "Пріоритезувати використання", "modelProvider.providerManaged": "Під управлінням провайдера", "modelProvider.providerManagedDescription": "Використовуйте єдиний набір облікових даних, наданий постачальником моделі.", "modelProvider.quota": "Квота", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "Залишилося доступних безкоштовних токенів", "modelProvider.rerankModel.key": "Модель повторного ранжування", "modelProvider.rerankModel.tip": "Модель повторного ранжування змінить порядок списку документів-кандидатів на основі семантичної відповідності запиту користувача, покращуючи результати семантичного ранжування.", @@ -628,16 +633,25 @@ "provider.validating": "Перевірка ключа...", "settings.account": "Мій обліковий запис", "settings.accountGroup": "ОБЛІКОВИЙ ЗАПИС", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "Розширення API", "settings.billing": "Виставлення рахунків", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "Джерело даних", + "settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace", + "settings.expand": "Expand", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "ЗАГАЛЬНЕ", "settings.integrations": "Інтеграції", "settings.language": "Мова", "settings.members": "Учасники", "settings.plugin": "Плагіни", "settings.provider": "Постачальник моделі", + "settings.trigger": "Trigger", "settings.workplaceGroup": "РОБОЧИЙ ПРОСТІР", + "settings.workspaceSettings": "Налаштування робочого простору", "tag.addNew": "Додати новий тег", "tag.addTag": "додати тег", "tag.create": "Створити", diff --git a/web/i18n/vi-VN/common.json b/web/i18n/vi-VN/common.json index b9895ad911..c5fcd137d2 100644 --- a/web/i18n/vi-VN/common.json +++ b/web/i18n/vi-VN/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "Cấu hình", "modelProvider.configLoadBalancing": "Cấu hình cân bằng tải", "modelProvider.configureTip": "Thiết lập api-key hoặc thêm mô hình để sử dụng", + "modelProvider.configuredProviders": "Configured providers", "modelProvider.confirmDelete": "Xác nhận xóa?", "modelProvider.credits": "Tín dụng Tin nhắn", + "modelProvider.creditsBackedProviders": "Available with Message Credits", + "modelProvider.creditsBackedProvidersDesc": "These providers work with your Message Credits — no API key needed.", "modelProvider.defaultConfig": "Cấu hình mặc định", "modelProvider.deprecated": "Đã lỗi thời", "modelProvider.discoverMore": "Khám phá thêm trong", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "Không tìm thấy mô hình cho {{model}}", "modelProvider.noneConfigured": "Cấu hình mô hình hệ thống mặc định để chạy ứng dụng", "modelProvider.notConfigured": "Mô hình hệ thống vẫn chưa được cấu hình hoàn toàn và một số chức năng có thể không khả dụng.", + "modelProvider.pageDesc": "Choose a language model to power your apps. You need at least one configured before building in Studio.", "modelProvider.parameters": "THAM SỐ", "modelProvider.parametersInvalidRemoved": "Một số tham số không hợp lệ và đã được loại bỏ", "modelProvider.priorityUsing": "Ưu tiên sử dụng", "modelProvider.providerManaged": "Nhà cung cấp được quản lý", "modelProvider.providerManagedDescription": "Sử dụng bộ thông tin đăng nhập duy nhất do nhà cung cấp mô hình cung cấp.", "modelProvider.quota": "Hạn mức", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "Số lượng mã thông báo miễn phí còn lại", "modelProvider.rerankModel.key": "Mô hình Sắp xếp lại", "modelProvider.rerankModel.tip": "Mô hình sắp xếp lại sẽ sắp xếp lại danh sách tài liệu ứng cử viên dựa trên sự phù hợp ngữ nghĩa với truy vấn của người dùng, cải thiện kết quả của việc xếp hạng ngữ nghĩa", @@ -628,16 +633,25 @@ "provider.validating": "Đang xác minh khóa...", "settings.account": "Tài khoản của tôi", "settings.accountGroup": "TÀI KHOẢN", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "Mở rộng dựa trên API", "settings.billing": "Thanh toán", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "Nguồn dữ liệu", + "settings.discoverMoreIntegrationsInMarketplace": "Discover more integrations in the Marketplace", + "settings.expand": "Expand", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "TỔNG QUÁT", "settings.integrations": "Tích hợp", "settings.language": "Ngôn ngữ", "settings.members": "Thành viên", "settings.plugin": "Plugins", "settings.provider": "Nhà cung cấp mô hình", + "settings.trigger": "Trigger", "settings.workplaceGroup": "KHÔNG GIAN LÀM VIỆC", + "settings.workspaceSettings": "Cài đặt không gian làm việc", "tag.addNew": "Thêm thẻ mới", "tag.addTag": "thêm thẻ", "tag.create": "Tạo", diff --git a/web/i18n/zh-Hans/common.json b/web/i18n/zh-Hans/common.json index 8477ee4180..b0d1c23332 100644 --- a/web/i18n/zh-Hans/common.json +++ b/web/i18n/zh-Hans/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "配置", "modelProvider.configLoadBalancing": "设置负载均衡", "modelProvider.configureTip": "请配置 API 密钥,添加模型。", + "modelProvider.configuredProviders": "已配置供应商", "modelProvider.confirmDelete": "确认删除?", "modelProvider.credits": "消息额度", + "modelProvider.creditsBackedProviders": "可使用消息额度", + "modelProvider.creditsBackedProvidersDesc": "这些供应商可使用你的消息额度,无需 API Key。", "modelProvider.defaultConfig": "默认配置", "modelProvider.deprecated": "已弃用", "modelProvider.discoverMore": "发现更多就在", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "找不到模型 {{model}}", "modelProvider.noneConfigured": "配置默认系统模型以运行应用", "modelProvider.notConfigured": "系统模型尚未完全配置", + "modelProvider.pageDesc": "选择一个语言模型为你的应用提供能力。在 Studio 中构建应用前,至少需要配置一个模型。", "modelProvider.parameters": "参数", "modelProvider.parametersInvalidRemoved": "部分参数无效,已移除", "modelProvider.priorityUsing": "优先使用", "modelProvider.providerManaged": "由模型供应商管理", "modelProvider.providerManagedDescription": "使用模型供应商提供的单组凭据", "modelProvider.quota": "AI Credits", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "剩余免费额度", "modelProvider.rerankModel.key": "Rerank 模型", "modelProvider.rerankModel.tip": "重排序模型将根据候选文档列表与用户问题语义匹配度进行重新排序,从而改进语义排序的结果", @@ -628,16 +633,25 @@ "provider.validating": "验证密钥中...", "settings.account": "我的账户", "settings.accountGroup": "通用", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "API 扩展", "settings.billing": "账单", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "数据来源", + "settings.discoverMoreIntegrationsInMarketplace": "在 Marketplace 发现更多集成", + "settings.expand": "展开", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "通用", "settings.integrations": "集成", "settings.language": "语言", "settings.members": "成员", "settings.plugin": "插件", "settings.provider": "模型供应商", + "settings.trigger": "Trigger", "settings.workplaceGroup": "工作空间", + "settings.workspaceSettings": "工作空间设置", "tag.addNew": "创建新标签", "tag.addTag": "添加标签", "tag.create": "创建", diff --git a/web/i18n/zh-Hant/common.json b/web/i18n/zh-Hant/common.json index 2b482cb7dd..38867fb549 100644 --- a/web/i18n/zh-Hant/common.json +++ b/web/i18n/zh-Hant/common.json @@ -407,8 +407,11 @@ "modelProvider.config": "配置", "modelProvider.configLoadBalancing": "配置負載均衡", "modelProvider.configureTip": "設置 api-key 或新增要使用的模型", + "modelProvider.configuredProviders": "已配置供應商", "modelProvider.confirmDelete": "確認刪除?", "modelProvider.credits": "訊息額度", + "modelProvider.creditsBackedProviders": "可使用訊息額度", + "modelProvider.creditsBackedProvidersDesc": "這些供應商可使用你的訊息額度,無需 API Key。", "modelProvider.defaultConfig": "默認配置", "modelProvider.deprecated": "已棄用", "modelProvider.discoverMore": "發現更多", @@ -443,12 +446,14 @@ "modelProvider.noModelFound": "找不到模型 {{model}}", "modelProvider.noneConfigured": "配置預設系統模型以執行應用", "modelProvider.notConfigured": "系統模型尚未完全配置,部分功能可能無法使用。", + "modelProvider.pageDesc": "選擇一個語言模型為你的應用提供能力。在 Studio 中構建應用前,至少需要配置一個模型。", "modelProvider.parameters": "引數", "modelProvider.parametersInvalidRemoved": "一些參數無效,已被移除", "modelProvider.priorityUsing": "優先使用", "modelProvider.providerManaged": "提供者管理", "modelProvider.providerManagedDescription": "使用模型提供程式提供的單組憑證。", "modelProvider.quota": "額度", + "modelProvider.quotaLabel": "QUOTA", "modelProvider.quotaTip": "剩餘免費額度", "modelProvider.rerankModel.key": "Rerank 模型", "modelProvider.rerankModel.tip": "重排序模型將根據候選文件列表與使用者問題語義匹配度進行重新排序,從而改進語義排序的結果", @@ -628,16 +633,25 @@ "provider.validating": "驗證金鑰中...", "settings.account": "我的賬戶", "settings.accountGroup": "賬戶", + "settings.agentStrategy": "Agent strategy", "settings.apiBasedExtension": "API 擴充套件", "settings.billing": "賬單", + "settings.collapse": "Collapse", + "settings.customTool": "Custom Tool", "settings.dataSource": "資料來源", + "settings.discoverMoreIntegrationsInMarketplace": "在 Marketplace 探索更多整合", + "settings.expand": "展開", + "settings.extension": "Extension", + "settings.filter": "Filter", "settings.generalGroup": "常規", "settings.integrations": "整合", "settings.language": "語言", "settings.members": "成員", "settings.plugin": "外掛", "settings.provider": "模型供應商", + "settings.trigger": "Trigger", "settings.workplaceGroup": "工作空間", + "settings.workspaceSettings": "工作空間設定", "tag.addNew": "建立新標籤", "tag.addTag": "新增標籤", "tag.create": "建立",