> = ({
modelId: string
mode?: string
}) => {
- handleCompletionParamsChange({})
- handleModelChanged(model)
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, [])
+ (async () => {
+ try {
+ const { params: filtered, removedDetails } = await fetchAndMergeValidCompletionParams(
+ model.provider,
+ model.modelId,
+ inputs.model.completion_params,
+ )
+ const keys = Object.keys(removedDetails)
+ if (keys.length)
+ Toast.notify({ type: 'warning', message: `${t('common.modelProvider.parametersInvalidRemoved')}: ${keys.map(k => `${k} (${removedDetails[k]})`).join(', ')}` })
+ handleCompletionParamsChange(filtered)
+ }
+ catch (e) {
+ Toast.notify({ type: 'error', message: t('common.error') })
+ handleCompletionParamsChange({})
+ }
+ finally {
+ handleModelChanged(model)
+ }
+ })()
+ }, [inputs.model.completion_params])
return (
diff --git a/web/app/components/workflow/types.ts b/web/app/components/workflow/types.ts
index f80ade86c2..c9e5aa31b5 100644
--- a/web/app/components/workflow/types.ts
+++ b/web/app/components/workflow/types.ts
@@ -136,6 +136,7 @@ export type Variable = {
variable: string
}
value_selector: ValueSelector
+ value_type?: VarType
variable_type?: VarKindType
value?: string
options?: string[]
diff --git a/web/hooks/use-tab-searchparams.ts b/web/hooks/use-tab-searchparams.ts
index 0c0e3b7773..444944f812 100644
--- a/web/hooks/use-tab-searchparams.ts
+++ b/web/hooks/use-tab-searchparams.ts
@@ -29,9 +29,10 @@ export const useTabSearchParams = ({
const router = useRouter()
const pathName = pathnameFromHook || window?.location?.pathname
const searchParams = useSearchParams()
+ const searchParamValue = searchParams.has(searchParamName) ? decodeURIComponent(searchParams.get(searchParamName)!) : defaultTab
const [activeTab, setTab] = useState(
!disableSearchParams
- ? (searchParams.get(searchParamName) || defaultTab)
+ ? searchParamValue
: defaultTab,
)
@@ -39,7 +40,7 @@ export const useTabSearchParams = ({
setTab(newActiveTab)
if (disableSearchParams)
return
- router[`${routingBehavior}`](`${pathName}?${searchParamName}=${newActiveTab}`)
+ router[`${routingBehavior}`](`${pathName}?${searchParamName}=${encodeURIComponent(newActiveTab)}`)
}
return [activeTab, setActiveTab] as const
diff --git a/web/i18n/de-DE/dataset-documents.ts b/web/i18n/de-DE/dataset-documents.ts
index 22018f9da4..f52220a669 100644
--- a/web/i18n/de-DE/dataset-documents.ts
+++ b/web/i18n/de-DE/dataset-documents.ts
@@ -390,6 +390,8 @@ const translation = {
addChildChunk: 'Untergeordneten Block hinzufügen',
regenerationConfirmTitle: 'Möchten Sie untergeordnete Chunks regenerieren?',
searchResults_one: 'ERGEBNIS',
+ keywordEmpty: 'Das Schlüsselwort darf nicht leer sein.',
+ keywordDuplicate: 'Das Schlüsselwort existiert bereits',
},
}
diff --git a/web/i18n/en-US/app.ts b/web/i18n/en-US/app.ts
index e75a9d5358..1162a3d0aa 100644
--- a/web/i18n/en-US/app.ts
+++ b/web/i18n/en-US/app.ts
@@ -199,9 +199,9 @@ const translation = {
accessControl: 'Web App Access Control',
accessItemsDescription: {
anyone: 'Anyone can access the web app (no login required)',
- specific: 'Only specific members within the platform can access the Web application',
- organization: 'All members within the platform can access the Web application',
- external: 'Only authenticated external users can access the Web application',
+ specific: 'Only specific members within the platform can access the web app',
+ organization: 'All members within the platform can access the web app',
+ external: 'Only authenticated external users can access the web app',
},
accessControlDialog: {
title: 'Web App Access Control',
@@ -218,7 +218,7 @@ const translation = {
members_one: '{{count}} MEMBER',
members_other: '{{count}} MEMBERS',
noGroupsOrMembers: 'No groups or members selected',
- webAppSSONotEnabledTip: 'Please contact your organization administrator to configure external authentication for the Web application.',
+ webAppSSONotEnabledTip: 'Please contact your organization administrator to configure external authentication for the web app.',
operateGroupAndMember: {
searchPlaceholder: 'Search groups and members',
allMembers: 'All members',
diff --git a/web/i18n/en-US/common.ts b/web/i18n/en-US/common.ts
index f242ecd5a8..0823c6129c 100644
--- a/web/i18n/en-US/common.ts
+++ b/web/i18n/en-US/common.ts
@@ -456,6 +456,7 @@ const translation = {
connected: 'Connected',
disconnected: 'Disconnected',
changeAuthorizedPages: 'Change authorized pages',
+ integratedAlert: 'Notion is integrated via internal credential, no need to re-authorize.',
pagesAuthorized: 'Pages authorized',
sync: 'Sync',
remove: 'Remove',
diff --git a/web/i18n/en-US/workflow.ts b/web/i18n/en-US/workflow.ts
index 0285333e3b..df0bb904fd 100644
--- a/web/i18n/en-US/workflow.ts
+++ b/web/i18n/en-US/workflow.ts
@@ -549,6 +549,7 @@ const translation = {
advancedDependencies: 'Advanced Dependencies',
advancedDependenciesTip: 'Add some preloaded dependencies that take more time to consume or are not default built-in here',
searchDependencies: 'Search Dependencies',
+ syncFunctionSignature: 'Sync function signature to code',
},
templateTransform: {
inputVars: 'Input Variables',
diff --git a/web/i18n/es-ES/dataset-documents.ts b/web/i18n/es-ES/dataset-documents.ts
index cd5bb36197..53a6663847 100644
--- a/web/i18n/es-ES/dataset-documents.ts
+++ b/web/i18n/es-ES/dataset-documents.ts
@@ -389,6 +389,8 @@ const translation = {
characters_one: 'carácter',
regenerationSuccessMessage: 'Puede cerrar esta ventana.',
regenerationConfirmTitle: '¿Desea regenerar fragmentos secundarios?',
+ keywordEmpty: 'La palabra clave no puede estar vacía',
+ keywordDuplicate: 'La palabra clave ya existe',
},
}
diff --git a/web/i18n/fa-IR/dataset-documents.ts b/web/i18n/fa-IR/dataset-documents.ts
index 85e1e0a4aa..048cb5163f 100644
--- a/web/i18n/fa-IR/dataset-documents.ts
+++ b/web/i18n/fa-IR/dataset-documents.ts
@@ -388,6 +388,8 @@ const translation = {
regeneratingMessage: 'این ممکن است یک لحظه طول بکشد، لطفا صبر کنید...',
regenerationConfirmTitle: 'آیا می خواهید تکه های کودک را بازسازی کنید؟',
regenerationSuccessMessage: 'می توانید این پنجره را ببندید.',
+ keywordEmpty: 'کلمه کلیدی نمیتواند خالی باشد',
+ keywordDuplicate: 'این کلیدواژه قبلاً وجود دارد',
},
}
diff --git a/web/i18n/fr-FR/dataset-documents.ts b/web/i18n/fr-FR/dataset-documents.ts
index 7a795202ed..d8c0fe4af7 100644
--- a/web/i18n/fr-FR/dataset-documents.ts
+++ b/web/i18n/fr-FR/dataset-documents.ts
@@ -389,6 +389,8 @@ const translation = {
searchResults_zero: 'RÉSULTAT',
empty: 'Aucun Chunk trouvé',
editChildChunk: 'Modifier le morceau enfant',
+ keywordDuplicate: 'Le mot-clé existe déjà',
+ keywordEmpty: 'Le mot-clé ne peut pas être vide.',
},
}
diff --git a/web/i18n/hi-IN/dataset-documents.ts b/web/i18n/hi-IN/dataset-documents.ts
index 35bcb0aad2..1fcdd49449 100644
--- a/web/i18n/hi-IN/dataset-documents.ts
+++ b/web/i18n/hi-IN/dataset-documents.ts
@@ -390,6 +390,8 @@ const translation = {
chunkAdded: '1 हिस्सा जोड़ा गया',
chunkDetail: 'चंक विवरण',
regenerationConfirmMessage: 'चाइल्ड चंक्स को रीजनरेट करने से वर्तमान चाइल्ड चंक्स ओवरराइट हो जाएंगे, जिसमें संपादित चंक्स और नए जोड़े गए चंक्स शामिल हैं। पुनरुत्थान को पूर्ववत नहीं किया जा सकता है।',
+ keywordDuplicate: 'कीवर्ड पहले से मौजूद है',
+ keywordEmpty: 'कीवर्ड ख़ाली नहीं हो सकता',
},
}
diff --git a/web/i18n/it-IT/dataset-documents.ts b/web/i18n/it-IT/dataset-documents.ts
index b9afb1ea75..2881e1fcee 100644
--- a/web/i18n/it-IT/dataset-documents.ts
+++ b/web/i18n/it-IT/dataset-documents.ts
@@ -391,6 +391,8 @@ const translation = {
regenerationSuccessMessage: 'È possibile chiudere questa finestra.',
childChunkAdded: '1 blocco figlio aggiunto',
childChunks_other: 'BLOCCHI FIGLIO',
+ keywordEmpty: 'La parola chiave non può essere vuota',
+ keywordDuplicate: 'La parola chiave esiste già',
},
}
diff --git a/web/i18n/ja-JP/dataset-documents.ts b/web/i18n/ja-JP/dataset-documents.ts
index ecdbbf512c..e28425dc8f 100644
--- a/web/i18n/ja-JP/dataset-documents.ts
+++ b/web/i18n/ja-JP/dataset-documents.ts
@@ -388,6 +388,8 @@ const translation = {
editedAt: '編集日時',
expandChunks: 'チャンクを展開',
collapseChunks: 'チャンクを折りたたむ',
+ keywordDuplicate: 'そのキーワードは既に存在しています',
+ keywordEmpty: 'キーワードは空であってはいけません',
},
}
diff --git a/web/i18n/ja-JP/workflow.ts b/web/i18n/ja-JP/workflow.ts
index 5700d9c9b8..3c959669bf 100644
--- a/web/i18n/ja-JP/workflow.ts
+++ b/web/i18n/ja-JP/workflow.ts
@@ -550,6 +550,7 @@ const translation = {
advancedDependencies: '高度な依存関係',
advancedDependenciesTip: '消費に時間がかかる、またはデフォルトで組み込まれていない事前ロードされた依存関係を追加します',
searchDependencies: '依存関係を検索',
+ syncFunctionSignature: 'コードの関数署名を同期',
},
templateTransform: {
inputVars: '入力変数',
diff --git a/web/i18n/ko-KR/dataset-documents.ts b/web/i18n/ko-KR/dataset-documents.ts
index a379318959..ee94a880a0 100644
--- a/web/i18n/ko-KR/dataset-documents.ts
+++ b/web/i18n/ko-KR/dataset-documents.ts
@@ -388,6 +388,8 @@ const translation = {
addChunk: '청크 추가 (Add Chunk)',
characters_other: '문자',
regeneratingMessage: '시간이 걸릴 수 있으니 잠시만 기다려 주십시오...',
+ keywordDuplicate: '키워드가 이미 존재합니다.',
+ keywordEmpty: '키워드는 비워둘 수 없습니다.',
},
}
diff --git a/web/i18n/pl-PL/dataset-documents.ts b/web/i18n/pl-PL/dataset-documents.ts
index 37f373ac93..78e427ba95 100644
--- a/web/i18n/pl-PL/dataset-documents.ts
+++ b/web/i18n/pl-PL/dataset-documents.ts
@@ -390,6 +390,8 @@ const translation = {
newChildChunk: 'Nowy fragment podrzędny',
clearFilter: 'Wyczyść filtr',
childChunks_one: 'FRAGMENT POTOMNY',
+ keywordDuplicate: 'Słowo kluczowe już istnieje',
+ keywordEmpty: 'Słowo kluczowe nie może być puste',
},
}
diff --git a/web/i18n/pt-BR/dataset-documents.ts b/web/i18n/pt-BR/dataset-documents.ts
index 9a3d13bcab..b8c06c1769 100644
--- a/web/i18n/pt-BR/dataset-documents.ts
+++ b/web/i18n/pt-BR/dataset-documents.ts
@@ -389,6 +389,8 @@ const translation = {
newChildChunk: 'Novo pedaço filho',
characters_one: 'personagem',
parentChunk: 'Pedaço pai',
+ keywordEmpty: 'A palavra-chave não pode estar vazia',
+ keywordDuplicate: 'A palavra-chave já existe',
},
}
diff --git a/web/i18n/ro-RO/dataset-documents.ts b/web/i18n/ro-RO/dataset-documents.ts
index e42be87502..e0f3e8b476 100644
--- a/web/i18n/ro-RO/dataset-documents.ts
+++ b/web/i18n/ro-RO/dataset-documents.ts
@@ -389,6 +389,8 @@ const translation = {
regeneratingTitle: 'Regenerarea bucăților secundare',
addChildChunk: 'Adăugați o bucată copil',
searchResults_other: 'REZULTATELE',
+ keywordDuplicate: 'Cuvântul cheie există deja',
+ keywordEmpty: 'Cuvântul cheie nu poate fi gol',
},
}
diff --git a/web/i18n/ru-RU/dataset-documents.ts b/web/i18n/ru-RU/dataset-documents.ts
index 735266c087..6fadee3b26 100644
--- a/web/i18n/ru-RU/dataset-documents.ts
+++ b/web/i18n/ru-RU/dataset-documents.ts
@@ -389,6 +389,8 @@ const translation = {
characters_one: 'характер',
addChildChunk: 'Добавить дочерний чанк',
newChildChunk: 'Новый дочерний чанк',
+ keywordEmpty: 'Ключевое слово не может быть пустым',
+ keywordDuplicate: 'Ключевое слово уже существует',
},
}
diff --git a/web/i18n/sl-SI/dataset-documents.ts b/web/i18n/sl-SI/dataset-documents.ts
index 78d63c9e29..1a83335ad5 100644
--- a/web/i18n/sl-SI/dataset-documents.ts
+++ b/web/i18n/sl-SI/dataset-documents.ts
@@ -389,6 +389,8 @@ const translation = {
chunk: 'Kos',
addChunk: 'Dodajanje kosa',
childChunkAdded: 'Dodan je 1 kos otroka',
+ keywordDuplicate: 'Ključna beseda že obstaja',
+ keywordEmpty: 'Ključna beseda ne more biti prazna',
},
}
diff --git a/web/i18n/th-TH/dataset-documents.ts b/web/i18n/th-TH/dataset-documents.ts
index 91d04d6bc1..87b43f31e2 100644
--- a/web/i18n/th-TH/dataset-documents.ts
+++ b/web/i18n/th-TH/dataset-documents.ts
@@ -388,6 +388,8 @@ const translation = {
searchResults_other: 'ผลลัพธ์',
regenerationSuccessMessage: 'คุณสามารถปิดหน้าต่างนี้ได้',
childChunks_one: 'ก้อนเด็ก',
+ keywordDuplicate: 'คำสำคัญมีอยู่แล้ว',
+ keywordEmpty: 'คีย์เวิร์ดไม่สามารถว่างเปล่าได้',
},
}
diff --git a/web/i18n/tr-TR/dataset-documents.ts b/web/i18n/tr-TR/dataset-documents.ts
index f643375334..2e00975178 100644
--- a/web/i18n/tr-TR/dataset-documents.ts
+++ b/web/i18n/tr-TR/dataset-documents.ts
@@ -388,6 +388,8 @@ const translation = {
chunks_other: 'Parçalar',
editedAt: 'Şurada düzenlendi:',
addChildChunk: 'Alt Parça Ekle',
+ keywordDuplicate: 'Anahtar kelime zaten var',
+ keywordEmpty: 'Anahtar kelime boş olamaz',
},
}
diff --git a/web/i18n/uk-UA/dataset-documents.ts b/web/i18n/uk-UA/dataset-documents.ts
index da012cbb57..e8464e5661 100644
--- a/web/i18n/uk-UA/dataset-documents.ts
+++ b/web/i18n/uk-UA/dataset-documents.ts
@@ -389,6 +389,8 @@ const translation = {
regenerationSuccessMessage: 'Ви можете закрити це вікно.',
expandChunks: 'Розгортання фрагментів',
regenerationConfirmTitle: 'Хочете регенерувати дитячі шматки?',
+ keywordEmpty: 'Ключове слово не може бути порожнім',
+ keywordDuplicate: 'Ключове слово вже існує',
},
}
diff --git a/web/i18n/vi-VN/dataset-documents.ts b/web/i18n/vi-VN/dataset-documents.ts
index 6e13c1185f..1cc050b804 100644
--- a/web/i18n/vi-VN/dataset-documents.ts
+++ b/web/i18n/vi-VN/dataset-documents.ts
@@ -388,6 +388,8 @@ const translation = {
clearFilter: 'Bộ lọc rõ ràng',
chunk: 'Khúc',
edited: 'EDITED',
+ keywordDuplicate: 'Từ khóa đã tồn tại',
+ keywordEmpty: 'Từ khóa không được để trống',
},
}
diff --git a/web/i18n/zh-Hans/dataset-documents.ts b/web/i18n/zh-Hans/dataset-documents.ts
index 5ff1b50f85..2eb883690b 100644
--- a/web/i18n/zh-Hans/dataset-documents.ts
+++ b/web/i18n/zh-Hans/dataset-documents.ts
@@ -387,6 +387,8 @@ const translation = {
editedAt: '编辑于',
expandChunks: '展开分段',
collapseChunks: '折叠分段',
+ keywordEmpty: '关键词不能为空',
+ keywordDuplicate: '关键词已经存在',
},
}
diff --git a/web/i18n/zh-Hans/workflow.ts b/web/i18n/zh-Hans/workflow.ts
index 26ba7f382d..aa9dcae261 100644
--- a/web/i18n/zh-Hans/workflow.ts
+++ b/web/i18n/zh-Hans/workflow.ts
@@ -550,6 +550,7 @@ const translation = {
advancedDependencies: '高级依赖',
advancedDependenciesTip: '在这里添加一些预加载需要消耗较多时间或非默认内置的依赖包',
searchDependencies: '搜索依赖',
+ syncFunctionSignature: '同步函数签名至代码',
},
templateTransform: {
inputVars: '输入变量',
diff --git a/web/i18n/zh-Hant/dataset-documents.ts b/web/i18n/zh-Hant/dataset-documents.ts
index 60b1df80f3..a79f3993e0 100644
--- a/web/i18n/zh-Hant/dataset-documents.ts
+++ b/web/i18n/zh-Hant/dataset-documents.ts
@@ -388,6 +388,8 @@ const translation = {
searchResults_zero: '結果',
parentChunks_other: '父塊',
newChildChunk: '新兒童塊',
+ keywordEmpty: '關鍵字不能為空',
+ keywordDuplicate: '關鍵字已經存在',
},
}
diff --git a/web/i18n/zh-Hant/workflow.ts b/web/i18n/zh-Hant/workflow.ts
index 2ee345eccc..8262e60351 100644
--- a/web/i18n/zh-Hant/workflow.ts
+++ b/web/i18n/zh-Hant/workflow.ts
@@ -544,6 +544,7 @@ const translation = {
advancedDependencies: '高級依賴',
advancedDependenciesTip: '在這裡添加一些預加載需要消耗較多時間或非默認內置的依賴包',
searchDependencies: '搜索依賴',
+ syncFunctionSignature: '同步函數簽名至代碼',
},
templateTransform: {
inputVars: '輸入變量',
diff --git a/web/package.json b/web/package.json
index 0ece7fac27..866fecc4ae 100644
--- a/web/package.json
+++ b/web/package.json
@@ -103,7 +103,7 @@
"mime": "^4.0.4",
"mitt": "^3.0.1",
"negotiator": "^0.6.3",
- "next": "15.2.3",
+ "next": "15.2.4",
"next-themes": "^0.4.3",
"pinyin-pro": "^3.25.0",
"qrcode.react": "^4.2.0",
@@ -235,7 +235,11 @@
},
"pnpm": {
"overrides": {
- "esbuild@<0.25.0": "0.25.0"
+ "esbuild@<0.25.0": "0.25.0",
+ "pbkdf2@<3.1.3": "3.1.3",
+ "vite@<6.2.7": "6.2.7",
+ "prismjs@<1.30.0": "1.30.0",
+ "brace-expansion@<2.0.2": "2.0.2"
}
}
}
diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml
index fce3b6581b..ef945dfc54 100644
--- a/web/pnpm-lock.yaml
+++ b/web/pnpm-lock.yaml
@@ -9,6 +9,10 @@ overrides:
'@types/react-dom': ~18.2.0
string-width: 4.2.3
esbuild@<0.25.0: 0.25.0
+ pbkdf2@<3.1.3: 3.1.3
+ vite@<6.2.7: 6.2.7
+ prismjs@<1.30.0: 1.30.0
+ brace-expansion@<2.0.2: 2.0.2
importers:
@@ -207,8 +211,8 @@ importers:
specifier: ^0.6.3
version: 0.6.4
next:
- specifier: 15.2.3
- version: 15.2.3(@babel/core@7.26.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.3)
+ specifier: 15.2.4
+ version: 15.2.4(@babel/core@7.26.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.3)
next-themes:
specifier: ^0.4.3
version: 0.4.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
@@ -392,7 +396,7 @@ importers:
version: 8.5.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.5.0)
'@storybook/nextjs':
specifier: 8.5.0
- version: 8.5.0(esbuild@0.25.0)(next@15.2.3(@babel/core@7.26.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.3)(storybook@8.5.0)(type-fest@4.39.1)(typescript@4.9.5)(uglify-js@3.19.3)(webpack-hot-middleware@2.26.1)(webpack@5.99.5(esbuild@0.25.0)(uglify-js@3.19.3))
+ version: 8.5.0(esbuild@0.25.0)(next@15.2.4(@babel/core@7.26.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.3)(storybook@8.5.0)(type-fest@4.39.1)(typescript@4.9.5)(uglify-js@3.19.3)(webpack-hot-middleware@2.26.1)(webpack@5.99.5(esbuild@0.25.0)(uglify-js@3.19.3))
'@storybook/react':
specifier: 8.5.0
version: 8.5.0(@storybook/test@8.5.0(storybook@8.5.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(storybook@8.5.0)(typescript@4.9.5)
@@ -2086,8 +2090,8 @@ packages:
'@napi-rs/wasm-runtime@0.2.8':
resolution: {integrity: sha512-OBlgKdX7gin7OIq4fadsjpg+cp2ZphvAIKucHsNfTdJiqdOmOEwQd/bHi0VwNrcw5xpBJyUw6cK/QilCqy1BSg==}
- '@next/env@15.2.3':
- resolution: {integrity: sha512-a26KnbW9DFEUsSxAxKBORR/uD9THoYoKbkpFywMN/AFvboTt94b8+g/07T8J6ACsdLag8/PDU60ov4rPxRAixw==}
+ '@next/env@15.2.4':
+ resolution: {integrity: sha512-+SFtMgoiYP3WoSswuNmxJOCwi06TdWE733D+WPjpXIe4LXGULwEaofiiAy6kbS0+XjM5xF5n3lKuBwN2SnqD9g==}
'@next/eslint-plugin-next@15.3.0':
resolution: {integrity: sha512-511UUcpWw5GWTyKfzW58U2F/bYJyjLE9e3SlnGK/zSXq7RqLlqFO8B9bitJjumLpj317fycC96KZ2RZsjGNfBw==}
@@ -2103,50 +2107,50 @@ packages:
'@mdx-js/react':
optional: true
- '@next/swc-darwin-arm64@15.2.3':
- resolution: {integrity: sha512-uaBhA8aLbXLqwjnsHSkxs353WrRgQgiFjduDpc7YXEU0B54IKx3vU+cxQlYwPCyC8uYEEX7THhtQQsfHnvv8dw==}
+ '@next/swc-darwin-arm64@15.2.4':
+ resolution: {integrity: sha512-1AnMfs655ipJEDC/FHkSr0r3lXBgpqKo4K1kiwfUf3iE68rDFXZ1TtHdMvf7D0hMItgDZ7Vuq3JgNMbt/+3bYw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- '@next/swc-darwin-x64@15.2.3':
- resolution: {integrity: sha512-pVwKvJ4Zk7h+4hwhqOUuMx7Ib02u3gDX3HXPKIShBi9JlYllI0nU6TWLbPT94dt7FSi6mSBhfc2JrHViwqbOdw==}
+ '@next/swc-darwin-x64@15.2.4':
+ resolution: {integrity: sha512-3qK2zb5EwCwxnO2HeO+TRqCubeI/NgCe+kL5dTJlPldV/uwCnUgC7VbEzgmxbfrkbjehL4H9BPztWOEtsoMwew==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
- '@next/swc-linux-arm64-gnu@15.2.3':
- resolution: {integrity: sha512-50ibWdn2RuFFkOEUmo9NCcQbbV9ViQOrUfG48zHBCONciHjaUKtHcYFiCwBVuzD08fzvzkWuuZkd4AqbvKO7UQ==}
+ '@next/swc-linux-arm64-gnu@15.2.4':
+ resolution: {integrity: sha512-HFN6GKUcrTWvem8AZN7tT95zPb0GUGv9v0d0iyuTb303vbXkkbHDp/DxufB04jNVD+IN9yHy7y/6Mqq0h0YVaQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-arm64-musl@15.2.3':
- resolution: {integrity: sha512-2gAPA7P652D3HzR4cLyAuVYwYqjG0mt/3pHSWTCyKZq/N/dJcUAEoNQMyUmwTZWCJRKofB+JPuDVP2aD8w2J6Q==}
+ '@next/swc-linux-arm64-musl@15.2.4':
+ resolution: {integrity: sha512-Oioa0SORWLwi35/kVB8aCk5Uq+5/ZIumMK1kJV+jSdazFm2NzPDztsefzdmzzpx5oGCJ6FkUC7vkaUseNTStNA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-x64-gnu@15.2.3':
- resolution: {integrity: sha512-ODSKvrdMgAJOVU4qElflYy1KSZRM3M45JVbeZu42TINCMG3anp7YCBn80RkISV6bhzKwcUqLBAmOiWkaGtBA9w==}
+ '@next/swc-linux-x64-gnu@15.2.4':
+ resolution: {integrity: sha512-yb5WTRaHdkgOqFOZiu6rHV1fAEK0flVpaIN2HB6kxHVSy/dIajWbThS7qON3W9/SNOH2JWkVCyulgGYekMePuw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-linux-x64-musl@15.2.3':
- resolution: {integrity: sha512-ZR9kLwCWrlYxwEoytqPi1jhPd1TlsSJWAc+H/CJHmHkf2nD92MQpSRIURR1iNgA/kuFSdxB8xIPt4p/T78kwsg==}
+ '@next/swc-linux-x64-musl@15.2.4':
+ resolution: {integrity: sha512-Dcdv/ix6srhkM25fgXiyOieFUkz+fOYkHlydWCtB0xMST6X9XYI3yPDKBZt1xuhOytONsIFJFB08xXYsxUwJLw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-win32-arm64-msvc@15.2.3':
- resolution: {integrity: sha512-+G2FrDcfm2YDbhDiObDU/qPriWeiz/9cRR0yMWJeTLGGX6/x8oryO3tt7HhodA1vZ8r2ddJPCjtLcpaVl7TE2Q==}
+ '@next/swc-win32-arm64-msvc@15.2.4':
+ resolution: {integrity: sha512-dW0i7eukvDxtIhCYkMrZNQfNicPDExt2jPb9AZPpL7cfyUo7QSNl1DjsHjmmKp6qNAqUESyT8YFl/Aw91cNJJg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
- '@next/swc-win32-x64-msvc@15.2.3':
- resolution: {integrity: sha512-gHYS9tc+G2W0ZC8rBL+H6RdtXIyk40uLiaos0yj5US85FNhbFEndMA2nW3z47nzOWiSvXTZ5kBClc3rD0zJg0w==}
+ '@next/swc-win32-x64-msvc@15.2.4':
+ resolution: {integrity: sha512-SbnWkJmkS7Xl3kre8SdMF6F/XDh1DTFEhp0jRTj/uB8iPKoU2bb2NDfcu+iifv1+mxQEd1g2vvSxcZbXSKyWiQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
@@ -3311,7 +3315,7 @@ packages:
resolution: {integrity: sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA==}
peerDependencies:
msw: ^2.4.9
- vite: ^5.0.0 || ^6.0.0
+ vite: 6.2.7
peerDependenciesMeta:
msw:
optional: true
@@ -3726,11 +3730,8 @@ packages:
boolbase@1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
- brace-expansion@1.1.11:
- resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
-
- brace-expansion@2.0.1:
- resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+ brace-expansion@2.0.2:
+ resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
braces@3.0.3:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
@@ -4076,9 +4077,6 @@ packages:
compare-versions@6.1.1:
resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==}
- concat-map@0.0.1:
- resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
-
confbox@0.1.8:
resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
@@ -4134,6 +4132,9 @@ packages:
create-ecdh@4.0.4:
resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==}
+ create-hash@1.1.3:
+ resolution: {integrity: sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA==}
+
create-hash@1.2.0:
resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==}
@@ -5383,6 +5384,9 @@ packages:
has-unicode@2.0.1:
resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
+ hash-base@2.0.2:
+ resolution: {integrity: sha512-0TROgQ1/SxE6KmxWSvXHvRj90/Xo1JvZShofnYF+f6ZsGtR4eES7WfrQzPalmyagfKZCXpVnitiRebZulWsbiw==}
+
hash-base@3.0.5:
resolution: {integrity: sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==}
engines: {node: '>= 0.10'}
@@ -6565,8 +6569,8 @@ packages:
react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
- next@15.2.3:
- resolution: {integrity: sha512-x6eDkZxk2rPpu46E1ZVUWIBhYCLszmUY6fvHBFcbzJ9dD+qRX6vcHusaqqDlnY+VngKzKbAiG2iRCkPbmi8f7w==}
+ next@15.2.4:
+ resolution: {integrity: sha512-VwL+LAaPSxEkd3lU2xWbgEOtrM8oedmyhBqaVNmgKB+GvZlCy9rgaEc+y2on0wv+l0oSFqLtYD6dcC1eAedUaQ==}
engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
hasBin: true
peerDependencies:
@@ -6859,8 +6863,8 @@ packages:
resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
engines: {node: '>= 14.16'}
- pbkdf2@3.1.2:
- resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==}
+ pbkdf2@3.1.3:
+ resolution: {integrity: sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA==}
engines: {node: '>=0.12'}
pdfjs-dist@4.4.168:
@@ -7042,10 +7046,6 @@ packages:
resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- prismjs@1.27.0:
- resolution: {integrity: sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==}
- engines: {node: '>=6'}
-
prismjs@1.30.0:
resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==}
engines: {node: '>=6'}
@@ -7527,6 +7527,9 @@ packages:
deprecated: Rimraf versions prior to v4 are no longer supported
hasBin: true
+ ripemd160@2.0.1:
+ resolution: {integrity: sha512-J7f4wutN8mdbV08MJnXibYpCOPHR+yzy+iQ/AsjMv2j8cLavQ8VGagDFUwwTAdF8FmRKVeNpbTTEwNHCW1g94w==}
+
ripemd160@2.0.2:
resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==}
@@ -8042,6 +8045,10 @@ packages:
tmpl@1.0.5:
resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==}
+ to-buffer@1.2.1:
+ resolution: {integrity: sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==}
+ engines: {node: '>= 0.4'}
+
to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
@@ -8367,8 +8374,8 @@ packages:
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
- vite@6.2.6:
- resolution: {integrity: sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw==}
+ vite@6.2.7:
+ resolution: {integrity: sha512-qg3LkeuinTrZoJHHF94coSaTfIPyBYoywp+ys4qu20oSJFbKMYoIJo0FWJT9q6Vp49l6z9IsJRbHdcGtiKbGoQ==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
peerDependencies:
@@ -10565,7 +10572,7 @@ snapshots:
'@tybys/wasm-util': 0.9.0
optional: true
- '@next/env@15.2.3': {}
+ '@next/env@15.2.4': {}
'@next/eslint-plugin-next@15.3.0':
dependencies:
@@ -10578,28 +10585,28 @@ snapshots:
'@mdx-js/loader': 3.1.0(acorn@8.14.1)(webpack@5.99.5(esbuild@0.25.0)(uglify-js@3.19.3))
'@mdx-js/react': 3.1.0(@types/react@18.2.79)(react@19.0.0)
- '@next/swc-darwin-arm64@15.2.3':
+ '@next/swc-darwin-arm64@15.2.4':
optional: true
- '@next/swc-darwin-x64@15.2.3':
+ '@next/swc-darwin-x64@15.2.4':
optional: true
- '@next/swc-linux-arm64-gnu@15.2.3':
+ '@next/swc-linux-arm64-gnu@15.2.4':
optional: true
- '@next/swc-linux-arm64-musl@15.2.3':
+ '@next/swc-linux-arm64-musl@15.2.4':
optional: true
- '@next/swc-linux-x64-gnu@15.2.3':
+ '@next/swc-linux-x64-gnu@15.2.4':
optional: true
- '@next/swc-linux-x64-musl@15.2.3':
+ '@next/swc-linux-x64-musl@15.2.4':
optional: true
- '@next/swc-win32-arm64-msvc@15.2.3':
+ '@next/swc-win32-arm64-msvc@15.2.4':
optional: true
- '@next/swc-win32-x64-msvc@15.2.3':
+ '@next/swc-win32-x64-msvc@15.2.4':
optional: true
'@nodelib/fs.scandir@2.1.5':
@@ -11211,7 +11218,7 @@ snapshots:
dependencies:
storybook: 8.5.0
- '@storybook/nextjs@8.5.0(esbuild@0.25.0)(next@15.2.3(@babel/core@7.26.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.3)(storybook@8.5.0)(type-fest@4.39.1)(typescript@4.9.5)(uglify-js@3.19.3)(webpack-hot-middleware@2.26.1)(webpack@5.99.5(esbuild@0.25.0)(uglify-js@3.19.3))':
+ '@storybook/nextjs@8.5.0(esbuild@0.25.0)(next@15.2.4(@babel/core@7.26.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.3)(storybook@8.5.0)(type-fest@4.39.1)(typescript@4.9.5)(uglify-js@3.19.3)(webpack-hot-middleware@2.26.1)(webpack@5.99.5(esbuild@0.25.0)(uglify-js@3.19.3))':
dependencies:
'@babel/core': 7.26.10
'@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.10)
@@ -11237,7 +11244,7 @@ snapshots:
find-up: 5.0.0
image-size: 1.2.1
loader-utils: 3.3.1
- next: 15.2.3(@babel/core@7.26.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.3)
+ next: 15.2.4(@babel/core@7.26.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.3)
node-polyfill-webpack-plugin: 2.0.1(webpack@5.99.5(esbuild@0.25.0)(uglify-js@3.19.3))
pnp-webpack-plugin: 1.7.0(typescript@4.9.5)
postcss: 8.5.3
@@ -11956,13 +11963,13 @@ snapshots:
chai: 5.2.0
tinyrainbow: 2.0.0
- '@vitest/mocker@3.1.1(vite@6.2.6(@types/node@18.15.0)(jiti@1.21.7)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1))':
+ '@vitest/mocker@3.1.1(vite@6.2.7(@types/node@18.15.0)(jiti@1.21.7)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1))':
dependencies:
'@vitest/spy': 3.1.1
estree-walker: 3.0.3
magic-string: 0.30.17
optionalDependencies:
- vite: 6.2.6(@types/node@18.15.0)(jiti@1.21.7)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)
+ vite: 6.2.7(@types/node@18.15.0)(jiti@1.21.7)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)
'@vitest/pretty-format@2.0.5':
dependencies:
@@ -12488,12 +12495,7 @@ snapshots:
boolbase@1.0.0: {}
- brace-expansion@1.1.11:
- dependencies:
- balanced-match: 1.0.2
- concat-map: 0.0.1
-
- brace-expansion@2.0.1:
+ brace-expansion@2.0.2:
dependencies:
balanced-match: 1.0.2
@@ -12846,8 +12848,6 @@ snapshots:
compare-versions@6.1.1: {}
- concat-map@0.0.1: {}
-
confbox@0.1.8: {}
confbox@0.2.2: {}
@@ -12905,6 +12905,13 @@ snapshots:
bn.js: 4.12.1
elliptic: 6.6.1
+ create-hash@1.1.3:
+ dependencies:
+ cipher-base: 1.0.6
+ inherits: 2.0.4
+ ripemd160: 2.0.2
+ sha.js: 2.4.11
+
create-hash@1.2.0:
dependencies:
cipher-base: 1.0.6
@@ -12959,7 +12966,7 @@ snapshots:
diffie-hellman: 5.0.3
hash-base: 3.0.5
inherits: 2.0.4
- pbkdf2: 3.1.2
+ pbkdf2: 3.1.3
public-encrypt: 4.0.3
randombytes: 2.1.0
randomfill: 1.0.4
@@ -14577,6 +14584,10 @@ snapshots:
has-unicode@2.0.1:
optional: true
+ hash-base@2.0.2:
+ dependencies:
+ inherits: 2.0.4
+
hash-base@3.0.5:
dependencies:
inherits: 2.0.4
@@ -16239,15 +16250,15 @@ snapshots:
minimatch@10.0.1:
dependencies:
- brace-expansion: 2.0.1
+ brace-expansion: 2.0.2
minimatch@3.1.2:
dependencies:
- brace-expansion: 1.1.11
+ brace-expansion: 2.0.2
minimatch@9.0.5:
dependencies:
- brace-expansion: 2.0.1
+ brace-expansion: 2.0.2
minimist@1.2.8: {}
@@ -16307,9 +16318,9 @@ snapshots:
react: 19.0.0
react-dom: 19.0.0(react@19.0.0)
- next@15.2.3(@babel/core@7.26.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.3):
+ next@15.2.4(@babel/core@7.26.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.86.3):
dependencies:
- '@next/env': 15.2.3
+ '@next/env': 15.2.4
'@swc/counter': 0.1.3
'@swc/helpers': 0.5.15
busboy: 1.6.0
@@ -16319,14 +16330,14 @@ snapshots:
react-dom: 19.0.0(react@19.0.0)
styled-jsx: 5.1.6(@babel/core@7.26.10)(react@19.0.0)
optionalDependencies:
- '@next/swc-darwin-arm64': 15.2.3
- '@next/swc-darwin-x64': 15.2.3
- '@next/swc-linux-arm64-gnu': 15.2.3
- '@next/swc-linux-arm64-musl': 15.2.3
- '@next/swc-linux-x64-gnu': 15.2.3
- '@next/swc-linux-x64-musl': 15.2.3
- '@next/swc-win32-arm64-msvc': 15.2.3
- '@next/swc-win32-x64-msvc': 15.2.3
+ '@next/swc-darwin-arm64': 15.2.4
+ '@next/swc-darwin-x64': 15.2.4
+ '@next/swc-linux-arm64-gnu': 15.2.4
+ '@next/swc-linux-arm64-musl': 15.2.4
+ '@next/swc-linux-x64-gnu': 15.2.4
+ '@next/swc-linux-x64-musl': 15.2.4
+ '@next/swc-win32-arm64-msvc': 15.2.4
+ '@next/swc-win32-x64-msvc': 15.2.4
sass: 1.86.3
sharp: 0.33.5
transitivePeerDependencies:
@@ -16563,7 +16574,7 @@ snapshots:
browserify-aes: 1.2.0
evp_bytestokey: 1.0.3
hash-base: 3.0.5
- pbkdf2: 3.1.2
+ pbkdf2: 3.1.3
safe-buffer: 5.2.1
parse-entities@2.0.0:
@@ -16644,13 +16655,14 @@ snapshots:
pathval@2.0.0: {}
- pbkdf2@3.1.2:
+ pbkdf2@3.1.3:
dependencies:
- create-hash: 1.2.0
+ create-hash: 1.1.3
create-hmac: 1.1.7
- ripemd160: 2.0.2
+ ripemd160: 2.0.1
safe-buffer: 5.2.1
sha.js: 2.4.11
+ to-buffer: 1.2.1
pdfjs-dist@4.4.168:
optionalDependencies:
@@ -16831,8 +16843,6 @@ snapshots:
ansi-styles: 5.2.0
react-is: 18.3.1
- prismjs@1.27.0: {}
-
prismjs@1.30.0: {}
process-nextick-args@2.0.1: {}
@@ -17247,7 +17257,7 @@ snapshots:
dependencies:
hastscript: 6.0.0
parse-entities: 2.0.0
- prismjs: 1.27.0
+ prismjs: 1.30.0
regenerate-unicode-properties@10.2.0:
dependencies:
@@ -17441,6 +17451,11 @@ snapshots:
dependencies:
glob: 7.2.3
+ ripemd160@2.0.1:
+ dependencies:
+ hash-base: 2.0.2
+ inherits: 2.0.4
+
ripemd160@2.0.2:
dependencies:
hash-base: 3.0.5
@@ -18041,6 +18056,12 @@ snapshots:
tmpl@1.0.5: {}
+ to-buffer@1.2.1:
+ dependencies:
+ isarray: 2.0.5
+ safe-buffer: 5.2.1
+ typed-array-buffer: 1.0.3
+
to-regex-range@5.0.1:
dependencies:
is-number: 7.0.0
@@ -18389,7 +18410,7 @@ snapshots:
debug: 4.4.0
es-module-lexer: 1.6.0
pathe: 2.0.3
- vite: 6.2.6(@types/node@18.15.0)(jiti@1.21.7)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)
+ vite: 6.2.7(@types/node@18.15.0)(jiti@1.21.7)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)
transitivePeerDependencies:
- '@types/node'
- jiti
@@ -18404,7 +18425,7 @@ snapshots:
- tsx
- yaml
- vite@6.2.6(@types/node@18.15.0)(jiti@1.21.7)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1):
+ vite@6.2.7(@types/node@18.15.0)(jiti@1.21.7)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1):
dependencies:
esbuild: 0.25.2
postcss: 8.5.3
@@ -18420,7 +18441,7 @@ snapshots:
vitest@3.1.1(@types/debug@4.1.12)(@types/node@18.15.0)(happy-dom@17.4.4)(jiti@1.21.7)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1):
dependencies:
'@vitest/expect': 3.1.1
- '@vitest/mocker': 3.1.1(vite@6.2.6(@types/node@18.15.0)(jiti@1.21.7)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1))
+ '@vitest/mocker': 3.1.1(vite@6.2.7(@types/node@18.15.0)(jiti@1.21.7)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1))
'@vitest/pretty-format': 3.1.1
'@vitest/runner': 3.1.1
'@vitest/snapshot': 3.1.1
@@ -18436,7 +18457,7 @@ snapshots:
tinyexec: 0.3.2
tinypool: 1.0.2
tinyrainbow: 2.0.0
- vite: 6.2.6(@types/node@18.15.0)(jiti@1.21.7)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)
+ vite: 6.2.7(@types/node@18.15.0)(jiti@1.21.7)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)
vite-node: 3.1.1(@types/node@18.15.0)(jiti@1.21.7)(sass@1.86.3)(terser@5.39.0)(yaml@2.7.1)
why-is-node-running: 2.3.0
optionalDependencies:
diff --git a/web/service/access-control.ts b/web/service/access-control.ts
index 865909d2f9..36999bf8f3 100644
--- a/web/service/access-control.ts
+++ b/web/service/access-control.ts
@@ -86,5 +86,8 @@ export const useGetUserCanAccessApp = ({ appId, isInstalledApp = true, enabled }
enabled: !!appId && enabled,
staleTime: 0,
gcTime: 0,
+ initialData: {
+ result: !enabled,
+ },
})
}
diff --git a/web/service/use-workflow.ts b/web/service/use-workflow.ts
index e070b46e65..d9b3332ce7 100644
--- a/web/service/use-workflow.ts
+++ b/web/service/use-workflow.ts
@@ -139,7 +139,7 @@ export const useResetConversationVar = (appId: string) => {
export const useResetToLastRunValue = (appId: string) => {
return useMutation({
mutationKey: [NAME_SPACE, 'reset to last run value', appId],
- mutationFn: async (varId: string) => {
+ mutationFn: async (varId: string): Promise<{ value: any }> => {
return put(`apps/${appId}/workflows/draft/variables/${varId}/reset`)
},
})
diff --git a/web/utils/completion-params.ts b/web/utils/completion-params.ts
new file mode 100644
index 0000000000..b46c3ab720
--- /dev/null
+++ b/web/utils/completion-params.ts
@@ -0,0 +1,88 @@
+import type { FormValue, ModelParameterRule } from '@/app/components/header/account-setting/model-provider-page/declarations'
+
+export const mergeValidCompletionParams = (
+ oldParams: FormValue | undefined,
+ rules: ModelParameterRule[],
+): { params: FormValue; removedDetails: Record } => {
+ if (!oldParams || Object.keys(oldParams).length === 0)
+ return { params: {}, removedDetails: {} }
+
+ const acceptedKeys = new Set(rules.map(r => r.name))
+ const ruleMap: Record = {}
+ rules.forEach((r) => {
+ ruleMap[r.name] = r
+ })
+
+ const nextParams: FormValue = {}
+ const removedDetails: Record = {}
+
+ Object.entries(oldParams).forEach(([key, value]) => {
+ if (!acceptedKeys.has(key)) {
+ removedDetails[key] = 'unsupported'
+ return
+ }
+
+ const rule = ruleMap[key]
+ if (!rule) {
+ removedDetails[key] = 'unsupported'
+ return
+ }
+
+ switch (rule.type) {
+ case 'int':
+ case 'float': {
+ if (typeof value !== 'number') {
+ removedDetails[key] = 'invalid type'
+ return
+ }
+ const min = rule.min ?? Number.NEGATIVE_INFINITY
+ const max = rule.max ?? Number.POSITIVE_INFINITY
+ if (value < min || value > max) {
+ removedDetails[key] = `out of range (${min}-${max})`
+ return
+ }
+ nextParams[key] = value
+ return
+ }
+ case 'boolean': {
+ if (typeof value !== 'boolean') {
+ removedDetails[key] = 'invalid type'
+ return
+ }
+ nextParams[key] = value
+ return
+ }
+ case 'string':
+ case 'text': {
+ if (typeof value !== 'string') {
+ removedDetails[key] = 'invalid type'
+ return
+ }
+ if (Array.isArray(rule.options) && rule.options.length) {
+ if (!(rule.options as string[]).includes(value)) {
+ removedDetails[key] = 'unsupported option'
+ return
+ }
+ }
+ nextParams[key] = value
+ return
+ }
+ default: {
+ removedDetails[key] = `unsupported rule type: ${(rule as any)?.type ?? 'unknown'}`
+ }
+ }
+ })
+
+ return { params: nextParams, removedDetails }
+}
+
+export const fetchAndMergeValidCompletionParams = async (
+ provider: string,
+ modelId: string,
+ oldParams: FormValue | undefined,
+): Promise<{ params: FormValue; removedDetails: Record }> => {
+ const { fetchModelParameterRules } = await import('@/service/common')
+ const url = `/workspaces/current/model-providers/${provider}/models/parameter-rules?model=${modelId}`
+ const { data: parameterRules } = await fetchModelParameterRules(url)
+ return mergeValidCompletionParams(oldParams, parameterRules ?? [])
+}