Commit 5c1d1bd2 by Archer Committed by GitHub

Update admin modal migration (#7466)

* update admin modal dependencies

* fix: workflow tool ui

* fix: response data
parent 5a048432
...@@ -57,8 +57,17 @@ export const dispatchPluginInput = async ( ...@@ -57,8 +57,17 @@ export const dispatchPluginInput = async (
const val = params[key]; const val = params[key];
const maxFiles = fileInputMaxFiles.get(key); const maxFiles = fileInputMaxFiles.get(key);
if (maxFiles !== undefined && Array.isArray(val)) { if (maxFiles !== undefined && Array.isArray(val)) {
// 文件选择器未选文件时可能提交无 key/url 的占位项,应按空输入处理。
const fileItems = val
.filter((fileItem) => {
if (typeof fileItem === 'string') return fileItem.trim().length > 0;
return (
!!fileItem && typeof fileItem === 'object' && Boolean(fileItem.key || fileItem.url)
);
})
.slice(0, maxFiles);
const fileUrls = await Promise.all( const fileUrls = await Promise.all(
val.slice(0, maxFiles).map(async (fileItem) => { fileItems.map(async (fileItem) => {
const storeValue = const storeValue =
typeof fileItem === 'string' typeof fileItem === 'string'
? normalizeChatFileStoreValue({ url: fileItem }) ? normalizeChatFileStoreValue({ url: fileItem })
......
...@@ -204,6 +204,21 @@ describe('dispatchPluginInput', () => { ...@@ -204,6 +204,21 @@ describe('dispatchPluginInput', () => {
expect(result.data?.upload).toEqual(['https://external.example.com/1.pdf']); expect(result.data?.upload).toEqual(['https://external.example.com/1.pdf']);
}); });
it('treats empty file selector placeholders as no file input', async () => {
const result = await runWithMockFileContext(() =>
dispatchPluginInput({
params: {
upload: [{ type: ChatFileTypeEnum.file }]
},
query: [],
node: pluginInputNode
} as any)
);
expect(result.data?.upload).toEqual([]);
expect(mockRegisterInputFile).not.toHaveBeenCalled();
});
it('reuses a file already selected in the current child context', async () => { it('reuses a file already selected in the current child context', async () => {
mockResolveInputFile.mockReturnValueOnce({ mockResolveInputFile.mockReturnValueOnce({
modelUrl: 'https://parent.example.com/signed.pdf' modelUrl: 'https://parent.example.com/signed.pdf'
......
...@@ -269,7 +269,7 @@ importers: ...@@ -269,7 +269,7 @@ importers:
version: 9.39.4(jiti@2.7.0) version: 9.39.4(jiti@2.7.0)
eslint-config-next: eslint-config-next:
specifier: catalog:lint specifier: catalog:lint
version: 16.3.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3))(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3) version: 16.3.0(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3)
husky: husky:
specifier: ^8.0.3 specifier: ^8.0.3
version: 8.0.3 version: 8.0.3
...@@ -979,7 +979,7 @@ importers: ...@@ -979,7 +979,7 @@ importers:
version: 1.14.3 version: 1.14.3
'@scalar/api-reference-react': '@scalar/api-reference-react':
specifier: ^0.9.59 specifier: ^0.9.59
version: 0.9.60(axios@1.18.1)(nprogress@0.2.0)(qrcode@1.5.4)(react@18.3.1)(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.4))(typescript@6.0.3)(zod@4.1.12) version: 0.9.60(axios@1.18.1)(nprogress@0.2.0)(qrcode@1.5.4)(react@18.3.1)(tailwindcss@4.2.4)(typescript@6.0.3)(zod@4.1.12)
'@t3-oss/env-core': '@t3-oss/env-core':
specifier: 'catalog:' specifier: 'catalog:'
version: 0.13.10(typescript@6.0.3)(zod@4.1.12) version: 0.13.10(typescript@6.0.3)(zod@4.1.12)
...@@ -1004,9 +1004,6 @@ importers: ...@@ -1004,9 +1004,6 @@ importers:
assert: assert:
specifier: ^2.0.0 specifier: ^2.0.0
version: 2.1.0 version: 2.1.0
autoprefixer:
specifier: ^10.4.19
version: 10.5.4(postcss@8.5.23)
axios: axios:
specifier: 'catalog:' specifier: 'catalog:'
version: 1.18.1 version: 1.18.1
...@@ -1124,9 +1121,6 @@ importers: ...@@ -1124,9 +1121,6 @@ importers:
sass: sass:
specifier: ^1.58.3 specifier: ^1.58.3
version: 1.85.1 version: 1.85.1
tailwindcss:
specifier: ^3.0
version: 3.4.18(tsx@4.20.6)(yaml@2.8.4)
utf-8-validate: utf-8-validate:
specifier: ^5.0.10 specifier: ^5.0.10
version: 5.0.10 version: 5.0.10
...@@ -1181,10 +1175,10 @@ importers: ...@@ -1181,10 +1175,10 @@ importers:
version: 0.25.12 version: 0.25.12
eslint: eslint:
specifier: catalog:lint specifier: catalog:lint
version: 9.39.4(jiti@1.21.7) version: 9.39.4(jiti@2.7.0)
eslint-config-next: eslint-config-next:
specifier: catalog:lint specifier: catalog:lint
version: 16.3.0(eslint@9.39.4(jiti@1.21.7))(typescript@6.0.3) version: 16.3.0(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3)
mongodb-memory-server: mongodb-memory-server:
specifier: 'catalog:' specifier: 'catalog:'
version: 10.1.4(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.9) version: 10.1.4(gcp-metadata@5.3.0(encoding@0.1.13))(socks@2.8.9)
...@@ -1196,7 +1190,7 @@ importers: ...@@ -1196,7 +1190,7 @@ importers:
version: 6.0.3 version: 6.0.3
vitest: vitest:
specifier: 'catalog:' specifier: 'catalog:'
version: 4.1.5(@opentelemetry/api@1.9.0)(@types/node@24.13.3)(@vitest/coverage-v8@4.1.5)(jsdom@26.1.0(bufferutil@4.1.0)(canvas@3.2.3)(utf-8-validate@5.0.10))(vite@6.2.2(@types/node@24.13.3)(jiti@1.21.7)(lightningcss@1.32.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.4)) version: 4.1.5(@opentelemetry/api@1.9.0)(@types/node@24.13.3)(@vitest/coverage-v8@4.1.5)(jsdom@26.1.0(bufferutil@4.1.0)(canvas@3.2.3)(utf-8-validate@5.0.10))(vite@6.2.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.4))
pro/browser-sandbox: pro/browser-sandbox:
dependencies: dependencies:
...@@ -1605,10 +1599,10 @@ importers: ...@@ -1605,10 +1599,10 @@ importers:
version: 15.5.13 version: 15.5.13
eslint: eslint:
specifier: catalog:lint specifier: catalog:lint
version: 9.39.4(jiti@2.7.0) version: 9.39.4(jiti@1.21.7)
eslint-config-next: eslint-config-next:
specifier: catalog:lint specifier: catalog:lint
version: 16.3.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3))(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3) version: 16.3.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@1.21.7))(typescript@6.0.3))(eslint@9.39.4(jiti@1.21.7))(typescript@6.0.3)
tailwindcss: tailwindcss:
specifier: ^3 specifier: ^3
version: 3.4.18(tsx@4.20.6)(yaml@2.8.4) version: 3.4.18(tsx@4.20.6)(yaml@2.8.4)
...@@ -1620,10 +1614,10 @@ importers: ...@@ -1620,10 +1614,10 @@ importers:
version: 6.0.3 version: 6.0.3
typescript-eslint: typescript-eslint:
specifier: catalog:lint specifier: catalog:lint
version: 8.59.2(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3) version: 8.59.2(eslint@9.39.4(jiti@1.21.7))(typescript@6.0.3)
vitest: vitest:
specifier: 'catalog:' specifier: 'catalog:'
version: 4.1.5(@opentelemetry/api@1.9.0)(@types/node@24.13.3)(@vitest/coverage-v8@4.1.5)(jsdom@26.1.0(bufferutil@4.1.0)(canvas@3.2.3)(utf-8-validate@5.0.10))(vite@6.2.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.4)) version: 4.1.5(@opentelemetry/api@1.9.0)(@types/node@24.13.3)(@vitest/coverage-v8@4.1.5)(jsdom@26.1.0(bufferutil@4.1.0)(canvas@3.2.3)(utf-8-validate@5.0.10))(vite@6.2.2(@types/node@24.13.3)(jiti@1.21.7)(lightningcss@1.32.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.20.6)(yaml@2.8.4))
projects/code-sandbox: projects/code-sandbox:
dependencies: dependencies:
...@@ -1781,7 +1775,7 @@ importers: ...@@ -1781,7 +1775,7 @@ importers:
version: 9.39.4(jiti@2.7.0) version: 9.39.4(jiti@2.7.0)
eslint-config-next: eslint-config-next:
specifier: catalog:lint specifier: catalog:lint
version: 16.3.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3))(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3) version: 16.3.0(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3)
postcss: postcss:
specifier: 'catalog:' specifier: 'catalog:'
version: 8.5.22 version: 8.5.22
...@@ -7680,13 +7674,6 @@ packages: ...@@ -7680,13 +7674,6 @@ packages:
resolution: {integrity: sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==} resolution: {integrity: sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==}
engines: {node: '>=10.12.0'} engines: {node: '>=10.12.0'}
autoprefixer@10.5.4:
resolution: {integrity: sha512-MaU0U/za7N3r6brxD4YB/l4NSrFzLPlANv6wEuQVaIPlD3L4W9rFcQPbL/EilY9BHhHvhfcz3gInDLrEtWT4EA==}
engines: {node: ^10 || ^12 || >=14}
hasBin: true
peerDependencies:
postcss: ^8.1.0
available-typed-arrays@1.0.7: available-typed-arrays@1.0.7:
resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
...@@ -7883,11 +7870,6 @@ packages: ...@@ -7883,11 +7870,6 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true hasBin: true
browserslist@4.28.7:
resolution: {integrity: sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
bson@6.10.3: bson@6.10.3:
resolution: {integrity: sha512-MTxGsqgYTwfshYWTRdmZRC+M7FnG1b4y7RO7p2k3X24Wq0yv1m77Wsj0BzlPzd/IowgESfsruQCUToa7vbOpPQ==} resolution: {integrity: sha512-MTxGsqgYTwfshYWTRdmZRC+M7FnG1b4y7RO7p2k3X24Wq0yv1m77Wsj0BzlPzd/IowgESfsruQCUToa7vbOpPQ==}
engines: {node: '>=16.20.1'} engines: {node: '>=16.20.1'}
...@@ -8961,9 +8943,6 @@ packages: ...@@ -8961,9 +8943,6 @@ packages:
electron-to-chromium@1.5.341: electron-to-chromium@1.5.341:
resolution: {integrity: sha512-1sZTssferjgDgaqRTc0ieP+ozzpOy7LQTPTtEW3yQFn4+ORdIAZWV5BthXPyHF7YqLvFJCUPhNhdAJQYlYUgiw==} resolution: {integrity: sha512-1sZTssferjgDgaqRTc0ieP+ozzpOy7LQTPTtEW3yQFn4+ORdIAZWV5BthXPyHF7YqLvFJCUPhNhdAJQYlYUgiw==}
electron-to-chromium@1.5.396:
resolution: {integrity: sha512-yHiw2Y3C3H9U6TMbOfoWK/BPreiOPXRfTWPBwQBoZG6/8TB6eOPnsy5oaRYuatR7Fw2SJ4kKforgufeo7fq0EQ==}
elkjs@0.9.3: elkjs@0.9.3:
resolution: {integrity: sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==} resolution: {integrity: sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==}
...@@ -9614,9 +9593,6 @@ packages: ...@@ -9614,9 +9593,6 @@ packages:
resolution: {integrity: sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==} resolution: {integrity: sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==}
engines: {node: '>=0.8'} engines: {node: '>=0.8'}
fraction.js@5.3.4:
resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==}
framer-motion@9.1.7: framer-motion@9.1.7:
resolution: {integrity: sha512-nKxBkIO4IPkMEqcBbbATxsVjwPYShKl051yhBv9628iAH6JLeHD0siBHxkL62oQzMC1+GNX73XtPjgP753ufuw==} resolution: {integrity: sha512-nKxBkIO4IPkMEqcBbbATxsVjwPYShKl051yhBv9628iAH6JLeHD0siBHxkL62oQzMC1+GNX73XtPjgP753ufuw==}
peerDependencies: peerDependencies:
...@@ -11930,10 +11906,6 @@ packages: ...@@ -11930,10 +11906,6 @@ packages:
node-releases@2.0.37: node-releases@2.0.37:
resolution: {integrity: sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==} resolution: {integrity: sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==}
node-releases@2.0.51:
resolution: {integrity: sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==}
engines: {node: '>=18'}
nodemailer@7.0.13: nodemailer@7.0.13:
resolution: {integrity: sha512-PNDFSJdP+KFgdsG3ZzMXCgquO7I6McjY2vlqILjtJd0hy8wEvtugS9xKRF2NWlPNGxvLCXlTNIae4serI7dinw==} resolution: {integrity: sha512-PNDFSJdP+KFgdsG3ZzMXCgquO7I6McjY2vlqILjtJd0hy8wEvtugS9xKRF2NWlPNGxvLCXlTNIae4serI7dinw==}
engines: {node: '>=6.0.0'} engines: {node: '>=6.0.0'}
...@@ -18013,6 +17985,10 @@ snapshots: ...@@ -18013,6 +17985,10 @@ snapshots:
dependencies: dependencies:
tailwindcss: 3.4.18(tsx@4.20.6)(yaml@2.8.4) tailwindcss: 3.4.18(tsx@4.20.6)(yaml@2.8.4)
'@headlessui/tailwindcss@0.2.2(tailwindcss@4.2.4)':
dependencies:
tailwindcss: 4.2.4
'@headlessui/vue@1.7.23(vue@3.5.40(typescript@6.0.3))': '@headlessui/vue@1.7.23(vue@3.5.40(typescript@6.0.3))':
dependencies: dependencies:
'@tanstack/vue-virtual': 3.13.12(vue@3.5.40(typescript@6.0.3)) '@tanstack/vue-virtual': 3.13.12(vue@3.5.40(typescript@6.0.3))
...@@ -19999,6 +19975,44 @@ snapshots: ...@@ -19999,6 +19975,44 @@ snapshots:
- universal-cookie - universal-cookie
- zod - zod
'@scalar/agent-chat@0.12.23(axios@1.18.1)(nprogress@0.2.0)(qrcode@1.5.4)(tailwindcss@4.2.4)(typescript@6.0.3)(zod@4.1.12)':
dependencies:
'@ai-sdk/vue': 3.0.33(vue@3.5.40(typescript@6.0.3))(zod@4.1.12)
'@scalar/api-client': 3.14.0(axios@1.18.1)(nprogress@0.2.0)(qrcode@1.5.4)(tailwindcss@4.2.4)(typescript@6.0.3)
'@scalar/components': 0.27.10(tailwindcss@4.2.4)(typescript@6.0.3)
'@scalar/helpers': 0.9.2
'@scalar/icons': 0.7.5(typescript@6.0.3)
'@scalar/json-magic': 0.12.19
'@scalar/openapi-types': 0.9.4
'@scalar/schemas': 0.8.0
'@scalar/themes': 0.17.2
'@scalar/types': 0.17.0
'@scalar/use-toasts': 0.10.4(typescript@6.0.3)
'@scalar/validation': 0.6.2
'@scalar/workspace-store': 0.56.0(typescript@6.0.3)
'@vueuse/core': 13.9.0(vue@3.5.40(typescript@6.0.3))
ai: 6.0.33(zod@4.1.12)
js-base64: 3.7.8
neverpanic: 0.0.8
truncate-json: 3.0.1
vue: 3.5.40(typescript@6.0.3)
transitivePeerDependencies:
- '@vue/composition-api'
- async-validator
- axios
- change-case
- drauu
- idb-keyval
- jwt-decode
- nprogress
- qrcode
- sortablejs
- supports-color
- tailwindcss
- typescript
- universal-cookie
- zod
'@scalar/api-client@3.14.0(axios@1.18.1)(nprogress@0.2.0)(qrcode@1.5.4)(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.4))(typescript@6.0.3)': '@scalar/api-client@3.14.0(axios@1.18.1)(nprogress@0.2.0)(qrcode@1.5.4)(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.4))(typescript@6.0.3)':
dependencies: dependencies:
'@headlessui/tailwindcss': 0.2.2(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.4)) '@headlessui/tailwindcss': 0.2.2(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.4))
...@@ -20047,6 +20061,54 @@ snapshots: ...@@ -20047,6 +20061,54 @@ snapshots:
- typescript - typescript
- universal-cookie - universal-cookie
'@scalar/api-client@3.14.0(axios@1.18.1)(nprogress@0.2.0)(qrcode@1.5.4)(tailwindcss@4.2.4)(typescript@6.0.3)':
dependencies:
'@headlessui/tailwindcss': 0.2.2(tailwindcss@4.2.4)
'@headlessui/vue': 1.7.23(vue@3.5.40(typescript@6.0.3))
'@scalar/blocks': 0.1.9(tailwindcss@4.2.4)(typescript@6.0.3)
'@scalar/components': 0.27.10(tailwindcss@4.2.4)(typescript@6.0.3)
'@scalar/helpers': 0.9.2
'@scalar/icons': 0.7.5(typescript@6.0.3)
'@scalar/oas-utils': 0.19.9(typescript@6.0.3)
'@scalar/openapi-types': 0.9.4
'@scalar/sidebar': 0.9.34(tailwindcss@4.2.4)(typescript@6.0.3)
'@scalar/snippetz': 0.9.24
'@scalar/themes': 0.17.2
'@scalar/typebox': 0.1.3
'@scalar/types': 0.17.0
'@scalar/use-codemirror': 0.14.14(typescript@6.0.3)
'@scalar/use-hooks': 0.4.9(typescript@6.0.3)
'@scalar/use-toasts': 0.10.4(typescript@6.0.3)
'@scalar/workspace-store': 0.56.0(typescript@6.0.3)
'@vueuse/core': 13.9.0(vue@3.5.40(typescript@6.0.3))
'@vueuse/integrations': 13.9.0(axios@1.18.1)(focus-trap@7.8.0)(fuse.js@7.1.0)(nprogress@0.2.0)(qrcode@1.5.4)(vue@3.5.40(typescript@6.0.3))
focus-trap: 7.8.0
fuse.js: 7.1.0
js-base64: 3.7.8
jsonc-parser: 3.3.1
nanoid: 5.1.16
pretty-ms: 9.3.0
radix-vue: 1.9.17(vue@3.5.40(typescript@6.0.3))
set-cookie-parser: 3.1.0
vue: 3.5.40(typescript@6.0.3)
yaml: 2.8.4
zod: 4.4.3
transitivePeerDependencies:
- '@vue/composition-api'
- async-validator
- axios
- change-case
- drauu
- idb-keyval
- jwt-decode
- nprogress
- qrcode
- sortablejs
- supports-color
- tailwindcss
- typescript
- universal-cookie
'@scalar/api-reference-react@0.9.60(axios@1.18.1)(nprogress@0.2.0)(qrcode@1.5.4)(react@18.3.1)(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.4))(typescript@6.0.3)(zod@4.1.12)': '@scalar/api-reference-react@0.9.60(axios@1.18.1)(nprogress@0.2.0)(qrcode@1.5.4)(react@18.3.1)(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.4))(typescript@6.0.3)(zod@4.1.12)':
dependencies: dependencies:
'@scalar/api-reference': 1.64.0(axios@1.18.1)(nprogress@0.2.0)(qrcode@1.5.4)(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.4))(typescript@6.0.3)(zod@4.1.12) '@scalar/api-reference': 1.64.0(axios@1.18.1)(nprogress@0.2.0)(qrcode@1.5.4)(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.4))(typescript@6.0.3)(zod@4.1.12)
...@@ -20069,6 +20131,28 @@ snapshots: ...@@ -20069,6 +20131,28 @@ snapshots:
- universal-cookie - universal-cookie
- zod - zod
'@scalar/api-reference-react@0.9.60(axios@1.18.1)(nprogress@0.2.0)(qrcode@1.5.4)(react@18.3.1)(tailwindcss@4.2.4)(typescript@6.0.3)(zod@4.1.12)':
dependencies:
'@scalar/api-reference': 1.64.0(axios@1.18.1)(nprogress@0.2.0)(qrcode@1.5.4)(tailwindcss@4.2.4)(typescript@6.0.3)(zod@4.1.12)
'@scalar/types': 0.17.0
react: 18.3.1
transitivePeerDependencies:
- '@vue/composition-api'
- async-validator
- axios
- change-case
- drauu
- idb-keyval
- jwt-decode
- nprogress
- qrcode
- sortablejs
- supports-color
- tailwindcss
- typescript
- universal-cookie
- zod
'@scalar/api-reference@1.64.0(axios@1.18.1)(nprogress@0.2.0)(qrcode@1.5.4)(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.4))(typescript@6.0.3)(zod@4.1.12)': '@scalar/api-reference@1.64.0(axios@1.18.1)(nprogress@0.2.0)(qrcode@1.5.4)(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.4))(typescript@6.0.3)(zod@4.1.12)':
dependencies: dependencies:
'@headlessui/vue': 1.7.23(vue@3.5.40(typescript@6.0.3)) '@headlessui/vue': 1.7.23(vue@3.5.40(typescript@6.0.3))
...@@ -20113,6 +20197,50 @@ snapshots: ...@@ -20113,6 +20197,50 @@ snapshots:
- universal-cookie - universal-cookie
- zod - zod
'@scalar/api-reference@1.64.0(axios@1.18.1)(nprogress@0.2.0)(qrcode@1.5.4)(tailwindcss@4.2.4)(typescript@6.0.3)(zod@4.1.12)':
dependencies:
'@headlessui/vue': 1.7.23(vue@3.5.40(typescript@6.0.3))
'@scalar/agent-chat': 0.12.23(axios@1.18.1)(nprogress@0.2.0)(qrcode@1.5.4)(tailwindcss@4.2.4)(typescript@6.0.3)(zod@4.1.12)
'@scalar/api-client': 3.14.0(axios@1.18.1)(nprogress@0.2.0)(qrcode@1.5.4)(tailwindcss@4.2.4)(typescript@6.0.3)
'@scalar/blocks': 0.1.9(tailwindcss@4.2.4)(typescript@6.0.3)
'@scalar/code-highlight': 0.4.3
'@scalar/components': 0.27.10(tailwindcss@4.2.4)(typescript@6.0.3)
'@scalar/helpers': 0.9.2
'@scalar/icons': 0.7.5(typescript@6.0.3)
'@scalar/oas-utils': 0.19.9(typescript@6.0.3)
'@scalar/schemas': 0.8.0
'@scalar/sidebar': 0.9.34(tailwindcss@4.2.4)(typescript@6.0.3)
'@scalar/snippetz': 0.9.24
'@scalar/themes': 0.17.2
'@scalar/types': 0.17.0
'@scalar/use-hooks': 0.4.9(typescript@6.0.3)
'@scalar/use-toasts': 0.10.4(typescript@6.0.3)
'@scalar/validation': 0.6.2
'@scalar/workspace-store': 0.56.0(typescript@6.0.3)
'@unhead/vue': 2.1.17(vue@3.5.40(typescript@6.0.3))
'@vueuse/core': 13.9.0(vue@3.5.40(typescript@6.0.3))
fuse.js: 7.1.0
microdiff: 1.5.0
nanoid: 5.1.16
vue: 3.5.40(typescript@6.0.3)
yaml: 2.8.4
transitivePeerDependencies:
- '@vue/composition-api'
- async-validator
- axios
- change-case
- drauu
- idb-keyval
- jwt-decode
- nprogress
- qrcode
- sortablejs
- supports-color
- tailwindcss
- typescript
- universal-cookie
- zod
'@scalar/asyncapi-upgrader@0.1.4': '@scalar/asyncapi-upgrader@0.1.4':
dependencies: dependencies:
'@scalar/helpers': 0.9.2 '@scalar/helpers': 0.9.2
...@@ -20135,6 +20263,24 @@ snapshots: ...@@ -20135,6 +20263,24 @@ snapshots:
- tailwindcss - tailwindcss
- typescript - typescript
'@scalar/blocks@0.1.9(tailwindcss@4.2.4)(typescript@6.0.3)':
dependencies:
'@scalar/components': 0.27.10(tailwindcss@4.2.4)(typescript@6.0.3)
'@scalar/helpers': 0.9.2
'@scalar/icons': 0.7.5(typescript@6.0.3)
'@scalar/snippetz': 0.9.24
'@scalar/themes': 0.17.2
'@scalar/types': 0.17.0
'@scalar/workspace-store': 0.56.0(typescript@6.0.3)
'@types/har-format': 1.2.16
js-base64: 3.7.8
vue: 3.5.40(typescript@6.0.3)
transitivePeerDependencies:
- '@vue/composition-api'
- supports-color
- tailwindcss
- typescript
'@scalar/code-highlight@0.4.3': '@scalar/code-highlight@0.4.3':
dependencies: dependencies:
hast-util-to-text: 4.0.2 hast-util-to-text: 4.0.2
...@@ -20177,6 +20323,28 @@ snapshots: ...@@ -20177,6 +20323,28 @@ snapshots:
- tailwindcss - tailwindcss
- typescript - typescript
'@scalar/components@0.27.10(tailwindcss@4.2.4)(typescript@6.0.3)':
dependencies:
'@floating-ui/utils': 0.2.10
'@floating-ui/vue': 1.1.9(vue@3.5.40(typescript@6.0.3))
'@headlessui/tailwindcss': 0.2.2(tailwindcss@4.2.4)
'@headlessui/vue': 1.7.23(vue@3.5.40(typescript@6.0.3))
'@scalar/code-highlight': 0.4.3
'@scalar/helpers': 0.9.2
'@scalar/icons': 0.7.5(typescript@6.0.3)
'@scalar/themes': 0.17.2
'@scalar/use-hooks': 0.4.9(typescript@6.0.3)
'@vueuse/core': 13.9.0(vue@3.5.40(typescript@6.0.3))
cva: 1.0.0-beta.4(typescript@6.0.3)
radix-vue: 1.9.17(vue@3.5.40(typescript@6.0.3))
vue: 3.5.40(typescript@6.0.3)
vue-component-type-helpers: 3.3.9
transitivePeerDependencies:
- '@vue/composition-api'
- supports-color
- tailwindcss
- typescript
'@scalar/helpers@0.9.2': {} '@scalar/helpers@0.9.2': {}
'@scalar/icons@0.7.5(typescript@6.0.3)': '@scalar/icons@0.7.5(typescript@6.0.3)':
...@@ -20232,6 +20400,21 @@ snapshots: ...@@ -20232,6 +20400,21 @@ snapshots:
- tailwindcss - tailwindcss
- typescript - typescript
'@scalar/sidebar@0.9.34(tailwindcss@4.2.4)(typescript@6.0.3)':
dependencies:
'@scalar/components': 0.27.10(tailwindcss@4.2.4)(typescript@6.0.3)
'@scalar/helpers': 0.9.2
'@scalar/icons': 0.7.5(typescript@6.0.3)
'@scalar/themes': 0.17.2
'@scalar/use-hooks': 0.4.9(typescript@6.0.3)
'@scalar/workspace-store': 0.56.0(typescript@6.0.3)
vue: 3.5.40(typescript@6.0.3)
transitivePeerDependencies:
- '@vue/composition-api'
- supports-color
- tailwindcss
- typescript
'@scalar/snippetz@0.9.24': '@scalar/snippetz@0.9.24':
dependencies: dependencies:
'@scalar/helpers': 0.9.2 '@scalar/helpers': 0.9.2
...@@ -22517,15 +22700,6 @@ snapshots: ...@@ -22517,15 +22700,6 @@ snapshots:
atomically@1.7.0: {} atomically@1.7.0: {}
autoprefixer@10.5.4(postcss@8.5.23):
dependencies:
browserslist: 4.28.7
caniuse-lite: 1.0.30001806
fraction.js: 5.3.4
picocolors: 1.1.1
postcss: 8.5.23
postcss-value-parser: 4.2.0
available-typed-arrays@1.0.7: available-typed-arrays@1.0.7:
dependencies: dependencies:
possible-typed-array-names: 1.1.0 possible-typed-array-names: 1.1.0
...@@ -22743,14 +22917,6 @@ snapshots: ...@@ -22743,14 +22917,6 @@ snapshots:
node-releases: 2.0.37 node-releases: 2.0.37
update-browserslist-db: 1.2.3(browserslist@4.28.2) update-browserslist-db: 1.2.3(browserslist@4.28.2)
browserslist@4.28.7:
dependencies:
baseline-browser-mapping: 2.11.1
caniuse-lite: 1.0.30001806
electron-to-chromium: 1.5.396
node-releases: 2.0.51
update-browserslist-db: 1.2.3(browserslist@4.28.7)
bson@6.10.3: {} bson@6.10.3: {}
bson@6.10.4: {} bson@6.10.4: {}
...@@ -23850,8 +24016,6 @@ snapshots: ...@@ -23850,8 +24016,6 @@ snapshots:
electron-to-chromium@1.5.341: {} electron-to-chromium@1.5.341: {}
electron-to-chromium@1.5.396: {}
elkjs@0.9.3: {} elkjs@0.9.3: {}
emoji-regex@10.4.0: {} emoji-regex@10.4.0: {}
...@@ -24114,18 +24278,18 @@ snapshots: ...@@ -24114,18 +24278,18 @@ snapshots:
optionalDependencies: optionalDependencies:
source-map: 0.6.1 source-map: 0.6.1
eslint-config-next@16.3.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3))(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3): eslint-config-next@16.3.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@1.21.7))(typescript@6.0.3))(eslint@9.39.4(jiti@1.21.7))(typescript@6.0.3):
dependencies: dependencies:
'@next/eslint-plugin-next': 16.3.0(eslint@9.39.4(jiti@2.7.0)) '@next/eslint-plugin-next': 16.3.0(eslint@9.39.4(jiti@1.21.7))
eslint: 9.39.4(jiti@2.7.0) eslint: 9.39.4(jiti@1.21.7)
eslint-import-resolver-node: 0.3.9 eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.9.0(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.7.0)) eslint-import-resolver-typescript: 3.9.0(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@1.21.7))
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-typescript@3.9.0)(eslint@9.39.4(jiti@2.7.0)) eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@1.21.7))(typescript@6.0.3))(eslint-import-resolver-typescript@3.9.0)(eslint@9.39.4(jiti@1.21.7))
eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.7.0)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@1.21.7))
eslint-plugin-react: 7.37.4(eslint@9.39.4(jiti@2.7.0)) eslint-plugin-react: 7.37.4(eslint@9.39.4(jiti@1.21.7))
eslint-plugin-react-hooks: 7.1.1(eslint@9.39.4(jiti@2.7.0)) eslint-plugin-react-hooks: 7.1.1(eslint@9.39.4(jiti@1.21.7))
globals: 16.4.0 globals: 16.4.0
typescript-eslint: 8.59.2(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3) typescript-eslint: 8.59.2(eslint@9.39.4(jiti@1.21.7))(typescript@6.0.3)
optionalDependencies: optionalDependencies:
typescript: 6.0.3 typescript: 6.0.3
transitivePeerDependencies: transitivePeerDependencies:
...@@ -24134,18 +24298,18 @@ snapshots: ...@@ -24134,18 +24298,18 @@ snapshots:
- eslint-plugin-import-x - eslint-plugin-import-x
- supports-color - supports-color
eslint-config-next@16.3.0(eslint@9.39.4(jiti@1.21.7))(typescript@6.0.3): eslint-config-next@16.3.0(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3):
dependencies: dependencies:
'@next/eslint-plugin-next': 16.3.0(eslint@9.39.4(jiti@1.21.7)) '@next/eslint-plugin-next': 16.3.0(eslint@9.39.4(jiti@2.7.0))
eslint: 9.39.4(jiti@1.21.7) eslint: 9.39.4(jiti@2.7.0)
eslint-import-resolver-node: 0.3.9 eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.9.0(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@1.21.7)) eslint-import-resolver-typescript: 3.9.0(eslint-plugin-import@2.32.0(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0))
eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.9.0)(eslint@9.39.4(jiti@1.21.7)) eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.9.0(eslint-plugin-import@2.32.0(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0))
eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@1.21.7)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.7.0))
eslint-plugin-react: 7.37.4(eslint@9.39.4(jiti@1.21.7)) eslint-plugin-react: 7.37.4(eslint@9.39.4(jiti@2.7.0))
eslint-plugin-react-hooks: 7.1.1(eslint@9.39.4(jiti@1.21.7)) eslint-plugin-react-hooks: 7.1.1(eslint@9.39.4(jiti@2.7.0))
globals: 16.4.0 globals: 16.4.0
typescript-eslint: 8.59.2(eslint@9.39.4(jiti@1.21.7))(typescript@6.0.3) typescript-eslint: 8.59.2(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3)
optionalDependencies: optionalDependencies:
typescript: 6.0.3 typescript: 6.0.3
transitivePeerDependencies: transitivePeerDependencies:
...@@ -24162,58 +24326,58 @@ snapshots: ...@@ -24162,58 +24326,58 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
eslint-import-resolver-typescript@3.9.0(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@1.21.7)): eslint-import-resolver-typescript@3.9.0(eslint-plugin-import@2.32.0(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0)):
dependencies: dependencies:
'@nolyfill/is-core-module': 1.0.39 '@nolyfill/is-core-module': 1.0.39
debug: 4.4.3 debug: 4.4.3
eslint: 9.39.4(jiti@1.21.7) eslint: 9.39.4(jiti@2.7.0)
get-tsconfig: 4.14.0 get-tsconfig: 4.14.0
is-bun-module: 1.3.0 is-bun-module: 1.3.0
oxc-resolver: 5.0.0 oxc-resolver: 5.0.0
stable-hash: 0.0.5 stable-hash: 0.0.5
tinyglobby: 0.2.16 tinyglobby: 0.2.16
optionalDependencies: optionalDependencies:
eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.9.0)(eslint@9.39.4(jiti@1.21.7)) eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@3.9.0(eslint-plugin-import@2.32.0(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0))
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
eslint-import-resolver-typescript@3.9.0(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.7.0)): eslint-import-resolver-typescript@3.9.0(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@1.21.7)):
dependencies: dependencies:
'@nolyfill/is-core-module': 1.0.39 '@nolyfill/is-core-module': 1.0.39
debug: 4.4.3 debug: 4.4.3
eslint: 9.39.4(jiti@2.7.0) eslint: 9.39.4(jiti@1.21.7)
get-tsconfig: 4.14.0 get-tsconfig: 4.14.0
is-bun-module: 1.3.0 is-bun-module: 1.3.0
oxc-resolver: 5.0.0 oxc-resolver: 5.0.0
stable-hash: 0.0.5 stable-hash: 0.0.5
tinyglobby: 0.2.16 tinyglobby: 0.2.16
optionalDependencies: optionalDependencies:
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-typescript@3.9.0)(eslint@9.39.4(jiti@2.7.0)) eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@1.21.7))(typescript@6.0.3))(eslint-import-resolver-typescript@3.9.0)(eslint@9.39.4(jiti@1.21.7))
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
eslint-module-utils@2.12.1(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.9.0)(eslint@9.39.4(jiti@2.7.0)): eslint-module-utils@2.12.1(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@1.21.7))(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.9.0)(eslint@9.39.4(jiti@1.21.7)):
dependencies: dependencies:
debug: 3.2.7 debug: 3.2.7
optionalDependencies: optionalDependencies:
'@typescript-eslint/parser': 8.59.2(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3) '@typescript-eslint/parser': 8.59.2(eslint@9.39.4(jiti@1.21.7))(typescript@6.0.3)
eslint: 9.39.4(jiti@2.7.0) eslint: 9.39.4(jiti@1.21.7)
eslint-import-resolver-node: 0.3.9 eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.9.0(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.7.0)) eslint-import-resolver-typescript: 3.9.0(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@1.21.7))
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.9.0)(eslint@9.39.4(jiti@1.21.7)): eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.9.0(eslint-plugin-import@2.32.0(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0)):
dependencies: dependencies:
debug: 3.2.7 debug: 3.2.7
optionalDependencies: optionalDependencies:
eslint: 9.39.4(jiti@1.21.7) eslint: 9.39.4(jiti@2.7.0)
eslint-import-resolver-node: 0.3.9 eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.9.0(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@1.21.7)) eslint-import-resolver-typescript: 3.9.0(eslint-plugin-import@2.32.0(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0))
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-typescript@3.9.0)(eslint@9.39.4(jiti@2.7.0)): eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@1.21.7))(typescript@6.0.3))(eslint-import-resolver-typescript@3.9.0)(eslint@9.39.4(jiti@1.21.7)):
dependencies: dependencies:
'@rtsao/scc': 1.1.0 '@rtsao/scc': 1.1.0
array-includes: 3.1.9 array-includes: 3.1.9
...@@ -24222,9 +24386,9 @@ snapshots: ...@@ -24222,9 +24386,9 @@ snapshots:
array.prototype.flatmap: 1.3.3 array.prototype.flatmap: 1.3.3
debug: 3.2.7 debug: 3.2.7
doctrine: 2.1.0 doctrine: 2.1.0
eslint: 9.39.4(jiti@2.7.0) eslint: 9.39.4(jiti@1.21.7)
eslint-import-resolver-node: 0.3.9 eslint-import-resolver-node: 0.3.9
eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.9.0)(eslint@9.39.4(jiti@2.7.0)) eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.59.2(eslint@9.39.4(jiti@1.21.7))(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.9.0)(eslint@9.39.4(jiti@1.21.7))
hasown: 2.0.2 hasown: 2.0.2
is-core-module: 2.16.1 is-core-module: 2.16.1
is-glob: 4.0.3 is-glob: 4.0.3
...@@ -24236,13 +24400,13 @@ snapshots: ...@@ -24236,13 +24400,13 @@ snapshots:
string.prototype.trimend: 1.0.9 string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0 tsconfig-paths: 3.15.0
optionalDependencies: optionalDependencies:
'@typescript-eslint/parser': 8.59.2(eslint@9.39.4(jiti@2.7.0))(typescript@6.0.3) '@typescript-eslint/parser': 8.59.2(eslint@9.39.4(jiti@1.21.7))(typescript@6.0.3)
transitivePeerDependencies: transitivePeerDependencies:
- eslint-import-resolver-typescript - eslint-import-resolver-typescript
- eslint-import-resolver-webpack - eslint-import-resolver-webpack
- supports-color - supports-color
eslint-plugin-import@2.32.0(eslint-import-resolver-typescript@3.9.0)(eslint@9.39.4(jiti@1.21.7)): eslint-plugin-import@2.32.0(eslint-import-resolver-typescript@3.9.0(eslint-plugin-import@2.32.0(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0)):
dependencies: dependencies:
'@rtsao/scc': 1.1.0 '@rtsao/scc': 1.1.0
array-includes: 3.1.9 array-includes: 3.1.9
...@@ -24251,9 +24415,9 @@ snapshots: ...@@ -24251,9 +24415,9 @@ snapshots:
array.prototype.flatmap: 1.3.3 array.prototype.flatmap: 1.3.3
debug: 3.2.7 debug: 3.2.7
doctrine: 2.1.0 doctrine: 2.1.0
eslint: 9.39.4(jiti@1.21.7) eslint: 9.39.4(jiti@2.7.0)
eslint-import-resolver-node: 0.3.9 eslint-import-resolver-node: 0.3.9
eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.9.0)(eslint@9.39.4(jiti@1.21.7)) eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.9.0(eslint-plugin-import@2.32.0(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0))
hasown: 2.0.2 hasown: 2.0.2
is-core-module: 2.16.1 is-core-module: 2.16.1
is-glob: 4.0.3 is-glob: 4.0.3
...@@ -24939,8 +25103,6 @@ snapshots: ...@@ -24939,8 +25103,6 @@ snapshots:
frac@1.1.2: {} frac@1.1.2: {}
fraction.js@5.3.4: {}
framer-motion@9.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1): framer-motion@9.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies: dependencies:
react: 18.3.1 react: 18.3.1
...@@ -27913,8 +28075,6 @@ snapshots: ...@@ -27913,8 +28075,6 @@ snapshots:
node-releases@2.0.37: {} node-releases@2.0.37: {}
node-releases@2.0.51: {}
nodemailer@7.0.13: {} nodemailer@7.0.13: {}
non-layered-tidy-tree-layout@2.0.2: {} non-layered-tidy-tree-layout@2.0.2: {}
...@@ -31094,12 +31254,6 @@ snapshots: ...@@ -31094,12 +31254,6 @@ snapshots:
escalade: 3.2.0 escalade: 3.2.0
picocolors: 1.1.1 picocolors: 1.1.1
update-browserslist-db@1.2.3(browserslist@4.28.7):
dependencies:
browserslist: 4.28.7
escalade: 3.2.0
picocolors: 1.1.1
update-notifier@6.0.2: update-notifier@6.0.2:
dependencies: dependencies:
boxen: 7.1.1 boxen: 7.1.1
Subproject commit c4367e0522a30b03d2d38271e954cb1e6161470d Subproject commit 18869dd92cd3f0559918e9234f39e415114ae402
...@@ -131,7 +131,7 @@ const RenderInput = () => { ...@@ -131,7 +131,7 @@ const RenderInput = () => {
const isDisabledInput = !!hasHistory; const isDisabledInput = !!hasHistory;
return ( return (
<Box> <>
{/* instruction */} {/* instruction */}
{instruction && ( {instruction && (
<Box <Box
...@@ -273,7 +273,7 @@ const RenderInput = () => { ...@@ -273,7 +273,7 @@ const RenderInput = () => {
</Button> </Button>
</Flex> </Flex>
)} )}
</Box> </>
); );
}; };
......
import { ResponseBox } from '../../../components/WholeResponseModal'; import { WorkflowToolResponseBox } from '../../../components/WholeResponseModal/WorkflowToolResponseBox';
import React, { useMemo } from 'react'; import React from 'react';
import { useContextSelector } from 'use-context-selector'; import { useContextSelector } from 'use-context-selector';
import { PluginRunContext } from '../context'; import { PluginRunContext } from '../context';
import { Box } from '@chakra-ui/react';
import { useTranslation } from 'next-i18next'; import { useTranslation } from 'next-i18next';
import { ChatRecordContext } from '@/web/core/chat/context/chatRecordContext'; import { ChatRecordContext } from '@/web/core/chat/context/chatRecordContext';
import { ChatRoleEnum } from '@fastgpt/global/core/chat/constants'; import { ChatRoleEnum } from '@fastgpt/global/core/chat/constants';
...@@ -14,22 +13,20 @@ const RenderResponseDetail = () => { ...@@ -14,22 +13,20 @@ const RenderResponseDetail = () => {
const chatRecords = useContextSelector(ChatRecordContext, (v) => v.chatRecords); const chatRecords = useContextSelector(ChatRecordContext, (v) => v.chatRecords);
const isChatting = useContextSelector(PluginRunContext, (v) => v.isChatting); const isChatting = useContextSelector(PluginRunContext, (v) => v.isChatting);
const aiRecord = useMemo( // 流式响应可能更新记录对象本身,直接读取最新的 AI 记录,避免按数组引用缓存旧结果。
() => [...chatRecords].reverse().find((item) => item.obj === ChatRoleEnum.AI), const aiRecord = [...chatRecords].reverse().find((item) => item.obj === ChatRoleEnum.AI);
[chatRecords] const responseData = aiRecord?.responseData ?? [];
);
const responseData = aiRecord?.responseData || [];
return isChatting ? ( return isChatting ? (
<>{t('chat:in_progress')}</> <>{t('chat:in_progress')}</>
) : ( ) : (
<Box flex={'1 0 0'} h={'100%'} overflow={'auto'}> <>
{responseData.length > 0 ? ( {responseData.length > 0 ? (
<ResponseBox useMobile={true} response={responseData} dataId={aiRecord?.dataId} /> <WorkflowToolResponseBox response={responseData} dataId={aiRecord?.dataId} />
) : ( ) : (
<EmptyTip text={t('chat:response.no_workflow_response')} /> <EmptyTip text={t('chat:response.no_workflow_response')} />
)} )}
</Box> </>
); );
}; };
......
import React, { type ReactNode, useCallback, useMemo, useRef } from 'react'; import React, { type ReactNode, useCallback, useRef } from 'react';
import { createContext, useContextSelector } from 'use-context-selector'; import { createContext, useContextSelector } from 'use-context-selector';
import { type PluginRunBoxProps } from './type'; import { type PluginRunBoxProps } from './type';
import { type AIChatItemValueItemType } from '@fastgpt/global/core/chat/type'; import { type AIChatItemValueItemType } from '@fastgpt/global/core/chat/type';
...@@ -150,12 +150,8 @@ const PluginRunContextProvider = ({ ...@@ -150,12 +150,8 @@ const PluginRunContextProvider = ({
[setChatRecords, resetVariables] [setChatRecords, resetVariables]
); );
const isChatting = useMemo( const isChatting =
() => chatRecords[chatRecords.length - 1] && chatRecords[chatRecords.length - 1]?.status !== 'finish';
chatRecords[chatRecords.length - 1] &&
chatRecords[chatRecords.length - 1]?.status !== 'finish',
[chatRecords]
);
const onSubmit = useCallback( const onSubmit = useCallback(
async ({ variables }: ChatBoxInputFormType) => { async ({ variables }: ChatBoxInputFormType) => {
...@@ -243,7 +239,8 @@ const PluginRunContextProvider = ({ ...@@ -243,7 +239,8 @@ const PluginRunContextProvider = ({
}) })
); );
} catch (err: any) { } catch (err: any) {
toast({ title: err.message, status: 'error' }); const errorMsg = t(getErrText(err, t('common:core.chat.error.Chat error') as any));
toast({ title: errorMsg, status: 'error' });
setChatRecords((state) => setChatRecords((state) =>
state.map((item, index) => { state.map((item, index) => {
if (index !== state.length - 1) return item; if (index !== state.length - 1) return item;
......
...@@ -7,7 +7,6 @@ import { useContextSelector } from 'use-context-selector'; ...@@ -7,7 +7,6 @@ import { useContextSelector } from 'use-context-selector';
import RenderOutput from './components/RenderOutput'; import RenderOutput from './components/RenderOutput';
import RenderResponseDetail from './components/RenderResponseDetail'; import RenderResponseDetail from './components/RenderResponseDetail';
import { ChatItemContext } from '@/web/core/chat/context/chatItemContext'; import { ChatItemContext } from '@/web/core/chat/context/chatItemContext';
import { Box } from '@chakra-ui/react';
const PluginRunBox = (props: PluginRunBoxProps) => { const PluginRunBox = (props: PluginRunBoxProps) => {
const tab = useContextSelector(ChatItemContext, (v) => v.pluginRunTab); const tab = useContextSelector(ChatItemContext, (v) => v.pluginRunTab);
...@@ -15,11 +14,11 @@ const PluginRunBox = (props: PluginRunBoxProps) => { ...@@ -15,11 +14,11 @@ const PluginRunBox = (props: PluginRunBoxProps) => {
return ( return (
<PluginRunContextProvider {...props}> <PluginRunContextProvider {...props}>
<Box h={'100%'} minH={0} display={'flex'} flexDirection={'column'}> <>
{formatTab === PluginRunBoxTabEnum.input && <RenderInput />} {formatTab === PluginRunBoxTabEnum.input && <RenderInput />}
{formatTab === PluginRunBoxTabEnum.output && <RenderOutput />} {formatTab === PluginRunBoxTabEnum.output && <RenderOutput />}
{formatTab === PluginRunBoxTabEnum.detail && <RenderResponseDetail />} {formatTab === PluginRunBoxTabEnum.detail && <RenderResponseDetail />}
</Box> </>
</PluginRunContextProvider> </PluginRunContextProvider>
); );
}; };
......
...@@ -20,13 +20,11 @@ const sideTabDeepTreeMinDepth = 4; ...@@ -20,13 +20,11 @@ const sideTabDeepTreeMinDepth = 4;
export const ResponseBox = React.memo(function ResponseBox({ export const ResponseBox = React.memo(function ResponseBox({
response, response,
dataId, dataId,
hideTabs = false, hideTabs = false
useMobile = false
}: { }: {
response: ChatHistoryItemResType[]; response: ChatHistoryItemResType[];
dataId?: string; dataId?: string;
hideTabs?: boolean; hideTabs?: boolean;
useMobile?: boolean;
}) { }) {
const { t } = useSafeTranslation(); const { t } = useSafeTranslation();
const { isPc } = useSystem(); const { isPc } = useSystem();
...@@ -79,7 +77,7 @@ export const ResponseBox = React.memo(function ResponseBox({ ...@@ -79,7 +77,7 @@ export const ResponseBox = React.memo(function ResponseBox({
return ( return (
<> <>
{isPc && !useMobile ? ( {isPc ? (
<Flex <Flex
overflow={'hidden'} overflow={'hidden'}
height={'100%'} height={'100%'}
......
...@@ -32,7 +32,9 @@ export const WholeResponseContent = ({ ...@@ -32,7 +32,9 @@ export const WholeResponseContent = ({
minH={0} minH={0}
ref={contentRef} ref={contentRef}
py={3} py={3}
px={hideTabs ? 4 : 3} // 详情页移动端需要让内容贴合滚动容器,水平留白由外层面板负责。
// 桌面端保留原有留白,避免改变完整结果的布局。
px={hideTabs ? [0, 4] : 3}
display={'flex'} display={'flex'}
flexDirection={'column'} flexDirection={'column'}
gap={3} gap={3}
......
import React, { useCallback, useEffect, useRef, useState } from 'react';
import { Box, Flex, useDisclosure } from '@chakra-ui/react';
import dynamic from 'next/dynamic';
import type { ChatHistoryItemResType } from '@fastgpt/global/core/chat/type';
import { moduleTemplatesFlat } from '@fastgpt/global/core/workflow/template/constants';
import Avatar from '@fastgpt/web/components/common/Avatar';
import MyIcon from '@fastgpt/web/components/common/Icon';
import { useSafeTranslation } from '@fastgpt/web/hooks/useSafeTranslation';
import { WholeResponseSideTab } from './SideTab';
import { WholeResponseContent } from './WholeResponseContent';
import { flattenResponse, getSideTabItems } from './responseData';
const RequestIdDetailModal = dynamic(() => import('@/components/core/ai/requestId'));
/**
* 工作流工具专用完整结果:列表沿用工具面板的父级滚动,详情覆盖整个结果区域。
*/
export const WorkflowToolResponseBox = React.memo(function WorkflowToolResponseBox({
response,
dataId
}: {
response: ChatHistoryItemResType[];
dataId?: string;
}) {
const { t } = useSafeTranslation();
const rootRef = useRef<HTMLDivElement>(null);
const [selectedRequestId, setSelectedRequestId] = useState<string>();
// 流式运行期间 response 可能原地追加内容,不能按数组引用缓存计算结果。
const flattedResponse = flattenResponse(response);
const [currentNodeId, setCurrentNodeId] = useState(
flattedResponse[0]?.id ?? flattedResponse[0]?.nodeId ?? ''
);
const firstNodeId = flattedResponse[0]?.id ?? flattedResponse[0]?.nodeId ?? '';
const hasCurrentNode = flattedResponse.some((item) => item.id === currentNodeId);
useEffect(() => {
if (!firstNodeId) {
setCurrentNodeId('');
return;
}
if (hasCurrentNode) return;
setCurrentNodeId(firstNodeId);
}, [currentNodeId, firstNodeId, hasCurrentNode]);
const activeModule = (flattedResponse.find((item) => item.id === currentNodeId) ||
flattedResponse[0]) as ChatHistoryItemResType;
// 流式响应会暂时按 parentId 挂成树,工具面板需要和历史结果保持一致,逐节点展示完整执行链路。
const sliderResponseList = getSideTabItems(flattedResponse);
const { isOpen: isOpenDetail, onOpen: onOpenDetail, onClose: onCloseDetail } = useDisclosure();
const handleOpenRequestIdDetail = useCallback((requestId: string) => {
setSelectedRequestId(requestId);
}, []);
return (
<Box ref={rootRef} minH={'100%'} h={'100%'}>
{isOpenDetail ? (
<Flex bg={'white'} flexDirection={'column'} h={'100%'} minH={0}>
<Flex
align={'center'}
justifyContent={'center'}
px={2}
py={2}
borderBottom={'sm'}
position={'relative'}
height={'40px'}
flexShrink={0}
>
<MyIcon
width={4}
height={4}
name="common/backLight"
onClick={(e) => {
e.stopPropagation();
onCloseDetail();
}}
position={'absolute'}
left={2}
top={'50%'}
transform={'translateY(-50%)'}
cursor={'pointer'}
_hover={{ color: 'primary.500' }}
/>
<Avatar
src={
activeModule.moduleLogo ||
moduleTemplatesFlat.find(
(template) => activeModule.moduleType === template.flowNodeType
)?.avatar
}
w={'1.25rem'}
h={'1.25rem'}
borderRadius={'sm'}
/>
<Box ml={1.5} lineHeight={'1.25rem'} alignItems={'center'}>
{t(activeModule.moduleName as any, activeModule.moduleNameArgs)}
</Box>
</Flex>
<Box flex={'1 1 0'} minH={0} overflowY={'auto'}>
<WholeResponseContent
dataId={dataId}
activeModule={activeModule}
hideTabs={true}
onOpenRequestIdDetail={handleOpenRequestIdDetail}
/>
</Box>
</Flex>
) : (
<WholeResponseSideTab
response={sliderResponseList}
value={currentNodeId}
onChange={(item: string) => {
setCurrentNodeId(item);
rootRef.current?.parentElement?.scrollTo({ top: 0 });
onOpenDetail();
}}
isMobile={true}
/>
)}
{selectedRequestId && (
<RequestIdDetailModal
onClose={() => setSelectedRequestId(undefined)}
requestId={selectedRequestId}
/>
)}
</Box>
);
});
...@@ -193,7 +193,16 @@ const DetailLogsModal = ({ ...@@ -193,7 +193,16 @@ const DetailLogsModal = ({
<Flex flex={'1 0 0'} h={0}> <Flex flex={'1 0 0'} h={0}>
<Box flex={'1 0 0'} h={'100%'} minH={0} overflow={isPlugin ? 'hidden' : 'auto'}> <Box flex={'1 0 0'} h={'100%'} minH={0} overflow={isPlugin ? 'hidden' : 'auto'}>
{isPlugin ? ( {isPlugin ? (
<Box px={5} py={2} h={'100%'} minH={0} display={'flex'} flexDirection={'column'}> <Box
px={5}
py={2}
h={'100%'}
minH={0}
minW={0}
overflowY={'auto'}
display={'flex'}
flexDirection={'column'}
>
<PluginRunBox appId={appId} chatId={chatId} /> <PluginRunBox appId={appId} chatId={chatId} />
</Box> </Box>
) : ( ) : (
......
...@@ -10,7 +10,6 @@ import { type StoreEdgeItemType } from '@fastgpt/global/core/workflow/type/edge' ...@@ -10,7 +10,6 @@ import { type StoreEdgeItemType } from '@fastgpt/global/core/workflow/type/edge'
import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant'; import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant';
import { AppTypeEnum } from '@fastgpt/global/core/app/constants'; import { AppTypeEnum } from '@fastgpt/global/core/app/constants';
import dynamic from 'next/dynamic'; import dynamic from 'next/dynamic';
import { Box } from '@chakra-ui/react';
import { type AppChatConfigType } from '@fastgpt/global/core/app/type'; import { type AppChatConfigType } from '@fastgpt/global/core/app/type';
import ChatBox from '@/components/core/chat/ChatContainer/ChatBox'; import ChatBox from '@/components/core/chat/ChatContainer/ChatBox';
import { useChatStore } from '@/web/core/chat/context/useChatStore'; import { useChatStore } from '@/web/core/chat/context/useChatStore';
...@@ -21,6 +20,7 @@ import { useTranslation } from 'next-i18next'; ...@@ -21,6 +20,7 @@ import { useTranslation } from 'next-i18next';
import { ChatTypeEnum } from '@/components/core/chat/ChatContainer/ChatBox/constants'; import { ChatTypeEnum } from '@/components/core/chat/ChatContainer/ChatBox/constants';
import { ChatSourceTypeEnum } from '@fastgpt/global/core/chat/constants'; import { ChatSourceTypeEnum } from '@fastgpt/global/core/chat/constants';
import { getAppChatSourceKey } from '@/web/core/chat/utils'; import { getAppChatSourceKey } from '@/web/core/chat/utils';
import { Box } from '@chakra-ui/react';
const PluginRunBox = dynamic(() => import('@/components/core/chat/ChatContainer/PluginRunBox')); const PluginRunBox = dynamic(() => import('@/components/core/chat/ChatContainer/PluginRunBox'));
...@@ -172,7 +172,15 @@ export const useChatTest = ({ ...@@ -172,7 +172,15 @@ export const useChatTest = ({
const CustomChatContainer = useMemoizedFn(() => const CustomChatContainer = useMemoizedFn(() =>
appDetail.type === AppTypeEnum.workflowTool ? ( appDetail.type === AppTypeEnum.workflowTool ? (
<Box p={5} h={'100%'} minH={0} display={'flex'} flexDirection={'column'}> <Box
p={5}
h={'100%'}
minH={0}
minW={0}
overflowY={'auto'}
display={'flex'}
flexDirection={'column'}
>
<PluginRunBox <PluginRunBox
appId={appId} appId={appId}
chatId={chatId} chatId={chatId}
......
...@@ -174,7 +174,7 @@ const AppChatWindow = () => { ...@@ -174,7 +174,7 @@ const AppChatWindow = () => {
); );
return ( return (
<Flex h={'100%'} flexDirection={['column', 'row']}> <Flex h={'100%'} minH={0} minW={0} flexDirection={['column', 'row']}>
{/* set window title and icon */} {/* set window title and icon */}
<NextHead <NextHead
title={isCurrentChatReady ? chatBoxData.app.name : undefined} title={isCurrentChatReady ? chatBoxData.app.name : undefined}
...@@ -202,11 +202,14 @@ const AppChatWindow = () => { ...@@ -202,11 +202,14 @@ const AppChatWindow = () => {
<Flex <Flex
position={'relative'} position={'relative'}
h={[0, '100%']} h={[0, '100%']}
minH={0}
minW={0}
w={['100%', 0]} w={['100%', 0]}
flex={'1 0 0'} flex={'1 0 0'}
flexDirection={'column'} flexDirection={'column'}
> >
{isPc ? ( {!isPlugin &&
(isPc ? (
<ChatWindowHeader <ChatWindowHeader
title={chatWindowTitle} title={chatWindowTitle}
history={chatRecords} history={chatRecords}
...@@ -224,7 +227,9 @@ const AppChatWindow = () => { ...@@ -224,7 +227,9 @@ const AppChatWindow = () => {
> >
<IconButton <IconButton
aria-label="Open history" aria-label="Open history"
icon={<MyIcon name="core/chat/sidebar/menu" w="20px" h="20px" color="currentColor" />} icon={
<MyIcon name="core/chat/sidebar/menu" w="20px" h="20px" color="currentColor" />
}
variant="unstyled" variant="unstyled"
{...mobileChatHeaderIconButtonStyle} {...mobileChatHeaderIconButtonStyle}
onClick={onOpenSlider} onClick={onOpenSlider}
...@@ -257,9 +262,9 @@ const AppChatWindow = () => { ...@@ -257,9 +262,9 @@ const AppChatWindow = () => {
<ToolMenu history={chatRecords} chatType={ChatTypeEnum.chat} /> <ToolMenu history={chatRecords} chatType={ChatTypeEnum.chat} />
</Box> </Box>
</Flex> </Flex>
)} ))}
<Box flex={'1 0 0'} bg={'white'}> <Box flex={'1 0 0'} minH={0} minW={0} overflow={'hidden'} bg={'white'}>
{isPlugin ? ( {isPlugin ? (
<CustomPluginRunBox <CustomPluginRunBox
appId={appId} appId={appId}
......
...@@ -23,14 +23,32 @@ const CustomPluginRunBox = (props: PluginRunBoxProps) => { ...@@ -23,14 +23,32 @@ const CustomPluginRunBox = (props: PluginRunBoxProps) => {
}, [isPc, setTab, tab]); }, [isPc, setTab, tab]);
return isPc ? ( return isPc ? (
<Grid gridTemplateColumns={'450px 1fr'} h={'100%'}> <Grid gridTemplateColumns={'450px 1fr'} h={'100%'} minH={0} minW={0}>
<Box px={3} py={4} borderRight={'base'} h={'100%'} overflowY={'auto'} w={'100%'}> <Box
px={3}
py={4}
borderRight={'base'}
h={'100%'}
minH={0}
minW={0}
overflowY={'auto'}
w={'100%'}
>
<Box color={'myGray.900'} pb={5}> <Box color={'myGray.900'} pb={5}>
{t('common:Input')} {t('common:Input')}
</Box> </Box>
<PluginRunBox {...props} showTab={PluginRunBoxTabEnum.input} /> <PluginRunBox {...props} showTab={PluginRunBoxTabEnum.input} />
</Box> </Box>
<Stack px={3} py={4} h={'100%'} alignItems={'flex-start'} w={'100%'} overflow={'auto'}> <Stack
px={3}
py={4}
h={'100%'}
minH={0}
minW={0}
alignItems={'flex-start'}
w={'100%'}
overflow={'hidden'}
>
<Box display={'inline-block'}> <Box display={'inline-block'}>
<LightRowTabs<PluginRunBoxTabEnum> <LightRowTabs<PluginRunBoxTabEnum>
list={[ list={[
...@@ -48,13 +66,14 @@ const CustomPluginRunBox = (props: PluginRunBoxProps) => { ...@@ -48,13 +66,14 @@ const CustomPluginRunBox = (props: PluginRunBoxProps) => {
fontSize={'sm'} fontSize={'sm'}
/> />
</Box> </Box>
<Box flex={'1 0 0'} overflow={'auto'} w={'100%'}> <Box flex={'1 0 0'} minH={0} minW={0} overflowY={'auto'} w={'100%'}>
<PluginRunBox {...props} /> <PluginRunBox {...props} />
</Box> </Box>
</Stack> </Stack>
</Grid> </Grid>
) : ( ) : (
<Stack py={2} px={4} h={'100%'}> <Stack pt={2} h={'100%'} minH={0} minW={0} overflow={'hidden'}>
<Box px={4}>
<LightRowTabs<PluginRunBoxTabEnum> <LightRowTabs<PluginRunBoxTabEnum>
list={[ list={[
{ label: t('common:Input'), value: PluginRunBoxTabEnum.input }, { label: t('common:Input'), value: PluginRunBoxTabEnum.input },
...@@ -71,9 +90,12 @@ const CustomPluginRunBox = (props: PluginRunBoxProps) => { ...@@ -71,9 +90,12 @@ const CustomPluginRunBox = (props: PluginRunBoxProps) => {
py={0} py={0}
fontSize={'sm'} fontSize={'sm'}
/> />
<Box flex={'1 0 0'} w={'100%'}> </Box>
<Box flex={'1 0 0'} minH={0} minW={0} overflowY={'auto'} w={'100%'}>
<Box px={4} pb={2}>
<PluginRunBox {...props} /> <PluginRunBox {...props} />
</Box> </Box>
</Box>
</Stack> </Stack>
); );
}; };
......
...@@ -53,15 +53,17 @@ export async function handler(req: ApiRequestProps): Promise<GetPaginationRecord ...@@ -53,15 +53,17 @@ export async function handler(req: ApiRequestProps): Promise<GetPaginationRecord
chatId, chatId,
outLinkAuthData outLinkAuthData
}); });
// 后续查询统一使用鉴权解析后的来源,避免分享链接请求体缺少 sourceType 时降级为普通对话。
const resolvedSourceType = authRes.sourceType;
const resolvedSourceId = authRes.sourceId; const resolvedSourceId = authRes.sourceId;
const [app] = await Promise.all([ const [app] = await Promise.all([
sourceType === ChatSourceTypeEnum.app resolvedSourceType === ChatSourceTypeEnum.app
? MongoApp.findById(resolvedSourceId, 'type').lean() ? MongoApp.findById(resolvedSourceId, 'type').lean()
: null : null
]); ]);
if (sourceType === ChatSourceTypeEnum.app && !app) { if (resolvedSourceType === ChatSourceTypeEnum.app && !app) {
return Promise.reject(AppErrEnum.unExist); return Promise.reject(AppErrEnum.unExist);
} }
const isPlugin = app?.type === AppTypeEnum.workflowTool; const isPlugin = app?.type === AppTypeEnum.workflowTool;
...@@ -76,7 +78,7 @@ export async function handler(req: ApiRequestProps): Promise<GetPaginationRecord ...@@ -76,7 +78,7 @@ export async function handler(req: ApiRequestProps): Promise<GetPaginationRecord
}; };
const { total, histories: sourceHistories } = await getChatItems({ const { total, histories: sourceHistories } = await getChatItems({
sourceType, sourceType: resolvedSourceType,
sourceId: resolvedSourceId, sourceId: resolvedSourceId,
chatId, chatId,
field: fieldMap[type], field: fieldMap[type],
......
...@@ -55,14 +55,16 @@ async function handler(req: ApiRequestProps): Promise<GetRecordsV2ResponseType> ...@@ -55,14 +55,16 @@ async function handler(req: ApiRequestProps): Promise<GetRecordsV2ResponseType>
sourceId, sourceId,
chatId chatId
}); });
// 后续查询统一使用鉴权解析后的来源,避免分享链接请求体缺少 sourceType 时降级为普通对话。
const resolvedSourceType = authRes.sourceType;
const resolvedSourceId = authRes.sourceId; const resolvedSourceId = authRes.sourceId;
const app = const app =
sourceType === ChatSourceTypeEnum.app resolvedSourceType === ChatSourceTypeEnum.app
? await MongoApp.findById(resolvedSourceId, 'type').lean() ? await MongoApp.findById(resolvedSourceId, 'type').lean()
: null; : null;
if (sourceType === ChatSourceTypeEnum.app && !app) { if (resolvedSourceType === ChatSourceTypeEnum.app && !app) {
return Promise.reject(AppErrEnum.unExist); return Promise.reject(AppErrEnum.unExist);
} }
const isPlugin = app?.type === AppTypeEnum.workflowTool; const isPlugin = app?.type === AppTypeEnum.workflowTool;
...@@ -78,7 +80,7 @@ async function handler(req: ApiRequestProps): Promise<GetRecordsV2ResponseType> ...@@ -78,7 +80,7 @@ async function handler(req: ApiRequestProps): Promise<GetRecordsV2ResponseType>
const result = await getChatItems({ const result = await getChatItems({
includeDeleted, includeDeleted,
sourceType, sourceType: resolvedSourceType,
sourceId: resolvedSourceId, sourceId: resolvedSourceId,
chatId, chatId,
field: fieldMap[type], field: fieldMap[type],
......
...@@ -632,7 +632,8 @@ const authShareChat = async ({ ...@@ -632,7 +632,8 @@ const authShareChat = async ({
app, app,
apikey: '', apikey: '',
authType, authType,
responseAllData: false, // 工作流工具的分享运行需要把完整节点链路返回给运行面板;普通对话仍按公开字段过滤。
responseAllData: app.type === AppTypeEnum.workflowTool,
showCite, showCite,
outLinkUserId: uid, outLinkUserId: uid,
showRunningStatus, showRunningStatus,
......
...@@ -632,7 +632,8 @@ const authShareChat = async ({ ...@@ -632,7 +632,8 @@ const authShareChat = async ({
app, app,
apikey: '', apikey: '',
authType, authType,
responseAllData: false, // 工作流工具的分享运行需要把完整节点链路返回给运行面板;普通对话仍按公开字段过滤。
responseAllData: app.type === AppTypeEnum.workflowTool,
showCite, showCite,
outLinkUserId: uid, outLinkUserId: uid,
showRunningStatus, showRunningStatus,
......
...@@ -304,6 +304,8 @@ const OutLink = (props: Props) => { ...@@ -304,6 +304,8 @@ const OutLink = (props: Props) => {
/> />
<Flex <Flex
h={'full'} h={'full'}
minH={0}
minW={0}
gap={datasetCiteData ? 0 : 4} gap={datasetCiteData ? 0 : 4}
{...(isEmbed ? { p: '0 !important', borderRadius: '0', boxShadow: 'none' } : { p: [0, 5] })} {...(isEmbed ? { p: '0 !important', borderRadius: '0', boxShadow: 'none' } : { p: [0, 5] })}
> >
...@@ -311,6 +313,8 @@ const OutLink = (props: Props) => { ...@@ -311,6 +313,8 @@ const OutLink = (props: Props) => {
<PageContainer <PageContainer
flex={'1 0 0'} flex={'1 0 0'}
w={0} w={0}
minH={0}
minW={0}
p={'0 !important'} p={'0 !important'}
insertProps={ insertProps={
datasetCiteData datasetCiteData
...@@ -320,19 +324,22 @@ const OutLink = (props: Props) => { ...@@ -320,19 +324,22 @@ const OutLink = (props: Props) => {
: undefined : undefined
} }
> >
<Flex h={'100%'} flexDirection={['column', 'row']}> <Flex h={'100%'} minH={0} minW={0} flexDirection={['column', 'row']}>
{RenderHistoryList} {RenderHistoryList}
{/* chat container */} {/* chat container */}
<Flex <Flex
position={'relative'} position={'relative'}
h={[0, '100%']} h={[0, '100%']}
minH={0}
minW={0}
w={['100%', 0]} w={['100%', 0]}
flex={'1 0 0'} flex={'1 0 0'}
flexDirection={'column'} flexDirection={'column'}
> >
{/* header */} {/* header */}
{showHead === '1' && {showHead === '1' &&
!isPlugin &&
(isPc ? ( (isPc ? (
<ChatWindowHeader <ChatWindowHeader
title={chatWindowTitle} title={chatWindowTitle}
...@@ -414,7 +421,7 @@ const OutLink = (props: Props) => { ...@@ -414,7 +421,7 @@ const OutLink = (props: Props) => {
</Flex> </Flex>
))} ))}
{/* chat box */} {/* chat box */}
<Box flex={1} bg={'white'}> <Box flex={1} minH={0} minW={0} overflow={'hidden'} bg={'white'}>
{isPlugin ? ( {isPlugin ? (
<CustomPluginRunBox <CustomPluginRunBox
appId={appId} appId={appId}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment