Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
dify
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ai-tech
dify
Commits
bf58d789
Commit
bf58d789
authored
Jul 20, 2023
by
Joel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: thinking ui
parent
477afe85
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
416 additions
and
13 deletions
+416
-13
index.tsx
web/app/components/app/chat/thought/index.tsx
+29
-9
index.tsx
web/app/components/app/configuration/config-model/index.tsx
+2
-2
data-set.svg
.../components/base/icons/assets/public/thought/data-set.svg
+10
-0
search.svg
...pp/components/base/icons/assets/public/thought/search.svg
+10
-0
thought-list.svg
...ponents/base/icons/assets/public/thought/thought-list.svg
+8
-0
web-reader.svg
...omponents/base/icons/assets/public/thought/web-reader.svg
+10
-0
DataSet.json
...app/components/base/icons/src/public/thought/DataSet.json
+64
-0
DataSet.tsx
web/app/components/base/icons/src/public/thought/DataSet.tsx
+14
-0
Search.json
web/app/components/base/icons/src/public/thought/Search.json
+64
-0
Search.tsx
web/app/components/base/icons/src/public/thought/Search.tsx
+14
-0
ThoughtList.json
...components/base/icons/src/public/thought/ThoughtList.json
+83
-0
ThoughtList.tsx
.../components/base/icons/src/public/thought/ThoughtList.tsx
+14
-0
WebReader.json
...p/components/base/icons/src/public/thought/WebReader.json
+64
-0
WebReader.tsx
...pp/components/base/icons/src/public/thought/WebReader.tsx
+14
-0
index.ts
web/app/components/base/icons/src/public/thought/index.ts
+4
-0
index.tsx
...ents/explore/universal-chat/config/model-config/index.tsx
+1
-1
index.tsx
web/app/components/explore/universal-chat/index.tsx
+1
-1
explore.en.ts
web/i18n/lang/explore.en.ts
+5
-0
explore.zh.ts
web/i18n/lang/explore.zh.ts
+5
-0
No files found.
web/app/components/app/chat/thought/index.tsx
View file @
bf58d789
...
...
@@ -2,31 +2,51 @@
import
type
{
FC
}
from
'react'
import
React
from
'react'
import
cn
from
'classnames'
import
{
useTranslation
}
from
'react-i18next'
import
type
{
ThoughtItem
}
from
'../type'
import
s
from
'./style.module.css'
import
{
DataSet
,
Search
,
ThoughtList
,
WebReader
}
from
'@/app/components/base/icons/src/public/thought'
import
{
ChevronDown
}
from
'@/app/components/base/icons/src/vender/line/arrows'
export
type
IThoughtProps
=
{
list
:
ThoughtItem
[]
}
const
getIcon
=
(
toolId
:
string
)
=>
{
switch
(
toolId
)
{
case
'dataset'
:
return
<
DataSet
/>
case
'web_reader'
:
return
<
WebReader
/>
default
:
return
<
Search
/>
}
}
const
Thought
:
FC
<
IThoughtProps
>
=
({
list
,
})
=>
{
const
{
t
}
=
useTranslation
()
const
[
isShowDetail
,
setIsShowDetail
]
=
React
.
useState
(
false
)
const
renderItem
=
(
item
:
ThoughtItem
)
=>
(
<
div
className=
'flex space-x-1'
key=
{
item
.
id
}
>
<
div
className=
'shrink-0'
>
{
item
.
tool
}
</
div
>
<
div
className=
'flex space-x-1
items-center h-6
'
key=
{
item
.
id
}
>
<
div
className=
'shrink-0'
>
{
getIcon
(
item
.
tool
)
}
</
div
>
<
div
>
{
item
.
thought
}
</
div
>
</
div
>
)
// const [showMOre]
return
(
<
div
className=
{
cn
(
s
.
wrap
,
'mb-2 px-2 py-0.5 rounded-md'
)
}
>
<
div
className=
'flex items-center h-8 space-x-1'
>
<
div
>
Show the process of thinking
</
div
>
</
div
>
<
div
>
{
list
.
map
(
item
=>
renderItem
(
item
))
}
<
div
className=
{
cn
(
s
.
wrap
,
'inline-block mb-2 px-2 py-0.5 rounded-md text-xs text-gray-500 font-medium'
)
}
>
<
div
className=
'flex items-center h-6 space-x-1 cursor-pointer'
onClick=
{
()
=>
setIsShowDetail
(
!
isShowDetail
)
}
>
<
ThoughtList
/>
<
div
>
{
t
(
`explore.universalChat.thought.${isShowDetail ? 'hide' : 'show'}`
)
}{
t
(
'explore.universalChat.thought.processOfThought'
)
}
</
div
>
<
ChevronDown
className=
{
isShowDetail
?
'rotate-180'
:
''
}
/>
</
div
>
{
isShowDetail
&&
(
<
div
>
{
list
.
map
(
item
=>
renderItem
(
item
))
}
</
div
>
)
}
</
div
>
)
}
...
...
web/app/components/app/configuration/config-model/index.tsx
View file @
bf58d789
...
...
@@ -191,7 +191,7 @@ const ConifgModel: FC<IConifgModelProps> = ({
className=
{
cn
(
'flex items-center border h-8 px-2.5 space-x-2 rounded-lg'
,
disabled
?
diabledStyle
:
ableStyle
)
}
onClick=
{
()
=>
!
disabled
&&
toogleShowConfig
()
}
>
<
ModelIcon
modelId=
{
currModel
?.
id
}
/>
<
ModelIcon
modelId=
{
currModel
?.
id
as
string
}
/>
<
div
className=
'text-[13px] text-gray-900 font-medium'
>
{
selectedModel
.
name
}
</
div
>
{
disabled
?
<
InformationCircleIcon
className=
'w-3.5 h-3.5 text-[#F79009]'
/>
:
<
Cog8ToothIcon
className=
'w-3.5 h-3.5 text-gray-500'
/>
}
</
div
>
...
...
@@ -218,7 +218,7 @@ const ConifgModel: FC<IConifgModelProps> = ({
{
/* model selector */
}
<
div
className=
"relative"
style=
{
{
zIndex
:
30
}
}
>
<
div
ref=
{
triggerRef
}
onClick=
{
()
=>
!
selectModelDisabled
&&
toogleOption
()
}
className=
{
cn
(
selectModelDisabled
?
'cursor-not-allowed'
:
'cursor-pointer'
,
'flex items-center h-9 px-3 space-x-2 rounded-lg bg-gray-50 '
)
}
>
<
ModelIcon
modelId=
{
currModel
?.
id
}
/>
<
ModelIcon
modelId=
{
currModel
?.
id
as
string
}
/>
<
div
className=
"text-sm gray-900"
>
{
selectedModel
?.
name
}
</
div
>
{
!
selectModelDisabled
&&
<
ChevronDownIcon
className=
{
cn
(
isShowOption
&&
'rotate-180'
,
'w-[14px] h-[14px] text-gray-500'
)
}
/>
}
</
div
>
...
...
web/app/components/base/icons/assets/public/thought/data-set.svg
0 → 100644
View file @
bf58d789
<svg
width=
"12"
height=
"12"
viewBox=
"0 0 12 12"
fill=
"none"
xmlns=
"http://www.w3.org/2000/svg"
>
<g
clip-path=
"url(#clip0_7847_32895)"
>
<path
d=
"M10.5 2.5C10.5 3.32843 8.48528 4 6 4C3.51472 4 1.5 3.32843 1.5 2.5M10.5 2.5C10.5 1.67157 8.48528 1 6 1C3.51472 1 1.5 1.67157 1.5 2.5M10.5 2.5V9.5C10.5 10.33 8.5 11 6 11C3.5 11 1.5 10.33 1.5 9.5V2.5M10.5 6C10.5 6.83 8.5 7.5 6 7.5C3.5 7.5 1.5 6.83 1.5 6"
stroke=
"#667085"
stroke-width=
"1.25"
stroke-linecap=
"round"
stroke-linejoin=
"round"
/>
</g>
<defs>
<clipPath
id=
"clip0_7847_32895"
>
<rect
width=
"12"
height=
"12"
fill=
"white"
/>
</clipPath>
</defs>
</svg>
web/app/components/base/icons/assets/public/thought/search.svg
0 → 100644
View file @
bf58d789
<svg
width=
"12"
height=
"12"
viewBox=
"0 0 12 12"
fill=
"none"
xmlns=
"http://www.w3.org/2000/svg"
>
<g
clip-path=
"url(#clip0_7847_32899)"
>
<path
d=
"M10.5 10.5L8.75005 8.75M10 5.75C10 8.09721 8.09721 10 5.75 10C3.40279 10 1.5 8.09721 1.5 5.75C1.5 3.40279 3.40279 1.5 5.75 1.5C8.09721 1.5 10 3.40279 10 5.75Z"
stroke=
"#667085"
stroke-width=
"1.25"
stroke-linecap=
"round"
stroke-linejoin=
"round"
/>
</g>
<defs>
<clipPath
id=
"clip0_7847_32899"
>
<rect
width=
"12"
height=
"12"
fill=
"white"
/>
</clipPath>
</defs>
</svg>
web/app/components/base/icons/assets/public/thought/thought-list.svg
0 → 100644
View file @
bf58d789
<svg
width=
"12"
height=
"12"
viewBox=
"0 0 12 12"
fill=
"none"
xmlns=
"http://www.w3.org/2000/svg"
>
<path
fill-rule=
"evenodd"
clip-rule=
"evenodd"
d=
"M4 6C4 5.72386 4.22386 5.5 4.5 5.5L10.5 5.5C10.7761 5.5 11 5.72386 11 6C11 6.27614 10.7761 6.5 10.5 6.5L4.5 6.5C4.22386 6.5 4 6.27614 4 6Z"
fill=
"#667085"
/>
<path
fill-rule=
"evenodd"
clip-rule=
"evenodd"
d=
"M4 3C4 2.72386 4.22386 2.5 4.5 2.5L10.5 2.5C10.7761 2.5 11 2.72386 11 3C11 3.27614 10.7761 3.5 10.5 3.5L4.5 3.5C4.22386 3.5 4 3.27614 4 3Z"
fill=
"#667085"
/>
<path
fill-rule=
"evenodd"
clip-rule=
"evenodd"
d=
"M4 9C4 8.72386 4.22386 8.5 4.5 8.5L10.5 8.5C10.7761 8.5 11 8.72386 11 9C11 9.27614 10.7761 9.5 10.5 9.5L4.5 9.5C4.22386 9.5 4 9.27614 4 9Z"
fill=
"#667085"
/>
<path
fill-rule=
"evenodd"
clip-rule=
"evenodd"
d=
"M1 6C1 5.44772 1.44772 5 2 5C2.55228 5 3 5.44772 3 6C3 6.55228 2.55228 7 2 7C1.44772 7 1 6.55228 1 6Z"
fill=
"#667085"
/>
<path
fill-rule=
"evenodd"
clip-rule=
"evenodd"
d=
"M1 3C1 2.44772 1.44772 2 2 2C2.55228 2 3 2.44772 3 3C3 3.55228 2.55228 4 2 4C1.44772 4 1 3.55228 1 3Z"
fill=
"#667085"
/>
<path
fill-rule=
"evenodd"
clip-rule=
"evenodd"
d=
"M1 9C1 8.44772 1.44772 8 2 8C2.55228 8 3 8.44772 3 9C3 9.55228 2.55228 10 2 10C1.44772 10 1 9.55228 1 9Z"
fill=
"#667085"
/>
</svg>
web/app/components/base/icons/assets/public/thought/web-reader.svg
0 → 100644
View file @
bf58d789
<svg
width=
"12"
height=
"12"
viewBox=
"0 0 12 12"
fill=
"none"
xmlns=
"http://www.w3.org/2000/svg"
>
<g
clip-path=
"url(#clip0_7847_32887)"
>
<path
d=
"M4.5 1.75V1M2.53033 2.53033L2 2M2.53033 6.5L2 7.03033M6.5 2.53033L7.03033 2M1.75 4.5H1M7.93224 8.09479L6.68637 10.4085C6.54404 10.6728 6.47287 10.805 6.38725 10.8384C6.31295 10.8674 6.22926 10.8592 6.16199 10.8164C6.08447 10.767 6.04028 10.6235 5.95191 10.3366L4.22259 4.72263C4.1504 4.48825 4.1143 4.37107 4.14335 4.29192C4.16865 4.22298 4.22298 4.16865 4.29192 4.14335C4.37107 4.1143 4.48825 4.1504 4.72262 4.2226L10.3366 5.95192C10.6235 6.0403 10.767 6.08449 10.8164 6.16201C10.8592 6.22928 10.8674 6.31297 10.8384 6.38727C10.805 6.47289 10.6728 6.54406 10.4085 6.68639L8.09479 7.93224C8.05551 7.95339 8.03587 7.96396 8.01868 7.97755C8.00341 7.98961 7.98961 8.00341 7.97755 8.01868C7.96396 8.03587 7.95339 8.05551 7.93224 8.09479Z"
stroke=
"#667085"
stroke-width=
"1.25"
stroke-linecap=
"round"
stroke-linejoin=
"round"
/>
</g>
<defs>
<clipPath
id=
"clip0_7847_32887"
>
<rect
width=
"12"
height=
"12"
fill=
"white"
/>
</clipPath>
</defs>
</svg>
web/app/components/base/icons/src/public/thought/DataSet.json
0 → 100644
View file @
bf58d789
{
"icon"
:
{
"type"
:
"element"
,
"isRootNode"
:
true
,
"name"
:
"svg"
,
"attributes"
:
{
"width"
:
"12"
,
"height"
:
"12"
,
"viewBox"
:
"0 0 12 12"
,
"fill"
:
"none"
,
"xmlns"
:
"http://www.w3.org/2000/svg"
},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"g"
,
"attributes"
:
{
"clip-path"
:
"url(#clip0_7847_32895)"
},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"path"
,
"attributes"
:
{
"d"
:
"M10.5 2.5C10.5 3.32843 8.48528 4 6 4C3.51472 4 1.5 3.32843 1.5 2.5M10.5 2.5C10.5 1.67157 8.48528 1 6 1C3.51472 1 1.5 1.67157 1.5 2.5M10.5 2.5V9.5C10.5 10.33 8.5 11 6 11C3.5 11 1.5 10.33 1.5 9.5V2.5M10.5 6C10.5 6.83 8.5 7.5 6 7.5C3.5 7.5 1.5 6.83 1.5 6"
,
"stroke"
:
"#667085"
,
"stroke-width"
:
"1.25"
,
"stroke-linecap"
:
"round"
,
"stroke-linejoin"
:
"round"
},
"children"
:
[]
}
]
},
{
"type"
:
"element"
,
"name"
:
"defs"
,
"attributes"
:
{},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"clipPath"
,
"attributes"
:
{
"id"
:
"clip0_7847_32895"
},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"rect"
,
"attributes"
:
{
"width"
:
"12"
,
"height"
:
"12"
,
"fill"
:
"white"
},
"children"
:
[]
}
]
}
]
}
]
},
"name"
:
"DataSet"
}
\ No newline at end of file
web/app/components/base/icons/src/public/thought/DataSet.tsx
0 → 100644
View file @
bf58d789
// GENERATE BY script
// DON NOT EDIT IT MANUALLY
import
*
as
React
from
'react'
import
data
from
'./DataSet.json'
import
IconBase
from
'@/app/components/base/icons/IconBase'
import
type
{
IconBaseProps
,
IconData
}
from
'@/app/components/base/icons/IconBase'
const
Icon
=
React
.
forwardRef
<
React
.
MutableRefObject
<
SVGElement
>
,
Omit
<
IconBaseProps
,
'data'
>>
((
props
,
ref
,
)
=>
<
IconBase
{
...
props
}
ref=
{
ref
}
data=
{
data
as
IconData
}
/>)
export
default
Icon
web/app/components/base/icons/src/public/thought/Search.json
0 → 100644
View file @
bf58d789
{
"icon"
:
{
"type"
:
"element"
,
"isRootNode"
:
true
,
"name"
:
"svg"
,
"attributes"
:
{
"width"
:
"12"
,
"height"
:
"12"
,
"viewBox"
:
"0 0 12 12"
,
"fill"
:
"none"
,
"xmlns"
:
"http://www.w3.org/2000/svg"
},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"g"
,
"attributes"
:
{
"clip-path"
:
"url(#clip0_7847_32899)"
},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"path"
,
"attributes"
:
{
"d"
:
"M10.5 10.5L8.75005 8.75M10 5.75C10 8.09721 8.09721 10 5.75 10C3.40279 10 1.5 8.09721 1.5 5.75C1.5 3.40279 3.40279 1.5 5.75 1.5C8.09721 1.5 10 3.40279 10 5.75Z"
,
"stroke"
:
"#667085"
,
"stroke-width"
:
"1.25"
,
"stroke-linecap"
:
"round"
,
"stroke-linejoin"
:
"round"
},
"children"
:
[]
}
]
},
{
"type"
:
"element"
,
"name"
:
"defs"
,
"attributes"
:
{},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"clipPath"
,
"attributes"
:
{
"id"
:
"clip0_7847_32899"
},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"rect"
,
"attributes"
:
{
"width"
:
"12"
,
"height"
:
"12"
,
"fill"
:
"white"
},
"children"
:
[]
}
]
}
]
}
]
},
"name"
:
"Search"
}
\ No newline at end of file
web/app/components/base/icons/src/public/thought/Search.tsx
0 → 100644
View file @
bf58d789
// GENERATE BY script
// DON NOT EDIT IT MANUALLY
import
*
as
React
from
'react'
import
data
from
'./Search.json'
import
IconBase
from
'@/app/components/base/icons/IconBase'
import
type
{
IconBaseProps
,
IconData
}
from
'@/app/components/base/icons/IconBase'
const
Icon
=
React
.
forwardRef
<
React
.
MutableRefObject
<
SVGElement
>
,
Omit
<
IconBaseProps
,
'data'
>>
((
props
,
ref
,
)
=>
<
IconBase
{
...
props
}
ref=
{
ref
}
data=
{
data
as
IconData
}
/>)
export
default
Icon
web/app/components/base/icons/src/public/thought/ThoughtList.json
0 → 100644
View file @
bf58d789
{
"icon"
:
{
"type"
:
"element"
,
"isRootNode"
:
true
,
"name"
:
"svg"
,
"attributes"
:
{
"width"
:
"12"
,
"height"
:
"12"
,
"viewBox"
:
"0 0 12 12"
,
"fill"
:
"none"
,
"xmlns"
:
"http://www.w3.org/2000/svg"
},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"path"
,
"attributes"
:
{
"fill-rule"
:
"evenodd"
,
"clip-rule"
:
"evenodd"
,
"d"
:
"M4 6C4 5.72386 4.22386 5.5 4.5 5.5L10.5 5.5C10.7761 5.5 11 5.72386 11 6C11 6.27614 10.7761 6.5 10.5 6.5L4.5 6.5C4.22386 6.5 4 6.27614 4 6Z"
,
"fill"
:
"#667085"
},
"children"
:
[]
},
{
"type"
:
"element"
,
"name"
:
"path"
,
"attributes"
:
{
"fill-rule"
:
"evenodd"
,
"clip-rule"
:
"evenodd"
,
"d"
:
"M4 3C4 2.72386 4.22386 2.5 4.5 2.5L10.5 2.5C10.7761 2.5 11 2.72386 11 3C11 3.27614 10.7761 3.5 10.5 3.5L4.5 3.5C4.22386 3.5 4 3.27614 4 3Z"
,
"fill"
:
"#667085"
},
"children"
:
[]
},
{
"type"
:
"element"
,
"name"
:
"path"
,
"attributes"
:
{
"fill-rule"
:
"evenodd"
,
"clip-rule"
:
"evenodd"
,
"d"
:
"M4 9C4 8.72386 4.22386 8.5 4.5 8.5L10.5 8.5C10.7761 8.5 11 8.72386 11 9C11 9.27614 10.7761 9.5 10.5 9.5L4.5 9.5C4.22386 9.5 4 9.27614 4 9Z"
,
"fill"
:
"#667085"
},
"children"
:
[]
},
{
"type"
:
"element"
,
"name"
:
"path"
,
"attributes"
:
{
"fill-rule"
:
"evenodd"
,
"clip-rule"
:
"evenodd"
,
"d"
:
"M1 6C1 5.44772 1.44772 5 2 5C2.55228 5 3 5.44772 3 6C3 6.55228 2.55228 7 2 7C1.44772 7 1 6.55228 1 6Z"
,
"fill"
:
"#667085"
},
"children"
:
[]
},
{
"type"
:
"element"
,
"name"
:
"path"
,
"attributes"
:
{
"fill-rule"
:
"evenodd"
,
"clip-rule"
:
"evenodd"
,
"d"
:
"M1 3C1 2.44772 1.44772 2 2 2C2.55228 2 3 2.44772 3 3C3 3.55228 2.55228 4 2 4C1.44772 4 1 3.55228 1 3Z"
,
"fill"
:
"#667085"
},
"children"
:
[]
},
{
"type"
:
"element"
,
"name"
:
"path"
,
"attributes"
:
{
"fill-rule"
:
"evenodd"
,
"clip-rule"
:
"evenodd"
,
"d"
:
"M1 9C1 8.44772 1.44772 8 2 8C2.55228 8 3 8.44772 3 9C3 9.55228 2.55228 10 2 10C1.44772 10 1 9.55228 1 9Z"
,
"fill"
:
"#667085"
},
"children"
:
[]
}
]
},
"name"
:
"ThoughtList"
}
\ No newline at end of file
web/app/components/base/icons/src/public/thought/ThoughtList.tsx
0 → 100644
View file @
bf58d789
// GENERATE BY script
// DON NOT EDIT IT MANUALLY
import
*
as
React
from
'react'
import
data
from
'./ThoughtList.json'
import
IconBase
from
'@/app/components/base/icons/IconBase'
import
type
{
IconBaseProps
,
IconData
}
from
'@/app/components/base/icons/IconBase'
const
Icon
=
React
.
forwardRef
<
React
.
MutableRefObject
<
SVGElement
>
,
Omit
<
IconBaseProps
,
'data'
>>
((
props
,
ref
,
)
=>
<
IconBase
{
...
props
}
ref=
{
ref
}
data=
{
data
as
IconData
}
/>)
export
default
Icon
web/app/components/base/icons/src/public/thought/WebReader.json
0 → 100644
View file @
bf58d789
{
"icon"
:
{
"type"
:
"element"
,
"isRootNode"
:
true
,
"name"
:
"svg"
,
"attributes"
:
{
"width"
:
"12"
,
"height"
:
"12"
,
"viewBox"
:
"0 0 12 12"
,
"fill"
:
"none"
,
"xmlns"
:
"http://www.w3.org/2000/svg"
},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"g"
,
"attributes"
:
{
"clip-path"
:
"url(#clip0_7847_32887)"
},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"path"
,
"attributes"
:
{
"d"
:
"M4.5 1.75V1M2.53033 2.53033L2 2M2.53033 6.5L2 7.03033M6.5 2.53033L7.03033 2M1.75 4.5H1M7.93224 8.09479L6.68637 10.4085C6.54404 10.6728 6.47287 10.805 6.38725 10.8384C6.31295 10.8674 6.22926 10.8592 6.16199 10.8164C6.08447 10.767 6.04028 10.6235 5.95191 10.3366L4.22259 4.72263C4.1504 4.48825 4.1143 4.37107 4.14335 4.29192C4.16865 4.22298 4.22298 4.16865 4.29192 4.14335C4.37107 4.1143 4.48825 4.1504 4.72262 4.2226L10.3366 5.95192C10.6235 6.0403 10.767 6.08449 10.8164 6.16201C10.8592 6.22928 10.8674 6.31297 10.8384 6.38727C10.805 6.47289 10.6728 6.54406 10.4085 6.68639L8.09479 7.93224C8.05551 7.95339 8.03587 7.96396 8.01868 7.97755C8.00341 7.98961 7.98961 8.00341 7.97755 8.01868C7.96396 8.03587 7.95339 8.05551 7.93224 8.09479Z"
,
"stroke"
:
"#667085"
,
"stroke-width"
:
"1.25"
,
"stroke-linecap"
:
"round"
,
"stroke-linejoin"
:
"round"
},
"children"
:
[]
}
]
},
{
"type"
:
"element"
,
"name"
:
"defs"
,
"attributes"
:
{},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"clipPath"
,
"attributes"
:
{
"id"
:
"clip0_7847_32887"
},
"children"
:
[
{
"type"
:
"element"
,
"name"
:
"rect"
,
"attributes"
:
{
"width"
:
"12"
,
"height"
:
"12"
,
"fill"
:
"white"
},
"children"
:
[]
}
]
}
]
}
]
},
"name"
:
"WebReader"
}
\ No newline at end of file
web/app/components/base/icons/src/public/thought/WebReader.tsx
0 → 100644
View file @
bf58d789
// GENERATE BY script
// DON NOT EDIT IT MANUALLY
import
*
as
React
from
'react'
import
data
from
'./WebReader.json'
import
IconBase
from
'@/app/components/base/icons/IconBase'
import
type
{
IconBaseProps
,
IconData
}
from
'@/app/components/base/icons/IconBase'
const
Icon
=
React
.
forwardRef
<
React
.
MutableRefObject
<
SVGElement
>
,
Omit
<
IconBaseProps
,
'data'
>>
((
props
,
ref
,
)
=>
<
IconBase
{
...
props
}
ref=
{
ref
}
data=
{
data
as
IconData
}
/>)
export
default
Icon
web/app/components/base/icons/src/public/thought/index.ts
0 → 100644
View file @
bf58d789
export
{
default
as
DataSet
}
from
'./DataSet'
export
{
default
as
Search
}
from
'./Search'
export
{
default
as
ThoughtList
}
from
'./ThoughtList'
export
{
default
as
WebReader
}
from
'./WebReader'
web/app/components/explore/universal-chat/config/model-config/index.tsx
View file @
bf58d789
...
...
@@ -30,7 +30,7 @@ const ModelConfig: FC<IModelConfigProps> = ({
<
div
className=
'text-sm font-semibold text-gray-800'
>
Model
</
div
>
<
div
className=
"relative"
style=
{
{
zIndex
:
30
}
}
>
<
div
ref=
{
triggerRef
}
onClick=
{
()
=>
!
readonly
&&
toogleOption
()
}
className=
{
cn
(
readonly
?
'cursor-not-allowed'
:
'cursor-pointer'
,
'flex items-center h-9 px-3 space-x-2 rounded-lg bg-gray-50 '
)
}
>
<
ModelIcon
modelId=
{
currModel
?.
id
}
/>
<
ModelIcon
modelId=
{
currModel
?.
id
as
string
}
/>
<
div
className=
"text-sm gray-900"
>
{
currModel
?.
name
}
</
div
>
{
!
readonly
&&
<
ChevronDownIcon
className=
{
cn
(
isShowOption
&&
'rotate-180'
,
'w-[14px] h-[14px] text-gray-500'
)
}
/>
}
</
div
>
...
...
web/app/components/explore/universal-chat/index.tsx
View file @
bf58d789
/* eslint-disable react-hooks/exhaustive-deps */
/* eslint-disable @typescript-eslint/no-use-before-define */
'use client'
import
type
{
FC
}
from
'react'
...
...
@@ -274,7 +275,6 @@ const Main: FC<IMainProps> = () => {
},
[
chatList
,
currConversationId
])
// user can not edit inputs if user had send message
const
canEditInpus
=
!
chatList
.
some
(
item
=>
item
.
isAnswer
===
false
)
&&
isNewConversation
const
createNewChat
=
async
()
=>
{
// if new chat is already exist, do not create new chat
abortController
?.
abort
()
...
...
web/i18n/lang/explore.en.ts
View file @
bf58d789
...
...
@@ -56,6 +56,11 @@ const translation = {
name
:
'Wikipedia'
,
},
},
thought
:
{
show
:
'Show'
,
hide
:
'Hide'
,
processOfThought
:
' the process of thinking'
,
},
viewConfigDetailTip
:
'In conversation, cannot change above settings'
,
},
}
...
...
web/i18n/lang/explore.zh.ts
View file @
bf58d789
...
...
@@ -55,6 +55,11 @@ const translation = {
name
:
'维基百科'
,
},
},
thought
:
{
show
:
'显示'
,
hide
:
'隐藏'
,
processOfThought
:
'思考过程'
,
},
viewConfigDetailTip
:
'在对话中,无法更改上述设置'
,
},
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment