Compare commits

...
Author SHA1 Message Date
AkaraChen b59030ff93 feat: reset parameters when switch agent strategy 2025-01-09 18:50:23 +08:00
zxhlyh da8e1ded55 Merge branch 'feat/plugins' into dev/plugin-deploy 2025-01-09 18:33:53 +08:00
zxhlyh d78c7fc9f2 fix: agent log 2025-01-09 18:31:17 +08:00
JzoNg dc6e02f3ec fix plugin card 2025-01-09 17:46:46 +08:00
AkaraChen 4042c1f6c4 fix: prevent show error when data is not ready 2025-01-09 17:41:27 +08:00
AkaraChen b450c6f976 fix: checklist show error when strategy provider list not fetched 2025-01-09 17:41:08 +08:00
AkaraChen 4e29694a46 feat: show error when not select required model 2025-01-09 17:37:43 +08:00
AkaraChen 43f60cec24 feat: show error when not select required model 2025-01-09 17:37:29 +08:00
AkaraChen 4bbcc78c84 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-09 17:23:06 +08:00
AkaraChen 31e0aea181 fix: checklist show error when import dsl 2025-01-09 17:23:01 +08:00
Novice Lee 26ab0314a9 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2025-01-09 17:21:10 +08:00
Novice Lee 4b5586375f feat: add node id in agent log 2025-01-09 17:20:53 +08:00
Yi 6b0325d01d fix: revert prev commit bc it causes corner issues 2025-01-09 17:15:55 +08:00
Novice Lee ffbbd47d13 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2025-01-09 16:55:58 +08:00
Novice Lee 2b20ba697c Merge branch 'fix/chore-fix' into dev/plugin-deploy 2025-01-09 16:50:35 +08:00
Novice Lee ff5d12a437 feat: add agent log icon 2025-01-09 16:50:05 +08:00
Yi 3bdaf2dcae chore: avoid unnecessary loading for the model selector in agent node 2025-01-09 16:48:02 +08:00
JzoNg dfe69a9c13 keep panel show after tool selecting 2025-01-09 16:39:54 +08:00
AkaraChen 6d55ecd7fd fix: modal label show when no model selected 2025-01-09 16:39:42 +08:00
AkaraChen 90b390346b Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-09 16:22:24 +08:00
AkaraChen 60b582d97a chore: remove log 2025-01-09 16:22:13 +08:00
JzoNg ad94bcc2b3 Merge branch 'feat/plugins' into dev/plugin-deploy 2025-01-09 16:19:03 +08:00
JzoNg f2f0265b3e fix style of required 2025-01-09 16:18:08 +08:00
zxhlyh e1db41a1b3 Merge branch 'feat/plugins' into dev/plugin-deploy 2025-01-09 16:14:28 +08:00
zxhlyh f7edff6c6b fix: agent log 2025-01-09 16:13:59 +08:00
AkaraChen 145ef794b6 fix: switch version not work 2025-01-09 16:08:20 +08:00
AkaraChen efb6a5dd3e Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-09 15:48:00 +08:00
AkaraChen 0fe4fd65e2 fix: down arrow not shown not agent strategy selector 2025-01-09 15:47:50 +08:00
Joel ab66f30e1d feat: add parallel test case 2025-01-09 15:31:44 +08:00
AkaraChen 566dc9b4a8 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-09 15:17:31 +08:00
AkaraChen 641395b3ec feat: agent strategy form support required mark 2025-01-09 15:17:27 +08:00
Joel db60150f30 chore: change use new log struct generator 2025-01-09 15:08:05 +08:00
AkaraChen b964c713bd chore: add tooltip props to agent strategy select 2025-01-09 14:56:46 +08:00
AkaraChen 7b4d49a79c Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-09 14:53:07 +08:00
AkaraChen 0ad08f523b chore: add tooltip props to agent strategy select 2025-01-09 14:52:59 +08:00
Yi f4ca5938ec Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-09 14:47:17 +08:00
Yi 38437efec0 fix: change "upgrade" to "install" for generality in plugin version switch 2025-01-09 14:47:08 +08:00
JzoNg 9604e54df5 Merge branch 'feat/plugins' into dev/plugin-deploy 2025-01-09 14:42:53 +08:00
JzoNg 52553a66ba fix style of agent strategy 2025-01-09 14:40:58 +08:00
AkaraChen a87c2d7e20 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-09 14:31:49 +08:00
AkaraChen 08cff0045d feat: form not installed indicator 2025-01-09 14:31:43 +08:00
JzoNg 195a507b40 dark mode of api 2025-01-09 14:14:08 +08:00
JzoNg d7ec013665 modals of app overview 2025-01-09 14:14:08 +08:00
Joel 371febf3cf chore: merge 2025-01-09 13:55:37 +08:00
Joel dc9675d2d8 fix: plugin tool width in agent app 2025-01-09 13:53:07 +08:00
Joel 06fe17c93e chore: enchance fold into anim 2025-01-09 13:45:30 +08:00
Yeuoly edf9409877 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2025-01-09 13:37:15 +08:00
AkaraChen 5ec4695e4a feat: tool icon check plugin status 2025-01-09 13:29:23 +08:00
AkaraChen bb60db7078 feat: tool selector get icon from marketplace 2025-01-09 13:00:43 +08:00
AkaraChen e3e8eafd32 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-09 11:53:30 +08:00
AkaraChen eff6a55960 fix: install button 2025-01-09 11:53:24 +08:00
Yi a7f0933e55 chore: add checks in the url fetch step of the installFromGitHub 2025-01-09 11:52:44 +08:00
JzoNg eaf1177cd4 dark mode of overview card view 2025-01-09 11:35:37 +08:00
JzoNg 297b5280f0 tracing modal & config 2025-01-09 11:35:37 +08:00
Joel 4aac48ed61 feat: github install add anim 2025-01-09 11:29:48 +08:00
Joel 192af8df9f feat: local and bundle support hide anim 2025-01-09 11:16:33 +08:00
Novice Lee 805e9638da fix: change the agent strategy category 2025-01-09 11:14:08 +08:00
Joel 9822445c1e chore: all hide logic to hooks 2025-01-09 11:04:23 +08:00
Joel 018e32e355 fix: installed not clear countdown 2025-01-09 10:49:22 +08:00
zxhlyh 41b720502f merge main 2025-01-09 10:40:46 +08:00
zxhlyh cd30fd5a9a Merge branch 'feat/plugins' into dev/plugin-deploy 2025-01-09 10:36:18 +08:00
zxhlyh a157af724f fix: marketplace submit button 2025-01-09 10:35:47 +08:00
Hiroshi FujitaandGitHub b4c1c2f731 fix: Reverse sync docker-compose-template.yaml (#12509) 2025-01-09 10:21:22 +08:00
AkaraChen cc0d864599 fix: agent node tool list header width 2025-01-09 09:55:56 +08:00
Novice Lee 00ad751a57 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2025-01-09 08:48:00 +08:00
kurokoboandGitHub 1b940e7daa feat: add ci job to test template for docker compose (#12514) 2025-01-09 00:04:58 +08:00
JzoNg f1794a3d1b Merge branch 'feat/plugins' into dev/plugin-deploy 2025-01-08 20:02:34 +08:00
JzoNg 4a6a1b9855 chore: fix request form data 2025-01-08 20:01:01 +08:00
Joel 7ccc268ced fix: stop anim 2025-01-08 19:34:41 +08:00
Joel 6483d20f56 feat: install countdown 2025-01-08 19:25:01 +08:00
AkaraChen 5c82aebf4e Merge branch 'feat/plugins' into dev/plugin-deploy 2025-01-08 19:09:22 +08:00
Yi 61237e8037 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-08 17:55:41 +08:00
Yi aae601f233 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-08 17:55:19 +08:00
AkaraChen 701520ffd0 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-08 17:54:31 +08:00
AkaraChen 596e3409b7 fix: agent prompt 2025-01-08 17:54:24 +08:00
Yi 38dd285656 fix: long model name display issue 2025-01-08 17:53:25 +08:00
zxhlyh 9ab39c3feb Merge branch 'feat/plugins' into dev/plugin-deploy 2025-01-08 17:49:11 +08:00
zxhlyh 0248c8cb8c fix: agent key 2025-01-08 17:48:26 +08:00
AkaraChen 88b3c0b7a6 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-08 17:36:32 +08:00
AkaraChen 3ae7787011 fix: number not supported 2025-01-08 17:36:26 +08:00
Yi c357ec0f7c chore: add loading to the model selector trigger 2025-01-08 17:27:03 +08:00
Yi 763f91fcea Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-08 17:12:01 +08:00
Yi 62d53399ae fix: add bg color to the top section in plugins page 2025-01-08 17:11:55 +08:00
Joel c3215a8f94 feat: fold into animation 2025-01-08 17:02:47 +08:00
AkaraChen d65c1218ae Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-08 16:57:01 +08:00
AkaraChen 83723212af fix: agent node getNodeUsedVars 2025-01-08 16:56:56 +08:00
Yi 84c2a9dc3b Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-08 16:51:14 +08:00
Yi 87d7df3ed4 fix: make the status indicator component compatible with the switch plugin version component 2025-01-08 16:51:06 +08:00
zxhlyh 5cc9c79284 Merge branch 'feat/plugins' into dev/plugin-deploy 2025-01-08 16:47:27 +08:00
zxhlyh 586f9d8d89 fix: agent log 2025-01-08 16:46:35 +08:00
WTW0313 b656b7a0dd Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-08 16:41:22 +08:00
WTW0313 0fdf7b23c6 feat: add 'agent' tag to plugin constants and translations 2025-01-08 16:41:16 +08:00
Yi 369e3eb97f feat: add version switch in model selector 2025-01-08 16:39:56 +08:00
AkaraChen f58eef74b3 feat: switch plugin version changelog 2025-01-08 16:19:41 +08:00
AkaraChen 2fd083629d feat: new switch plugin version 2025-01-08 15:58:05 +08:00
Yi 755685a89a Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-08 15:54:21 +08:00
Yi 23b29b1d21 fix: check-dependencies typo and fetch model list typo 2025-01-08 15:54:04 +08:00
zxhlyh 4b01ef2b48 fix: chat log 2025-01-08 15:42:18 +08:00
JzoNg 05d273d643 fix tracing dropdown 2025-01-08 15:40:13 +08:00
JzoNg 5481b42257 dark mode for tracing dropdown 2025-01-08 15:28:45 +08:00
AkaraChen fa83f2e2fa fix: switch version plugin 2025-01-08 15:13:19 +08:00
AkaraChen 5e4d2f9501 Revert "chore: remove switch version component in strategy select"
This reverts commit f63cc9e069.
2025-01-08 14:55:55 +08:00
Yi fdfe724438 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-08 14:50:25 +08:00
Yi b0b373d2fb fix: revert the modelInList check in the model icon component 2025-01-08 14:50:14 +08:00
AkaraChen f63cc9e069 chore: remove switch version component in strategy select 2025-01-08 14:48:36 +08:00
Yi 8c9c336b64 fix: isInModelList default value 2025-01-08 14:47:01 +08:00
Yi 2dac103463 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-08 14:45:10 +08:00
Yi 17dfb3654f feat: add version incompatible case 2025-01-08 14:45:03 +08:00
zxhlyh 730d33176e Merge branch 'feat/plugins' into dev/plugin-deploy 2025-01-08 14:20:36 +08:00
zxhlyh 98ad18ba81 fix: agent log 2025-01-08 14:20:08 +08:00
AkaraChen 53bb1bb937 fix: agent node cannot output var 2025-01-08 14:09:35 +08:00
AkaraChen 93806148cd chore: plugin mutation modal component 2025-01-08 12:37:33 +08:00
JzoNg adf0d94a9a unsupported actions 2025-01-08 11:51:59 +08:00
zxhlyh d17932d723 fix: install task icon 2025-01-08 10:12:55 +08:00
Yi 3cbb288a25 feat: add version check i18n 2025-01-08 10:09:11 +08:00
AkaraChen 99e2eaa6ee fix: switch plugin version 2025-01-08 10:03:00 +08:00
Novice Lee 86318d9137 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2025-01-08 08:04:48 +08:00
Yeuoly c706226b2f Merge branch 'fix/chore-fix' into dev/plugin-deploy 2025-01-07 20:53:25 +08:00
Yeuoly f9f48b7139 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2025-01-07 20:16:04 +08:00
Joel 6006380723 fix: tool select ui problem in workflow 2025-01-07 17:10:27 +08:00
Joel 55ad1fe1f0 chore: tool selelct use the same tools data 2025-01-07 16:58:31 +08:00
Yi 0383fce821 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-07 16:57:09 +08:00
Yi 85610651c0 node ui fix 2025-01-07 16:57:01 +08:00
AkaraChen 768e1b9da3 fix: wrong tooltip content for switch plugin version 2025-01-07 16:43:36 +08:00
Joel a6d172f111 feat: github refresh plugin list 2025-01-07 16:42:40 +08:00
Joel 5817c07db6 feat: local install refresh 2025-01-07 16:34:08 +08:00
Yi 2f5da1f6aa fix: update model icon 2025-01-07 16:31:15 +08:00
JzoNg d7657f4874 Merge branch 'feat/plugins' into dev/plugin-deploy 2025-01-07 15:57:17 +08:00
AkaraChen 130cfaf2a4 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-07 15:20:00 +08:00
AkaraChen f840b7db0c fix: type for tool list 2025-01-07 15:19:46 +08:00
JzoNg aac2184069 chore: use install button in tool item 2025-01-07 15:18:07 +08:00
AkaraChen f03631ff9e feat: init agent strategy install from marketplace 2025-01-07 15:08:36 +08:00
Yeuoly 485d510e80 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2025-01-07 14:50:29 +08:00
Yi e207894d7e Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-07 14:45:00 +08:00
Yi 8512a7d3ad chore: update the onOpenModel function to a hook 2025-01-07 14:43:54 +08:00
JzoNg 46614cc6f5 fix badge & refresh state of tool install state 2025-01-07 14:41:48 +08:00
AkaraChen b39acd0bad Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-07 14:03:53 +08:00
AkaraChen 48b88b90f5 feat: i18n text in agent strategy selector 2025-01-07 14:03:40 +08:00
zxhlyh 851fe246a7 fix: installing info in plugin nav 2025-01-07 14:00:29 +08:00
Yi ff61c22f36 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-07 12:48:42 +08:00
Yi e6eae8568f chore: update the model install button 2025-01-07 12:48:36 +08:00
JzoNg 6d5c34564b fix qrcode z-index 2025-01-07 12:16:34 +08:00
JzoNg 6d8b54f1e5 Merge branch 'feat/plugins' into dev/plugin-deploy 2025-01-07 11:58:29 +08:00
AkaraChen 4c5fa00c50 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-07 11:57:40 +08:00
AkaraChen 910e6d17d3 feat: adjust strategy selector height 2025-01-07 11:57:35 +08:00
JzoNg 275696edba fix system model selector 2025-01-07 11:53:34 +08:00
JzoNg 1348e32015 fix balance model z-index 2025-01-07 11:53:34 +08:00
JzoNg f5b2735dd5 theme default light 2025-01-07 11:53:34 +08:00
JzoNg 8d39ec1da5 chart drak mode 2025-01-07 11:53:34 +08:00
Yi 0f6cbf25d3 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-07 11:34:09 +08:00
Joel 0e98794d49 feat: use all refresh plugin tools to hooks 2025-01-07 11:31:22 +08:00
AkaraChen 1419430015 chore: upd 2025-01-07 11:25:06 +08:00
Yi 5d25643f54 fix: group icon style 2025-01-07 11:18:01 +08:00
AkaraChen e24b04b30f refactor: switch plugin version component to not accept version 2025-01-07 10:58:53 +08:00
AkaraChen a8c4870349 refactor: switch plugin version component to not accept version 2025-01-07 10:55:42 +08:00
AkaraChen bdb9d676b1 chore: update switch plugin i18n 2025-01-07 10:49:26 +08:00
AkaraChen 0beebab605 fix: workflow store agent strategy not up to date 2025-01-07 09:57:35 +08:00
AkaraChen 15f3e46c49 refactor: some field name in strategy status 2025-01-07 09:30:35 +08:00
Joel 61d2f70927 feat: add transform node to node data 2025-01-06 18:36:45 +08:00
Joel 228cd1cdbe feat: add iteration id 2025-01-06 16:48:24 +08:00
Joel e0ed17a2e6 chore: can generator middle struct 2025-01-06 15:31:25 +08:00
zxhlyh 07aa2ca9cf fix: single run log 2025-01-03 16:34:23 +08:00
Joel 5fdfba6b00 feat: make iteration 2025-01-03 15:41:04 +08:00
AkaraChen fbf9984d85 refactor: strategy status 2025-01-03 15:25:10 +08:00
Yeuoly 150b4ea1eb Merge branch 'fix/chore-fix' into dev/plugin-deploy 2025-01-03 14:48:39 +08:00
Yeuoly beeb11a5dc Merge branch 'fix/chore-fix' into dev/plugin-deploy 2025-01-03 14:10:22 +08:00
AkaraChen 2296bb162b Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-03 13:52:43 +08:00
AkaraChen 06f0c3c886 refactor: strategy status 2025-01-03 13:52:38 +08:00
JzoNg 483890b207 fix install in tool item 2025-01-03 13:39:23 +08:00
AkaraChen 390107f97e Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-03 10:35:11 +08:00
AkaraChen 5ba0b85738 feat: install plugin button 2025-01-03 10:35:06 +08:00
JzoNg 39335b8038 refactor I18n render in plugin detail 2025-01-03 10:16:44 +08:00
twwu 5fb356fd33 refactor: rename renderI18nObject to getValueFromI18nObject for clarity 2025-01-02 18:07:44 +08:00
twwu c458c28c62 feat: enhance plugin item localization with i18n support 2025-01-02 17:35:11 +08:00
AkaraChen 055fb22b9b Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-02 16:36:03 +08:00
AkaraChen f2eb095960 feat: strategy install status 2025-01-02 16:35:58 +08:00
Joel d5cfb26db6 feat: support make retry data 2025-01-02 16:29:12 +08:00
zxhlyh 7519c9a0d6 Merge branch 'feat/plugins' into dev/plugin-deploy 2025-01-02 15:51:21 +08:00
zxhlyh a514bde428 fix: marketplace page size 2025-01-02 15:50:40 +08:00
AkaraChen 87ce813175 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-02 15:03:23 +08:00
AkaraChen 336b26569b feat: agent form string type support var 2025-01-02 15:03:18 +08:00
zxhlyh a432fcfd5e agent node single run 2025-01-02 14:56:15 +08:00
AkaraChen 0ed4ec5cd0 fix: agent strategy selector show workflow 2025-01-02 14:48:40 +08:00
AkaraChen add6dff789 feat: agent node check install strategy 2025-01-02 14:27:19 +08:00
Joel c469da2020 fix: handle install title and descript may caused i18n problem 2025-01-02 14:22:04 +08:00
Joel 55aad3718d fix: multi loop nodes remove children error 2025-01-02 14:09:57 +08:00
AkaraChen c6c388fbda feat: agent checklist i18n 2025-01-02 13:58:30 +08:00
AkaraChen d3d606799d Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2025-01-02 11:46:52 +08:00
AkaraChen c1ae681b6c feat: agent checklist i18n 2025-01-02 11:46:47 +08:00
Joel f11ea5ae97 fix: title not show all if space is enough 2025-01-02 11:37:31 +08:00
Joel e112357e91 chore: temp 2025-01-02 11:37:31 +08:00
AkaraChen 1b8ec6710a feat: agent node checklist 2025-01-02 11:29:10 +08:00
Joel d49974665e Merge branch 'feat/plugins' into dev/plugin-deploy 2025-01-02 11:02:24 +08:00
Joel a8881cc7a6 chore: temp 2025-01-02 11:00:03 +08:00
JzoNg 6f97eb5713 merge feat/plugins 2025-01-02 08:51:03 +08:00
JzoNg 4663af8a60 tool setting schema 2025-01-02 08:43:09 +08:00
Yeuoly 65077cd388 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-31 17:43:16 +08:00
AkaraChen 91ac660f81 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-31 16:33:22 +08:00
AkaraChen 3c829a1c28 fix: some style 2024-12-31 16:33:16 +08:00
Yi f9ce6b6a6e Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-31 16:13:13 +08:00
Yi afe8c85b99 model feature icons 2024-12-31 16:13:06 +08:00
zxhlyh bc5cd4405b agent node single run 2024-12-31 16:08:09 +08:00
Yi be36aedac1 agent node: fix installed model ui 2024-12-31 15:59:43 +08:00
AkaraChen 9e6f3e9161 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-31 15:53:45 +08:00
AkaraChen 52537c9e6b fix: model deprecated in model list 2024-12-31 15:53:38 +08:00
Joel 8d229f26d0 fix: card name too long 2024-12-31 15:47:48 +08:00
Yi 504c794e8a add icons and fix ui typos 2024-12-31 15:47:14 +08:00
Joel cab8c6c5a7 feat: support scroll into letter 2024-12-31 15:41:29 +08:00
Yi 5bba422c0b fix model icon size in llm node 2024-12-31 15:13:56 +08:00
AkaraChen 870779534f Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-31 15:04:17 +08:00
AkaraChen f956c2edcd chore: update style 2024-12-31 15:04:13 +08:00
Joel 2a29dd3534 fix: letter list not right 2024-12-31 15:01:31 +08:00
Yi b1831bc582 fix the model icon ui 2024-12-31 14:35:11 +08:00
Yi 3e979a5ded fix: model selector's trigger ui 2024-12-31 14:23:13 +08:00
zxhlyh 7011a5029e merge main 2024-12-31 14:12:35 +08:00
zxhlyh a66d92054a Merge branch 'feat/plugins' into dev/plugin-deploy 2024-12-31 14:09:11 +08:00
zxhlyh d7cbbbca8e fix: tool single run 2024-12-31 14:08:40 +08:00
zxhlyh 21d082f3da feat: tool single run 2024-12-31 14:05:56 +08:00
Yi 2cdf2b2e05 fix the model icon size in the agent node 2024-12-31 14:04:03 +08:00
Yi ec2dd750f1 fix: set a fixed height to the model selection in agent node 2024-12-31 13:59:55 +08:00
AkaraChen 066595f3aa chore: remove unused code 2024-12-31 13:50:31 +08:00
AkaraChen f81bbee6b6 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-31 13:46:12 +08:00
AkaraChen 4855e87876 fix: editor 2024-12-31 13:46:06 +08:00
JzoNg e47aaad396 remove test codes 2024-12-31 12:42:49 +08:00
JzoNg df421796bb add model info in model selector 2024-12-31 12:41:08 +08:00
AkaraChen fe5702784e Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-31 11:52:20 +08:00
AkaraChen eba4042a62 wip: instruction field 2024-12-31 11:52:15 +08:00
Joel 3bed0346d7 fix: choose tools 2024-12-31 11:51:50 +08:00
Yi 3a09f43f70 feat: update the install logic 2024-12-31 11:46:36 +08:00
Yi 232fb66edd ui fixes in model selector 2024-12-31 11:08:53 +08:00
Yeuoly f5dc873b81 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-30 21:14:47 +08:00
Joel a3f736f6e5 feat: multi steps circle 2024-12-30 18:39:33 +08:00
Joel d9d42b2d8c feat: multi step circle 2024-12-30 18:38:07 +08:00
Joel 0a30018330 chore: one step circle check 2024-12-30 18:27:59 +08:00
Joel 128410902c temp 2024-12-30 18:27:59 +08:00
Yi 9b6f580365 add model install in model configuration for the agent node 2024-12-30 17:55:46 +08:00
AkaraChen afb3548e45 refactor: agent parameters 2024-12-30 17:40:56 +08:00
JzoNg e1cb85cee1 fix label of tool picker 2024-12-30 15:43:24 +08:00
JzoNg f6c1ae52dd Merge branch 'feat/plugins' into dev/plugin-deploy 2024-12-30 15:30:29 +08:00
JzoNg 2007828404 installation state of tool 2024-12-30 15:28:15 +08:00
AkaraChen f5b4366bd8 fix: agent node 2024-12-30 14:49:12 +08:00
Yeuoly db1ad3c0f1 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-30 13:42:10 +08:00
Yeuoly 7330a4a783 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-30 13:35:10 +08:00
AkaraChen cd7e6ca010 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-30 13:31:02 +08:00
AkaraChen 2ac6f00efb fix: agent node toolbox 2024-12-30 13:30:57 +08:00
Yi f461f56886 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-30 12:55:42 +08:00
Yi ba16cbccf0 feat: add install options for model configuration 2024-12-30 12:55:28 +08:00
AkaraChen 08a1f241ca Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-30 11:28:57 +08:00
AkaraChen a5509fbe5a feat: agent node toolbox 2024-12-30 11:28:51 +08:00
zxhlyh 76d7a64c37 Merge branch 'feat/plugins' into dev/plugin-deploy 2024-12-30 11:25:59 +08:00
zxhlyh 98a03b0593 fix: agent log structure 2024-12-30 11:25:28 +08:00
zxhlyh f72818bed5 fix: agent log structure 2024-12-30 11:14:59 +08:00
JzoNg 0c5101fb3c fix default value for multiple tool selector 2024-12-30 10:38:45 +08:00
zxhlyh 84febd5e94 fix: agent log structure 2024-12-30 10:23:48 +08:00
JzoNg b5ad9a58f7 default value for multiple tool selector 2024-12-30 10:23:00 +08:00
Yeuoly 7122bf3e8e Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-27 22:56:55 +08:00
Yeuoly 4fb5cf675b Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-27 18:37:54 +08:00
Joel 8a90a9bd5d fix: in steam mode trigger the error in change list 2024-12-27 18:28:52 +08:00
zxhlyh bc78803171 merge feat/plugins 2024-12-27 18:11:52 +08:00
zxhlyh 6f8e217580 refact workflow run log 2024-12-27 18:10:44 +08:00
Yeuoly b1522e860a Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-27 17:55:57 +08:00
Yeuoly d4a7d05043 fix: linter 2024-12-27 17:39:12 +08:00
Yeuoly 4ee4740657 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-27 17:38:10 +08:00
JzoNg 891a76f2fa enabled count 2024-12-27 17:37:18 +08:00
JzoNg 3c85363392 multiple tool selector 2024-12-27 17:29:46 +08:00
zxhlyh a863e9f674 refact workflow run log 2024-12-27 17:22:11 +08:00
Joel 6a2a7aca9b chore: tool node support agent logs 2024-12-27 16:52:22 +08:00
AkaraChen 18393d2e27 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-27 16:48:32 +08:00
AkaraChen de48a1c7e9 fix: type error 2024-12-27 16:48:16 +08:00
Joel 3d5620dfb3 fix: parallel start node not insert into the right place 2024-12-27 16:47:05 +08:00
AkaraChen da2982ba98 feat: model list on agent node 2024-12-27 16:45:46 +08:00
AkaraChen 0108b28305 feat: model list on agent node 2024-12-27 16:39:18 +08:00
JzoNg 573c8f909c add multiple tool selector 2024-12-27 16:30:34 +08:00
Joel 3a5170716b fix: pararllel title 2024-12-27 16:29:15 +08:00
zxhlyh 0631cf0c4f Merge branch 'feat/plugins' into dev/plugin-deploy 2024-12-27 16:18:41 +08:00
zxhlyh e4cc8f7010 refact workflow run log 2024-12-27 16:18:04 +08:00
AkaraChen 23913b8640 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-27 16:04:53 +08:00
AkaraChen 0d0a4cfaa1 fix: select var 2024-12-27 16:04:48 +08:00
Joel 04d8d16d8a chore: fix retry not work in iteration 2024-12-27 15:54:56 +08:00
AkaraChen 0d2a74b8cb feat: output var 2024-12-27 15:34:54 +08:00
JzoNg 1b93e1ff99 Merge branch 'feat/plugins' into dev/plugin-deploy 2024-12-27 14:47:22 +08:00
JzoNg ae42edb8d7 remove test code 2024-12-27 14:43:07 +08:00
AkaraChen e903cd8073 fix: llm node 2024-12-27 14:31:50 +08:00
Joel a071d2cd1b Merge branch 'feat/plugins' into dev/plugin-deploy 2024-12-27 14:25:12 +08:00
Joel 31cca291b7 chore: remove test page 2024-12-27 14:22:00 +08:00
zxhlyh 1cc15d1ce8 merge feat/plugins 2024-12-27 14:21:32 +08:00
JzoNg ed6c9625e8 fix scope features 2024-12-27 14:20:46 +08:00
Joel 08c517dd99 feat: iteration support parallel 2024-12-27 14:20:18 +08:00
JzoNg 69a6556f52 tool item 2024-12-27 14:09:52 +08:00
Yi e34eebfb0b Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-27 13:58:05 +08:00
Yi ef3e904839 feat: model-selector in Agent node (case: installed models) 2024-12-27 13:57:54 +08:00
AkaraChen df5fb6dca9 feat: agent strategy max iter slider 2024-12-27 13:30:39 +08:00
Joel 2f65d0439c fix: not parall not group by branch 2024-12-27 13:08:05 +08:00
Yeuoly e7a6bc0ec9 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-27 12:17:08 +08:00
zxhlyh 5cdca9cafe fix: marketplace i18n 2024-12-27 11:54:42 +08:00
Yi 67019d128b Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-27 11:49:03 +08:00
AkaraChen 697ee496b7 chore: upd mock form for dev 2024-12-27 11:43:29 +08:00
Yeuoly 494cca82a0 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-27 11:33:13 +08:00
AkaraChen 7f5e27d001 chore: extend form component for override 2024-12-27 11:30:43 +08:00
Joel 1f128729f4 fix: sub iteration would crash page 2024-12-27 11:24:47 +08:00
Yi a562e6db89 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-27 10:47:07 +08:00
Joel c23fe3b67f chore: format 2024-12-27 10:25:15 +08:00
Yeuoly 2b8f31ec98 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-26 22:58:48 +08:00
Yeuoly 673ba9330c Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-26 22:30:38 +08:00
JzoNg 95da3a4cf1 tool credential panel 2024-12-26 18:58:01 +08:00
Yeuoly b7f04c1ba8 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-26 18:07:39 +08:00
JzoNg bfecc73de9 support extra for tool selector 2024-12-26 17:58:34 +08:00
Yi b4e9dddbca Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-26 17:40:42 +08:00
Yeuoly c95c3655fa Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-26 17:39:32 +08:00
JzoNg 10218cfe8d add tool selector in agent node 2024-12-26 17:33:06 +08:00
Yeuoly bc1502b8fc Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-26 17:26:19 +08:00
JzoNg e00da7a1d8 tool setting form 2024-12-26 17:06:15 +08:00
JzoNg 469ce0f23d add tool description 2024-12-26 17:06:15 +08:00
JzoNg 23bf0a6812 tool selector support scope 2024-12-26 17:06:11 +08:00
AkaraChen 605085bddf chore: remove max_iterations for agent node 2024-12-26 16:42:34 +08:00
Yi dbc45f0d74 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-26 16:36:09 +08:00
zxhlyh 6175f8c16f merge main 2024-12-26 16:35:11 +08:00
zxhlyh 7e94056507 refact workflow run log 2024-12-26 15:44:59 +08:00
AkaraChen 1429b30e84 chore: upd 2024-12-26 15:27:15 +08:00
AkaraChen 5ef9156242 feat: custom credential form 2024-12-26 14:44:05 +08:00
zxhlyh 6f865b96a2 refact workflow run log 2024-12-26 14:41:00 +08:00
AkaraChen b7e56a23a0 feat: custom credential form 2024-12-26 14:32:21 +08:00
Yeuoly e7d3add5df Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-26 14:12:58 +08:00
Yeuoly f0178bd603 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-26 13:24:16 +08:00
Yi 5b8ad3ac4b Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-26 13:19:32 +08:00
AkaraChen e0b7f48b6b chore: add i18n str 2024-12-26 13:02:00 +08:00
Yi ff70e14de2 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-26 12:44:41 +08:00
AkaraChen 244517e6e7 fix: no icon in tool select 2024-12-26 12:41:44 +08:00
AkaraChen cd08f98bff chore: upd app icon 2024-12-26 12:32:02 +08:00
Yi b752c0654e Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-26 10:59:33 +08:00
AkaraChen e07d7ee4fc chore: remove console 2024-12-26 10:55:30 +08:00
Yi c476f06388 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-26 10:53:02 +08:00
AkaraChen 5f13402c6e Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-26 10:17:21 +08:00
AkaraChen 8dcd82290c feat: select strategy 2024-12-26 10:16:52 +08:00
zxhlyh 86eb618b84 refact workflow run log 2024-12-26 10:16:12 +08:00
Joel e1ea82475d feat: format agent 2024-12-25 18:37:05 +08:00
Yeuoly cd00602213 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-25 18:25:21 +08:00
zxhlyh 08515957f1 refact workflow run log 2024-12-25 16:57:22 +08:00
Joel 8503099d65 feat: integration 2024-12-25 16:46:32 +08:00
Yi c04a89d5b1 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-25 16:39:22 +08:00
Joel 8d225264fa feat: retry 2024-12-25 16:25:19 +08:00
zxhlyh 26901b2c87 refact workflow run log 2024-12-25 16:15:20 +08:00
JzoNg b56acb825f fix org info in tool detail panel 2024-12-25 15:34:07 +08:00
Yi f1e17ad134 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-25 15:24:59 +08:00
AkaraChen b8e4580074 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-25 15:23:50 +08:00
JzoNg 935c126abd strategy detail panel 2024-12-25 15:15:55 +08:00
JzoNg b4105fcc9c strategy list 2024-12-25 15:15:55 +08:00
AkaraChen 5f65fb1b62 chore: add model select mock 2024-12-25 15:12:33 +08:00
Yeuoly 02abf950e1 Merge fix/chore-fix into dev/plugin-deploy 2024-12-25 15:12:05 +08:00
Yi 986d6eed36 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-25 15:10:05 +08:00
AkaraChen e0f83d06d8 chore: add model select mock 2024-12-25 15:06:58 +08:00
Yi f42cfe8075 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-25 14:54:22 +08:00
AkaraChen a7b2f9aef0 chore: add i18n 2024-12-25 14:52:11 +08:00
AkaraChen c867584049 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-25 14:24:02 +08:00
AkaraChen ac2c8344f2 chore: add i18n 2024-12-25 14:23:57 +08:00
Joel 8c662e04e0 feat: add iteration error 2024-12-25 14:20:39 +08:00
AkaraChen e1d0c29711 chore: add icon for agent 2024-12-25 14:13:20 +08:00
Yi 50c77ad405 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-25 14:12:54 +08:00
Joel 880496db0b chore: add more tests 2024-12-25 14:12:53 +08:00
AkaraChen 057da6c31b chore: gen agent icon 2024-12-25 14:07:05 +08:00
AkaraChen c0a8b89e93 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-25 14:06:08 +08:00
AkaraChen a8a956b5f1 chore: add i18n 2024-12-25 14:05:49 +08:00
Joel ff02e1cb8f chore: enchance test output struct 2024-12-25 14:04:46 +08:00
Yi d78719a6f8 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-25 13:41:06 +08:00
JzoNg da6d65b072 fix style of account setting 2024-12-25 12:35:27 +08:00
JzoNg 8d1a8eac51 add use-strategy 2024-12-25 11:55:59 +08:00
Joel e34fe3d10a feat: support iteration handle 2024-12-25 11:47:31 +08:00
Yi 8d79b24883 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-12-25 11:43:00 +08:00
AkaraChen 03520a5a81 feat: strategy form init 2024-12-25 11:24:24 +08:00
Yeuoly 527abcb2e9 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-24 18:39:42 +08:00
Yi d43b2c62f5 Merge branch 'main' into feat/plugins 2024-12-24 17:44:12 +08:00
JzoNg 07d7965e3b support custom output schema in tool node 2024-12-24 16:26:09 +08:00
Joel e4d72f3442 chore: hide log 2024-12-24 16:10:37 +08:00
Joel c93c264c5a feat: format to tracing 2024-12-24 16:08:48 +08:00
AkaraChen 77017522b8 chore: init tool select component 2024-12-24 16:01:14 +08:00
AkaraChen aa309964e5 chore: init tool select component 2024-12-24 15:55:45 +08:00
zxhlyh 754baf8d02 refact workflow run 2024-12-24 15:38:54 +08:00
zxhlyh b98dd22491 refact workflow run 2024-12-24 15:31:46 +08:00
AkaraChen 7c460eb6e7 chore: add warning ui for agentic stragey 2024-12-24 14:20:15 +08:00
JzoNg e2e2090e0c support model params change 2024-12-24 14:15:18 +08:00
JzoNg c8fc1deca6 support & operator of model-selector scope 2024-12-24 12:18:03 +08:00
Yi 6dd14ca2be chore: add agent strategy option apart from bundle 2024-12-24 12:05:35 +08:00
zxhlyh ec6f4ee9df Merge branch 'main' into feat/plugins 2024-12-24 11:35:47 +08:00
JzoNg 9d117fa2f9 param rules panel 2024-12-24 11:00:31 +08:00
Joel e8319f01e0 fix: crash 2024-12-24 10:33:56 +08:00
Joel c3f3b79b79 merge main 2024-12-23 15:33:08 +08:00
JzoNg c91c5faa9d Merge branch 'feat/plugins' into dev/plugin-deploy 2024-12-20 16:44:23 +08:00
JzoNg 327eac09e7 fix: scope value 2024-12-20 16:37:30 +08:00
JzoNg cf75e2f053 model selector support scope 2024-12-20 16:36:22 +08:00
JzoNg 12c47d80af support llm tool_parameters 2024-12-20 12:46:07 +08:00
JzoNg 5c6916354e app selector support scope 2024-12-20 11:59:18 +08:00
JzoNg 6d2b2d7810 fix number of tool actions 2024-12-20 11:27:52 +08:00
JzoNg 1fa5b1755f dark mode for model provider 2024-12-20 10:44:39 +08:00
twwu 5dad4793e6 fix: Fix context selector usage in plugin page components 2024-12-20 09:56:06 +08:00
Yeuoly 82f6803e25 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-19 01:09:34 +08:00
Yeuoly 69b43c513a Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-19 01:02:56 +08:00
Yeuoly f407cf4e13 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-19 00:52:02 +08:00
Yeuoly f8bbea224f Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-18 23:55:18 +08:00
Joel 289a040508 chore: merge 2024-12-18 17:54:18 +08:00
Joel d49e9890ba fix: file name text overflow not work 2024-12-18 16:49:11 +08:00
NFish fa3f8c5bb0 merge origin/feat/parent-child-retrival 2024-12-18 16:44:51 +08:00
Joel eead099c5e fix: not get extensions can select all types files 2024-12-18 16:38:16 +08:00
twwu 7185fd2d5a Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-18 15:03:12 +08:00
twwu 8d9a2d6d99 fix: Enhance components with display names and ref forwarding; fix preview and edit slice style issue 2024-12-18 14:47:33 +08:00
Joel ade6dd4b6f fix: delimiter not support empty and not escape 2024-12-18 14:25:56 +08:00
Joel 0006852b5b fix: parent child has no overlap 2024-12-18 14:13:59 +08:00
Joel 6ea333fb44 fix: child sparator not escape 2024-12-18 14:10:18 +08:00
Joel c22c010210 fix: empty no text 2024-12-18 13:57:29 +08:00
NFish 4e6db1f4fb fix: update parent child style 2024-12-18 11:46:41 +08:00
NFish 330cfaf6d6 Merge branch 'feat/parent-child-retrieval' of github.com:langgenius/dify into feat/parent-child-retrieval 2024-12-17 18:20:00 +08:00
NFish 827cffc4d9 fix: update dataset document processing style 2024-12-17 18:17:23 +08:00
Joel 8ee7e0a787 fix: text size 2024-12-17 18:10:44 +08:00
Joel de6b0670a3 chore: detail ui 2024-12-17 17:53:25 +08:00
Joel 39452274f8 chore: fix chunk detail spacing 2024-12-17 17:46:43 +08:00
Joel 4ef876db23 chore: use qa language 2024-12-17 17:35:50 +08:00
twwu a1abbedc13 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-17 16:42:17 +08:00
twwu a099e0a7e6 fix: Adjust layout and prevent default behavior in action buttons 2024-12-17 16:42:11 +08:00
Yeuoly 810ac6e1b2 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-17 15:50:13 +08:00
Joel 1613eadbce chore: not free plan show auto disabled 2024-12-17 15:32:14 +08:00
twwu f2c087b805 fix: Fix FullScreenDrawer background color missing 2024-12-17 15:20:32 +08:00
twwu 5ba51fd7d2 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-17 14:29:41 +08:00
twwu f7c38db575 feat: enhance child segment list and segment card UI with improved styling and new props for EditSlice 2024-12-17 14:29:35 +08:00
Joel 4df52e7f95 fix: retriveal text left ui 2024-12-17 14:29:12 +08:00
AkaraChen 175f5fe6af fix: input number width & default value for child delimiter 2024-12-17 14:12:34 +08:00
NFish 1e2ca1aa7b revert: checkbox style 2024-12-17 10:57:45 +08:00
NFish 642aab38fd Merge branch 'feat/parent-child-retrieval' of github.com:langgenius/dify into feat/parent-child-retrieval 2024-12-17 10:46:45 +08:00
NFish 84641b6fd6 Merge branch 'main' into feat/parent-child-retrieval 2024-12-17 10:46:17 +08:00
twwu 9006a744b9 feat: enhance segment management by adding new segment mutation and improving UI layout 2024-12-17 10:13:53 +08:00
NFish 493ec06e95 Merge branch 'feat/parent-child-retrieval' of github.com:langgenius/dify into feat/parent-child-retrieval 2024-12-17 09:45:24 +08:00
Yeuoly 040a6fbc5f fix: refresh token 2024-12-16 19:41:50 +08:00
Joel 7a82422187 chore: record ui 2024-12-16 18:33:07 +08:00
Joel 29c41bf8e8 fix: retrieval ui 2024-12-16 18:30:11 +08:00
twwu 777bba0c63 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-16 18:15:59 +08:00
twwu 4850a99ce5 feat: refactor docForm type to use ChuckingMode and improve UI for question/answer sections 2024-12-16 18:15:54 +08:00
zxhlyh 9f90d70b38 merge feat/plugins 2024-12-16 18:06:06 +08:00
Joel e418cf30f5 chore: hiting test header ui 2024-12-16 18:05:02 +08:00
nite-knite 6da7efaa1d feat: update dataset embedding error message display 2024-12-16 18:04:20 +08:00
zxhlyh 04054954c5 Merge branch 'main' into feat/plugins 2024-12-16 17:55:52 +08:00
NFish a01a28997e fix: update datasource Step1 style 2024-12-16 17:54:48 +08:00
zxhlyh 672843dcab feat: marketplace list more link 2024-12-16 17:39:07 +08:00
nite-knite e206866908 feat: update UI for dataset creation step three 2024-12-16 17:16:03 +08:00
twwu 14f14420e7 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-16 17:10:38 +08:00
twwu faa5b63ed4 feat: update background styles and add loading skeletons for document detail components 2024-12-16 17:10:33 +08:00
Joel 782845f1a7 fix: header text 2024-12-16 16:51:12 +08:00
JzoNg 4f8cdabef0 dark mode of model provider 2024-12-16 16:29:45 +08:00
Joel d5a90daa44 chore: retrieval test text 2024-12-16 15:56:16 +08:00
Joel 3f9acc7029 feat: hit testing support external 2024-12-16 15:51:47 +08:00
zxhlyh e792e91777 fix: model page 2024-12-16 14:56:55 +08:00
Yeuoly fd02c60498 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-16 14:29:05 +08:00
JzoNg d5cb9f0193 add help doc link of endpoint 2024-12-16 14:20:22 +08:00
twwu 340a052d44 fix: update dependencies array in useMemo hooks 2024-12-16 12:49:06 +08:00
twwu d5cb3af293 feat: add horizontal divider above pagination in completed documents view 2024-12-16 12:15:01 +08:00
twwu fb4d980096 feat: add loading state to child segment list component 2024-12-16 11:46:08 +08:00
twwu cfde86252c Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-16 11:20:50 +08:00
twwu cea24acb0a feat: enhance child segment list with empty state handling and search result display 2024-12-16 11:20:37 +08:00
JzoNg 171cc88a0d merge main 2024-12-16 11:09:13 +08:00
Joel 487809cecd fix: checkox mix merge error 2024-12-16 11:04:39 +08:00
非法操作andJoel 66d7d7a9bc fix: change http node params from dict to list tuple (#11665) 2024-12-16 11:04:38 +08:00
非法操作andJoel ae45575226 feat: add grok-2-1212 and grok-2-vision-1212 (#11672) 2024-12-16 11:04:38 +08:00
782a24b04d fix: remove the unused QueueWorkflowPartialSuccessEvent handle in workflow (#11669)
Co-authored-by: Novice Lee <novicelee@NoviPro.local>
2024-12-16 11:04:38 +08:00
b96686c1f9 chore: translate i18n files (#11639)
Co-authored-by: douxc <7553076+douxc@users.noreply.github.com>
2024-12-16 11:04:38 +08:00
c1cf5f8d15 feat: log add trace id (#11599)
Co-authored-by: hobo.l <hobo.l@binance.com>
2024-12-16 11:04:38 +08:00
yihongandJoel 975743925e fix: _handle_workflow_run_partial_success args is wrong (#11562)
Signed-off-by: yihong0618 <zouzou0208@gmail.com>
2024-12-16 11:04:38 +08:00
yihongandJoel d8fb14d5df fix: ExternalDatasetService.process_external_api wrong args (#11586)
Signed-off-by: yihong0618 <zouzou0208@gmail.com>
2024-12-16 11:04:38 +08:00
yihongandJoel b8aa9a0162 fix: account.id should account_id (#11628)
Signed-off-by: yihong0618 <zouzou0208@gmail.com>
2024-12-16 11:04:38 +08:00
Bowen LiangandJoel 108c1ec929 test: run vdb tests on TiDB Vector with docker in CI tests (#11645) 2024-12-16 11:04:38 +08:00
yihongandJoel 5e3edd2b1c fix: better error message for stream (#11635)
Signed-off-by: yihong0618 <zouzou0208@gmail.com>
2024-12-16 11:04:38 +08:00
IWAI, MasaharuJoelIWAI, Masaharu <iwai_masaharu@funkit.co.jp>
0dfa34ebff Update translate to Japanese: natural Japanese expression (#11647)
Co-authored-by: IWAI, Masaharu <iwai_masaharu@funkit.co.jp>
2024-12-16 11:04:38 +08:00
yihongandJoel 294be849d5 fix: langfuse do not have created_at args and fix the typing in the file (#11648)
Signed-off-by: yihong0618 <zouzou0208@gmail.com>
2024-12-16 11:04:38 +08:00
IWAI, MasaharuandJoel aff330945d fix: rename README filename: Japanese language code is 'JA' (#11651) 2024-12-16 11:04:38 +08:00
Junyan QinandJoel 1ebf66718e fix: remove unnecessary curly braces in wf api doc (#11658) 2024-12-16 11:04:38 +08:00
yihongandJoel 36aebac6af fix: filter bug for keywork cause code can not reach (#11666)
Signed-off-by: yihong0618 <zouzou0208@gmail.com>
2024-12-16 11:04:38 +08:00
NFishandJoel e9e78487b5 Feat: new entry point for app creation (#10847) 2024-12-16 11:04:32 +08:00
Kevin9703andJoel bc82de83b7 fix: app log filter value error (#11624) 2024-12-16 11:02:47 +08:00
yihongandJoel 09184afba0 fix: split dir for opendal tests (#11627)
Signed-off-by: yihong0618 <zouzou0208@gmail.com>
2024-12-16 11:02:47 +08:00
-LAN-andJoel 674dd13fbd chore(dependency): bump gunicorn to 23.0 (#11560)
Signed-off-by: -LAN- <laipz8200@outlook.com>
2024-12-16 11:02:47 +08:00
zxhlyhandJoel a594fd87b8 Fix/pdf preview in build (#11621) 2024-12-16 11:02:47 +08:00
Hiroshi FujitaandJoel df1f5f7851 feat(devcontainer): add alias to stop Docker containers (#11616) 2024-12-16 11:02:47 +08:00
yihongandJoel 96bb49aded ci: better print version for ruff to check the change (#11587)
Signed-off-by: yihong0618 <zouzou0208@gmail.com>
2024-12-16 11:02:47 +08:00
JasonVVandJoel 6d1264af4e feat(model): add vertex_ai Gemini 2.0 Flash Exp (#11604) 2024-12-16 11:02:47 +08:00
crazywoolaandJoel cfd964880a fix: name of llama-3.3-70b-specdec (#11596) 2024-12-16 11:02:47 +08:00
84d966d0d8 Added new models and Removed the deleted ones for Groq #11455 (#11456)
Co-authored-by: crazywoola <427733928@qq.com>
Co-authored-by: Alok Shrivastwa <Alok.Shrivastwa@microland.com>
2024-12-16 11:02:47 +08:00
Warren ChenandJoel a926cd436f [ref] use one method to get boto client for aws bedrock (#11506) 2024-12-16 11:02:47 +08:00
76338175e8 chore: translate i18n files (#11577)
Co-authored-by: JzoNgKVO <27049666+JzoNgKVO@users.noreply.github.com>
2024-12-16 11:02:47 +08:00
yihongandJoel 561453b63f fix: support mdx files close #11557 (#11565)
Signed-off-by: yihong0618 <zouzou0208@gmail.com>
2024-12-16 11:02:47 +08:00
JoeandJoel 39c678308b fix: change workflow trace id (#11585) 2024-12-16 11:02:47 +08:00
KVOJJJinandJoel 076bd1cf8d Feat: dark mode for logs and annotations (#11575) 2024-12-16 11:02:45 +08:00
880094cc7b Lindorm vdb (#11574)
Co-authored-by: jiangzhijie <jiangzhijie.jzj@alibaba-inc.com>
2024-12-16 11:00:37 +08:00
非法操作andJoel 3e6ff18e1b feat: add gemini-2.0-flash-exp (#11570) 2024-12-16 11:00:37 +08:00
yihongandJoel 9a55bd119e fix: better opendal tests (#11569)
Signed-off-by: yihong0618 <zouzou0208@gmail.com>
2024-12-16 11:00:37 +08:00
liuzhenghuaandJoel ec1efe5d54 Fix: RateLimit requests were not released when a streaming generation exception occurred (#11540) 2024-12-16 11:00:37 +08:00
708c1a19a1 chore: translate i18n files (#11545)
Co-authored-by: zxhlyh <16177003+zxhlyh@users.noreply.github.com>
2024-12-16 11:00:37 +08:00
zxhlyhandJoel 974b88d63a fix: workflow continue on error doc link (#11554) 2024-12-16 11:00:37 +08:00
-LAN-andJoel 4762d9b02d feat: integrate opendal storage (#11508)
Signed-off-by: -LAN- <laipz8200@outlook.com>
2024-12-16 11:00:37 +08:00
72b1bed79d fix: iteration node in parallel mode token count error (#11539)
Co-authored-by: Novice Lee <novicelee@NoviPro.local>
2024-12-16 11:00:37 +08:00
14912b2a1d Feat: continue on error (#11458)
Co-authored-by: Novice Lee <novicelee@NovicedeMacBook-Pro.local>
Co-authored-by: Novice Lee <novicelee@NoviPro.local>
2024-12-16 11:00:37 +08:00
zxhlyhandJoel d1d76823d1 feat: workflow continue on error (#11474) 2024-12-16 11:00:37 +08:00
Yi XiaoandJoel 3b57b8c91f chore: update thai lang in app page (#11541) 2024-12-16 11:00:37 +08:00
TommyandJoel 1a1d35607c [Pixtral] Add new model ; add vision (#11231) 2024-12-16 11:00:37 +08:00
c82271af75 fix: Remove duplicate 'response_format' parameter from model YAML files (#11531)
Co-authored-by: zhangkunyuan <zhangkunyuan@cmhi.chinamobile.com>
2024-12-16 11:00:37 +08:00
Paul van OorschotandJoel 0b7b12b003 feat: Add llama-3.3 models for Groq (#11533) 2024-12-16 11:00:37 +08:00
yihongandJoel cbb21149e6 fix: better error message for url add external knowledge (#11537)
Signed-off-by: yihong0618 <zouzou0208@gmail.com>
2024-12-16 11:00:37 +08:00
yihongandJoel 88df17694f Revert "fix: total tokens is wrong which is zero in inter way, close … (#11536) 2024-12-16 11:00:37 +08:00
yihongandJoel 602bd801c3 fix: can not start local by REMOTE_SETTINGS_SOURCE_NAME change it to … (#11535)
Signed-off-by: yihong0618 <zouzou0208@gmail.com>
2024-12-16 11:00:37 +08:00
yihongandJoel a571914ffc fix: issue 11247 that Completion mode content maybe list or str (#11504)
Signed-off-by: yihong0618 <zouzou0208@gmail.com>
2024-12-16 11:00:37 +08:00
Wei MingzhiandJoel e2a3c2e9da Remove the processing of single quote when testing API tools. (#11390) 2024-12-16 11:00:37 +08:00
非法操作andJoel b76cee7ad8 chore: LOCAL_FILE also try to use remote_url as Prompt message (#11443) 2024-12-16 11:00:37 +08:00
e8f46bffde Msg file preview (#11466)
Co-authored-by: crazywoola <427733928@qq.com>
Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com>
2024-12-16 11:00:37 +08:00
barabicuandJoel e299232a19 chore: fix typo in Japanese localization (#11502) 2024-12-16 11:00:37 +08:00
문정현andJoel 08a4d6d67f chore : fix translation Typo in ko-KR localization (#11509) 2024-12-16 11:00:37 +08:00
-LAN-andJoel 0deb19e800 fix(app_generator_service): overload type hints (#11507)
Signed-off-by: -LAN- <laipz8200@outlook.com>
2024-12-16 11:00:37 +08:00
orangeclkandJoel 5190cac072 feat: add siliconflow qwq and llama3.3 model (#11492) 2024-12-16 11:00:37 +08:00
60470414fa feat:add apollo configuration to load env file (#11210)
Signed-off-by: -LAN- <laipz8200@outlook.com>
Co-authored-by: huanshare <liuhuan101@longfor.com>
Co-authored-by: -LAN- <laipz8200@outlook.com>
2024-12-16 11:00:37 +08:00
Yingchun LaiandJoel 062a57589b fix: add the missing abab6.5t-chat model of Minimax (#11484) 2024-12-16 11:00:37 +08:00
-LAN-andJoel 7f5bda81e5 chore: bump version to 0.13.2 (#11489)
Signed-off-by: -LAN- <laipz8200@outlook.com>
2024-12-16 11:00:37 +08:00
Hash BrownandJoel 61fd1947ff fix: cannot close notification manually (#11490) 2024-12-16 11:00:35 +08:00
JyongandJoel 19e13d89bc improve message clean logic (#11487) 2024-12-16 10:59:56 +08:00
-LAN-andJoel 186e39fd2f refactor(iteration_node): use Sequence and Mapping in parameters (#11483)
Signed-off-by: -LAN- <laipz8200@outlook.com>
2024-12-16 10:59:56 +08:00
eabf59f00d Fix the token count at the iteration node (#11235)
Co-authored-by: -LAN- <laipz8200@outlook.com>
2024-12-16 10:59:56 +08:00
83a5dcffac fix: tags could not be saved when the Workflow Tool was created (#11481)
Co-authored-by: zhaobs <zhaobs@cailian.net>
2024-12-16 10:59:56 +08:00
kurokoboandJoel e11a876f79 feat: add 'Open in Explore' link for each apps on studio (#11402) 2024-12-16 10:59:56 +08:00
Muneyuki NoguchiandJoel dcac973adc Fix the Japanese translation for 'Detail' (#11476) 2024-12-16 10:59:56 +08:00
Yi XiaoandJoel 45bdeb79f8 feat: ifelse condition variable editable after selection (#11431) 2024-12-16 10:59:56 +08:00
Charlie.WeiandJoel af9060e238 Refactor: Remove redundant style and simplify Mermaid component (#11472) 2024-12-16 10:59:56 +08:00
xiandan-erizoandJoel 160c229304 Update ext_redis.py (#11214) 2024-12-16 10:59:56 +08:00
3652d71ac6 remove mermail render cache (#11470)
Co-authored-by: Gimling <huangjl@ruyi.ai>
2024-12-16 10:59:56 +08:00
Trey DongandJoel 3eac339dd3 fix(api): throw error when notion block can not find (#11433) 2024-12-16 10:59:56 +08:00
yihongandJoel 4208e35e54 fix: unit tests env will need clear too (#11445)
Signed-off-by: yihong0618 <zouzou0208@gmail.com>
2024-12-16 10:59:56 +08:00
Kazuki TakamatsuandJoel 9dccb51fd0 Fix model provider of vertex ai (#11437) 2024-12-16 10:59:56 +08:00
Hash BrownandJoel 65262b3ab7 fix: cannot upload animated webp image as app icon (#11453) 2024-12-16 10:59:56 +08:00
非法操作andJoel 8ed235fa0b feat: support json_schema for ollama models (#11449) 2024-12-16 10:59:56 +08:00
非法操作andJoel 7bbb745e33 feat: add gemini exp 1206 (#11444) 2024-12-16 10:59:56 +08:00
非法操作andJoel 994b7a6603 feat: add zhipu glm_4v_flash (#11440) 2024-12-16 10:59:56 +08:00
Hash BrownandJoel 26dee2e885 style: EmojiPicker component top padding (#11452) 2024-12-16 10:59:56 +08:00
24d43dceb4 fix: issue #10596 by making the iteration node outputs right (#11394)
Signed-off-by: yihong0618 <zouzou0208@gmail.com>
Signed-off-by: -LAN- <laipz8200@outlook.com>
Co-authored-by: -LAN- <laipz8200@outlook.com>
2024-12-16 10:59:56 +08:00
be9f58d065 fix(document_extractor): pptx file type and missing metadata_filename UnstructuredIO (#11364)
Co-authored-by: Julian Huynh <julian.huynh@immersio.io>
2024-12-16 10:59:56 +08:00
KVOJJJinandJoel ffd1343a09 Fix: compatible with outputs data structure (#11432) 2024-12-16 10:59:56 +08:00
JyongandJoel 898ea9bf0f update tidb batch get endpoint to basic mode (#11426) 2024-12-16 10:59:55 +08:00
JyongandJoel 269698d8ce fix external retrieval without segment id (#11423) 2024-12-16 10:59:55 +08:00
shirochanandJoel 1e5a9acc74 FEAT: cohere rerank 3.5 model added (#11289) 2024-12-16 10:59:55 +08:00
MatsudaandJoel 8fd0eaf5b7 fix(model_runtime): add vision to Amazon Nova Lite and Pro (#11398) 2024-12-16 10:59:55 +08:00
crazywoolaandJoel e98e3e1f17 use md table systax in pr template (#11412) 2024-12-16 10:59:55 +08:00
kurokoboandJoel 083af2a044 fix: add elkjs (#11404) 2024-12-16 10:59:55 +08:00
huayaoyue6andJoel 8ae566e8fc fix: update DocumentIsPausedError (#11405) 2024-12-16 10:59:55 +08:00
Charlie.WeiJoelluowei <glpat-EjySCyNjWiLqAED-YmwM>crazywoolacrazywoola
e562cdc72e Update mermaid (#11356)
Co-authored-by: luowei <glpat-EjySCyNjWiLqAED-YmwM>
Co-authored-by: crazywoola <427733928@qq.com>
Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com>
2024-12-16 10:59:55 +08:00
e81d830a56 chore: translate i18n files (#11389)
Co-authored-by: JzoNgKVO <27049666+JzoNgKVO@users.noreply.github.com>
2024-12-16 10:59:55 +08:00
KVOJJJinandJoel b68de4fa6d Fix: support file download in workflow result (#11338) 2024-12-16 10:59:15 +08:00
-LAN-andJoel 8eb888f7d6 chore: bump version to 0.13.1 (#11382)
Signed-off-by: -LAN- <laipz8200@outlook.com>
2024-12-16 10:59:15 +08:00
Warren ChenandJoel c99b822ca5 [fix] rename yaml files to fit windows (#11379) 2024-12-16 10:59:15 +08:00
Yi XiaoandJoel ed234e82d0 fix: empty object (conversation variable) editable (#11352) 2024-12-16 10:59:15 +08:00
yihongandJoel 824877dd5f fix: some typos using typos (#11374)
Signed-off-by: yihong0618 <zouzou0208@gmail.com>
2024-12-16 10:59:15 +08:00
Yi XiaoandJoel a62892ccdb fix: bg typo in variable aggregator node (#11376) 2024-12-16 10:59:15 +08:00
0bae1c6cb6 [feat] Add AWS Bedrock rerank (#11349)
Co-authored-by: crazywoola <427733928@qq.com>
2024-12-16 10:59:15 +08:00
twwu 6a02076c54 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-16 10:55:19 +08:00
twwu 022fa663c5 fix: improve memoization for document detail processing modes 2024-12-16 10:55:13 +08:00
Joel ab7df47768 fix: handle show child trunck 2024-12-16 10:26:52 +08:00
Yeuoly fa03ba23bb Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-15 18:12:43 +08:00
Yeuoly a48608dd9b Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-13 22:53:20 +08:00
Yeuoly ecb5e85ca4 fix: unbound variable 2024-12-13 20:21:47 +08:00
Yeuoly 92e02c1d0c fix: avoid sending email to unauth users 2024-12-13 20:21:02 +08:00
Yeuoly 2e2d1659ca feat: support whitelist 2024-12-13 20:09:05 +08:00
Yeuoly 3dd6d96b5a Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-13 19:51:28 +08:00
twwu 8f56c6a7fa Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-13 17:39:44 +08:00
twwu f1782664b6 feat: add empty state handling and translations for segment list 2024-12-13 17:38:26 +08:00
AkaraChen 031c2ad899 chore: update pnpm lock 2024-12-13 17:27:04 +08:00
AkaraChen fe2d60dfc9 fix: option card gradient & tailwind config 2024-12-13 15:47:29 +08:00
nite-knite 7d673e7f14 feat: dataset creation UI tinkering 2024-12-13 15:28:17 +08:00
AkaraChen 8f178290be fix: preview document picker label overflow 2024-12-13 15:20:37 +08:00
AkaraChen f304976715 fix: create dataset step one next 2024-12-13 15:13:06 +08:00
AkaraChen b2322aca27 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-13 14:57:18 +08:00
AkaraChen 6dc20ee809 fix: unique key 2024-12-13 14:57:13 +08:00
twwu f7d6dbe90b fix: adjust layout and styling in child segment list component 2024-12-13 14:54:33 +08:00
twwu 44929133a4 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-13 14:45:39 +08:00
twwu a4c66e3659 feat: improve translation handling in segment components 2024-12-13 14:45:31 +08:00
AkaraChen ab76266993 chore: enable type intelligence for tailwind config 2024-12-13 14:43:52 +08:00
AkaraChen b0f34975d4 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-13 14:42:13 +08:00
AkaraChen 24975d475a fix: step 2 switch to economy 2024-12-13 14:41:57 +08:00
nite-knite 8de12ef1d7 feat: update dataset creation UI 2024-12-13 14:41:19 +08:00
JzoNg 463f5a34c6 dark mode for plugins 2024-12-13 14:06:07 +08:00
AkaraChen 2fb71dce50 feat: create datasets step two dark mode 2024-12-13 13:11:37 +08:00
JzoNg 5c98f1a5aa dark mode for tools 2024-12-13 13:10:29 +08:00
twwu 766f697f83 feat: navigate to document detail on selection in DocumentPicker 2024-12-13 10:30:48 +08:00
twwu 1641638523 refactor: reorganize BatchAction import paths and enhance child segment scrolling behavior 2024-12-13 10:12:43 +08:00
Yeuoly 11c4bf5574 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-13 00:06:09 +08:00
Yeuoly 4cbaa6b77d Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-12 23:46:58 +08:00
Yeuoly d01f0278f4 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-12 19:16:31 +08:00
Yeuoly 8278c8a27e Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-12 18:27:58 +08:00
zxhlyh 7727ec822a Merge branch 'feat/plugins' into dev/plugin-deploy 2024-12-12 17:29:55 +08:00
zxhlyh a0e999e438 feat: plugin add agent-strategy type 2024-12-12 17:29:25 +08:00
twwu a8254c29c5 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-12 17:14:44 +08:00
twwu 3dbd8f5d31 feat: enhance child segment list with total count and input value handling 2024-12-12 17:14:33 +08:00
AkaraChen 939f7f3e06 fix: cannot open in upload 2024-12-12 16:56:06 +08:00
AkaraChen 489015bd9e fix: update document name display to prevent overflow 2024-12-12 16:50:15 +08:00
AkaraChen 1b150d31a9 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-12 16:42:34 +08:00
AkaraChen 3fa33b09af fix: add truncation to document name display and update dataset form checks 2024-12-12 16:42:23 +08:00
twwu 5a1159f9ab feat: update child chunk handling and improve UI interactions 2024-12-12 15:33:54 +08:00
JzoNg 4aef5939f1 Merge branch 'feat/plugins' into dev/plugin-deploy 2024-12-12 15:14:59 +08:00
JzoNg e0cc990fa5 fix: tool parameter form change 2024-12-12 15:12:41 +08:00
twwu c1d1960215 feat: enhance time formatting and add child segment detail component 2024-12-12 14:45:00 +08:00
Yeuoly 85caf51ad1 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-12 13:51:00 +08:00
twwu fd339d51e2 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-12 13:39:50 +08:00
twwu 36778a4ebe feat: add and delete child chunks 2024-12-12 13:39:45 +08:00
AkaraChen 3f1b92a23f fix: data source web & notion 2024-12-12 13:37:36 +08:00
AkaraChen ac24163fb9 chore: change some color for dark mode 2024-12-12 13:13:08 +08:00
twwu a25a3ee1f7 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-11 18:38:05 +08:00
twwu 28987003fa refactor: simplify SegmentIndexTag usage and improve label prefix handling 2024-12-11 18:37:56 +08:00
Joel f2eeaba8d7 chore: remove useless test code 2024-12-11 18:23:52 +08:00
twwu db01c5c89d Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-11 18:18:06 +08:00
twwu 51f6a87aef feat: update translation files and improve segment index tag component 2024-12-11 18:15:30 +08:00
Joel d88bb70427 fix: loding and empty css 2024-12-11 18:13:56 +08:00
AkaraChen 4f6bc54280 fix: update file type casting in PreviewDocumentPicker 2024-12-11 18:05:05 +08:00
Joel 49a48910cd chore: hit result toggle btn 2024-12-11 18:02:16 +08:00
AkaraChen 3f6aee6c51 feat: economy hover effect & upload page 2024-12-11 18:01:02 +08:00
Joel f22c608c89 fix: tiny css problem 2024-12-11 17:48:22 +08:00
AkaraChen 41039f09bf fix: switch to parent child not use qualified 2024-12-11 16:55:11 +08:00
AkaraChen 6d689317ea Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-11 16:50:43 +08:00
AkaraChen f969dce345 feat: switch to high quan modal 2024-12-11 16:50:32 +08:00
Joel 599345879e feat: result ui 2024-12-11 16:34:52 +08:00
AkaraChen 9dce37bb24 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-11 15:45:14 +08:00
AkaraChen 149cfaafc5 feat: add switch to high quan dialog 2024-12-11 15:45:05 +08:00
Joel 17ae100342 chore: result main 2024-12-11 15:15:04 +08:00
Joel 361a007f42 feat: tags 2024-12-11 14:42:14 +08:00
Joel b8ced5102c feat: new retrieval result ui 2024-12-11 14:30:01 +08:00
zxhlyh 5b3112a137 fix: model page empty 2024-12-11 14:10:28 +08:00
twwu 4017c65c1f Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-11 14:00:27 +08:00
twwu 8518c1ae8c feat: add regeneration confirmation and success messages in translation files 2024-12-11 14:00:21 +08:00
twwu 033ce47d01 feat: add Dot and Tag components for enhanced UI representation 2024-12-11 13:31:21 +08:00
AkaraChen 70d1d03106 fix: not use css var 2024-12-11 11:06:20 +08:00
AkaraChen 11ee45f1c2 fix: default value not match prd 2024-12-11 11:03:03 +08:00
Joel 16d8bdfc78 chore: hit result item temp 2024-12-10 18:36:45 +08:00
Joel 14c8297e36 chore: fix setting text 2024-12-10 18:36:45 +08:00
twwu 8baaf7c84e Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-10 18:01:43 +08:00
twwu b4a6ec077f feat: add functionality to regenerate child chunks and enhance UI components for segment management 2024-12-10 18:01:38 +08:00
AkaraChen 27f5738c55 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-10 17:32:43 +08:00
AkaraChen 5fa0fc4858 fix: dataset settings 2024-12-10 17:32:31 +08:00
Joel 87e284ef75 feat: no linked app ui 2024-12-10 17:19:05 +08:00
Joel dd23f1093b feat: linked app new ui 2024-12-10 16:13:12 +08:00
Joel 77185d9617 feat: dataset info to new ui 2024-12-10 16:13:12 +08:00
AkaraChen f894fb05c1 fix: retrive config cannot enable rerank 2024-12-10 16:04:42 +08:00
zxhlyh 1272cf8fe7 Merge branch 'feat/plugins' into dev/plugin-deploy 2024-12-10 15:52:16 +08:00
zxhlyh 35fb9099e3 fix: model page 2024-12-10 15:51:55 +08:00
zxhlyh 3803989480 Merge branch 'feat/plugins' into dev/plugin-deploy 2024-12-10 14:58:38 +08:00
twwu 6055e27050 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-10 14:16:49 +08:00
twwu 09cdb573c7 feat: enhance NewSegmentModal with add another option and improve cancel behavior 2024-12-10 14:16:43 +08:00
Joel 430de3108b chore: remove isloading break ui 2024-12-10 14:15:14 +08:00
Joel d1743ee3e5 feat: auto disabled api 2024-12-10 14:12:03 +08:00
Joel 335e57f3c9 feat: auto disable document ui 2024-12-10 14:12:03 +08:00
zxhlyh c51c032334 fix: dsl check 2024-12-10 14:11:34 +08:00
zxhlyh 5825c101c9 fix: marketplace exclude 2024-12-10 13:37:02 +08:00
twwu ae3eae413f feat: add LayoutRight2LineMod icon component and update document detail 2024-12-10 13:12:05 +08:00
twwu 89345e5c5a Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-10 11:32:02 +08:00
twwu 65a9cac099 feat: add new translations and enhance segment management features 2024-12-10 11:31:56 +08:00
Yeuoly 80b3de5c4f Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-10 02:21:56 +08:00
Yeuoly 6868ee5431 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-10 00:23:08 +08:00
Yeuoly 054b59c702 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-09 23:26:38 +08:00
Yeuoly ff81d12426 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-09 23:02:50 +08:00
Joel 4c1bf96b14 fix: node build out of memory 2024-12-09 18:26:09 +08:00
Joel 54f03c5c78 fix: node build out of memory 2024-12-09 18:15:06 +08:00
AkaraChen 14934c0610 feat: file preview in step two 2024-12-09 18:10:56 +08:00
Joel 0d64a35fb6 chore: refact retry btn 2024-12-09 17:34:57 +08:00
twwu aa0d587516 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-09 16:56:58 +08:00
twwu 55ed41520f feat: enhance batch action confirmation and segment management 2024-12-09 16:55:13 +08:00
Joel ccdb3c5931 fix: deleting problem 2024-12-09 16:29:33 +08:00
Yeuoly 6e798fad34 fix: add pnpm lock 2024-12-09 16:17:33 +08:00
Yeuoly e401d917ac fix 2024-12-09 16:16:56 +08:00
Yeuoly 04d3abd754 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-09 16:13:33 +08:00
AkaraChen 01e363f33f Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-09 15:43:49 +08:00
AkaraChen 20a2e76f40 feat: file selector for preview in parent child 2024-12-09 15:43:34 +08:00
Joel 82e2b68d9e feat: preview document picker 2024-12-09 15:42:19 +08:00
twwu 12c791149c Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-09 11:46:24 +08:00
twwu 1c5464dbef feat: add pagination for chunk list 2024-12-09 11:46:18 +08:00
AkaraChen 2d66077ed3 fix: option card style 2024-12-09 10:18:04 +08:00
AkaraChen ec1c03f0a3 fix: i18n & option card props 2024-12-09 10:08:19 +08:00
AkaraChen 3d283a11b6 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-06 23:01:15 +08:00
AkaraChen cc2a9cdf37 wip: refactor 2024-12-06 22:33:53 +08:00
Joel b7472c7ab0 chore: change batch url 2024-12-06 18:29:26 +08:00
twwu c541d4aaa8 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-06 18:21:05 +08:00
twwu b0a4819ec1 feat: enhance translations and UI components for segment management 2024-12-06 18:20:59 +08:00
Joel d1d9315f05 chore: list page color to css vars 2024-12-06 17:21:27 +08:00
twwu c9114d171e Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-06 17:19:25 +08:00
twwu 1546859bae feat: add child segment response type and enhance dataset components with improved translations and UI updates 2024-12-06 17:18:29 +08:00
StyleZhang b448900bb8 merge feat/plugins 2024-12-06 16:58:42 +08:00
StyleZhang 69daf4a027 merge main 2024-12-06 16:56:42 +08:00
Yeuoly 1ce7990df4 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-06 16:47:40 +08:00
AkaraChen dfebcd0ea7 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-06 16:16:35 +08:00
AkaraChen 6383a64419 fix: step 2 preview ui padding 2024-12-06 16:16:30 +08:00
JzoNg 3bc9ddb006 fix mutation of model credentials update 2024-12-06 16:05:06 +08:00
JzoNg ea2862e435 fix style of boolean form of model parameters 2024-12-06 16:05:06 +08:00
StyleZhang ca3d96e5f4 fix: tool list 2024-12-06 15:42:02 +08:00
Joel 570bf75698 feat: support multi 2024-12-06 15:22:31 +08:00
AkaraChen 07f0140d10 feat: preview parent child chunk in create step 2 2024-12-06 15:20:14 +08:00
Joel 6748b50bf1 feat: use query to handle api and remove old api service 2024-12-06 14:26:38 +08:00
AkaraChen 6e38b523c9 wip: create datasets 2024-12-06 13:40:34 +08:00
AkaraChen a893309b73 wip: create datasets 2024-12-06 13:27:32 +08:00
Joel f3cfcb757e feat: document update change to batch api 2024-12-06 11:53:28 +08:00
Joel 91666c4394 chore: action i18n and remove confirm 2024-12-06 11:20:03 +08:00
Yeuoly fbcd4fe1f7 fix: use default_factory for list fields 2024-12-05 20:58:03 +08:00
Joel 768073ddac feat: batch action ui 2024-12-05 17:34:40 +08:00
twwu 734659c873 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-05 15:44:58 +08:00
twwu b59e95785c feat: enhance DocumentDetail and Completed components with child segment handling and improved layout 2024-12-05 15:44:53 +08:00
AkaraChen 9f8cf03155 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-05 15:32:59 +08:00
AkaraChen 0361bf00d1 fix: option card overflow clip cause language selector hidden 2024-12-05 15:32:34 +08:00
Joel 1cfb938a7b feat: support check item 2024-12-05 15:29:42 +08:00
Joel cae8ce5a1e fix: list add paging 2024-12-05 15:29:42 +08:00
Yi d6dea67947 apply the skeleton component to the Plugin loading card 2024-12-05 15:27:47 +08:00
Yi b8f9747849 Merge branch "main" into feat/plugins 2024-12-05 15:08:09 +08:00
AkaraChen 2417699e85 feat: new qa setting ui 2024-12-05 15:00:54 +08:00
StyleZhang f038eb2390 Merge branch 'feat/plugins' into dev/plugin-deploy 2024-12-05 14:55:32 +08:00
StyleZhang 0e70e72594 fix: marketplace list 2024-12-05 14:54:20 +08:00
Yeuoly 243d160242 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-05 14:49:04 +08:00
Yi 0e419a7a16 feat: move linear gradient bg to common config 2024-12-05 14:44:45 +08:00
Joel 8a8fc7ab50 feat: finish add chunk mode 2024-12-05 14:08:45 +08:00
Joel 1578dc50ef feat: add chunking mode 2024-12-05 11:40:46 +08:00
twwu 78fff31e61 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-05 11:13:20 +08:00
twwu b18eb58770 feat: implement ChildSegmentList component and integrate it into SegmentCard for displaying child chunks 2024-12-05 11:13:14 +08:00
twwu 52ba180bf4 feat: add SegmentDetail component for displaying and editing segment information 2024-12-05 11:11:57 +08:00
AkaraChen 8541153b15 merge main 2024-12-05 10:57:27 +08:00
AkaraChen 0185fb3369 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-05 10:40:32 +08:00
AkaraChen 5bf6cd242d wip: qa mode 2024-12-05 10:40:27 +08:00
twwu f8d6d5a6a9 refactor: replace DocumentContext with useDocumentContext for improved context management 2024-12-05 10:12:02 +08:00
twwu 7200dd42d3 refactor: update batch action component props and change id type in ChildChunkDetail 2024-12-05 09:49:37 +08:00
Yeuoly df68b6befa Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-04 19:26:23 +08:00
Yeuoly 3d3a42945f Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-04 19:02:50 +08:00
twwu 44989ae97c Merge branch 'feat/plugins' into dev/plugin-deploy 2024-12-04 18:11:10 +08:00
twwu 0ac5e53c2e fix: refactor GitHub releases fetching to improve error handling and format response 2024-12-04 18:08:25 +08:00
Joel 44b0039e8b fix: install plugin type show error 2024-12-04 18:06:00 +08:00
AkaraChen 4048eff3ab chore: remove twc 2024-12-04 17:37:12 +08:00
twwu becdca24df fix: enhance GitHub releases fetching with optional authentication 2024-12-04 16:49:49 +08:00
AkaraChen 8289175bfa style: fix component naming 2024-12-04 16:23:43 +08:00
AkaraChen 539050c56b style: fix component naming 2024-12-04 16:16:00 +08:00
AkaraChen 90b407ecc8 feat: loading & empty state for step 2 2024-12-04 16:07:25 +08:00
Joel 9fc0e658ad merge 2024-12-04 16:05:11 +08:00
Yeuoly e5e8277c2d Merge remote-tracking branch 'origin/feat/plugins' into dev/plugin-deploy 2024-12-04 15:40:39 +08:00
AkaraChen 1df3f4aad3 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-04 14:34:38 +08:00
twwu 8d74eb4946 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-12-04 14:24:54 +08:00
twwu 388d7918f3 feat: add translation for chunks and new icons; update checkbox styles; add new segment list and segment card 2024-12-04 14:24:47 +08:00
AkaraChen 14f46308a9 chore: gen icon for selection icon 2024-12-04 14:10:17 +08:00
AkaraChen 629152ff2c feat: ui component finish for chunk preview 2024-12-04 11:52:05 +08:00
Joel 29d29f8731 fix: can not chosse const 2024-12-04 11:17:15 +08:00
Joel f634a4488f merge main 2024-12-04 11:06:00 +08:00
Yeuoly d5cf64f289 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-03 19:45:25 +08:00
Yeuoly 9cb2a031ed Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-03 19:28:22 +08:00
Yi fc2656b4b7 fix: workspace selector UI 2024-12-03 18:34:18 +08:00
StyleZhang b858533a57 Merge branch 'feat/plugins' into dev/plugin-deploy 2024-12-03 18:04:11 +08:00
StyleZhang d6a4cbc6cc fix: marketplace list 2024-12-03 18:03:39 +08:00
AkaraChen bebad5cbdd refactor: step 2 2024-12-03 17:26:45 +08:00
Yeuoly c51fa7a440 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-03 16:52:09 +08:00
Yeuoly e6fcf06e59 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-03 16:29:02 +08:00
Yi 1e2ee61f6a feat: add version check before Plugin install from GitHub 2024-12-03 15:47:45 +08:00
AkaraChen dfdc4ed3b1 refactor: step 2 2024-12-03 15:23:51 +08:00
AkaraChen a77aa169b4 refactor: step 2 2024-12-03 14:43:15 +08:00
StyleZhang 66b79ee323 Merge branch 'feat/plugins' into dev/plugin-deploy 2024-12-03 14:35:36 +08:00
StyleZhang ab9a177c90 fix: marketplace list 2024-12-03 14:34:44 +08:00
AkaraChen 94eb069a97 refactor: step 2 2024-12-03 14:34:18 +08:00
AkaraChen c960f78035 refactor: step 2 2024-12-03 14:14:37 +08:00
nite-knite 8b28ed589c feat: update translation for bundle 2024-12-03 13:43:13 +08:00
AkaraChen 90421b5fb5 feat: preview container components 2024-12-03 13:39:27 +08:00
Yeuoly 1dad2fdaaf Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-02 22:00:05 +08:00
Yeuoly dbc555f698 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-02 21:26:12 +08:00
Yeuoly 78a0c3c13c Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-02 21:08:53 +08:00
nite-knite 3232a45ec4 Merge branch 'feat/plugins' into dev/plugin-deploy 2024-12-02 18:00:09 +08:00
nite-knite 3b1211d6bc chore: bump cross-spawn from 7.0.3 to 7.0.6 2024-12-02 17:54:39 +08:00
nite-knite 7bd3f2b932 feat: update description for API endpoints configuration 2024-12-02 17:41:52 +08:00
Yeuoly 5abbe76ca0 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-12-02 16:51:57 +08:00
JzoNg 86f45d7e25 Merge branch 'feat/plugins' into dev/plugin-deploy 2024-12-02 16:13:31 +08:00
Yeuoly e23d322c1c Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-29 18:20:59 +08:00
Yeuoly 48c9a25393 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-29 16:49:18 +08:00
Yeuoly 8266bf6fa8 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-29 16:17:48 +08:00
Joel b78ab0bd69 fix: other install error 2024-11-29 15:18:07 +08:00
Joel 84cad5969e fix: not handleinstall error 2024-11-29 15:09:23 +08:00
Yeuoly f36a50ad09 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-29 14:09:54 +08:00
Joel 35ef874867 fix: detect is same packege use uniqid 2024-11-29 10:56:58 +08:00
Yeuoly df67200e18 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-28 20:44:58 +08:00
Yeuoly d409d30ee5 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-28 19:35:48 +08:00
Yeuoly 5df52b33d7 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-28 19:09:27 +08:00
Joel 47579c86e6 fix: from marketplace install and update bundle 2024-11-28 18:47:06 +08:00
Joel 32619bd05e fix: install bunlde support update 2024-11-28 18:26:18 +08:00
Yeuoly e79dcf93fe Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-28 18:24:19 +08:00
JzoNg 6bd483030f Merge branch 'feat/plugins' into dev/plugin-deploy 2024-11-28 17:49:43 +08:00
JzoNg 6a500edf4d fix: loading of credential form 2024-11-28 17:48:28 +08:00
JzoNg adba60d067 Merge branch 'feat/plugins' into dev/plugin-deploy 2024-11-28 17:30:56 +08:00
JzoNg be7fa93ffc fix: modify tip of default embedding model 2024-11-28 17:27:21 +08:00
JzoNg 3bcd470ec6 fix: authorization in debugging plugin 2024-11-28 17:27:21 +08:00
JzoNg 73825c59e4 fix: crash of tool authorization in agent 2024-11-28 17:27:21 +08:00
JzoNg 5f76975e12 fix: icon of tool provider in agent 2024-11-28 17:27:21 +08:00
JzoNg 3ddb3d2bff fix: deleted tools in agent 2024-11-28 17:27:21 +08:00
JzoNg a70eda6c45 add loading for auth modal 2024-11-28 17:27:21 +08:00
Yeuoly 1858e523f1 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-28 17:12:55 +08:00
NFish 42cdc55db1 fix: do not show error tooltip if http status code is 401 2024-11-28 16:04:19 +08:00
NFish a76d0a09b6 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-11-28 16:03:05 +08:00
AkaraChen 11679dc68a feat: child chunk component for dataset 2024-11-28 15:18:56 +08:00
Joel 51f0f21a47 chore: not load updateInfo can not install 2024-11-28 14:30:31 +08:00
Joel 073e847524 fix: installed 2024-11-28 14:13:43 +08:00
Joel 3e601c4ef5 feat: local support upgrade 2024-11-28 14:09:05 +08:00
Joel fba468e8ad fix: handle install the same version 2024-11-28 13:50:04 +08:00
twwu d1c3c26dc7 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-11-28 13:37:20 +08:00
twwu 32df9d6e00 feat: add segment management hooks for enabling, disabling, and deleting segments 2024-11-28 13:37:12 +08:00
Joel f40b212b04 feat: support update if installed from marketplace 2024-11-28 12:00:12 +08:00
StyleZhang 9d8445c758 Merge branch 'feat/plugins' into dev/plugin-deploy 2024-11-28 11:27:13 +08:00
StyleZhang 37eee7be24 fix: model provider page marketplace 2024-11-28 11:26:45 +08:00
Joel 99942b26e6 chore: support install hide button 2024-11-28 10:40:33 +08:00
AkaraChen 25bccd52c2 feat: child chunk component for dataset 2024-11-28 10:36:24 +08:00
AkaraChen 521ab30bba fix: data processing form layout padding 2024-11-28 10:20:08 +08:00
Joel cc64419c84 feat: use new file icon 2024-11-27 17:57:28 +08:00
Joel e27568f0c7 fix: not add datasetid to picker 2024-11-27 16:52:10 +08:00
Joel b7b49daff8 feat: add picker logic 2024-11-27 16:48:40 +08:00
StyleZhang 9302a5fac8 merge feat/plugins 2024-11-27 16:15:57 +08:00
StyleZhang d4cda69b0e feat: marketplace add exclude 2024-11-27 16:14:15 +08:00
Joel 71e285c490 feat: add document file select 2024-11-27 15:52:58 +08:00
Yeuoly b1f2fc3cf4 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-27 14:49:00 +08:00
StyleZhang e145dba487 fix: dsl check 2024-11-27 14:30:47 +08:00
Joel e908ecab8f fix: add ui 2024-11-27 10:50:39 +08:00
AkaraChen f1655888ef fix: number input component 2024-11-27 10:29:16 +08:00
Yeuoly 3a18aaebd2 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-26 18:59:18 +08:00
Yeuoly 66d4de39b8 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-26 18:04:34 +08:00
Joel a98df0158e chore: document header 2024-11-26 17:26:20 +08:00
AkaraChen 378461bf8a Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-11-26 17:22:07 +08:00
AkaraChen e2c6ea3a3a chore: align design token 2024-11-26 17:22:02 +08:00
twwu 0c4e06e1c1 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-11-26 16:56:34 +08:00
twwu 1e4167427c refactor: update processing status UI and add new CSS variables for success and error states 2024-11-26 16:56:27 +08:00
AkaraChen e26a963163 fix: missing translation 2024-11-26 16:05:14 +08:00
AkaraChen 72ca69fb2a Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-11-26 15:38:03 +08:00
AkaraChen db1956ed54 feat: dataset creation form reset 2024-11-26 15:37:57 +08:00
Joel 9aceceda2c fix: css var value 2024-11-26 15:33:58 +08:00
AkaraChen 1843f6ccb6 refactor: input number component 2024-11-26 15:29:31 +08:00
AkaraChen b7d9987953 chore: align design token 2024-11-26 14:48:49 +08:00
Joel b8af4aead1 fix: update version show problem 2024-11-26 14:38:43 +08:00
AkaraChen b528b1e875 refactor: use css var 2024-11-26 14:33:40 +08:00
AkaraChen c4aa98e609 Merge branch 'main' into feat/parent-child-retrieval 2024-11-26 14:18:56 +08:00
AkaraChen 4757db1b6b refactor: use css var 2024-11-26 14:18:42 +08:00
Joel d40f0e645c fix: install marketplace bundle title 2024-11-26 14:11:21 +08:00
Joel 4b77ced4ad fix: not show from market bundle package icon 2024-11-26 14:07:45 +08:00
Yeuoly d695ac4b24 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-26 14:00:28 +08:00
StyleZhang b84b0c8ba8 merge main 2024-11-26 11:38:37 +08:00
StyleZhang f47b32b26d fix: dsl 2024-11-26 11:10:53 +08:00
StyleZhang 102a42d24c Merge branch 'main' into feat/plugins 2024-11-26 11:08:30 +08:00
StyleZhang 00eb47384a merge main 2024-11-26 10:31:39 +08:00
StyleZhang 2041650cca merge main 2024-11-26 10:29:58 +08:00
StyleZhang a0873a956f merge main 2024-11-26 10:27:48 +08:00
Yeuoly 6e37eeabca Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-25 23:36:35 +08:00
Yeuoly cdeda89801 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-25 23:22:52 +08:00
Joel df049564e8 feat: support install bundle from marketplace 2024-11-25 18:01:30 +08:00
Joel b93be49530 chore: support update show version 2024-11-25 18:01:29 +08:00
AkaraChen 1a6a28f650 feat: settings ui for database pre-preprocessing 2024-11-25 17:57:31 +08:00
StyleZhang 6bc37f4f00 Merge branch 'feat/plugins' into dev/plugin-deploy 2024-11-25 17:54:45 +08:00
StyleZhang 57756b18e4 fix: plugin task 2024-11-25 17:54:28 +08:00
StyleZhang 2252821cae Merge branch 'feat/plugins' into dev/plugin-deploy 2024-11-25 17:33:25 +08:00
StyleZhang 8ad9ab40df fix: plugin task 2024-11-25 17:32:57 +08:00
Yeuoly e68fec0022 fix: linter 2024-11-25 17:20:43 +08:00
Yeuoly 69b61ef57b Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-25 17:19:51 +08:00
StyleZhang 4f54ac6ed6 fix: marketplace collection condition 2024-11-25 12:03:49 +08:00
Yeuoly dfc94cd7c2 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-22 20:04:42 +08:00
Yeuoly f69d5caa14 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-22 18:19:27 +08:00
StyleZhang a84f0e29a4 Merge branch 'feat/plugins' into dev/plugin-deploy 2024-11-22 15:27:48 +08:00
StyleZhang 3263a6a5f5 fix: marketplace plugin tags i18n 2024-11-22 15:26:25 +08:00
JzoNg 27ea150a44 Merge branch 'feat/plugins' into dev/plugin-deploy 2024-11-22 15:11:52 +08:00
JzoNg 506e5e0bc8 fix: plugin type 2024-11-22 14:53:20 +08:00
AkaraChen bba9301788 fix: layout overflow 2024-11-22 14:09:41 +08:00
AkaraChen 7881fb4d22 fix: layout overflow 2024-11-22 13:12:24 +08:00
JzoNg c768f8fdd1 fix: path of tool provider 2024-11-22 11:41:36 +08:00
twwu d45ce48932 fix: update theme imports in globals.css 2024-11-22 11:02:45 +08:00
Joel c6b1fecc21 merge 2024-11-22 11:01:00 +08:00
Joel 3e3ae989f0 chore: in tool file and files all support file and files 2024-11-22 10:54:22 +08:00
Joel 786f2d9bf6 chore: fix categoriesMap[category] undefined 2024-11-22 10:39:22 +08:00
twwu 85377d13fc Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-22 10:22:39 +08:00
twwu 51e04b45ec fix: update error icon z-index and upgrade react-query dependencies 2024-11-22 10:22:33 +08:00
JzoNg bd6c2e519c fix: corner mark 2024-11-22 09:09:35 +08:00
Joel 3f0b35d72e feat: install bundle from marketplace code 2024-11-21 18:22:11 +08:00
JzoNg f51336df08 Merge branch 'feat/plugins' into dev/plugin-deploy 2024-11-21 18:13:11 +08:00
JzoNg 78c867b9a3 use plugin detail for builtin tool 2024-11-21 18:11:36 +08:00
JzoNg f213c8f393 fix: version switch 2024-11-21 18:11:36 +08:00
Joel 1b3f4f1f2a feat: support icon size 2024-11-21 18:00:13 +08:00
Joel c59c696df2 chore: add version type in marketplace return 2024-11-21 17:43:41 +08:00
Joel 8993a91f12 fix: upgrade sussces auto hide 2024-11-21 17:38:23 +08:00
JzoNg 02c5989612 recover api tool create card 2024-11-21 17:29:28 +08:00
JzoNg ac42ba880a fix: install handle of list refresh 2024-11-21 17:11:22 +08:00
Yeuoly b2fdf4f85f Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-21 17:00:28 +08:00
AkaraChen fdcee1cd45 feat: create top bar 2024-11-21 16:19:32 +08:00
JzoNg 56f573ecfb fix: update plugin handle 2024-11-21 15:35:39 +08:00
Joel 2560d3edae fix: bundle install title 2024-11-21 15:22:19 +08:00
Joel 351615fb98 fix: not the first time upload bundle error 2024-11-21 15:14:21 +08:00
twwu 13c62f83f4 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-11-21 15:13:21 +08:00
twwu c5b9a829c0 feat: update UI styles and enhance status indicator components 2024-11-21 15:13:16 +08:00
Yeuoly cc8117f02a Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-21 14:36:34 +08:00
Yeuoly 846c3faba7 fix: ruff 2024-11-21 14:36:01 +08:00
Yeuoly 7c74aaabcf Merge remote-tracking branch 'origin/feat/plugins' into dev/plugin-deploy 2024-11-21 14:35:14 +08:00
Joel 11ed86f2a8 feat: download package 2024-11-21 14:25:58 +08:00
JzoNg b01c18ae7f fix: version badge 2024-11-21 14:16:02 +08:00
StyleZhang 84a3fe85c8 fix: marketplace card link 2024-11-21 13:50:26 +08:00
JzoNg 3efc6c5050 fix: github link 2024-11-21 13:42:06 +08:00
JzoNg 42a0534299 fix: locale of model provider 2024-11-21 13:18:33 +08:00
JzoNg eec193488d fix: detail link of plugin 2024-11-21 13:09:10 +08:00
JzoNg 021bc57cd4 empty of tool list 2024-11-21 12:43:18 +08:00
StyleZhang 022eda9e8b fix: tool providers 2024-11-21 12:03:53 +08:00
AkaraChen 6f3a1c9d72 feat: parent child state 2024-11-21 11:40:17 +08:00
Joel 2067092f52 feat: detail link in tools 2024-11-21 11:33:21 +08:00
Joel 000db07d29 feat: in tool install plugin 2024-11-21 11:16:05 +08:00
Joel 98ae34acd5 chore: support tags filter 2024-11-21 10:51:36 +08:00
StyleZhang 698e94856e fix: plugin task zindex 2024-11-21 08:42:36 +08:00
Yeuoly e05d7637ac Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-21 00:30:47 +08:00
Joel 99ffe43e91 merge main 2024-11-20 18:24:03 +08:00
Yeuoly 4921e610af Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-20 18:12:45 +08:00
Joel 498222371c chore: parse marketplace bundle new api 2024-11-20 17:52:35 +08:00
twwu 13bb4aa721 Merge branch 'feat/parent-child-retrieval' of https://github.com/langgenius/dify into feat/parent-child-retrieval 2024-11-20 16:38:48 +08:00
twwu d0ef423e66 feat: enhance SegmentCard and SegmentAdd components with new DocumentTitle and improved UI elements 2024-11-20 16:38:38 +08:00
Joel 26288e71d3 fix: local bundle install 2024-11-20 16:32:20 +08:00
AkaraChen 8e1aef6120 feat: new dataset footer ui 2024-11-20 16:24:06 +08:00
JzoNg 19fb466074 fix: tool icon in app configure 2024-11-20 16:22:51 +08:00
JzoNg cd4eb9c3f1 fix: icon in model list 2024-11-20 16:22:51 +08:00
Joel 4ef0a3818f feat: can install bundle from local 2024-11-20 16:21:09 +08:00
twwu 77d6dbb3d0 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-20 15:31:03 +08:00
twwu e3b8926aef fix: correct fetched releases variable in version check and update dev script for debugging 2024-11-20 15:30:57 +08:00
AkaraChen 4657df17a9 revert: qa mode 2024-11-20 15:25:26 +08:00
Joel efb84ff03d fix: github install fix 2024-11-20 15:05:17 +08:00
AkaraChen 27ece2fb52 feat: most ui for create datasets
chore: upd
2024-11-20 14:55:59 +08:00
Joel 1846a7de73 fix: handle github item from data struct diffe 2024-11-20 14:48:38 +08:00
Joel 40d025052d fix: load package dsl error 2024-11-20 14:27:46 +08:00
Joel bb2914652a feat: finsh loading error comp 2024-11-20 13:56:32 +08:00
Joel e6a03f7a58 feat: loading error struct 2024-11-20 11:50:46 +08:00
JzoNg 386ee7b07b update model provider list after plugin installed 2024-11-20 11:49:20 +08:00
JzoNg 788f9de843 update model provider list after deleting plugin 2024-11-20 10:44:20 +08:00
AkaraChen ca4d0fb4cc feat: option card component
chore: upd
2024-11-20 10:13:40 +08:00
Joel 5947e38ea0 feat: install by local bundle change 2024-11-19 18:32:17 +08:00
Joel e151c2ee8c fix: when error can not install 2024-11-19 17:29:15 +08:00
Joel a093a48675 feat: show package item in bundle 2024-11-19 17:29:14 +08:00
Yeuoly 6c9f77092a Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-19 16:50:47 +08:00
StyleZhang f99f25ae02 Merge branch 'feat/plugins' into dev/plugin-deploy 2024-11-19 16:43:38 +08:00
StyleZhang 27b1a51572 fix: marketplace collection label description 2024-11-19 16:43:13 +08:00
JzoNg a867040b88 fix icon of model provider 2024-11-19 16:26:23 +08:00
Joel 2e3442f74c feat: support local installed package 2024-11-19 16:04:31 +08:00
StyleZhang ba53900ec4 merge 2024-11-19 15:14:27 +08:00
StyleZhang 43d7a538dc feat: marketplace list url support search & tags 2024-11-19 15:08:54 +08:00
Joel c5c06c18f1 feat: can upload and parse bundle 2024-11-19 15:05:15 +08:00
Yeuoly ba148952bd Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-19 14:04:15 +08:00
twwu 972eaa5948 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-19 11:20:23 +08:00
twwu 87b23a1fac feat: refactor GitHub releases fetching and update handling with improved error notifications 2024-11-19 11:20:17 +08:00
Yeuoly 44e9758549 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-18 17:21:32 +08:00
AkaraChen 07174cf52c Revert "fix: dataset details"
This reverts commit 812fbab57b.
2024-11-18 15:41:31 +08:00
twwu d3fe6fd303 fix: display version from GitHub metadata if available 2024-11-18 11:57:31 +08:00
twwu 87ca20c047 feat: add version checking for GitHub releases and improve error handling 2024-11-18 11:54:51 +08:00
AkaraChen 07494459cc Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-18 11:23:49 +08:00
AkaraChen 812fbab57b fix: dataset details 2024-11-18 11:23:44 +08:00
JzoNg afdfc8c609 chore: enabled for useQuery 2024-11-18 11:02:37 +08:00
JzoNg 66f0e1209a switch version 2024-11-17 12:57:34 +08:00
JzoNg f0e4885926 tooltip of endpoints 2024-11-17 10:54:40 +08:00
Yeuoly 2698b1c222 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-15 19:54:56 +08:00
Yeuoly 59b76900d7 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-15 18:39:40 +08:00
Joel 1dc2d7f4a2 chore: fix jump url 2024-11-15 16:49:12 +08:00
StyleZhang cc28dafede Merge branch 'feat/plugins' into dev/plugin-deploy 2024-11-15 16:46:46 +08:00
StyleZhang 9193bc3143 fix: marketplace link 2024-11-15 16:46:23 +08:00
Joel 3b032f086d fix: market icon not show 2024-11-15 16:37:51 +08:00
StyleZhang 5be781e007 Merge branch 'feat/plugins' into dev/plugin-deploy 2024-11-15 16:33:17 +08:00
StyleZhang 746838e276 fix: marketplace link 2024-11-15 16:32:49 +08:00
Yi 5ea306850e fix: copy tooltip shows in wrong place 2024-11-15 16:23:11 +08:00
Joel 7fe16a9f9d merge 2024-11-15 16:13:40 +08:00
Yi a6be3fdcd0 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-11-15 16:09:21 +08:00
Yi a7a5c6f4cb fix: update the upgrade button text content in the header 2024-11-15 16:09:04 +08:00
twwu f53b658964 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-15 16:07:41 +08:00
twwu 70bf321fd7 fix: add plugin type to card payload and integrate categories hook 2024-11-15 16:07:34 +08:00
Yeuoly 6da877c6a6 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-15 15:56:45 +08:00
StyleZhang 35eafd239d fix: plugin task 2024-11-15 15:50:14 +08:00
StyleZhang 3f2baf0131 fix: plugin task 2024-11-15 15:46:29 +08:00
StyleZhang a5a6969db3 fix 2024-11-15 15:36:32 +08:00
StyleZhang c176494405 fix: search box style 2024-11-15 15:26:29 +08:00
Joel 1e81476e3a chore: fix lockfile 2024-11-15 15:24:08 +08:00
Joel 6fbff78b9c merge 2024-11-15 15:16:53 +08:00
Joel 0738c2ef54 fix: can not get url 2024-11-15 15:03:18 +08:00
StyleZhang 984e4564f8 fix: dsl check plugin 2024-11-15 14:54:17 +08:00
StyleZhang bc927868f4 fix: plugin task 2024-11-15 14:54:17 +08:00
Joel a0758dc2fc feat: finish github install 2024-11-15 14:40:04 +08:00
Joel 6b759795d5 feat: can install github 2024-11-15 13:09:29 +08:00
Joel bba80f465b just add 2024-11-15 13:09:28 +08:00
Joel ebaa94be15 mrege 2024-11-15 12:11:00 +08:00
Joel 6699441e53 just add 2024-11-15 12:07:20 +08:00
Yi 735e47f5e5 chore: update the styling in the "members setting" 2024-11-15 11:29:48 +08:00
twwu d354c69493 chore: update translations to include 'Marketplace' terminology in Chinese localization 2024-11-15 11:05:20 +08:00
JzoNg 8f14881aff app parameters 2024-11-15 10:43:21 +08:00
JzoNg e53c4fc0ad empty inputs form of app selector 2024-11-15 10:43:21 +08:00
JzoNg f9f2e68bd8 app selector in form 2024-11-15 10:43:21 +08:00
JzoNg 7b4d67d72f app list filter 2024-11-15 10:43:21 +08:00
JzoNg 7446244147 app picker 2024-11-15 10:43:21 +08:00
JzoNg c723bd2c96 app selector trigger 2024-11-15 10:43:21 +08:00
Joel 73ce8a17a5 feat: add loading 2024-11-15 10:39:57 +08:00
Yeuoly 1812af6cfe Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-15 00:47:46 +08:00
Yeuoly 94a8547217 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-14 22:59:18 +08:00
Yeuoly 5bd7598a37 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-14 18:34:32 +08:00
Joel 6f5e010db5 chore: handle uploaded selected 2024-11-14 18:31:22 +08:00
Yi 495d86fd96 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-11-14 18:28:18 +08:00
Yi 42ba4e4f0e chore: update the plugins tab button 2024-11-14 18:26:16 +08:00
StyleZhang 6af51701de fix: card link 2024-11-14 18:18:10 +08:00
Joel 76104d811c feat: can show install plugins 2024-11-14 16:54:36 +08:00
StyleZhang 1877433f20 fix: marketplace 2024-11-14 16:37:53 +08:00
Yi a403fb565d chore: update the plan tags 2024-11-14 16:21:28 +08:00
twwu f58b88f319 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-14 15:47:27 +08:00
twwu cd2860deb4 feat: add i18n support for plugin installation and empty states 2024-11-14 15:47:22 +08:00
AkaraChen 070968a048 style: add lint rule for tailwind 2024-11-14 15:39:21 +08:00
StyleZhang ceb18d160f fix: marketplace i18n 2024-11-14 14:56:15 +08:00
StyleZhang 6a63a03cb2 feat: tool list use query 2024-11-14 14:48:13 +08:00
twwu a0a62db6ad refactor: Split linear-gradient and color 2024-11-14 14:36:30 +08:00
StyleZhang 253abaf1a3 fix: marketplace empty page 2024-11-14 14:27:34 +08:00
AkaraChen 44cc6157f1 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-14 11:35:53 +08:00
Yi 028fc00be6 chore: update i18n & setting window 2024-11-14 11:19:39 +08:00
AkaraChen 1aed0fe5d6 chore: use mitt hook 2024-11-14 11:04:41 +08:00
JzoNg 300cd675c6 update tool list after tool selector 2024-11-14 00:04:06 +08:00
JzoNg ff1d42bd66 add tool selector in endpoint modal 2024-11-14 00:02:04 +08:00
JzoNg 194a99220b authorization of tool selector 2024-11-14 00:02:04 +08:00
JzoNg 926f85ce4f tool selector trigger 2024-11-14 00:02:04 +08:00
Yi 6c6e1e90cd Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-11-13 18:41:27 +08:00
twwu 2fbc0c2261 revert: revert category label handling in plugin card component 2024-11-13 18:40:23 +08:00
Yi bac1e99557 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-11-13 18:40:20 +08:00
Yi 93e3077f77 chore: update the esc button and the upgrade button 2024-11-13 18:40:11 +08:00
twwu fa6858090b refactor: remove version prop from plugin item components and update version comparison logic 2024-11-13 18:34:04 +08:00
twwu 61eb655823 feat: update plugin category labels and improve internationalization support 2024-11-13 18:30:38 +08:00
twwu 6298332950 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-13 16:55:49 +08:00
twwu a1719c49b7 feat: add internationalization support for plugin categories and update translations 2024-11-13 16:55:43 +08:00
Yi b10a1cd325 chore: update the theme selector setting in globals.css 2024-11-13 16:43:00 +08:00
StyleZhang aa88028564 fix: marketplace list 2024-11-13 16:28:38 +08:00
Joel 3e314843db chore: add missing file 2024-11-13 16:23:33 +08:00
Joel 0d607a8c90 feat: add update workflow to update use query 2024-11-13 16:23:31 +08:00
StyleZhang 577a948f42 feat: dsl check plugin 2024-11-13 15:48:25 +08:00
Yeuoly 1c411143e5 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-13 15:19:32 +08:00
Joel edbfe27eb1 chore: add invalid all built in tools 2024-11-13 15:17:22 +08:00
Joel 5c98d80fdf chore: more filter text content 2024-11-13 15:12:58 +08:00
Joel 89b470d0d5 fix: toggle tool 2024-11-13 15:04:23 +08:00
Joel 19dc983d30 feat: support toggle set tool when the texts changes 2024-11-13 14:54:37 +08:00
twwu e842a46fe2 fix: resolve issue with dark mode 2024-11-13 14:43:37 +08:00
Yeuoly 612eba2765 tests: for CD 2024-11-13 14:30:55 +08:00
Yeuoly 4fdaf57897 refactor 2024-11-13 14:28:40 +08:00
Yeuoly 479928f428 refactor cd 2024-11-13 14:23:02 +08:00
Yeuoly a53ea578b9 tests: cd 2024-11-13 14:11:46 +08:00
Joel 1573f6f6aa feat: add tag and q filter 2024-11-13 14:08:16 +08:00
snakeandGitHub 3c6babdf35 cd for plugin env 2024-11-13 13:58:58 +08:00
AkaraChen f74dc032f9 fix: new workflow init draft failed 2024-11-13 13:51:55 +08:00
snakeandGitHub bc614cb507 cd for plugin env 2024-11-13 13:38:12 +08:00
AkaraChen 910d5df513 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-13 13:33:47 +08:00
snakeandGitHub 92c2fa0a88 deploy script add cat action 2024-11-13 13:28:46 +08:00
twwu fa01360498 fix: Fix theme initialization issue 2024-11-13 13:11:47 +08:00
AkaraChen 1fe5be532d fix: new workflow init draft failed 2024-11-13 12:59:52 +08:00
Joel d67eb907dd fix: show index letter problem 2024-11-13 11:56:33 +08:00
Joel 83dae7e5bc fix: can not select action in workflow and tools 2024-11-13 11:38:44 +08:00
StyleZhang c6d1b7869d fix: plugin task 2024-11-13 11:33:58 +08:00
snakeandGitHub 32b8efcc73 cd for plugin env 2024-11-13 11:28:31 +08:00
snakeandGitHub 3aa679b061 cd for plugin env 2024-11-13 11:11:30 +08:00
snakeandGitHub 07def4587c cd for plugin env 2024-11-13 11:01:37 +08:00
snakeandGitHub 830bf4dc3c print context var 2024-11-13 10:51:40 +08:00
snakeandGitHub e1c2929219 print context var 2024-11-13 10:48:02 +08:00
snakeandGitHub 3976c7fee8 print context var 2024-11-13 10:44:33 +08:00
snakeandGitHub 11fd02ae99 print context var 2024-11-13 10:42:01 +08:00
Yi 601d267b7a Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-11-13 10:39:07 +08:00
Yi 327940a120 chore: update the update plugin from GitHub 2024-11-13 10:38:56 +08:00
snakeandGitHub d89ab877b7 print context var 2024-11-13 10:32:43 +08:00
snakeandGitHub e83d2da661 print context var 2024-11-13 10:31:45 +08:00
snakeandGitHub f3986c5600 print context var 2024-11-13 10:30:49 +08:00
snakeandGitHub a31693c273 print context var 2024-11-13 10:30:07 +08:00
snakeandGitHub 0e541da25e print context var 2024-11-13 10:22:05 +08:00
snakeandGitHub 64ffe96480 print context var 2024-11-13 10:21:11 +08:00
Yeuoly 8ed2695286 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-12 21:43:44 +08:00
Yeuoly a42b081e32 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-12 20:48:51 +08:00
Yeuoly beea9d01f3 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-12 19:57:32 +08:00
snakeandGitHub 641153eed8 print context var 2024-11-12 18:47:24 +08:00
snakeandGitHub 370736cad9 print context var 2024-11-12 18:38:46 +08:00
snakeandGitHub 153f3b77ec print context var 2024-11-12 18:29:48 +08:00
StyleZhang 582c7ce348 fix: plugin task 2024-11-12 18:28:34 +08:00
snakeandGitHub 88611fe1aa print context var 2024-11-12 18:23:02 +08:00
snakeandGitHub ede82299e1 print context var 2024-11-12 18:14:31 +08:00
snakeandGitHub f031eeb473 print context var 2024-11-12 17:58:34 +08:00
StyleZhang 13d3f67746 feat: plugin task use query 2024-11-12 17:58:32 +08:00
snakeandGitHub 61096d7f7a print context var 2024-11-12 17:54:54 +08:00
snakeandGitHub 5b703d1792 print context var 2024-11-12 17:51:00 +08:00
Joel 9c6aafd415 feat: install bundle ui 2024-11-12 17:33:10 +08:00
snakeandGitHub 1af087abc1 print context var 2024-11-12 17:19:45 +08:00
nite-knite 3716ea46b5 chore: bump elliptic from 6.5.7 to 6.6.0 2024-11-12 17:19:02 +08:00
snakeandGitHub d3d84217a7 print context var 2024-11-12 17:16:49 +08:00
snakeandGitHub 51e230309b revert deploy-dev.yml 2024-11-12 17:14:31 +08:00
JzoNg 3c89b8a698 confirm model selector schema in agent and workflow 2024-11-12 16:57:22 +08:00
JzoNg b188800f16 model selector in endpoint modal 2024-11-12 16:57:22 +08:00
JzoNg 75a037bc2a update style of model & parameter selector 2024-11-12 16:57:22 +08:00
JzoNg 5efcdd6fa7 model parameters 2024-11-12 16:57:22 +08:00
JzoNg 06c4627abb tool selecting in configure 2024-11-12 16:57:22 +08:00
JzoNg f5267d317e fix quota of model provider 2024-11-12 16:57:22 +08:00
twwu 2573950f88 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-12 16:48:28 +08:00
twwu 2ba38c6c45 feat: add marketplace-divider-bg color variable for dark and light themes 2024-11-12 16:48:24 +08:00
Joel 07edda8a85 feat: add new marketplace env 2024-11-12 15:56:03 +08:00
snakeandGitHub 81116a679d Update deploy-dev.yml for print context var 2024-11-12 15:55:19 +08:00
twwu 7791d290c7 refactor: update AudioPlayer styles with CSS variables and improve VideoGallery rendering 2024-11-12 15:49:00 +08:00
Joel 8203b23df2 feat: install bundle struct 2024-11-12 15:48:00 +08:00
AkaraChen e175ad9963 fix: sse post no token 2024-11-12 14:41:09 +08:00
Joel d4c9c76454 chore: mask the debug key 2024-11-12 14:31:15 +08:00
AkaraChen a059660ed8 fix: sse post no token 2024-11-12 14:24:18 +08:00
Yi 20357beda4 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-11-12 13:32:26 +08:00
Joel 7e39565fd2 feat: handle on update show update modal 2024-11-12 11:48:55 +08:00
Yeuoly a37e41de99 fix: add pnpm lock 2024-11-11 21:04:15 +08:00
Yeuoly 0a9dd367f6 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-11 21:01:23 +08:00
StyleZhang 27f794e197 feat: plugin task 2024-11-11 18:17:58 +08:00
Yi a8e8e36756 chore: update the upgrade button 2024-11-11 18:00:44 +08:00
Yi dbc10425c8 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-11-11 17:21:37 +08:00
Yi 810443c511 chore: update the upgrade button and add premium badge component 2024-11-11 17:21:25 +08:00
Joel f47b5ce63a chore: install plugin by local use use query 2024-11-11 14:58:17 +08:00
Yeuoly e3723f65f8 fix: temp fix for seucrity issues 2024-11-11 14:10:57 +08:00
Yeuoly ba2d340109 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-11 14:06:39 +08:00
Yeuoly 2a87f61515 fix: avoid empty plugin entity 2024-11-11 13:32:03 +08:00
StyleZhang 822c18cb76 fix: credentials: 2024-11-11 12:27:58 +08:00
StyleZhang 66b08e653e fix: credentials: 2024-11-11 12:27:13 +08:00
JzoNg 5e81150b22 useQuery for endpoints 2024-11-09 14:44:48 +08:00
JzoNg 1e62768eed useQuery in action list 2024-11-09 12:51:10 +08:00
JzoNg 59a9235041 useQuery for model list 2024-11-09 12:12:10 +08:00
takatost 0b2b6a3ef3 Merge branch 'refs/heads/fix/chore-fix' into dev/plugin-deploy 2024-11-08 23:11:02 +08:00
JzoNg f85ff9ef78 Merge branch 'feat/plugins' into dev/plugin-deploy 2024-11-08 21:34:59 +08:00
JzoNg f2bf2e4470 fix style of provider added card 2024-11-08 21:32:46 +08:00
takatost 48fac5187a Merge branch 'refs/heads/fix/chore-fix' into dev/plugin-deploy 2024-11-08 19:24:44 +08:00
Joel c77b38b97d chore: install from marketplace 2024-11-08 18:29:54 +08:00
StyleZhang 33349191e9 marketplace usemutation 2024-11-08 18:21:58 +08:00
Yeuoly 1a5c2d1d58 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-08 17:27:35 +08:00
AkaraChen d4f7ebfd2e feat: refactor http client 2024-11-08 17:21:55 +08:00
Yeuoly c34970c631 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-08 17:21:06 +08:00
JzoNg ebdf72fffc check update 2024-11-08 17:01:49 +08:00
JzoNg 1f1c61541e install from settings 2024-11-08 16:33:00 +08:00
JzoNg f70c23dd7a endpoints api 2024-11-08 16:19:00 +08:00
JzoNg f498686c3a model list style fix 2024-11-08 16:19:00 +08:00
StyleZhang d13169934d fix: marketplace i18n 2024-11-08 16:14:29 +08:00
Joel 324437b3f1 feat: mutation permersions 2024-11-08 16:12:04 +08:00
twwu c6a6c53084 chore: update theme var define 2024-11-08 15:26:59 +08:00
Joel edc2fe050a chore: debug info use query 2024-11-08 15:10:06 +08:00
Joel 6fcebf3ecd chore: remove log 2024-11-08 14:26:52 +08:00
Joel b754bf80ae fix: custom tools not show 2024-11-08 14:24:28 +08:00
Joel 5d7c527702 merge feat/plugins 2024-11-08 13:57:34 +08:00
Joel a9de7f24a2 merge main 2024-11-08 13:55:39 +08:00
Yeuoly 14a723a2a4 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-08 13:48:23 +08:00
twwu 6759c6d5e6 Revert "feat: add gray label color variables for dark and light themes"
This reverts commit a75cef2c3b.
2024-11-08 13:42:38 +08:00
Yeuoly 61cf6e1c7b Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-08 13:39:45 +08:00
JzoNg 920d6d6882 fix credentials of action list 2024-11-08 12:32:02 +08:00
JzoNg 2511968cb4 fix action list 2024-11-08 12:32:02 +08:00
JzoNg f684e1c12e provider compatible in logs 2024-11-08 12:32:02 +08:00
JzoNg be75a1e432 provider compatible in moderation 2024-11-08 12:32:02 +08:00
JzoNg 5a679ed396 provider compatible in model_config 2024-11-08 12:32:02 +08:00
JzoNg 0cfd676fd6 provider compatible 2024-11-08 12:32:02 +08:00
twwu d997499ecf Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-08 11:33:42 +08:00
twwu 4d3ffbb6f0 fix: update repository URL format in plugin action component 2024-11-08 11:33:35 +08:00
twwu a710858d09 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-08 11:32:34 +08:00
twwu a75cef2c3b feat: add gray label color variables for dark and light themes 2024-11-08 11:31:48 +08:00
Yi 392db19ea2 chore: update the update plugin steps 2024-11-08 11:08:40 +08:00
Yi 7cb6039833 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-11-07 18:22:08 +08:00
Yi e041a9e418 chore: upgrade button styling 2024-11-07 18:21:32 +08:00
Joel 281c6dc337 merge 2024-11-07 17:44:54 +08:00
-LAN-andJoel 7d7ade26ce fix(remote-files): fallback to get when remote server not support head method (#10370) 2024-11-07 17:39:52 +08:00
-LAN-andJoel 6aa2af215b refactor(iteration): introduce specific exceptions for iteration errors (#10366) 2024-11-07 17:39:52 +08:00
-LAN-andJoel 598d307afd refactor(knowledge-retrieval): improve error handling with custom exceptions (#10385) 2024-11-07 17:39:52 +08:00
-LAN-andJoel 39fdcfd7e9 refactor(tool-node): introduce specific exceptions for tool node errors (#10357) 2024-11-07 17:39:51 +08:00
-LAN-andJoel 47f638e5aa refactor(question_classifier): improve error handling with custom exceptions (#10365) 2024-11-07 17:39:51 +08:00
03b57d1f0a fixed: web api remote urls error (#10383)
Co-authored-by: hobo.l <hobo.l@binance.com>
2024-11-07 17:39:51 +08:00
powerfoolandJoel 99c84c423e Adjusted docker manifests and environment variables for OceanBase vector database (#10395) 2024-11-07 17:39:51 +08:00
omrandJoel cc2cc56f25 fix typo: mMaximum -> Maximum (#10389) 2024-11-07 17:39:50 +08:00
非法操作andJoel 393885ee16 fix: remove duplicated category “recommended” (#10375) 2024-11-07 17:39:50 +08:00
MatsudaandJoel 9143d460fa fix(model_runtime): remove vision from features for Claude 3.5 Haiku (#10360) 2024-11-07 17:39:49 +08:00
InfinitnetandJoel c0ff0cf7cf fix: remove unsupported vision in OpenRouter Haiku 3.5 (#10364) 2024-11-07 17:39:49 +08:00
Bowen LiangandJoel 9c90d98027 chore(ci): bring back poetry cache to speed up CI jobs (#10347) 2024-11-07 17:39:48 +08:00
Bowen LiangandJoel 0d74466f45 chore: lazy import sagemaker (#10342) 2024-11-07 17:39:48 +08:00
comfutureandJoel d2e293b9be chore: update translation for 'account' from '계좌' to '계정' (#10350) 2024-11-07 17:39:48 +08:00
-LAN-andJoel 8fae321b6a chore(ci): separate vector store tests into new workflow (#10354) 2024-11-07 17:39:47 +08:00
-LAN-andJoel a2b42c9431 fix(api): remove fixed source attribute from FileApi (#10353) 2024-11-07 17:39:47 +08:00
0a4b256b5a feat: support png, gif, webp (#7947)
Co-authored-by: xuanson9699 <84961581+xuanson9699@users.noreply.github.com>
2024-11-07 17:39:47 +08:00
Chenhe GuandJoel 9f7124a79d Update README.md (#10332) 2024-11-07 17:39:46 +08:00
方程andJoel 7a217534d1 Gitee AI tools (#10314) 2024-11-07 17:39:46 +08:00
Summer-GuandJoel a9ed0f0b42 feat: The SSRF request timeout configuration item is added (#10292) 2024-11-07 17:39:46 +08:00
InfinitnetandJoel 545d2b2622 feat: add support for anthropic/claude-3-5-haiku through OpenRouter (#10331) 2024-11-07 17:39:45 +08:00
BenjaminandJoel f114da4e81 feat(vannaai): add base_url configuration (#10294) 2024-11-07 17:39:45 +08:00
-LAN-andJoel f4e3e3fc19 docs: remove the TOC part (#10324) 2024-11-07 17:39:45 +08:00
非法操作andJoel 1277941821 fix: special prompt not work for comfyUI tool (#10307) 2024-11-07 17:39:45 +08:00
-LAN-andJoel f500e6cf5b chore: update version to 0.11.0 across all relevant files (#10278) 2024-11-07 17:39:44 +08:00
NoviceandJoel a3b71830d0 fix: iteration none output error (#10295) 2024-11-07 17:39:44 +08:00
-LAN-andJoel 13b7e18a50 fix(http_request): improve parameter initialization and reorganize tests (#10297) 2024-11-07 17:39:44 +08:00
MatsudaandJoel 5f4bb12a1a fix typo: writeOpner to writeOpener (#10290) 2024-11-07 17:39:43 +08:00
pinsilyandJoel 781e8e1a4a fix: handle KeyError when accessing rules in CleanProcessor.clean (#10258) 2024-11-07 17:39:43 +08:00
euxandJoel c721617e19 fix: borken faq url in CONTRIBUTING.md (#10275) 2024-11-07 17:39:43 +08:00
非法操作andJoel 6b51e81de1 feat: add xAI model provider (#10272) 2024-11-07 17:39:43 +08:00
MatsudaandJoel 736719745c feat(model_runtime): add new model 'claude-3-5-haiku-20241022' (#10285) 2024-11-07 17:39:43 +08:00
MatsudaandJoel e0e4a6f819 fix(model_runtime): fix wrong max_tokens for Claude 3.5 Haiku on Amazon Bedrock (#10286) 2024-11-07 17:39:42 +08:00
-LAN-andJoel 6ab6b9cc40 feat(model): add validation for custom disclaimer length (#10287) 2024-11-07 17:39:42 +08:00
-LAN-andJoel 52eb18937e fix(node): correct file property name in function switch (#10284) 2024-11-07 17:39:42 +08:00
NFishandJoel aab1ab692a refactor the logic of refreshing access_token (#10068) 2024-11-07 17:39:40 +08:00
3e7f38d904 chore: translate i18n files (#10273)
Co-authored-by: laipz8200 <16485841+laipz8200@users.noreply.github.com>
Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com>
2024-11-07 17:39:15 +08:00
BenjaminandJoel 94c5e36334 Updates: Add mplfonts library for customizing matplotlib fonts and Va… (#9903) 2024-11-07 17:39:14 +08:00
NoviceandJoel baaa3ae02c feat: Iteration node support parallel mode (#9493) 2024-11-07 17:39:09 +08:00
GeorgeCaoJandJoel 623b27583b fix(workflow): handle else condition branch addition error in if-else node (#10257) 2024-11-07 17:38:39 +08:00
-LAN-andJoel 93e9aeb4e9 feat(document_extractor): support tool file in document extractor (#10217) 2024-11-07 17:38:39 +08:00
MatsudaandJoel 391ad7734e feat: support Claude 3.5 Haiku on Amazon Bedrock (#10265) 2024-11-07 17:38:38 +08:00
-LAN-andJoel c5422af400 refactor(parameter_extractor): implement custom error classes (#10260) 2024-11-07 17:38:37 +08:00
65a04ee0be fix: buitin tool aippt (#10234)
Co-authored-by: jinqi.guo <jinqi.guo@ubtrobot.com>
2024-11-07 17:38:37 +08:00
-LAN-andJoel 84c35aef6c fix(validation): allow to use 0 in the inputs form (#10255) 2024-11-07 17:38:37 +08:00
-LAN-andJoel c2b4845719 chore(Dockerfile): upgrade zlib arm64 (#10244) 2024-11-07 17:38:37 +08:00
方程andJoel cd0f10567f Using a dedicated interface to obtain the token credential for the gitee.ai provider (#10243) 2024-11-07 17:38:36 +08:00
454b755c6b feat(workflow): add configurable workflow file upload limit (#10176)
Co-authored-by: JzoNg <jzongcode@gmail.com>
2024-11-07 17:38:35 +08:00
shisaru292andJoel 352c1fc370 fix: missing working directory parameter in script (#10226) 2024-11-07 17:38:35 +08:00
-LAN-andJoel 181eb6038f refactor(list_operator): replace ValueError with InvalidKeyError (#10222) 2024-11-07 17:38:34 +08:00
-LAN-andJoel c32cbeb29a refactor(workflow): introduce specific error handling for LLM nodes (#10221) 2024-11-07 17:38:34 +08:00
-LAN-andJoel 62f8c875c8 refactor(http_request): add custom exception handling for HTTP request nodes (#10219) 2024-11-07 17:38:33 +08:00
-LAN-andJoel baed53bbfa refactor(workflow): introduce specific exceptions for code validation (#10218) 2024-11-07 17:38:32 +08:00
-LAN-andJoel 565a0d992a chore(llm_node): remove unnecessary type ignore for context assignment (#10216) 2024-11-07 17:38:32 +08:00
JyongandJoel e90a06a7b7 fix the ssrf of docx file extractor external images (#10237) 2024-11-07 17:38:31 +08:00
Hanqing ZhaoandJoel 5a0b22dbd4 Modify translation (#10213) 2024-11-07 17:38:30 +08:00
31445c3782 Add Lindorm as a VDB choice (#10202)
Co-authored-by: jiangzhijie <jiangzhijie.jzj@alibaba-inc.com>
2024-11-07 17:38:30 +08:00
crazywoolaandJoel 8e6f5f4bb0 Fix/10199 application error a client side exception has occurred see the browser console for more information (#10211) 2024-11-07 17:38:29 +08:00
-LAN-andJoel e259b360c2 refactor(validation): improve input validation logic (#10175) 2024-11-07 17:38:29 +08:00
-LAN-andJoel 762dec2dc4 chore(list_operator): refine exception handling for error specificity (#10206) 2024-11-07 17:38:28 +08:00
-LAN-andJoel ada7f5c30f fix(document_extractor): update base exception class (#10208) 2024-11-07 17:38:28 +08:00
Kota-YamaguchiandJoel 6b965eaea3 Feat : add LLM model indicator in prompt generator (#10187) 2024-11-07 17:38:27 +08:00
Xiao LeyandJoel ea67bc1166 chore: enable vision support for models in OpenRouter that should have supported vision (#10191) 2024-11-07 17:38:26 +08:00
Kota-YamaguchiandJoel 01e8f6066a chore : code generator preview hint (#10188) 2024-11-07 17:38:26 +08:00
zxhlyhandJoel 39effd350e fix: webapp upload file (#10195) 2024-11-07 17:38:25 +08:00
-LAN-andJoel 00bfb35759 fix(api): replace current_user with end_user in file upload (#10194) 2024-11-07 17:38:25 +08:00
-LAN-andJoel 101d9798f0 feat(document_extractor): integrate unstructured API for PPTX extraction (#10180) 2024-11-07 17:38:24 +08:00
-LAN-andJoel ba48754be6 fix(tools): suppress RuntimeWarnings in podcast audio generator (#10182) 2024-11-07 17:38:24 +08:00
Cling_o3andJoel d963df32b9 [fix] fix the bug that modify document name not effective (#10154) 2024-11-07 17:38:23 +08:00
-LAN-andJoel 67ce763377 fix(workflow model): ensure consistent timestamp updating (#10172) 2024-11-07 17:38:23 +08:00
a32c0ef43c fix: Cannot find declaration to go to CLEAN_DAY_SETTING (#10157)
Co-authored-by: 刘江波 <liujiangbo1@xiaomi.com>
2024-11-07 17:38:22 +08:00
Lawrence LiandJoel 6e03c10285 feat: add gpustack model provider (#10158) 2024-11-07 17:38:21 +08:00
-LAN-andJoel 8f14c422a7 refactor(tools): Avoid warnings. (#10161) 2024-11-07 17:38:20 +08:00
-LAN-andJoel 07787366cd refactor(migration/model): update column types for workflow schema (#10160) 2024-11-07 17:38:20 +08:00
-LAN-andJoel 8f2d3b6743 Feat/add-remote-file-upload-api (#9906) 2024-11-07 17:38:19 +08:00
zxhlyhandJoel e7bc863f26 fix: upload remote image preview (#9952) 2024-11-07 17:38:19 +08:00
JyongandJoel 1d411e195a clean un-allowed special charters when doing indexing estimate (#10153) 2024-11-07 17:38:19 +08:00
-LAN-andJoel 2a7ae6b0df refactor(service): handle unsupported DSL version with warning (#10151) 2024-11-07 17:38:18 +08:00
8f8a3f4318 Add VESSL AI OpenAI API-compatible model provider and LLM model (#9474)
Co-authored-by: moon <moon@vessl.ai>
2024-11-07 17:38:18 +08:00
Kota-YamaguchiandJoel 4b89dba3a5 feat: synchronize input/output variables in the panel with generated code by the code generator (#10150) 2024-11-07 17:38:18 +08:00
Zixuan ChengandJoel 19c0d1fbf8 Refined README for better reading experience. (#10143) 2024-11-07 17:38:17 +08:00
94cd4912e1 add llm: ernie-4.0-turbo-128k of wenxin (#10135)
Co-authored-by: Pigeon姚宏锋 <pigeon.yhf@galaxyoversea.com>
2024-11-07 17:38:17 +08:00
Shili CaoandJoel 602f75bb30 fix: avoid unexpected error when create knowledge base with baidu vector database and wenxin embedding model (#10130) 2024-11-07 17:38:15 +08:00
c2810de952 fix: bar chart issue with duplicate x-axis labels being incorrectly ignored (#10134)
Co-authored-by: liusurong.lsr <liusurong.lsr@alibaba-inc.com>
2024-11-07 17:38:14 +08:00
JyongandJoel 1b645c1cc9 fix issue: query is none when doing retrieval (#10129) 2024-11-07 17:38:14 +08:00
ae3482e0b4 Fix/rerank validation issue (#10131)
Co-authored-by: Yi <yxiaoisme@gmail.com>
2024-11-07 17:38:14 +08:00
76c265f781 Feat/update knowledge api url (#10102)
Co-authored-by: nite-knite <nkCoding@gmail.com>
2024-11-07 17:38:12 +08:00
omrandJoel b1946c60d8 fix: optimize unique document filtering with set (#10082) 2024-11-07 17:38:12 +08:00
-LAN-andJoel c1c13cf828 fix(Dockerfile): conditionally install zlib1g based on architecture (#10118) 2024-11-07 17:38:11 +08:00
Hash BrownandJoel e4a48e28e5 fix: log detail panel not showing any message when total count greate… (#10119) 2024-11-07 17:38:11 +08:00
JyongandJoel 67efcbd6bb fix issue: update document segment setting failed (#10107) 2024-11-07 17:38:11 +08:00
Nam VuandJoel 7466061e5a fix: Version '1:1.3.dfsg+really1.3.1-1' for 'zlib1g' was not found (#10096) 2024-11-07 17:38:10 +08:00
-LAN-andJoel b7534b764d feat(app_dsl_service): enhance error handling and DSL version management (#10108) 2024-11-07 17:38:09 +08:00
非法操作andJoel eb335ed464 chore: save uploaded file extension as lower case (#10111) 2024-11-07 17:38:09 +08:00
-LAN-andJoel 4d9e7c1884 refactor(version): simplify version comparison logic (#10109) 2024-11-07 17:38:09 +08:00
8f7cac6bde fix: view logs in prompt, no response when clicked (#10093)
Co-authored-by: zhanganguo <zhanganguo@lixiang.com>
2024-11-07 17:38:08 +08:00
非法操作andJoel d4608f0571 chore: remove an unnecessary link (#10088) 2024-11-07 17:38:08 +08:00
非法操作andJoel 9f27b5bb12 feat: enhance comfyui workflow (#10085) 2024-11-07 17:38:07 +08:00
AkaraChenandJoel fb9c54e35f build: update docker login action (#10050) 2024-11-07 17:38:07 +08:00
Kota-YamaguchiandJoel dea45682bc chore: update type definition to resolve lint error in Base usage at text-editor.tsx (#10083) 2024-11-07 17:38:06 +08:00
Bowen LiangandJoel a0abd5d077 improve: significantly speed up the server launching time by async preloading tool providers (#9146) 2024-11-07 17:38:05 +08:00
Charlie.WeiandJoel 924dbc128d fix azure chatgpt o1 parameter error (#10067) 2024-11-07 17:38:05 +08:00
crazywoolaandJoel b76aa11919 Revert "chore: improve validation and handler of logging timezone with TimezoneName" (#10077) 2024-11-07 17:38:05 +08:00
sacryuandJoel 7971efd23e fix the typos in the hit testing template (#10072) 2024-11-07 17:38:04 +08:00
JasonVVandJoel b8c2e5359b Fixed the issue where recall the knowledge base in the iteration of the workflow and report errors when executing (#10060) 2024-11-07 17:38:04 +08:00
Hiroshi FujitaandJoel 952847ed29 chore: Set file size limits for video and audio uploads from docker env (#10063) 2024-11-07 17:38:03 +08:00
Fog3211andJoel 4e4a8a327b fix: prevent onChange during IME composition (#10059) 2024-11-07 17:38:03 +08:00
22mSqRiandJoel 8d1591e5d5 fix: fix poetry install command in devcontainer (#9507) 2024-11-07 17:38:03 +08:00
-LAN-andJoel 4b8896e034 fix(workflow): refine variable type checks in LLMNode (#10051) 2024-11-07 17:38:02 +08:00
非法操作andJoel c2d3464a17 chore: mount config file of sandbox (#8576) 2024-11-07 17:38:02 +08:00
zhuhaoandJoel 0886c6f224 fix: resolve the incorrect model name of hunyuan-standard-256k (#10052) 2024-11-07 17:38:01 +08:00
zhuhaoandJoel 1ee4c13758 chore: use dify_config.TIDB_SPEND_LIMIT instead of constant value (#10038) 2024-11-07 17:38:01 +08:00
郭伟伟andJoel c293aceec1 feat: /conversations api response add 'update_at' field,and update api docs add sort_by parameter (#10043) 2024-11-07 17:38:01 +08:00
zhuhaoandJoel 4d5752fc94 feat: add YAML type in document extractor node (#9997) 2024-11-07 17:38:00 +08:00
Xiao LeyandJoel c615ed57b9 add PROMPT_GENERATION_MAX_TOKENS and CODE_GENERATION_MAX_TOKENS in docker enviromment (#10040) 2024-11-07 17:38:00 +08:00
twwu 020d4baf92 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-07 16:52:26 +08:00
twwu 3f8a10613d refactor: remove unused fetchInstalledPluginList function and integrate useInstalledPluginList hook 2024-11-07 16:52:22 +08:00
AkaraChen 53fa13f007 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-07 16:44:46 +08:00
AkaraChen d00e1067bf fix: develop page docs style 2024-11-07 16:44:05 +08:00
Joel 2dd9c64d34 chore: use query 2024-11-07 16:42:44 +08:00
AkaraChen b7c40579b2 build: update tailwind 2024-11-07 16:41:35 +08:00
twwu c7f8a0fc7b Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-07 16:06:13 +08:00
twwu de24d9c145 fix: handle empty fetched releases and update locale usage in plugin item 2024-11-07 16:06:08 +08:00
AkaraChen 6357e1516e build: update react-hook-form 2024-11-07 15:47:07 +08:00
StyleZhang b83dc5ab99 fix: marketplace 2024-11-07 15:37:39 +08:00
Yi 65285965b6 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-11-07 15:31:42 +08:00
Yi 035c9eb147 fix: propagation from closing tag in filters 2024-11-07 15:31:11 +08:00
Joel 91b3aec292 feat: add use tools 2024-11-07 15:24:17 +08:00
AkaraChen d3a9747bbd build: update @floating-ui/react 2024-11-07 15:22:00 +08:00
StyleZhang 6a99fab92f fix: marketplace 2024-11-07 15:07:07 +08:00
Yi 2a590f6d2b Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-11-07 13:42:45 +08:00
Yi 117b0f20dd chore: update the plugin install dropdown styling 2024-11-07 13:42:34 +08:00
StyleZhang c445f747b7 fix: prompt editor 2024-11-07 12:11:26 +08:00
AkaraChen 8ed0963c6b Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-07 11:46:32 +08:00
Yi 6c47e0b5d1 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-11-07 11:37:21 +08:00
Yi e99e87269e chore: update the selectPackage component 2024-11-07 11:37:05 +08:00
AkaraChen 0a1319548a build: update react markdown
build: update react markdown

build: update react markdown
2024-11-07 11:34:55 +08:00
AkaraChen b1242ba1ac build: init @tanstack/react-query 2024-11-07 09:44:36 +08:00
twwu fde0e6c7f9 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-06 18:43:31 +08:00
twwu 92153328ea feat: add loading state for installed plugin list in context and update PluginsPanel to display loading indicator 2024-11-06 18:43:27 +08:00
Yeuoly 56f2464a4f Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-06 18:30:02 +08:00
Joel e66ba6ffdd chore: fill repo url 2024-11-06 18:13:15 +08:00
twwu a7e320dc25 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-06 16:58:56 +08:00
twwu 5008d9f4a0 feat: add onSuccess callback to InstallFromGitHub and update plugin list on install actions 2024-11-06 16:58:52 +08:00
Yi 912f84777b Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-11-06 16:49:29 +08:00
Yi 4c0e4e490a chore: update the 'Update plugin from GitHub' 2024-11-06 16:49:16 +08:00
Joel 306843fe6a chore: plugin info 2024-11-06 16:42:32 +08:00
twwu b6a4af4041 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-06 16:18:25 +08:00
twwu cce39b85e9 feat: enhance plugin filtering with tags support 2024-11-06 16:18:18 +08:00
Joel 057d380119 feat: add install model plugin 2024-11-06 15:57:50 +08:00
Joel 4cf9ff6132 chore: remove log 2024-11-06 15:44:49 +08:00
Joel 4cfbcd9c79 feat: add install 2024-11-06 15:42:48 +08:00
StyleZhang fcde5b5c9e fix: detail 2024-11-06 15:37:12 +08:00
StyleZhang 21b3703bd8 fix: i18n 2024-11-06 15:23:38 +08:00
StyleZhang 9025e85ca5 locale 2024-11-06 15:00:37 +08:00
StyleZhang bc43e3a9fe card locale 2024-11-06 14:52:47 +08:00
StyleZhang 319a54aa2f i18n 2024-11-06 14:37:20 +08:00
StyleZhang 7c2ab21c9c i18n 2024-11-06 11:55:19 +08:00
twwu 0d08b6cf51 fix: enhance plugin installation and update handling 2024-11-06 09:50:05 +08:00
Yi 61a70e7a71 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-11-05 17:53:03 +08:00
Yi bde1261b8c chore: update installFromGitHub component 2024-11-05 17:52:47 +08:00
StyleZhang 08bb6bf858 fix: tags 2024-11-05 17:35:47 +08:00
twwu 1003190dc0 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-05 16:54:57 +08:00
twwu 4c516a50b8 fix: update type from InstalledPlugin to PluginDetail in detail-header component 2024-11-05 16:53:54 +08:00
Joel 8058a1dbe4 feat: handle update 2024-11-05 16:47:26 +08:00
Yi 8533ded335 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-11-05 16:36:55 +08:00
twwu 1a547b0db9 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-05 16:25:38 +08:00
twwu 0b90625e57 feat: integrate GitHub API for plugin version check and add access token support 2024-11-05 16:25:20 +08:00
Joel e989c1f3aa feat: fill update install payload 2024-11-05 16:04:52 +08:00
Joel da15a25cf5 feat: add update from github modal content 2024-11-05 15:27:08 +08:00
Joel 43254ceeb0 chore: temp types 2024-11-05 15:22:48 +08:00
Yi faf550164d Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-11-05 15:21:54 +08:00
Yi 1a4234347a chore: update the installFromGitHub logic 2024-11-05 15:21:45 +08:00
Joel 85947efcfa temp: change payload types 2024-11-05 15:21:07 +08:00
Joel 474ea97fc7 feat: add update to modal context 2024-11-05 15:11:55 +08:00
StyleZhang a3becde6d8 feat: plugin tags 2024-11-05 15:07:24 +08:00
Yi c40544a134 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-11-05 11:41:03 +08:00
Yi 4028bb4f58 chore: update installPluginFromGitHub component 2024-11-05 11:40:52 +08:00
twwu 52268460a1 fix: update dependency in Empty component to improve rendering logic 2024-11-05 11:19:04 +08:00
twwu b64298c458 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-11-05 11:05:20 +08:00
twwu 16dee11589 feat: add Empty component to installed plugin list 2024-11-05 11:05:14 +08:00
Yi 691dbf9d17 chore: update plugin from GitHub 2024-11-05 11:02:57 +08:00
JzoNg ebebbb684b endpoints list 2024-11-02 15:36:38 +08:00
JzoNg cee51ac084 need author judgement 2024-11-02 15:36:38 +08:00
JzoNg ef00ad0417 action list 2024-11-02 15:36:38 +08:00
JzoNg c37615cd33 plugin detail delete handler 2024-11-02 15:36:38 +08:00
JzoNg a387cfbc9a model list in plugin detail 2024-11-02 15:36:38 +08:00
JzoNg 04fdb4af0f plugin header operation 2024-11-02 15:36:38 +08:00
JzoNg 57f9a41e7f plugin detail selecting 2024-11-02 15:36:38 +08:00
JzoNg eb8b827906 verified tag 2024-11-02 15:36:38 +08:00
Joel 99a9bf6d56 feat: support search from marketplace list 2024-11-01 18:36:24 +08:00
Yeuoly 02a296bbec Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-01 16:55:45 +08:00
Yi ceae69b773 chore: update the workspace selector 2024-11-01 16:48:40 +08:00
Yeuoly 7cea6c1713 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-01 16:46:40 +08:00
Joel 3c8548c562 feat: create tool model 2024-11-01 16:14:01 +08:00
StyleZhang 8874837dc3 feat: plugin tasks 2024-11-01 16:08:31 +08:00
Yi 40e171c2c6 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-11-01 15:40:06 +08:00
Yi 824ed7d6c2 chore: plugin button 2024-11-01 15:39:55 +08:00
Yeuoly 7e7d02ee15 fix: missing 'follow_redirects' argument while download plugin packages 2024-11-01 15:39:36 +08:00
JzoNg 4caa8f38bc hide plugin detail 2024-11-01 15:33:15 +08:00
Joel 5d5db7c6c1 fix: key too long breaks ui 2024-11-01 15:28:10 +08:00
Joel ca50522f80 feat: set tool params 2024-11-01 15:21:38 +08:00
takatost 01632bda70 fix 2024-11-01 00:07:41 -07:00
takatost b75dce5d0a compatible with original provider name 2024-11-01 00:07:41 -07:00
Yeuoly d0c53fabca Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-11-01 15:05:31 +08:00
Yeuoly 9a455949ad feat: support plugin tags 2024-11-01 15:05:23 +08:00
Yi 2fd4b6e6d2 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-11-01 14:56:11 +08:00
Yi c503e8ebc9 chore: install package from GitHub 2024-11-01 14:55:56 +08:00
Joel 245bb02c88 chore: add on start to install 2024-11-01 14:51:35 +08:00
Joel 9f08206503 feat: can choose tool in agent page 2024-11-01 14:41:27 +08:00
Yeuoly ed042862f8 fix: dockerfile 2024-11-01 14:39:11 +08:00
Yeuoly b0d33487df fix: custom tool parser 2024-11-01 14:27:28 +08:00
Joel 66be03f622 fix: search tools ui and some ui problem 2024-11-01 14:02:10 +08:00
Joel 04ba0a3500 Merge branch 'feat/plugins' into dev/plugin-deploy 2024-11-01 12:39:07 +08:00
Joel a273ae35f9 merge feat/plugins 2024-11-01 12:37:42 +08:00
JzoNg 1a92064260 remove unused components 2024-11-01 12:09:17 +08:00
JzoNg 7752f374e5 Revert "update model provider api responses"
This reverts commit c8dc5e4849.
2024-11-01 12:00:54 +08:00
JzoNg e7dcc53b55 Revert "load balance"
This reverts commit 378a9dd850.
2024-11-01 12:00:54 +08:00
JzoNg 22766c27c7 Revert "model list of provider"
This reverts commit 766ac3e255.
2024-11-01 12:00:54 +08:00
JzoNg c82b641357 Revert "get credentials of provider"
This reverts commit 72ef04d3e4.
2024-11-01 12:00:54 +08:00
JzoNg 1d871dae0d Revert "credentials of models"
This reverts commit 2ed73b763d.
2024-11-01 12:00:54 +08:00
JzoNg c39be7852f Revert "parameters and rules"
This reverts commit 22696fa75b.
2024-11-01 12:00:54 +08:00
JzoNg f2a5da918b Revert "other providers"
This reverts commit 339dfe5e02.
2024-11-01 12:00:54 +08:00
JzoNg 930425b896 Revert "annotation config"
This reverts commit 633768cd2a.
2024-11-01 12:00:54 +08:00
JzoNg 32e4efb524 Revert "logs"
This reverts commit 06729f6d9d.
2024-11-01 12:00:54 +08:00
JzoNg 96c3ec91af click handle of provider card 2024-11-01 12:00:54 +08:00
JzoNg f257184b00 provider card & link 2024-11-01 12:00:54 +08:00
JzoNg 581d09895e search model in provider settings 2024-11-01 12:00:54 +08:00
StyleZhang 197f1b3957 feat: search box 2024-11-01 11:26:36 +08:00
Joel 207b589458 chore: toolpicker add trigger 2024-11-01 11:22:18 +08:00
StyleZhang b5be6bacef fix: marketplace list 2024-10-31 18:54:33 +08:00
Joel bca99cf4f8 feat: tool picker 2024-10-31 18:37:50 +08:00
twwu 0e873223d7 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-10-31 18:32:32 +08:00
twwu 133b487566 feat: Enhance plugin item links and increase value display width 2024-10-31 18:32:25 +08:00
StyleZhang a9e8eb1c7e fix: marketplace list 2024-10-31 18:31:36 +08:00
twwu bf2b9bb898 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-10-31 16:44:08 +08:00
twwu 837990cb80 feat: Add loading to delete confirmation dialog 2024-10-31 16:44:04 +08:00
StyleZhang 4be2edd934 feat: plugin list tasks 2024-10-31 16:27:24 +08:00
twwu 7d4f8e0082 Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-10-31 16:20:31 +08:00
twwu 36ab121b87 feat: plugin uninstall & plugin list filtering 2024-10-31 16:20:25 +08:00
Joel 7f2980fbc0 chore: fix index show 2024-10-31 16:10:48 +08:00
Joel ae21d48132 feat: list flat view 2024-10-31 15:59:39 +08:00
StyleZhang 8af8a0f46d fix: tool list 2024-10-31 15:41:02 +08:00
Yeuoly 9a20c18869 fix: delete temp dependencies 2024-10-31 15:40:29 +08:00
Yeuoly 5ee9577d39 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-10-31 15:33:40 +08:00
Yeuoly a196de195e Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-10-31 15:19:49 +08:00
twwu 4adb61d6c7 refactor: Update marketplace API prefix in layout.tsx 2024-10-31 13:45:46 +08:00
Joel 7dd7f06f7d chore: handle icon toggle fold 2024-10-31 12:00:11 +08:00
Joel 074e660a67 feat: can add tree view 2024-10-31 11:37:55 +08:00
JzoNg 06729f6d9d logs 2024-10-31 09:06:10 +08:00
JzoNg 633768cd2a annotation config 2024-10-31 08:43:12 +08:00
JzoNg 339dfe5e02 other providers 2024-10-31 08:22:14 +08:00
JzoNg 22696fa75b parameters and rules 2024-10-31 08:22:14 +08:00
JzoNg 2ed73b763d credentials of models 2024-10-31 08:22:14 +08:00
JzoNg 72ef04d3e4 get credentials of provider 2024-10-31 08:22:14 +08:00
JzoNg 766ac3e255 model list of provider 2024-10-31 08:22:14 +08:00
JzoNg 378a9dd850 load balance 2024-10-31 08:22:14 +08:00
JzoNg c8dc5e4849 update model provider api responses 2024-10-31 08:22:14 +08:00
JzoNg 1387c6bd1c update style of agent tool list 2024-10-31 08:22:14 +08:00
JzoNg fda21f6b05 fix size of icon 2024-10-31 08:22:14 +08:00
JzoNg 8c25915d2b action panel tabs 2024-10-31 08:22:14 +08:00
JzoNg aba48749da action panel header 2024-10-31 08:22:14 +08:00
JzoNg 35a66ffe9f tool actions 2024-10-31 08:22:14 +08:00
StyleZhang 3db9174f55 fix: marketplace list 2024-10-30 17:24:46 +08:00
StyleZhang 02854b273f fix: marketplace 2024-10-30 16:36:08 +08:00
Yeuoly fb3d03b790 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-10-30 16:09:33 +08:00
StyleZhang fd0a830816 feat: marketplace list 2024-10-30 15:27:38 +08:00
StyleZhang e7fb92e169 feat: marketplace list 2024-10-30 15:16:13 +08:00
Joel 9c4e809799 chore: tiny css and i18n 2024-10-30 14:27:39 +08:00
Joel 169eb32662 chore: toolpicker ui 2024-10-30 14:24:00 +08:00
StyleZhang 0f4291bd36 merge main 2024-10-30 11:20:20 +08:00
StyleZhang 14b641557a feat: marketplace sort 2024-10-30 11:07:13 +08:00
AkaraChen 9c963d6f69 build: echarts update 2024-10-30 10:29:10 +08:00
AkaraChen 96abeda2e7 build: echarts update 2024-10-30 10:28:22 +08:00
StyleZhang 62fa90e30e feat: marketplace sort 2024-10-29 18:14:05 +08:00
Joel 7e378e219c chore: add missing i18n 2024-10-29 18:11:09 +08:00
Joel 34652010f5 feat: add market url prefix 2024-10-29 18:09:59 +08:00
AkaraChen 082f6f6a5f build: update deps 2024-10-29 17:47:06 +08:00
Joel 6f52edb157 feat: plugin permission 2024-10-29 17:18:23 +08:00
Yeuoly 60f707e5f4 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-10-29 17:16:48 +08:00
Joel 0dcbb34cab feat: handle from market install 2024-10-29 16:33:46 +08:00
StyleZhang 0886d7bb8b feat: marketplace list 2024-10-29 15:23:29 +08:00
StyleZhang e65a47cff7 feat: marketplace list 2024-10-29 15:23:29 +08:00
Joel 36c01d89c9 fix: cros promblem 2024-10-29 15:19:47 +08:00
Joel 6726ca102e feat: add get marketpalce get 2024-10-29 14:53:14 +08:00
Yeuoly 6246cf047b Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-10-29 12:32:25 +08:00
Joel e135707f88 chore: plugin icon not show 2024-10-29 11:57:21 +08:00
Joel f2765b9d31 feat: fetch plugin icon 2024-10-29 11:47:23 +08:00
StyleZhang 1e0877dcbf feat: marketplace list 2024-10-29 11:33:52 +08:00
StyleZhang 9a65c3391b feat: marketplace list 2024-10-29 10:51:41 +08:00
Joel ca9e23d6ea fix: check status 2024-10-28 18:36:23 +08:00
AkaraChen c4d6f9e179 build: update react-easy-crop 2024-10-28 16:46:35 +08:00
Joel 0cec6195a3 test 2024-10-28 16:33:02 +08:00
Yeuoly 19b9b91943 fix: dockerfile 2024-10-28 16:29:24 +08:00
Yeuoly e1f773d0d8 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-10-28 16:23:04 +08:00
Joel 966d42a4db Merge branch 'main' into feat/plugins 2024-10-28 15:53:39 +08:00
AkaraChen 15c33ba7f3 build: update lexical deps 2024-10-28 15:33:22 +08:00
AkaraChen ed7f74c99c build: update i18n pkg 2024-10-28 15:32:39 +08:00
AkaraChen 1db4139b5a build: update deps
build: update classnames

build: update types

build: update uuid

build: update emoji-mart

build: update use-context-selector

build: update ui component deps
2024-10-28 15:24:44 +08:00
StyleZhang 0d85d44de5 feat: marketplace list 2024-10-28 11:50:45 +08:00
AkaraChen f0f1bfa5d9 build: fix eslint 2024-10-28 11:03:43 +08:00
Joel 9161ce481e Merge branch 'feat/plugins' of https://github.com/langgenius/dify into feat/plugins 2024-10-28 10:59:39 +08:00
Joel c760902e72 chore: remove useless rule 2024-10-28 10:56:52 +08:00
Joel 7c8c15ef1a test no use rule 2024-10-28 10:56:31 +08:00
Joel 765eb282f3 merge main 2024-10-28 10:51:02 +08:00
AkaraChen 0e2b38dddc build: update qrcode.react 2024-10-25 18:03:25 +08:00
AkaraChen 92e4b3304c build: update deps
build: update sass

build: update lodash-es

build: update qs & js-cookie
2024-10-25 17:58:19 +08:00
Joel c777d55a1c feat: marketplace install 2024-10-25 16:46:02 +08:00
AkaraChen cd27ae4319 build: update testing-library 2024-10-25 13:01:39 +08:00
AkaraChen bd82c7edac build: update storybook 2024-10-25 13:01:39 +08:00
AkaraChen d5043c6628 build: update husky & lint-staged 2024-10-25 13:01:39 +08:00
AkaraChen d9a0584052 build: update eslint & fix some case 2024-10-25 12:51:11 +08:00
Joel 3e011109ad merge main 2024-10-25 11:26:49 +08:00
Joel bdb990eb90 merge main 2024-10-25 11:26:48 +08:00
StyleZhang ae00211691 feat: marketplace types 2024-10-25 11:15:32 +08:00
StyleZhang 0ef35a0ee0 fix: enable_marketplace 2024-10-25 10:41:25 +08:00
Joel 9a9d90ad7f feat: can install 2024-10-24 17:24:46 +08:00
Joel 606fc7be0c feat: support upload pkg 2024-10-24 17:14:17 +08:00
Joel d7def41acc feat: fetch debug key api 2024-10-24 16:07:46 +08:00
AkaraChen b6a560ce86 style: lint 2024-10-24 14:52:07 +08:00
StyleZhang 25f34f6703 fix: marketplace plugin type icon 2024-10-24 14:21:12 +08:00
Yeuoly f87eeba310 Merge branch 'fix/chore-fix' into dev/plugin-deploy 2024-10-24 13:21:17 +08:00
Joel 7daa365564 chore: to common install comp 2024-10-24 11:10:44 +08:00
Joel 13ccd294cb fix: install error title not update 2024-10-23 17:55:25 +08:00
Yeuoly c2c07b0f4b depoly: support auto deploy 2024-10-23 17:55:11 +08:00
Joel d357f359ab feat: support install failed 2024-10-23 17:52:39 +08:00
Joel 474cedf653 feat: debug info api 2024-10-23 17:19:54 +08:00
nite-knite 5d3c88a0b3 chore: bump mermaid from 10.4.0 to 10.9.3 2024-10-23 17:02:38 +08:00
Joel ae2c76bda2 feat: install from marketplace 2024-10-23 16:42:24 +08:00
Joel c46b5f2fd0 feat: handle install search params and hide 2024-10-23 15:26:31 +08:00
Joel 2cb7b73ee7 feat: handle import from marketplace 2024-10-23 15:00:31 +08:00
Joel 8d8d5b5235 chore: handle verified 2024-10-23 11:45:36 +08:00
Joel 15acfffd60 chore: some ui and mock data 2024-10-23 11:40:56 +08:00
Yi 18a266eac2 chore: i18n for install from GitHub section 2024-10-22 18:39:23 +08:00
Joel 7751070da8 chore: install from local i18n 2024-10-22 18:11:54 +08:00
Yi fa8c3d0d7b Resolved merge conflicts by removing conflicting files 2024-10-22 17:58:41 +08:00
Yi a567cff809 chore: update the install from GitHub component 2024-10-22 17:51:14 +08:00
Joel 583b0e9f97 chore: remove replicated types 2024-10-22 17:29:58 +08:00
Joel 5fddb23516 feat: install progress 2024-10-22 17:21:44 +08:00
Yi 0e52971997 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-10-22 16:40:50 +08:00
Yi 1387f406a3 fix: log format 2024-10-22 16:40:27 +08:00
AkaraChen ff31f0540a style: lint 2024-10-22 15:32:58 +08:00
AkaraChen 4873e6e2a1 build: fix eslint stylistic 2024-10-22 15:32:48 +08:00
nite-knite 510ce057f7 chore: add package manager setting to vscode setting example 2024-10-22 14:18:55 +08:00
AkaraChen 0e53cc0e8c fix: eslint indent 2024-10-22 14:15:22 +08:00
Yi 0b8c896481 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-10-22 13:43:15 +08:00
Yi 15fe635465 chore: install package from GitHub 2024-10-22 13:43:01 +08:00
AkaraChen f8c3189f4d build: fix eslint undef 2024-10-22 11:43:23 +08:00
AkaraChen f215db87e3 build: fix eslint undef 2024-10-22 11:36:42 +08:00
Joel 67d02212b4 chore: pnpm 2024-10-22 11:18:30 +08:00
Joel cff9adaf8e chore: tools ts problems 2024-10-22 11:06:28 +08:00
AkaraChen cdd2a40086 style: minimium codemod 2024-10-22 02:24:59 +00:00
AkaraChen 024028bc52 build: sync eslint rule 2024-10-22 10:24:10 +08:00
AkaraChen 0ae085b48a build: add eslint common rule 2024-10-22 10:24:10 +08:00
AkaraChen 2094c54951 build: update eslint config antfu 2024-10-22 10:24:10 +08:00
AkaraChen f4f11135d3 build: using eslint flat config 2024-10-22 10:24:10 +08:00
Joel 8e9d7a229d feat: scroll to view and fix action hidden 2024-10-21 18:21:45 +08:00
Joel 8f49572f85 chore: from marketplace tilte ui 2024-10-21 15:07:18 +08:00
JzoNg 5aa7696cc3 update style of action list 2024-10-21 11:34:21 +08:00
JzoNg 15dd79e822 provider detail data binding 2024-10-21 11:34:21 +08:00
JzoNg 4651ab4195 new style of provider detail 2024-10-21 11:34:21 +08:00
JzoNg 5e3160e6f6 fix title & description of tool provider 2024-10-21 11:34:21 +08:00
JzoNg 973cd126bb create & update endpoint 2024-10-21 11:34:21 +08:00
JzoNg ebaf8766ef endpoint form 2024-10-21 11:34:21 +08:00
JzoNg d2190e9c3a remove endpoint 2024-10-21 11:34:21 +08:00
JzoNg 37f55098fe switch endpoint service state 2024-10-21 11:34:21 +08:00
JzoNg b1771194cc servise of endpoints 2024-10-21 11:34:21 +08:00
JzoNg 0279bd8c75 endpoint card databing 2024-10-21 11:34:21 +08:00
JzoNg 5e077e4ce8 endpoints data binding 2024-10-21 11:34:21 +08:00
JzoNg 64067e1f20 plugin detail header operations 2024-10-21 11:34:21 +08:00
JzoNg 5295c72ca1 endpoints mock data 2024-10-21 11:34:21 +08:00
JzoNg 1ecea62052 add verified tag 2024-10-21 11:34:21 +08:00
JzoNg 307af29b65 add plugin description 2024-10-21 11:34:21 +08:00
JzoNg 10190a9aa5 plugin detail header data binding 2024-10-21 11:34:21 +08:00
JzoNg 7c5c35600c plugin detail type 2024-10-21 11:34:21 +08:00
JzoNg 63b333cdb1 modify plugin detail panel 2024-10-21 11:34:21 +08:00
JzoNg a6776190bd chore: update remix icon 2024-10-21 11:34:19 +08:00
AkaraChen 9577cbac27 build: docker use pnpm 2024-10-21 11:27:01 +08:00
AkaraChen f6ae13abad ci: migrate to pnpm 2024-10-21 11:14:30 +08:00
AkaraChen f3d501e7d5 fix: gen-icon script phantom deps 2024-10-21 10:43:52 +08:00
AkaraChen 2eab8fcc33 build: switch to pnpm 2024-10-21 10:43:52 +08:00
Joel bdb81fe20d feat: choose tool sticky 2024-10-18 18:18:59 +08:00
Yi 0f60fe7f2a chore: update workspace name (truncated for long name) 2024-10-18 14:17:53 +08:00
Yi 425f624de5 chore: add plugin panel 2024-10-18 14:02:40 +08:00
Yi b1919745e2 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-10-18 14:01:34 +08:00
twwu 9a242bcac9 Merge branch 'main' into feat/plugins 2024-10-18 09:59:43 +08:00
Yi a6109a60b8 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-10-17 15:22:08 +08:00
Yi 28f7bbf83a chore: installation progress bar 2024-10-17 15:21:56 +08:00
Joel cac04c5f3c refactor: chagne card to client component 2024-10-17 15:06:06 +08:00
Joel 18f5f9cc37 feat: plugin upgrade 2024-10-16 18:05:55 +08:00
Joel 1787c5c93f chore: handle tag name too long 2024-10-16 16:39:47 +08:00
Joel f981494613 feat: plugin support emoji icon 2024-10-16 16:28:19 +08:00
Joel fbc853af92 feat: remove config 2024-10-16 16:28:18 +08:00
StyleZhang 1a64c660ba enable marketplace 2024-10-16 15:50:18 +08:00
Joel 846555af1b fix: action buttion ui 2024-10-16 11:45:25 +08:00
Joel bca94854f7 feat: plugin info 2024-10-16 11:30:04 +08:00
Joel 1bd70bd8bf chore: copy button 2024-10-16 11:05:51 +08:00
Joel d1dcd39191 feat: add debug info i18n and extract common to components 2024-10-16 10:52:16 +08:00
Joel 35384bda41 chore: refactor card loading 2024-10-15 22:52:57 +08:00
Joel 89fb6eb648 chore: set hideCornerMark to optional 2024-10-15 21:45:30 +08:00
Joel aa61a890b2 chore: change downloadCount to optional 2024-10-15 21:43:20 +08:00
Joel 31ece363c3 chore: chagne mangament attr name 2024-10-15 21:35:56 +08:00
Joel 70a5d78cc5 chore: priviege i18n 2024-10-15 21:31:06 +08:00
Joel 57f4dfdb6f feat: add permission data logic 2024-10-15 19:20:59 +08:00
Yi aa9028a607 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-10-15 15:48:05 +08:00
Yi d83f94c55c fix: set constrain for uploading packages only works in the Plugins tab 2024-10-15 15:47:54 +08:00
StyleZhang a8c5e0b0b0 tool list item click 2024-10-15 15:13:00 +08:00
Yi 177e8cbf73 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-10-15 14:57:37 +08:00
Yi 23828fd15a Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-10-15 14:57:11 +08:00
StyleZhang 2cc37ac8e5 tool list 2024-10-15 14:57:00 +08:00
Yi c9ee1e9ff2 feat: install difypkg ui 2024-10-15 14:56:59 +08:00
Joel 4f10f5d5f4 chore: hover show action 2024-10-15 11:57:44 +08:00
Yi c48c84674e Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-10-15 11:02:45 +08:00
Yi 1e9fbbf41b fix: dynamic sub header color 2024-10-15 11:02:25 +08:00
StyleZhang 4dd144ce43 tools list 2024-10-15 10:41:10 +08:00
Yi a387ff1c38 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-10-14 18:43:24 +08:00
Yi a9e367e6de feat: use-uploader hook 2024-10-14 18:43:08 +08:00
Joel e2fec587f8 feat: from marketplace 2024-10-14 18:35:13 +08:00
StyleZhang 39a6f0943d marketplace 2024-10-14 12:38:53 +08:00
JzoNg 684896d100 merge main 2024-10-14 10:29:52 +08:00
JzoNg 54f911f6cd endpoints 2024-10-13 10:49:55 +08:00
Joel 0e5c16d0c2 feat: view to ui and fix some ui promblem 2024-10-12 18:15:11 +08:00
Joel b8cd6ea478 feat: support view choose 2024-10-12 17:36:35 +08:00
JzoNg fc61fd0f50 action list 2024-10-12 17:08:45 +08:00
JzoNg 2fbfc988c4 plugin panel detail 2024-10-12 16:37:57 +08:00
JzoNg 99f5fea001 plugin detail panel header 2024-10-12 16:37:57 +08:00
StyleZhang ecd2a1be9f marketplace 2024-10-12 16:34:18 +08:00
Joel 49ee9ca5f1 feat: tool item support action 2024-10-12 16:04:16 +08:00
Joel 6d0eef12b1 feat: split tools data to out and add demo 2024-10-12 14:30:46 +08:00
StyleZhang c1e0a939b0 marketplace 2024-10-12 12:46:49 +08:00
JzoNg 060a894bd1 interaction of plugin detail panel 2024-10-12 12:36:29 +08:00
JzoNg c75e02b5b2 update provider card 2024-10-12 12:36:29 +08:00
StyleZhang fcf43ee845 plugin page context 2024-10-12 11:33:12 +08:00
StyleZhang 466f61d044 relocate file 2024-10-12 11:05:03 +08:00
StyleZhang 27ae74af50 hook 2024-10-12 11:03:00 +08:00
Joel 8dd941e3d2 chore: instal plug add tag 2024-10-11 18:18:32 +08:00
Joel dec4bf6b98 fix: install modal item server 2024-10-11 18:06:23 +08:00
Joel e2c33fc40f fix: plugin item i18n 2024-10-11 18:05:45 +08:00
Yi c74e59d1f4 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-10-11 17:28:27 +08:00
Yi 1fcb902715 feat: add cards to "install from marketplace" 2024-10-11 17:25:33 +08:00
JzoNg c08f98218c hide search in other pages 2024-10-11 17:13:28 +08:00
Yi c6377f6e38 fix: naming styles 2024-10-11 16:29:07 +08:00
Yi 3cb0a5bd68 Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-10-11 16:28:04 +08:00
Yi 95777d23e0 fix: naming styles 2024-10-11 16:27:31 +08:00
JzoNg e7dc16fd08 provider card 2024-10-11 16:21:19 +08:00
JzoNg 495dec143c unconfigured provider 2024-10-11 16:21:19 +08:00
JzoNg 4cc6dfa232 new style of provider card 2024-10-11 16:21:18 +08:00
JzoNg d1452d4af4 no provider installed 2024-10-11 16:21:18 +08:00
JzoNg d68ca56b3a system default model 2024-10-11 16:21:18 +08:00
JzoNg 49856d8d17 setting content header & close button 2024-10-11 16:21:18 +08:00
JzoNg 902de72cc0 new style of settings 2024-10-11 16:21:18 +08:00
StyleZhang 76f6b8d104 marketplace 2024-10-11 16:15:24 +08:00
StyleZhang f111e605c4 marketplace 2024-10-11 15:27:14 +08:00
Joel b358ed3a5b fix: init workflow image crash 2024-10-11 14:31:14 +08:00
Joel 88dbf639e0 chore: enchance locale props 2024-10-11 14:24:43 +08:00
Joel aa8b525b48 fix: icon tsx to router problem 2024-10-11 14:10:24 +08:00
Yi c990bc61db feat: install plugins (partial) 2024-10-11 12:39:27 +08:00
Joel 6d7588f236 chore: fix ui 2024-10-10 17:53:13 +08:00
Joel 8257c7bf02 chore: remove useless data 2024-10-10 17:49:23 +08:00
Joel 946068967b feat: finish card components 2024-10-10 17:47:04 +08:00
Joel 19f5684960 feat: add label and fix some ui problem 2024-10-10 11:29:11 +08:00
Joel 6d62840aff chore: split card component 2024-10-10 10:40:26 +08:00
Joel ab868ac979 fix: error igm 2024-10-10 10:25:25 +08:00
Joel 1d74e693ea chore: fix imge name 2024-10-10 10:22:18 +08:00
Joel fa43d4202f feat: plugin item 2024-10-09 18:36:15 +08:00
Joel 6b29860788 feat: add installed 2024-10-09 18:12:14 +08:00
Joel 36800eeaba feat: base card component 2024-10-09 17:51:54 +08:00
Yi 67acd174ac add different styles to plugins and discover 2024-10-09 15:55:33 +08:00
StyleZhang b5edc64b2a plugin type switch 2024-10-09 15:06:09 +08:00
Yi d00b2724cc Merge branch 'feat/plugins' of github.com:langgenius/dify into feat/plugins 2024-10-09 12:53:56 +08:00
Yi 43f87c0b86 make the drop plugin only appears when the user selects "plugins" 2024-10-09 12:53:43 +08:00
Joel 7a43f48c95 chore: add test page 2024-10-09 11:35:16 +08:00
StyleZhang 58a913b09d marketplace 2024-10-08 17:58:05 +08:00
Joel cd03795f2c chore: add endpoint types 2024-10-08 15:44:52 +08:00
Joel 36f8b5711d feat: plugin types 2024-09-30 15:29:53 +08:00
Joel f9c48e9ea9 fix: eslint to find top dir 2024-09-29 18:27:36 +08:00
JzoNg 3b48f8c98e Merge branch 'main' into tp 2024-09-27 16:47:57 +08:00
JzoNg cef1010cb5 style update 2024-09-27 16:47:01 +08:00
Joel cb4875a3a7 chore: split the common tailwind config 2024-09-26 15:06:36 +08:00
StyleZhang bbca708832 add marketplace card 2024-09-24 11:18:34 +08:00
JzoNg 05aec43ee3 Merge branch 'main' into tp 2024-09-23 11:39:46 +08:00
Yi e8127756e0 Merge branch 'main' of github.com:langgenius/dify into feat/plugins 2024-09-18 20:57:52 +08:00
Yi 792595a46f update page header 2024-09-18 18:32:33 +08:00
Yi d7d7281c93 feat: plugin homepage 2024-09-16 18:58:39 +08:00
Yi 21193c2fbf update the plugins page 2024-09-14 17:09:25 +08:00
635 changed files with 48559 additions and 8426 deletions
+3 -2
View File
@@ -1,11 +1,12 @@
#!/bin/bash
cd web && npm install
npm add -g pnpm@9.12.2
cd web && pnpm install
pipx install poetry
echo 'alias start-api="cd /workspaces/dify/api && poetry run python -m flask run --host 0.0.0.0 --port=5001 --debug"' >> ~/.bashrc
echo 'alias start-worker="cd /workspaces/dify/api && poetry run python -m celery -A app.celery worker -P gevent -c 1 --loglevel INFO -Q dataset,generation,mail,ops_trace,app_deletion"' >> ~/.bashrc
echo 'alias start-web="cd /workspaces/dify/web && npm run dev"' >> ~/.bashrc
echo 'alias start-web="cd /workspaces/dify/web && pnpm dev"' >> ~/.bashrc
echo 'alias start-containers="cd /workspaces/dify/docker && docker-compose -f docker-compose.middleware.yaml -p dify up -d"' >> ~/.bashrc
echo 'alias stop-containers="cd /workspaces/dify/docker && docker-compose -f docker-compose.middleware.yaml -p dify down"' >> ~/.bashrc
+14
View File
@@ -5,6 +5,7 @@ on:
branches:
- "main"
- "deploy/dev"
- "dev/plugin-deploy"
release:
types: [published]
@@ -139,3 +140,16 @@ jobs:
- name: Inspect image
run: |
docker buildx imagetools inspect ${{ env[matrix.image_name_env] }}:${{ steps.meta.outputs.version }}
- name: print context var
uses: actions/checkout@v4
- name: deploy pod in plugin env
if: github.ref == 'refs/heads/dev/plugin-deploy'
env:
IMAGEHASH: ${{ github.sha }}
APICMD: "${{ secrets.PLUGIN_CD_API_CURL }}"
WEBCMD: "${{ secrets.PLUGIN_CD_WEB_CURL }}"
run: |
bash -c "${APICMD/yourNewVersion/$IMAGEHASH}"
bash -c "${WEBCMD/yourNewVersion/$IMAGEHASH}"
+23
View File
@@ -0,0 +1,23 @@
name: Deploy Plugin Dev
on:
workflow_run:
workflows: ["Build and Push API & Web"]
branches:
- "dev/plugin-deploy"
types:
- completed
jobs:
deploy:
runs-on: ubuntu-latest
if: |
github.event.workflow_run.conclusion == 'success'
steps:
- name: Deploy to server
uses: appleboy/ssh-action@v0.1.8
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: "echo 123"
+30 -3
View File
@@ -71,17 +71,44 @@ jobs:
if: steps.changed-files.outputs.any_changed == 'true'
with:
node-version: 20
cache: yarn
cache: pnpm
cache-dependency-path: ./web/package.json
- name: Web dependencies
if: steps.changed-files.outputs.any_changed == 'true'
run: yarn install --frozen-lockfile
run: pnpm install --frozen-lockfile
- name: Web style check
if: steps.changed-files.outputs.any_changed == 'true'
run: yarn run lint
run: pnpm run lint
docker-compose-template:
name: Docker Compose Template
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Check changed files
id: changed-files
uses: tj-actions/changed-files@v45
with:
files: |
docker/generate_docker_compose
docker/.env.example
docker/docker-compose-template.yaml
docker/docker-compose.yaml
- name: Generate Docker Compose
if: steps.changed-files.outputs.any_changed == 'true'
run: |
cd docker
./generate_docker_compose
- name: Check for changes
if: steps.changed-files.outputs.any_changed == 'true'
run: git diff --exit-code
superlinter:
name: SuperLinter
+3 -3
View File
@@ -32,10 +32,10 @@ jobs:
with:
node-version: ${{ matrix.node-version }}
cache: ''
cache-dependency-path: 'yarn.lock'
cache-dependency-path: 'pnpm-lock.yaml'
- name: Install Dependencies
run: yarn install
run: pnpm install
- name: Test
run: yarn test
run: pnpm test
@@ -38,11 +38,11 @@ jobs:
- name: Install dependencies
if: env.FILES_CHANGED == 'true'
run: yarn install --frozen-lockfile
run: pnpm install --frozen-lockfile
- name: Run npm script
if: env.FILES_CHANGED == 'true'
run: npm run auto-gen-i18n
run: pnpm run auto-gen-i18n
- name: Create Pull Request
if: env.FILES_CHANGED == 'true'
+3 -3
View File
@@ -34,13 +34,13 @@ jobs:
if: steps.changed-files.outputs.any_changed == 'true'
with:
node-version: 20
cache: yarn
cache: pnpm
cache-dependency-path: ./web/package.json
- name: Install dependencies
if: steps.changed-files.outputs.any_changed == 'true'
run: yarn install --frozen-lockfile
run: pnpm install --frozen-lockfile
- name: Run tests
if: steps.changed-files.outputs.any_changed == 'true'
run: yarn test
run: pnpm test
+3
View File
@@ -194,3 +194,6 @@ api/.vscode
.idea/
.vscode
# pnpm
/.pnpm-store
-1
View File
@@ -55,7 +55,6 @@ RUN apt-get update \
&& echo "deb http://deb.debian.org/debian testing main" > /etc/apt/sources.list \
&& apt-get update \
# For Security
&& apt-get install -y --no-install-recommends expat=2.6.4-1 libldap-2.5-0=2.5.19+dfsg-1 perl=5.40.0-8 libsqlite3-0=3.46.1-1 zlib1g=1:1.3.dfsg+really1.3.1-1+b1 \
# install a chinese font to support the use of tools like matplotlib
&& apt-get install -y fonts-noto-cjk \
&& apt-get autoremove -y \
@@ -384,7 +384,6 @@ class AdvancedChatAppGenerateTaskPipeline:
task_id=self._application_generate_entity.task_id,
workflow_node_execution=workflow_node_execution,
)
session.commit()
if node_finish_resp:
yield node_finish_resp
+1
View File
@@ -386,6 +386,7 @@ class WorkflowBasedAppRunner(AppRunner):
status=event.status,
data=event.data,
metadata=event.metadata,
node_id=event.node_id,
)
)
elif isinstance(event, ParallelBranchRunStartedEvent):
+1
View File
@@ -330,6 +330,7 @@ class QueueAgentLogEvent(AppQueueEvent):
status: str
data: Mapping[str, Any]
metadata: Optional[Mapping[str, Any]] = None
node_id: str
class QueueNodeRetryEvent(QueueNodeStartedEvent):
+1
View File
@@ -717,6 +717,7 @@ class AgentLogStreamResponse(StreamResponse):
status: str
data: Mapping[str, Any]
metadata: Optional[Mapping[str, Any]] = None
node_id: str
event: StreamEvent = StreamEvent.AGENT_LOG
data: Data
@@ -863,5 +863,6 @@ class WorkflowCycleManage:
status=event.status,
data=event.data,
metadata=event.metadata,
node_id=event.node_id,
),
)
+2 -1
View File
@@ -70,7 +70,8 @@ def make_request(method, url, max_retries=SSRF_DEFAULT_MAX_RETRIES, **kwargs):
retries += 1
if retries <= max_retries:
time.sleep(BACKOFF_FACTOR * (2 ** (retries - 1)))
raise MaxRetriesExceededError(f"Reached maximum retries ({max_retries}) for URL {url}")
raise MaxRetriesExceededError(
f"Reached maximum retries ({max_retries}) for URL {url}")
def get(url, max_retries=SSRF_DEFAULT_MAX_RETRIES, **kwargs):
@@ -174,7 +174,7 @@ class LindormVectorStore(BaseVector):
if self._using_ugc:
params["routing"] = self._routing
response = self._client.search(index=self._collection_name, body=query, params=params)
except Exception as e:
except Exception:
logger.exception(f"Error executing vector search, query: {query}")
raise
@@ -347,7 +347,8 @@ def default_text_mapping(dimension: int, method_name: str, **kwargs: Any) -> dic
}
if excludes_from_source:
mapping["mappings"]["_source"] = {"excludes": excludes_from_source} # e.g. {"excludes": ["vector_field"]}
# e.g. {"excludes": ["vector_field"]}
mapping["mappings"]["_source"] = {"excludes": excludes_from_source}
if using_ugc and method_name == "ivfpq":
mapping["settings"]["index"]["knn_routing"] = True
+1 -1
View File
@@ -234,7 +234,7 @@ class WordExtractor(BaseExtractor):
continue
for i in url_pattern.findall(x.text):
hyperlinks_url = str(i)
except Exception as e:
except Exception:
logger.exception("Failed to parse HYPERLINK xml")
def parse_paragraph(paragraph):
+2 -2
View File
@@ -160,8 +160,8 @@ class ToolManager:
"""
get the tool runtime
:param provider_type: the type of the provider
:param provider_name: the name of the provider
:param provider_type: the type of the provider
:param provider_name: the name of the provider
:param tool_name: the name of the tool
:return: the tool
@@ -204,6 +204,7 @@ class AgentLogEvent(BaseAgentEvent):
status: str = Field(..., description="status")
data: Mapping[str, Any] = Field(..., description="data")
metadata: Optional[Mapping[str, Any]] = Field(default=None, description="metadata")
node_id: str = Field(..., description="agent node id")
InNodeEvent = BaseNodeEvent | BaseParallelBranchEvent | BaseIterationEvent | BaseAgentEvent
@@ -44,11 +44,13 @@ class QuestionClassifierNode(LLMNode):
variable_pool = self.graph_runtime_state.variable_pool
# extract variables
variable = variable_pool.get(node_data.query_variable_selector) if node_data.query_variable_selector else None
variable = variable_pool.get(
node_data.query_variable_selector) if node_data.query_variable_selector else None
query = variable.value if variable else None
variables = {"query": query}
# fetch model config
model_instance, model_config = self._fetch_model_config(node_data.model)
model_instance, model_config = self._fetch_model_config(
node_data.model)
# fetch memory
memory = self._fetch_memory(
node_data_memory=node_data.memory,
@@ -56,7 +58,8 @@ class QuestionClassifierNode(LLMNode):
)
# fetch instruction
node_data.instruction = node_data.instruction or ""
node_data.instruction = variable_pool.convert_template(node_data.instruction).text
node_data.instruction = variable_pool.convert_template(
node_data.instruction).text
files = (
self._fetch_files(
@@ -178,12 +181,15 @@ class QuestionClassifierNode(LLMNode):
variable_mapping = {"query": node_data.query_variable_selector}
variable_selectors = []
if node_data.instruction:
variable_template_parser = VariableTemplateParser(template=node_data.instruction)
variable_selectors.extend(variable_template_parser.extract_variable_selectors())
variable_template_parser = VariableTemplateParser(
template=node_data.instruction)
variable_selectors.extend(
variable_template_parser.extract_variable_selectors())
for variable_selector in variable_selectors:
variable_mapping[variable_selector.variable] = variable_selector.value_selector
variable_mapping = {node_id + "." + key: value for key, value in variable_mapping.items()}
variable_mapping = {node_id + "." + key: value for key,
value in variable_mapping.items()}
return variable_mapping
@@ -204,7 +210,8 @@ class QuestionClassifierNode(LLMNode):
context: Optional[str],
) -> int:
prompt_transform = AdvancedPromptTransform(with_variable_tmpl=True)
prompt_template = self._get_prompt_template(node_data, query, None, 2000)
prompt_template = self._get_prompt_template(
node_data, query, None, 2000)
prompt_messages = prompt_transform.get_prompt(
prompt_template=prompt_template,
inputs={},
@@ -217,13 +224,15 @@ class QuestionClassifierNode(LLMNode):
)
rest_tokens = 2000
model_context_tokens = model_config.model_schema.model_properties.get(ModelPropertyKey.CONTEXT_SIZE)
model_context_tokens = model_config.model_schema.model_properties.get(
ModelPropertyKey.CONTEXT_SIZE)
if model_context_tokens:
model_instance = ModelInstance(
provider_model_bundle=model_config.provider_model_bundle, model=model_config.model
)
curr_message_tokens = model_instance.get_llm_num_tokens(prompt_messages)
curr_message_tokens = model_instance.get_llm_num_tokens(
prompt_messages)
max_tokens = 0
for parameter_rule in model_config.model_schema.parameter_rules:
@@ -264,7 +273,8 @@ class QuestionClassifierNode(LLMNode):
prompt_messages: list[LLMNodeChatModelMessage] = []
if model_mode == ModelMode.CHAT:
system_prompt_messages = LLMNodeChatModelMessage(
role=PromptMessageRole.SYSTEM, text=QUESTION_CLASSIFIER_SYSTEM_PROMPT.format(histories=memory_str)
role=PromptMessageRole.SYSTEM, text=QUESTION_CLASSIFIER_SYSTEM_PROMPT.format(
histories=memory_str)
)
prompt_messages.append(system_prompt_messages)
user_prompt_message_1 = LLMNodeChatModelMessage(
@@ -305,4 +315,5 @@ class QuestionClassifierNode(LLMNode):
)
else:
raise InvalidModelTypeError(f"Model mode {model_mode} not support.")
raise InvalidModelTypeError(
f"Model mode {model_mode} not support.")
@@ -338,6 +338,7 @@ class ToolNode(BaseNode[ToolNodeData]):
data=message.message.data,
label=message.message.label,
metadata=message.message.metadata,
node_id=self.node_id,
)
# check if the agent log is already in the list
+27
View File
@@ -0,0 +1,27 @@
from datetime import datetime
from sqlalchemy.orm import Mapped
from extensions.ext_database import db
from models.base import Base
from .types import StringUUID
class StagingAccountWhitelist(Base):
__tablename__ = "staging_account_whitelists"
__table_args__ = (
db.PrimaryKeyConstraint("id", name="staging_account_whitelist_pkey"),
db.Index("account_email_idx", "email"),
)
id: Mapped[str] = db.Column(StringUUID, server_default=db.text("uuid_generate_v4()"))
email: Mapped[str] = db.Column(db.String(255), nullable=False)
disabled: Mapped[bool] = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
created_at: Mapped[datetime] = db.Column(
db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")
)
updated_at: Mapped[datetime] = db.Column(
db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP(0)")
)
+24 -3
View File
@@ -33,6 +33,7 @@ from models.account import (
TenantStatus,
)
from models.model import DifySetup
from models.staging import StagingAccountWhitelist
from services.billing_service import BillingService
from services.errors.account import (
AccountAlreadyInTenantError,
@@ -347,6 +348,9 @@ class AccountService:
@staticmethod
def login(account: Account, *, ip_address: Optional[str] = None) -> TokenPair:
if not AccountService.verify_account_whitelist(account.email):
raise ValueError("Account is not whitelisted")
if ip_address:
AccountService.update_login_info(account=account, ip_address=ip_address)
@@ -378,6 +382,9 @@ class AccountService:
if not account:
raise ValueError("Invalid account")
if not AccountService.verify_account_whitelist(account.email):
raise ValueError("Account is not whitelisted")
# Generate new access token and refresh token
new_access_token = AccountService.get_account_jwt_token(account)
new_refresh_token = _generate_refresh_token()
@@ -387,6 +394,16 @@ class AccountService:
return TokenPair(access_token=new_access_token, refresh_token=new_refresh_token)
@staticmethod
def verify_account_whitelist(email: str) -> bool:
with Session(db.engine) as session:
return (
session.query(StagingAccountWhitelist)
.filter(StagingAccountWhitelist.email == email, StagingAccountWhitelist.disabled == False)
.first()
is not None
)
@staticmethod
def load_logged_in_account(*, account_id: str):
return AccountService.load_user(account_id)
@@ -431,9 +448,13 @@ class AccountService:
def send_email_code_login_email(
cls, account: Optional[Account] = None, email: Optional[str] = None, language: Optional[str] = "en-US"
):
email = account.email if account else email
if email is None:
raise ValueError("Email must be provided.")
if email:
if not AccountService.verify_account_whitelist(email):
raise ValueError("Account is not whitelisted")
elif account:
if not AccountService.verify_account_whitelist(account.email):
raise ValueError("Account is not whitelisted")
if cls.email_code_login_rate_limiter.is_rate_limited(email):
from controllers.console.auth.error import EmailCodeLoginRateLimitExceededError
@@ -258,7 +258,7 @@ class BuiltinToolManageService:
include_set=dify_config.POSITION_TOOL_INCLUDES_SET, # type: ignore
exclude_set=dify_config.POSITION_TOOL_EXCLUDES_SET, # type: ignore
data=provider_controller,
name_func=lambda x: x.identity.name,
name_func=lambda x: x.entity.identity.name,
):
continue
@@ -54,7 +54,7 @@ class ToolTransformService:
@staticmethod
def repack_provider(tenant_id: str, provider: Union[dict, ToolProviderApiEntity]):
"""
repack provider
repack provider
:param provider: the provider dict
"""
@@ -68,7 +68,8 @@ def test_executor_with_json_body_and_object_variable():
system_variables={},
user_inputs={},
)
variable_pool.add(["pre_node_id", "object"], {"name": "John Doe", "age": 30, "email": "john@example.com"})
variable_pool.add(["pre_node_id", "object"], {
"name": "John Doe", "age": 30, "email": "john@example.com"})
# Prepare the node data
node_data = HttpRequestNodeData(
@@ -123,7 +124,8 @@ def test_executor_with_json_body_and_nested_object_variable():
system_variables={},
user_inputs={},
)
variable_pool.add(["pre_node_id", "object"], {"name": "John Doe", "age": 30, "email": "john@example.com"})
variable_pool.add(["pre_node_id", "object"], {
"name": "John Doe", "age": 30, "email": "john@example.com"})
# Prepare the node data
node_data = HttpRequestNodeData(
@@ -18,6 +18,14 @@ from models.enums import UserFrom
from models.workflow import WorkflowNodeExecutionStatus, WorkflowType
def test_plain_text_to_dict():
assert _plain_text_to_dict("aa\n cc:") == {"aa": "", "cc": ""}
assert _plain_text_to_dict("aa:bb\n cc:dd") == {"aa": "bb", "cc": "dd"}
assert _plain_text_to_dict("aa:bb\n cc:dd\n") == {"aa": "bb", "cc": "dd"}
assert _plain_text_to_dict("aa:bb\n\n cc : dd\n\n") == {
"aa": "bb", "cc": "dd"}
def test_http_request_node_binary_file(monkeypatch):
data = HttpRequestNodeData(
title="test",
@@ -183,7 +191,8 @@ def test_http_request_node_form_with_file(monkeypatch):
def attr_checker(*args, **kwargs):
assert kwargs["data"] == {"name": "test"}
assert kwargs["files"] == {"file": (None, b"test", "application/octet-stream")}
assert kwargs["files"] == {
"file": (None, b"test", "application/octet-stream")}
return httpx.Response(200, content=b"")
monkeypatch.setattr(
+1 -1
View File
@@ -513,7 +513,7 @@ TENCENT_VECTOR_DB_SHARD=1
TENCENT_VECTOR_DB_REPLICAS=2
# ElasticSearch configuration, only available when VECTOR_STORE is `elasticsearch`
ELASTICSEARCH_HOST=elasticsearch
ELASTICSEARCH_HOST=0.0.0.0
ELASTICSEARCH_PORT=9200
ELASTICSEARCH_USERNAME=elastic
ELASTICSEARCH_PASSWORD=elastic
+10 -2
View File
@@ -451,7 +451,7 @@ services:
milvus-standalone:
container_name: milvus-standalone
image: milvusdb/milvus:v2.3.1
image: milvusdb/milvus:v2.5.0-beta
profiles:
- milvus
command: [ 'milvus', 'run', 'standalone' ]
@@ -535,20 +535,28 @@ services:
container_name: elasticsearch
profiles:
- elasticsearch
- elasticsearch-ja
restart: always
volumes:
- ./elasticsearch/docker-entrypoint.sh:/docker-entrypoint-mount.sh
- dify_es01_data:/usr/share/elasticsearch/data
environment:
ELASTIC_PASSWORD: ${ELASTICSEARCH_PASSWORD:-elastic}
VECTOR_STORE: ${VECTOR_STORE:-}
cluster.name: dify-es-cluster
node.name: dify-es0
discovery.type: single-node
xpack.license.self_generated.type: trial
xpack.license.self_generated.type: basic
xpack.security.enabled: 'true'
xpack.security.enrollment.enabled: 'false'
xpack.security.http.ssl.enabled: 'false'
ports:
- ${ELASTICSEARCH_PORT:-9200}:9200
deploy:
resources:
limits:
memory: 2g
entrypoint: [ 'sh', '-c', "sh /docker-entrypoint-mount.sh" ]
healthcheck:
test: [ 'CMD', 'curl', '-s', 'http://localhost:9200/_cluster/health?pretty' ]
interval: 30s
+2
View File
@@ -474,6 +474,8 @@ services:
environment:
CONSOLE_API_URL: ${CONSOLE_API_URL:-}
APP_API_URL: ${APP_API_URL:-}
MARKETPLACE_API_URL: ${MARKETPLACE_API_URL:-}
MARKETPLACE_URL: ${MARKETPLACE_URL:-}
SENTRY_DSN: ${WEB_SENTRY_DSN:-}
NEXT_TELEMETRY_DISABLED: ${NEXT_TELEMETRY_DISABLED:-0}
TEXT_GENERATION_TIMEOUT_MS: ${TEXT_GENERATION_TIMEOUT_MS:-60000}
-5
View File
@@ -1,5 +0,0 @@
{
"presets": [
"@babel/preset-env"
]
}
+6
View File
@@ -10,6 +10,10 @@ NEXT_PUBLIC_API_PREFIX=http://localhost:5001/console/api
# console or api domain.
# example: http://udify.app/api
NEXT_PUBLIC_PUBLIC_API_PREFIX=http://localhost:5001/api
# The APIFREX for MARKETPLACE
NEXT_PUBLIC_MARKETPLACE_API_PREFIX=http://localhost:5002/api
# The URL for MARKETPLACE
NEXT_PUBLIC_MARKETPLACE_URL_PREFIX=
# SENTRY
NEXT_PUBLIC_SENTRY_DSN=
@@ -26,5 +30,7 @@ NEXT_PUBLIC_TEXT_GENERATION_TIMEOUT_MS=60000
# CSP https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
NEXT_PUBLIC_CSP_WHITELIST=
# Github Access Token, used for invoking Github API
NEXT_PUBLIC_GITHUB_ACCESS_TOKEN=
# The maximum number of top-k value for RAG.
NEXT_PUBLIC_TOP_K_MAX_VALUE=10
-7
View File
@@ -1,7 +0,0 @@
/**/node_modules/*
node_modules/
dist/
build/
out/
.next/
-31
View File
@@ -1,31 +0,0 @@
{
"extends": [
"next",
"@antfu",
"plugin:storybook/recommended"
],
"rules": {
"@typescript-eslint/consistent-type-definitions": [
"error",
"type"
],
"@typescript-eslint/no-var-requires": "off",
"no-console": "off",
"indent": "off",
"@typescript-eslint/indent": [
"error",
2,
{
"SwitchCase": 1,
"flatTernaryExpressions": false,
"ignoredNodes": [
"PropertyDefinition[decorators]",
"TSUnionType",
"FunctionExpression[params]:has(Identifier[decorators])"
]
}
],
"react-hooks/exhaustive-deps": "warn",
"react/display-name": "warn"
}
}
+3 -4
View File
@@ -44,12 +44,11 @@ package-lock.json
.pnp.cjs
.pnp.loader.mjs
.yarn/
.yarnrc.yml
# pmpm
pnpm-lock.yaml
.favorites.json
# storybook
/storybook-static
*storybook.log
# mise
+2 -5
View File
@@ -1,6 +1,3 @@
#!/usr/bin/env bash
. "$(dirname -- "$0")/_/husky.sh"
# get the list of modified files
files=$(git diff --cached --name-only)
@@ -50,7 +47,7 @@ fi
if $web_modified; then
echo "Running ESLint on web module"
cd ./web || exit 1
npx lint-staged
lint-staged
echo "Running unit tests check"
modified_files=$(git diff --cached --name-only -- utils | grep -v '\.spec\.ts$' || true)
@@ -63,7 +60,7 @@ if $web_modified; then
# check if the test file exists
if [ -f "../$test_file" ]; then
echo "Detected changes in $file, running corresponding unit tests..."
npm run test "../$test_file"
pnpm run test "../$test_file"
if [ $? -ne 0 ]; then
echo "Unit tests failed. Please fix the errors before committing."
+14 -14
View File
@@ -1,19 +1,19 @@
import type { StorybookConfig } from '@storybook/nextjs'
const config: StorybookConfig = {
// stories: ['../stories/**/*.mdx', '../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)'],
stories: ['../app/components/**/*.stories.@(js|jsx|mjs|ts|tsx)'],
addons: [
'@storybook/addon-onboarding',
'@storybook/addon-links',
'@storybook/addon-essentials',
'@chromatic-com/storybook',
'@storybook/addon-interactions',
],
framework: {
name: '@storybook/nextjs',
options: {},
},
staticDirs: ['../public'],
// stories: ['../stories/**/*.mdx', '../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)'],
stories: ['../app/components/**/*.stories.@(js|jsx|mjs|ts|tsx)'],
addons: [
'@storybook/addon-onboarding',
'@storybook/addon-links',
'@storybook/addon-essentials',
'@chromatic-com/storybook',
'@storybook/addon-interactions',
],
framework: {
name: '@storybook/nextjs',
options: {},
},
staticDirs: ['../public'],
}
export default config
+21 -21
View File
@@ -1,6 +1,6 @@
import React from 'react'
import type { Preview } from '@storybook/react'
import { withThemeByDataAttribute } from '@storybook/addon-themes';
import { withThemeByDataAttribute } from '@storybook/addon-themes'
import I18nServer from '../app/components/i18n-server'
import '../app/styles/globals.css'
@@ -8,30 +8,30 @@ import '../app/styles/markdown.scss'
import './storybook.css'
export const decorators = [
withThemeByDataAttribute({
themes: {
light: 'light',
dark: 'dark',
},
defaultTheme: 'light',
attributeName: 'data-theme',
}),
Story => {
return <I18nServer>
<Story />
</I18nServer>
}
];
withThemeByDataAttribute({
themes: {
light: 'light',
dark: 'dark',
},
defaultTheme: 'light',
attributeName: 'data-theme',
}),
(Story) => {
return <I18nServer>
<Story />
</I18nServer>
},
]
const preview: Preview = {
parameters: {
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/i,
},
},
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/i,
},
},
},
}
export default preview
+2 -1
View File
@@ -21,5 +21,6 @@
"editor.defaultFormatter": "vscode.json-language-features"
},
"typescript.tsdk": "node_modules/typescript/lib",
"typescript.enablePromptUseWorkspaceTsdk": true
"typescript.enablePromptUseWorkspaceTsdk": true,
"npm.packageManager": "pnpm"
}
+11 -6
View File
@@ -6,6 +6,9 @@ LABEL maintainer="takatost@gmail.com"
# RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
RUN apk add --no-cache tzdata
RUN npm install -g pnpm@9.12.2
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
# install packages
@@ -14,12 +17,12 @@ FROM base AS packages
WORKDIR /app/web
COPY package.json .
COPY yarn.lock .
COPY pnpm-lock.yaml .
# if you located in China, you can use taobao registry to speed up
# RUN yarn install --frozen-lockfile --registry https://registry.npmmirror.com/
# RUN pnpm install --frozen-lockfile --registry https://registry.npmmirror.com/
RUN yarn install --frozen-lockfile
RUN pnpm install --frozen-lockfile
# build resources
FROM base AS builder
@@ -27,7 +30,8 @@ WORKDIR /app/web
COPY --from=packages /app/web/ .
COPY . .
RUN yarn build
ENV NODE_OPTIONS="--max-old-space-size=4096"
RUN pnpm build
# production stage
@@ -38,6 +42,8 @@ ENV EDITION=SELF_HOSTED
ENV DEPLOY_ENV=PRODUCTION
ENV CONSOLE_API_URL=http://127.0.0.1:5001
ENV APP_API_URL=http://127.0.0.1:5001
ENV MARKETPLACE_API_URL=http://127.0.0.1:5001
ENV MARKETPLACE_URL=http://127.0.0.1:5001
ENV PORT=3000
ENV NEXT_TELEMETRY_DISABLED=1
@@ -57,8 +63,7 @@ COPY docker/entrypoint.sh ./entrypoint.sh
# global runtime packages
RUN yarn global add pm2 \
&& yarn cache clean \
RUN pnpm add -g pm2 \
&& mkdir /.pm2 \
&& chown -R 1001:0 /.pm2 /app/web \
&& chmod -R g=u /.pm2 /app/web
+8 -12
View File
@@ -6,14 +6,12 @@ This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next
### Run by source code
To start the web frontend service, you will need [Node.js v18.x (LTS)](https://nodejs.org/en) and [NPM version 8.x.x](https://www.npmjs.com/) or [Yarn](https://yarnpkg.com/).
To start the web frontend service, you will need [Node.js v18.x (LTS)](https://nodejs.org/en) and [pnpm version 9.12.2](https://pnpm.io).
First, install the dependencies:
```bash
npm install
# or
yarn install --frozen-lockfile
pnpm install
```
Then, configure the environment variables. Create a file named `.env.local` in the current directory and copy the contents from `.env.example`. Modify the values of these environment variables according to your requirements:
@@ -43,9 +41,7 @@ NEXT_PUBLIC_SENTRY_DSN=
Finally, run the development server:
```bash
npm run dev
# or
yarn dev
pnpm run dev
```
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
@@ -59,19 +55,19 @@ You can start editing the file under folder `app`. The page auto-updates as you
First, build the app for production:
```bash
npm run build
pnpm run build
```
Then, start the server:
```bash
npm run start
pnpm run start
```
If you want to customize the host and port:
```bash
npm run start --port=3001 --host=0.0.0.0
pnpm run start --port=3001 --host=0.0.0.0
```
## Storybook
@@ -81,7 +77,7 @@ This project uses [Storybook](https://storybook.js.org/) for UI component develo
To start the storybook server, run:
```bash
yarn storybook
pnpm storybook
```
Open [http://localhost:6006](http://localhost:6006) with your browser to see the result.
@@ -99,7 +95,7 @@ You can create a test file with a suffix of `.spec` beside the file that to be t
Run test:
```bash
npm run test
pnpm run test
```
If you are not familiar with writing tests, here is some code to refer to:
@@ -1,5 +1,5 @@
import React from 'react'
import { type Locale } from '@/i18n'
import type { Locale } from '@/i18n'
import DevelopMain from '@/app/components/develop'
export type IDevelopProps = {
@@ -46,7 +46,7 @@ export default function ChartView({ appId }: IChartViewProps) {
return (
<div>
<div className='flex flex-row items-center mt-8 mb-4 text-gray-900 text-base'>
<div className='flex flex-row items-center mt-8 mb-4 system-xl-semibold text-text-primary'>
<span className='mr-3'>{t('appOverview.analysis.title')}</span>
<SimpleSelect
items={Object.entries(TIME_PERIOD_MAPPING).map(([k, v]) => ({ value: k, name: t(`appLog.filter.period.${v.name}`) }))}
@@ -12,7 +12,7 @@ const Overview = async ({
params: { appId },
}: IDevelopProps) => {
return (
<div className="h-full px-4 sm:px-16 py-6 overflow-scroll">
<div className="h-full px-4 sm:px-12 py-6 overflow-scroll bg-chatbot-bg">
<ApikeyInfoPanel />
<TracingPanel />
<CardView appId={appId} />
@@ -1,20 +1,18 @@
'use client'
import type { FC } from 'react'
import React, { useCallback, useEffect, useRef, useState } from 'react'
import { useTranslation } from 'react-i18next'
import {
RiEqualizer2Line,
} from '@remixicon/react'
import type { PopupProps } from './config-popup'
import ConfigPopup from './config-popup'
import cn from '@/utils/classnames'
import Button from '@/app/components/base/button'
import { Settings04 } from '@/app/components/base/icons/src/vender/line/general'
import {
PortalToFollowElem,
PortalToFollowElemContent,
PortalToFollowElemTrigger,
} from '@/app/components/base/portal-to-follow-elem'
const I18N_PREFIX = 'app.tracing'
type Props = {
readOnly: boolean
className?: string
@@ -28,7 +26,6 @@ const ConfigBtn: FC<Props> = ({
controlShowPopup,
...popupProps
}) => {
const { t } = useTranslation()
const [open, doSetOpen] = useState(false)
const openRef = useRef(open)
const setOpen = useCallback((v: boolean) => {
@@ -50,21 +47,6 @@ const ConfigBtn: FC<Props> = ({
if (popupProps.readOnly && !hasConfigured)
return null
const triggerContent = hasConfigured
? (
<div className={cn(className, 'p-1 rounded-md hover:bg-black/5 cursor-pointer')}>
<Settings04 className='w-4 h-4 text-gray-500' />
</div>
)
: (
<Button variant='primary'
className={cn(className, '!h-8 !px-3 select-none')}
>
<Settings04 className='mr-1 w-4 h-4' />
<span className='text-[13px]'>{t(`${I18N_PREFIX}.config`)}</span>
</Button>
)
return (
<PortalToFollowElem
open={open}
@@ -72,11 +54,13 @@ const ConfigBtn: FC<Props> = ({
placement='bottom-end'
offset={{
mainAxis: 12,
crossAxis: hasConfigured ? 8 : 0,
crossAxis: hasConfigured ? 8 : 49,
}}
>
<PortalToFollowElemTrigger onClick={handleTrigger}>
{triggerContent}
<div className={cn(className, 'p-1 rounded-md')}>
<RiEqualizer2Line className='w-4 h-4 text-text-tertiary' />
</div>
</PortalToFollowElemTrigger>
<PortalToFollowElemContent className='z-[11]'>
<ConfigPopup {...popupProps} />
@@ -11,6 +11,8 @@ import ProviderConfigModal from './provider-config-modal'
import Indicator from '@/app/components/header/indicator'
import Switch from '@/app/components/base/switch'
import Tooltip from '@/app/components/base/tooltip'
import Divider from '@/app/components/base/divider'
import cn from '@/utils/classnames'
const I18N_PREFIX = 'app.tracing'
@@ -77,7 +79,6 @@ const ConfigPopup: FC<PopupProps> = ({
className='ml-3'
defaultValue={enabled}
onChange={onStatusChange}
size='l'
disabled={providerAllNotConfigured}
/>
)
@@ -106,15 +107,15 @@ const ConfigPopup: FC<PopupProps> = ({
)
return (
<div className='w-[420px] p-4 rounded-2xl bg-white border-[0.5px] border-black/5 shadow-lg'>
<div className='w-[420px] p-4 rounded-2xl bg-components-panel-bg border-[0.5px] border-components-panel-border shadow-xl'>
<div className='flex justify-between items-center'>
<div className='flex items-center'>
<TracingIcon size='md' className='mr-2' />
<div className='leading-[120%] text-[18px] font-semibold text-gray-900'>{t(`${I18N_PREFIX}.tracing`)}</div>
<div className='text-text-primary title-2xl-semibold'>{t(`${I18N_PREFIX}.tracing`)}</div>
</div>
<div className='flex items-center'>
<Indicator color={enabled ? 'green' : 'gray'} />
<div className='ml-1.5 text-xs font-semibold text-gray-500 uppercase'>
<div className={cn('ml-1 system-xs-semibold-uppercase text-text-tertiary', enabled && 'text-util-colors-green-green-600')}>
{t(`${I18N_PREFIX}.${enabled ? 'enabled' : 'disabled'}`)}
</div>
{!readOnly && (
@@ -130,19 +131,18 @@ const ConfigPopup: FC<PopupProps> = ({
: switchContent}
</>
)}
</div>
</div>
<div className='mt-2 leading-4 text-xs font-normal text-gray-500'>
<div className='mt-2 system-xs-regular text-text-tertiary'>
{t(`${I18N_PREFIX}.tracingDescription`)}
</div>
<div className='mt-3 h-px bg-gray-100'></div>
<div className='mt-3'>
<Divider className='my-3' />
<div className='relative'>
{(providerAllConfigured || providerAllNotConfigured)
? (
<>
<div className='leading-4 text-xs font-medium text-gray-500 uppercase'>{t(`${I18N_PREFIX}.configProviderTitle.${providerAllConfigured ? 'configured' : 'notConfigured'}`)}</div>
<div className='system-xs-medium-uppercase text-text-tertiary'>{t(`${I18N_PREFIX}.configProviderTitle.${providerAllConfigured ? 'configured' : 'notConfigured'}`)}</div>
<div className='mt-2 space-y-2'>
{langSmithPanel}
{langfusePanel}
@@ -151,11 +151,11 @@ const ConfigPopup: FC<PopupProps> = ({
)
: (
<>
<div className='leading-4 text-xs font-medium text-gray-500 uppercase'>{t(`${I18N_PREFIX}.configProviderTitle.configured`)}</div>
<div className='system-xs-medium-uppercase text-text-tertiary'>{t(`${I18N_PREFIX}.configProviderTitle.configured`)}</div>
<div className='mt-2'>
{langSmithConfig ? langSmithPanel : langfusePanel}
</div>
<div className='mt-3 leading-4 text-xs font-medium text-gray-500 uppercase'>{t(`${I18N_PREFIX}.configProviderTitle.moreProvider`)}</div>
<div className='mt-3 system-xs-medium-uppercase text-text-tertiary'>{t(`${I18N_PREFIX}.configProviderTitle.moreProvider`)}</div>
<div className='mt-2'>
{!langSmithConfig ? langSmithPanel : langfusePanel}
</div>
@@ -26,7 +26,7 @@ const Field: FC<Props> = ({
return (
<div className={cn(className)}>
<div className='flex py-[7px]'>
<div className={cn(labelClassName, 'flex items-center h-[18px] text-[13px] font-medium text-gray-900')}>{label} </div>
<div className={cn(labelClassName, 'flex items-center h-[18px] text-[13px] font-medium text-text-primary')}>{label} </div>
{isRequired && <span className='ml-0.5 text-xs font-semibold text-[#D92D20]'>*</span>}
</div>
<Input
@@ -1,6 +1,9 @@
'use client'
import type { FC } from 'react'
import React, { useCallback, useEffect, useState } from 'react'
import {
RiArrowDownDoubleLine,
} from '@remixicon/react'
import { useTranslation } from 'react-i18next'
import { usePathname } from 'next/navigation'
import { useBoolean } from 'ahooks'
@@ -8,7 +11,6 @@ import type { LangFuseConfig, LangSmithConfig } from './type'
import { TracingProvider } from './type'
import TracingIcon from './tracing-icon'
import ConfigButton from './config-button'
import cn from '@/utils/classnames'
import { LangfuseIcon, LangsmithIcon } from '@/app/components/base/icons/src/public/tracing'
import Indicator from '@/app/components/header/indicator'
import { fetchTracingConfig as doFetchTracingConfig, fetchTracingStatus, updateTracingStatus } from '@/service/apps'
@@ -16,6 +18,8 @@ import type { TracingStatus } from '@/models/app'
import Toast from '@/app/components/base/toast'
import { useAppContext } from '@/context/app-context'
import Loading from '@/app/components/base/loading'
import Divider from '@/app/components/base/divider'
import cn from '@/utils/classnames'
const I18N_PREFIX = 'app.tracing'
@@ -27,7 +31,7 @@ const Title = ({
const { t } = useTranslation()
return (
<div className={cn(className, 'flex items-center text-lg font-semibold text-gray-900')}>
<div className={cn('flex items-center system-xl-semibold text-text-primary', className)}>
{t('common.appMenus.overview')}
</div>
)
@@ -135,43 +139,68 @@ const Panel: FC = () => {
return (
<div className={cn('mb-3 flex justify-between items-center')}>
<Title className='h-[41px]' />
<div className='flex items-center p-2 rounded-xl border-[0.5px] border-gray-200 shadow-xs cursor-pointer hover:bg-gray-100' onClick={showPopup}>
{!inUseTracingProvider
? <>
<TracingIcon size='md' className='mr-2' />
<div className='leading-5 text-sm font-semibold text-gray-700'>{t(`${I18N_PREFIX}.title`)}</div>
</>
: <InUseProviderIcon className='ml-1 h-4' />}
{hasConfiguredTracing && (
<div className='ml-4 mr-1 flex items-center'>
<Indicator color={enabled ? 'green' : 'gray'} />
<div className='ml-1.5 text-xs font-semibold text-gray-500 uppercase'>
{t(`${I18N_PREFIX}.${enabled ? 'enabled' : 'disabled'}`)}
<div
className={cn(
'flex items-center p-2 rounded-xl bg-background-default-dodge border-t border-l-[0.5px] border-effects-highlight shadow-xs cursor-pointer hover:bg-background-default-lighter hover:border-effects-highlight-lightmode-off',
controlShowPopup && 'bg-background-default-lighter border-effects-highlight-lightmode-off',
)}
onClick={showPopup}
>
{!inUseTracingProvider && (
<>
<TracingIcon size='md' />
<div className='mx-2 system-sm-semibold text-text-secondary'>{t(`${I18N_PREFIX}.title`)}</div>
<div className='flex items-center' onClick={e => e.stopPropagation()}>
<ConfigButton
appId={appId}
readOnly={readOnly}
hasConfigured={false}
enabled={enabled}
onStatusChange={handleTracingEnabledChange}
chosenProvider={inUseTracingProvider}
onChooseProvider={handleChooseProvider}
langSmithConfig={langSmithConfig}
langFuseConfig={langFuseConfig}
onConfigUpdated={handleTracingConfigUpdated}
onConfigRemoved={handleTracingConfigRemoved}
controlShowPopup={controlShowPopup}
/>
</div>
</div>
<Divider type='vertical' className='h-3.5' />
<div className='p-1 rounded-md'>
<RiArrowDownDoubleLine className='w-4 h-4 text-text-tertiary' />
</div>
</>
)}
{hasConfiguredTracing && (
<div className='ml-2 w-px h-3.5 bg-gray-200'></div>
<>
<div className='ml-4 mr-1 flex items-center'>
<Indicator color={enabled ? 'green' : 'gray'} />
<div className='ml-1.5 system-xs-semibold-uppercase text-text-tertiary'>
{t(`${I18N_PREFIX}.${enabled ? 'enabled' : 'disabled'}`)}
</div>
</div>
<InUseProviderIcon className='ml-1 h-4' />
<Divider type='vertical' className='h-3.5' />
<div className='flex items-center' onClick={e => e.stopPropagation()}>
<ConfigButton
appId={appId}
readOnly={readOnly}
hasConfigured
className='ml-2'
enabled={enabled}
onStatusChange={handleTracingEnabledChange}
chosenProvider={inUseTracingProvider}
onChooseProvider={handleChooseProvider}
langSmithConfig={langSmithConfig}
langFuseConfig={langFuseConfig}
onConfigUpdated={handleTracingConfigUpdated}
onConfigRemoved={handleTracingConfigRemoved}
controlShowPopup={controlShowPopup}
/>
</div>
</>
)}
<div className='flex items-center' onClick={e => e.stopPropagation()}>
<ConfigButton
appId={appId}
readOnly={readOnly}
hasConfigured
className='ml-2'
enabled={enabled}
onStatusChange={handleTracingEnabledChange}
chosenProvider={inUseTracingProvider}
onChooseProvider={handleChooseProvider}
langSmithConfig={langSmithConfig}
langFuseConfig={langFuseConfig}
onConfigUpdated={handleTracingConfigUpdated}
onConfigRemoved={handleTracingConfigRemoved}
controlShowPopup={controlShowPopup}
/>
</div>
</div>
</div>
)
@@ -17,6 +17,7 @@ import { LinkExternal02 } from '@/app/components/base/icons/src/vender/line/gene
import Confirm from '@/app/components/base/confirm'
import { addTracingConfig, removeTracingConfig, updateTracingConfig } from '@/service/apps'
import Toast from '@/app/components/base/toast'
import Divider from '@/app/components/base/divider'
type Props = {
appId: string
@@ -152,11 +153,11 @@ const ProviderConfigModal: FC<Props> = ({
? (
<PortalToFollowElem open>
<PortalToFollowElemContent className='w-full h-full z-[60]'>
<div className='fixed inset-0 flex items-center justify-center bg-black/[.25]'>
<div className='mx-2 w-[640px] max-h-[calc(100vh-120px)] bg-white shadow-xl rounded-2xl overflow-y-auto'>
<div className='fixed inset-0 flex items-center justify-center bg-background-overlay'>
<div className='mx-2 w-[640px] max-h-[calc(100vh-120px)] bg-components-panel-bg shadow-xl rounded-2xl overflow-y-auto'>
<div className='px-8 pt-8'>
<div className='flex justify-between items-center mb-4'>
<div className='text-xl font-semibold text-gray-900'>{t(`${I18N_PREFIX}.title`)}{t(`app.tracing.${type}.title`)}</div>
<div className='title-2xl-semibold text-text-primary'>{t(`${I18N_PREFIX}.title`)}{t(`app.tracing.${type}.title`)}</div>
</div>
<div className='space-y-4'>
@@ -230,16 +231,16 @@ const ProviderConfigModal: FC<Props> = ({
{isEdit && (
<>
<Button
className='h-9 text-sm font-medium text-gray-700'
className='h-9 text-sm font-medium text-text-secondary'
onClick={showRemoveConfirm}
>
<span className='text-[#D92D20]'>{t('common.operation.remove')}</span>
</Button>
<div className='mx-3 w-px h-[18px] bg-gray-200'></div>
<Divider className='mx-3 h-[18px]'/>
</>
)}
<Button
className='mr-2 h-9 text-sm font-medium text-gray-700'
className='mr-2 h-9 text-sm font-medium text-text-secondary'
onClick={onCancel}
>
{t('common.operation.cancel')}
@@ -256,9 +257,9 @@ const ProviderConfigModal: FC<Props> = ({
</div>
</div>
<div className='border-t-[0.5px] border-t-black/5'>
<div className='flex justify-center items-center py-3 bg-gray-50 text-xs text-gray-500'>
<Lock01 className='mr-1 w-3 h-3 text-gray-500' />
<div className='border-t-[0.5px] border-divider-regular'>
<div className='flex justify-center items-center py-3 bg-background-section-burn text-xs text-text-tertiary'>
<Lock01 className='mr-1 w-3 h-3 text-text-tertiary' />
{t('common.modelProvider.encrypted.front')}
<a
className='text-primary-600 mx-1'
@@ -1,11 +1,13 @@
'use client'
import type { FC } from 'react'
import React, { useCallback } from 'react'
import {
RiEqualizer2Line,
} from '@remixicon/react'
import { useTranslation } from 'react-i18next'
import { TracingProvider } from './type'
import cn from '@/utils/classnames'
import { LangfuseIconBig, LangsmithIconBig } from '@/app/components/base/icons/src/public/tracing'
import { Settings04 } from '@/app/components/base/icons/src/vender/line/general'
import { Eye as View } from '@/app/components/base/icons/src/vender/solid/general'
const I18N_PREFIX = 'app.tracing'
@@ -61,34 +63,37 @@ const ProviderPanel: FC<Props> = ({
}, [hasConfigured, isChosen, onChoose, readOnly])
return (
<div
className={cn(isChosen ? 'border-primary-400' : 'border-transparent', !isChosen && hasConfigured && !readOnly && 'cursor-pointer', 'px-4 py-3 rounded-xl border-[1.5px] bg-gray-100')}
className={cn(
'px-4 py-3 rounded-xl border-[1.5px] bg-background-section-burn',
isChosen ? 'bg-background-section border-components-option-card-option-selected-border' : 'border-transparent',
!isChosen && hasConfigured && !readOnly && 'cursor-pointer',
)}
onClick={handleChosen}
>
<div className={'flex justify-between items-center space-x-1'}>
<div className='flex items-center'>
<Icon className='h-6' />
{isChosen && <div className='ml-1 flex items-center h-4 px-1 rounded-[4px] border border-primary-500 leading-4 text-xs font-medium text-primary-500 uppercase '>{t(`${I18N_PREFIX}.inUse`)}</div>}
{isChosen && <div className='ml-1 flex items-center h-4 px-1 rounded-[4px] border border-text-accent-secondary system-2xs-medium-uppercase text-text-accent-secondary'>{t(`${I18N_PREFIX}.inUse`)}</div>}
</div>
{!readOnly && (
<div className={'flex justify-between items-center space-x-1'}>
{hasConfigured && (
<div className='flex px-2 items-center h-6 bg-white rounded-md border-[0.5px] border-gray-200 shadow-xs cursor-pointer text-gray-700 space-x-1' onClick={viewBtnClick} >
<div className='flex px-2 items-center h-6 bg-components-button-secondary-bg rounded-md border-[0.5px] border-components-button-secondary-border shadow-xs cursor-pointer text-text-secondary space-x-1' onClick={viewBtnClick} >
<View className='w-3 h-3'/>
<div className='text-xs font-medium'>{t(`${I18N_PREFIX}.view`)}</div>
</div>
)}
<div
className='flex px-2 items-center h-6 bg-white rounded-md border-[0.5px] border-gray-200 shadow-xs cursor-pointer text-gray-700 space-x-1'
className='flex px-2 items-center h-6 bg-components-button-secondary-bg rounded-md border-[0.5px] border-components-button-secondary-border shadow-xs cursor-pointer text-text-secondary space-x-1'
onClick={handleConfigBtnClick}
>
<Settings04 className='w-3 h-3' />
<RiEqualizer2Line className='w-3 h-3' />
<div className='text-xs font-medium'>{t(`${I18N_PREFIX}.config`)}</div>
</div>
</div>
)}
</div>
<div className='mt-2 leading-4 text-xs font-normal text-gray-500'>
<div className='mt-2 system-xs-regular text-text-tertiary'>
{t(`${I18N_PREFIX}.${type}.description`)}
</div>
</div>
@@ -1,45 +0,0 @@
'use client'
import { ChevronDoubleDownIcon } from '@heroicons/react/20/solid'
import type { FC } from 'react'
import { useTranslation } from 'react-i18next'
import React, { useCallback } from 'react'
import Tooltip from '@/app/components/base/tooltip'
const I18N_PREFIX = 'app.tracing'
type Props = {
isFold: boolean
onFoldChange: (isFold: boolean) => void
}
const ToggleFoldBtn: FC<Props> = ({
isFold,
onFoldChange,
}) => {
const { t } = useTranslation()
const handleFoldChange = useCallback((e: React.MouseEvent<HTMLDivElement>) => {
e.stopPropagation()
onFoldChange(!isFold)
}, [isFold, onFoldChange])
return (
// text-[0px] to hide spacing between tooltip elements
<div className='shrink-0 cursor-pointer text-[0px]' onClick={handleFoldChange}>
<Tooltip
popupContent={t(`${I18N_PREFIX}.${isFold ? 'expand' : 'collapse'}`)}
>
{isFold && (
<div className='p-1 rounded-md text-gray-500 hover:text-gray-800 hover:bg-black/5'>
<ChevronDoubleDownIcon className='w-4 h-4' />
</div>
)}
{!isFold && (
<div className='p-2 rounded-lg text-gray-500 border-[0.5px] border-gray-200 hover:text-gray-800 hover:bg-black/5'>
<ChevronDoubleDownIcon className='w-4 h-4 transform rotate-180' />
</div>
)}
</Tooltip>
</div>
)
}
export default React.memo(ToggleFoldBtn)
@@ -26,7 +26,7 @@ import { useTabSearchParams } from '@/hooks/use-tab-searchparams'
import { useStore as useTagStore } from '@/app/components/base/tag-management/store'
import { useAppContext } from '@/context/app-context'
import { useExternalApiPanel } from '@/context/external-api-panel-context'
// eslint-disable-next-line import/order
import { useQuery } from '@tanstack/react-query'
import Input from '@/app/components/base/input'
+20
View File
@@ -0,0 +1,20 @@
import PluginPage from '@/app/components/plugins/plugin-page'
import PluginsPanel from '@/app/components/plugins/plugin-page/plugins-panel'
import Marketplace from '@/app/components/plugins/marketplace'
import { getLocaleOnServer } from '@/i18n/server'
const PluginList = async () => {
const locale = await getLocaleOnServer()
return (
<PluginPage
plugins={<PluginsPanel />}
marketplace={<Marketplace locale={locale} pluginTypeSwitchClassName='top-[60px]' searchBoxAutoAnimate={false} />}
/>
)
}
export const metadata = {
title: 'Plugins - Dify',
}
export default PluginList
+4 -4
View File
@@ -60,18 +60,18 @@ export default function AppBasic({ icon, icon_background, name, isExternal, type
return (
<div className="flex items-start p-1">
{icon && icon_background && iconType === 'app' && (
<div className='flex-shrink-0 mr-3'>
<div className='shrink-0 mr-3'>
<AppIcon icon={icon} background={icon_background} />
</div>
)}
{iconType !== 'app'
&& <div className='flex-shrink-0 mr-3'>
&& <div className='shrink-0 mr-3'>
{ICON_MAP[iconType]}
</div>
}
{mode === 'expand' && <div className="group">
<div className={`flex flex-row items-center text-sm font-semibold text-gray-700 group-hover:text-gray-900 break-all ${textStyle?.main ?? ''}`}>
<div className={`flex flex-row items-center text-sm font-semibold text-text-secondary group-hover:text-text-primary break-all ${textStyle?.main ?? ''}`}>
{name}
{hoverTip
&& <Tooltip
@@ -86,7 +86,7 @@ export default function AppBasic({ icon, icon_background, name, isExternal, type
/>
}
</div>
<div className={`text-xs font-normal text-gray-500 group-hover:text-gray-700 break-all ${textStyle?.extra ?? ''}`}>{type}</div>
<div className={`text-xs font-normal text-text-tertiary group-hover:text-text-secondary break-all ${textStyle?.extra ?? ''}`}>{type}</div>
<div className='text-text-tertiary system-2xs-medium-uppercase'>{isExternal ? t('dataset.externalTag') : ''}</div>
</div>}
</div>
@@ -23,7 +23,7 @@ const FeaturePanel: FC<IFeaturePanelProps> = ({
children,
}) => {
return (
<div className={cn('rounded-xl border-t-[0.5px] border-l-[0.5px] bg-background-section-burn pb-3', noBodySpacing && '!pb-0', className)}>
<div className={cn('rounded-xl border-t-[0.5px] border-l-[0.5px] bg-background-section-burn pb-3', noBodySpacing && 'pb-0', className)}>
{/* Header */}
<div className={cn('px-3 pt-2', hasHeaderBottomBorder && 'border-b border-divider-subtle')}>
<div className='flex justify-between items-center h-8'>
@@ -9,7 +9,7 @@ import ConfirmAddVar from './confirm-add-var'
import s from './style.module.css'
import PromptEditorHeightResizeWrap from './prompt-editor-height-resize-wrap'
import cn from '@/utils/classnames'
import { type PromptVariable } from '@/models/debug'
import type { PromptVariable } from '@/models/debug'
import Tooltip from '@/app/components/base/tooltip'
import type { CompletionParams } from '@/types/app'
import { AppType } from '@/types/app'
@@ -28,7 +28,7 @@ const ConfigString: FC<IConfigStringProps> = ({
min={1}
value={value || ''}
onChange={(e) => {
let value = parseInt(e.target.value, 10)
let value = Number.parseInt(e.target.value, 10)
if (value > maxLength)
value = maxLength
@@ -3,7 +3,6 @@ import type { FC } from 'react'
import React, { useState } from 'react'
import { useTranslation } from 'react-i18next'
import { useBoolean } from 'ahooks'
import type { Timeout } from 'ahooks/lib/useRequest/src/types'
import { useContext } from 'use-context-selector'
import produce from 'immer'
import {
@@ -50,7 +49,7 @@ export type IConfigVarProps = {
onPromptVariablesChange?: (promptVariables: PromptVariable[]) => void
}
let conflictTimer: Timeout
let conflictTimer: number
const ConfigVar: FC<IConfigVarProps> = ({ promptVariables, readonly, onPromptVariablesChange }) => {
const { t } = useTranslation()
@@ -107,7 +106,7 @@ const ConfigVar: FC<IConfigVarProps> = ({ promptVariables, readonly, onPromptVar
onPromptVariablesChange?.(newPromptVariables)
}
const updatePromptKey = (index: number, newKey: string) => {
clearTimeout(conflictTimer)
window.clearTimeout(conflictTimer)
const { isValid, errorKey, errorMessageKey } = checkKeys([newKey], true)
if (!isValid) {
Toast.notify({
@@ -127,7 +126,7 @@ const ConfigVar: FC<IConfigVarProps> = ({ promptVariables, readonly, onPromptVar
return item
})
conflictTimer = setTimeout(() => {
conflictTimer = window.setTimeout(() => {
const isKeyExists = promptVariables.some(item => item.key?.trim() === newKey.trim())
if (isKeyExists) {
Toast.notify({
@@ -1,21 +1,25 @@
'use client'
import type { FC } from 'react'
import React, { useState } from 'react'
import React, { useMemo, useState } from 'react'
import { useTranslation } from 'react-i18next'
import { useContext } from 'use-context-selector'
import copy from 'copy-to-clipboard'
import produce from 'immer'
import {
RiDeleteBinLine,
RiEqualizer2Line,
RiHammerFill,
RiInformation2Line,
} from '@remixicon/react'
import { useFormattingChangedDispatcher } from '../../../debug/hooks'
import SettingBuiltInTool from './setting-built-in-tool'
import cn from '@/utils/classnames'
import Panel from '@/app/components/app/configuration/base/feature-panel'
import { InfoCircle } from '@/app/components/base/icons/src/vender/line/general'
import OperationBtn from '@/app/components/app/configuration/base/operation-btn'
import AppIcon from '@/app/components/base/app-icon'
import Button from '@/app/components/base/button'
import Indicator from '@/app/components/header/indicator'
import Switch from '@/app/components/base/switch'
import Toast from '@/app/components/base/toast'
import ConfigContext from '@/context/debug-configuration'
import type { AgentTool } from '@/types/app'
import { type Collection, CollectionType } from '@/app/components/tools/types'
@@ -23,7 +27,12 @@ import { MAX_TOOLS_NUM } from '@/config'
import { AlertTriangle } from '@/app/components/base/icons/src/vender/solid/alertsAndFeedback'
import Tooltip from '@/app/components/base/tooltip'
import { DefaultToolIcon } from '@/app/components/base/icons/src/public/other'
import AddToolModal from '@/app/components/tools/add-tool-modal'
// import AddToolModal from '@/app/components/tools/add-tool-modal'
import ConfigCredential from '@/app/components/tools/setting/build-in/config-credentials'
import { updateBuiltInToolCredential } from '@/service/tools'
import cn from '@/utils/classnames'
import ToolPicker from '@/app/components/workflow/block-selector/tool-picker'
import type { ToolDefaultValue } from '@/app/components/workflow/block-selector/types'
type AgentToolWithMoreInfo = AgentTool & { icon: any; collection?: Collection } | null
const AgentTools: FC = () => {
@@ -33,9 +42,19 @@ const AgentTools: FC = () => {
const formattingChangedDispatcher = useFormattingChangedDispatcher()
const [currentTool, setCurrentTool] = useState<AgentToolWithMoreInfo>(null)
const currentCollection = useMemo(() => {
if (!currentTool) return null
const collection = collectionList.find(collection => collection.id.split('/').pop() === currentTool?.provider_id.split('/').pop() && collection.type === currentTool?.provider_type)
return collection
}, [currentTool, collectionList])
const [isShowSettingTool, setIsShowSettingTool] = useState(false)
const [isShowSettingAuth, setShowSettingAuth] = useState(false)
const tools = (modelConfig?.agentConfig?.tools as AgentTool[] || []).map((item) => {
const collection = collectionList.find(collection => collection.id === item.provider_id && collection.type === item.provider_type)
const collection = collectionList.find(
collection =>
collection.id.split('/').pop() === item.provider_id.split('/').pop()
&& collection.type === item.provider_type,
)
const icon = collection?.icon
return {
...item,
@@ -55,10 +74,39 @@ const AgentTools: FC = () => {
formattingChangedDispatcher()
}
const handleToolAuthSetting = (value: any) => {
const newModelConfig = produce(modelConfig, (draft) => {
const tool = (draft.agentConfig.tools).find((item: any) => item.provider_id === value?.collection?.id && item.tool_name === value?.tool_name)
if (tool)
(tool as AgentTool).notAuthor = false
})
setModelConfig(newModelConfig)
setIsShowSettingTool(false)
formattingChangedDispatcher()
}
const [isDeleting, setIsDeleting] = useState<number>(-1)
const handleSelectTool = (tool: ToolDefaultValue) => {
const newModelConfig = produce(modelConfig, (draft) => {
draft.agentConfig.tools.push({
provider_id: tool.provider_id,
provider_type: tool.provider_type as CollectionType,
provider_name: tool.provider_name,
tool_name: tool.tool_name,
tool_label: tool.tool_label,
tool_parameters: tool.params,
notAuthor: !tool.is_team_authorization,
enabled: true,
})
})
setModelConfig(newModelConfig)
}
return (
<>
<Panel
className="mt-2"
className={cn('mt-2', tools.length === 0 && 'pb-2')}
noBodySpacing={tools.length === 0}
headerIcon={
<RiHammerFill className='w-4 h-4 text-primary-500' />
@@ -81,7 +129,14 @@ const AgentTools: FC = () => {
{tools.length < MAX_TOOLS_NUM && (
<>
<div className='ml-3 mr-1 h-3.5 w-px bg-gray-200'></div>
<OperationBtn type="add" onClick={() => setIsShowChooseTool(true)} />
<ToolPicker
trigger={<OperationBtn type="add" />}
isShow={isShowChooseTool}
onShowChange={setIsShowChooseTool}
disabled={false}
supportAddCustomTool
onSelect={handleSelectTool}
/>
</>
)}
</div>
@@ -90,72 +145,77 @@ const AgentTools: FC = () => {
<div className='grid gap-1 grid-cols-1 2xl:grid-cols-2 items-center flex-wrap justify-between'>
{tools.map((item: AgentTool & { icon: any; collection?: Collection }, index) => (
<div key={index}
className={cn((item.isDeleted || item.notAuthor) ? 'bg-white/50' : 'bg-white', (item.enabled && !item.isDeleted && !item.notAuthor) && 'shadow-xs', index > 1 && 'mt-1', 'group relative flex justify-between items-center last-of-type:mb-0 pl-2.5 py-2 pr-3 w-full rounded-lg border-[0.5px] border-gray-200 ')}
className={cn(
'group relative flex justify-between items-center last-of-type:mb-0 p-1.5 pr-2 w-full bg-components-panel-on-panel-item-bg rounded-lg border-[0.5px] border-components-panel-border-subtle shadow-xs hover:bg-components-panel-on-panel-item-bg-hover hover:shadow-sm cursor',
isDeleting === index && 'hover:bg-state-destructive-hover border-state-destructive-border',
)}
>
<div className='grow w-0 flex items-center'>
{(item.isDeleted || item.notAuthor)
? (
<DefaultToolIcon className='w-6 h-6' />
)
: (
typeof item.icon === 'string'
? (
<div
className='w-6 h-6 bg-cover bg-center rounded-md'
style={{
backgroundImage: `url(${item.icon})`,
}}
></div>
)
: (
<AppIcon
className='rounded-md'
size='tiny'
icon={item.icon?.content}
background={item.icon?.background}
/>
))}
{item.isDeleted && <DefaultToolIcon className='w-5 h-5' />}
{!item.isDeleted && (
<div className={cn((item.notAuthor || !item.enabled) && 'opacity-50')}>
{typeof item.icon === 'string' && <div className='w-5 h-5 bg-cover bg-center rounded-md' style={{ backgroundImage: `url(${item.icon})` }} />}
{typeof item.icon !== 'string' && <AppIcon className='rounded-md' size='xs' icon={item.icon?.content} background={item.icon?.background} />}
</div>
)}
<div
className={cn((item.isDeleted || item.notAuthor) ? 'line-through opacity-50' : '', 'grow w-0 ml-2 leading-[18px] text-[13px] font-medium text-gray-800 truncate')}
className={cn(
'grow w-0 ml-1.5 flex items-center system-xs-regular truncate',
(item.isDeleted || item.notAuthor || !item.enabled) ? 'opacity-50' : '',
)}
>
<span className='text-gray-800 pr-2'>{item.provider_type === CollectionType.builtIn ? item.provider_name : item.tool_label}</span>
<Tooltip
popupContent={t('tools.toolNameUsageTip')}
>
<span className='text-gray-500'>{item.tool_name}</span>
</Tooltip>
<span className='text-text-secondary system-xs-medium pr-1.5'>{item.provider_type === CollectionType.builtIn ? item.provider_name.split('/').pop() : item.tool_label}</span>
<span className='text-text-tertiary'>{item.tool_name}</span>
{!item.isDeleted && (
<Tooltip
needsDelay
popupContent={
<div className='w-[180px]'>
<div className='mb-1.5 text-text-secondary'>{item.tool_name}</div>
<div className='mb-1.5 text-text-tertiary'>{t('tools.toolNameUsageTip')}</div>
<div className='text-text-accent cursor-pointer' onClick={() => copy(item.tool_name)}>{t('tools.copyToolName')}</div>
</div>
}
>
<div className='w-4 h-4'>
<div className='hidden group-hover:inline-block ml-0.5'>
<RiInformation2Line className='w-4 h-4 text-text-tertiary' />
</div>
</div>
</Tooltip>
)}
</div>
</div>
<div className='shrink-0 ml-1 flex items-center'>
{(item.isDeleted || item.notAuthor)
? (
<div className='flex items-center'>
<Tooltip
popupContent={t(`tools.${item.isDeleted ? 'toolRemoved' : 'notAuthorized'}`)}
needsDelay
>
<div className='mr-1 p-1 rounded-md hover:bg-black/5 cursor-pointer' onClick={() => {
if (item.notAuthor)
setIsShowChooseTool(true)
}}>
<AlertTriangle className='w-4 h-4 text-[#F79009]' />
</div>
</Tooltip>
<div className='p-1 rounded-md hover:bg-black/5 cursor-pointer' onClick={() => {
{item.isDeleted && (
<div className='flex items-center mr-2'>
<Tooltip
popupContent={t('tools.toolRemoved')}
needsDelay
>
<div className='mr-1 p-1 rounded-md hover:bg-black/5 cursor-pointer'>
<AlertTriangle className='w-4 h-4 text-[#F79009]' />
</div>
</Tooltip>
<div
className='p-1 rounded-md text-text-tertiary cursor-pointer hover:text-text-destructive'
onClick={() => {
const newModelConfig = produce(modelConfig, (draft) => {
draft.agentConfig.tools.splice(index, 1)
})
setModelConfig(newModelConfig)
formattingChangedDispatcher()
}}>
<RiDeleteBinLine className='w-4 h-4 text-gray-500' />
</div>
<div className='ml-2 mr-3 w-px h-3.5 bg-gray-200'></div>
}}
onMouseOver={() => setIsDeleting(index)}
onMouseLeave={() => setIsDeleting(-1)}
>
<RiDeleteBinLine className='w-4 h-4' />
</div>
)
: (
<div className='hidden group-hover:flex items-center'>
</div>
)}
{!item.isDeleted && (
<div className='hidden group-hover:flex items-center gap-1 mr-2'>
{!item.notAuthor && (
<Tooltip
popupContent={t('tools.setBuiltInTools.infoAndSetting')}
needsDelay
@@ -164,55 +224,81 @@ const AgentTools: FC = () => {
setCurrentTool(item)
setIsShowSettingTool(true)
}}>
<InfoCircle className='w-4 h-4 text-gray-500' />
<RiEqualizer2Line className='w-4 h-4 text-text-tertiary' />
</div>
</Tooltip>
<div className='p-1 rounded-md hover:bg-black/5 cursor-pointer' onClick={() => {
)}
<div
className='p-1 rounded-md text-text-tertiary cursor-pointer hover:text-text-destructive'
onClick={() => {
const newModelConfig = produce(modelConfig, (draft) => {
draft.agentConfig.tools.splice(index, 1)
})
setModelConfig(newModelConfig)
formattingChangedDispatcher()
}}>
<RiDeleteBinLine className='w-4 h-4 text-gray-500' />
</div>
<div className='ml-2 mr-3 w-px h-3.5 bg-gray-200'></div>
}}
onMouseOver={() => setIsDeleting(index)}
onMouseLeave={() => setIsDeleting(-1)}
>
<RiDeleteBinLine className='w-4 h-4' />
</div>
</div>
)}
<div className={cn(item.isDeleted && 'opacity-50')}>
{!item.notAuthor && (
<Switch
defaultValue={item.isDeleted ? false : item.enabled}
disabled={item.isDeleted}
size='md'
onChange={(enabled) => {
const newModelConfig = produce(modelConfig, (draft) => {
(draft.agentConfig.tools[index] as any).enabled = enabled
})
setModelConfig(newModelConfig)
formattingChangedDispatcher()
}} />
)}
{item.notAuthor && (
<Button variant='secondary' size='small' onClick={() => {
setCurrentTool(item)
setShowSettingAuth(true)
}}>
{t('tools.notAuthorized')}
<Indicator className='ml-2' color='orange' />
</Button>
)}
<div className={cn((item.isDeleted || item.notAuthor) && 'opacity-50')}>
<Switch
defaultValue={(item.isDeleted || item.notAuthor) ? false : item.enabled}
disabled={(item.isDeleted || item.notAuthor)}
size='md'
onChange={(enabled) => {
const newModelConfig = produce(modelConfig, (draft) => {
(draft.agentConfig.tools[index] as any).enabled = enabled
})
setModelConfig(newModelConfig)
formattingChangedDispatcher()
}} />
</div>
</div>
</div>
))}
</div >
</Panel >
{isShowChooseTool && (
<AddToolModal onHide={() => setIsShowChooseTool(false)} />
{isShowSettingTool && (
<SettingBuiltInTool
toolName={currentTool?.tool_name as string}
setting={currentTool?.tool_parameters as any}
collection={currentTool?.collection as Collection}
isBuiltIn={currentTool?.collection?.type === CollectionType.builtIn}
isModel={currentTool?.collection?.type === CollectionType.model}
onSave={handleToolSettingChange}
onHide={() => setIsShowSettingTool(false)}
/>
)}
{isShowSettingAuth && (
<ConfigCredential
collection={currentCollection as any}
onCancel={() => setShowSettingAuth(false)}
onSaved={async (value) => {
await updateBuiltInToolCredential((currentCollection as any).name, value)
Toast.notify({
type: 'success',
message: t('common.api.actionSuccess'),
})
handleToolAuthSetting(currentTool as any)
setShowSettingAuth(false)
}}
/>
)}
{
isShowSettingTool && (
<SettingBuiltInTool
toolName={currentTool?.tool_name as string}
setting={currentTool?.tool_parameters as any}
collection={currentTool?.collection as Collection}
isBuiltIn={currentTool?.collection?.type === CollectionType.builtIn}
isModel={currentTool?.collection?.type === CollectionType.model}
onSave={handleToolSettingChange}
onHide={() => setIsShowSettingTool(false)}
/>)
}
</>
)
}
@@ -3,21 +3,30 @@ import type { FC } from 'react'
import React, { useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next'
import { useContext } from 'use-context-selector'
import cn from '@/utils/classnames'
import Drawer from '@/app/components/base/drawer-plus'
import {
RiArrowLeftLine,
RiCloseLine,
} from '@remixicon/react'
import Drawer from '@/app/components/base/drawer'
import Loading from '@/app/components/base/loading'
import ActionButton from '@/app/components/base/action-button'
import Icon from '@/app/components/plugins/card/base/card-icon'
import OrgInfo from '@/app/components/plugins/card/base/org-info'
import Description from '@/app/components/plugins/card/base/description'
import TabSlider from '@/app/components/base/tab-slider-plain'
import Button from '@/app/components/base/button'
import Form from '@/app/components/header/account-setting/model-provider-page/model-modal/Form'
import { addDefaultValue, toolParametersToFormSchemas } from '@/app/components/tools/utils/to-form-schema'
import type { Collection, Tool } from '@/app/components/tools/types'
import { CollectionType } from '@/app/components/tools/types'
import { fetchBuiltInToolList, fetchCustomToolList, fetchModelToolList, fetchWorkflowToolList } from '@/service/tools'
import I18n from '@/context/i18n'
import Button from '@/app/components/base/button'
import Loading from '@/app/components/base/loading'
import { DiagonalDividingLine } from '@/app/components/base/icons/src/public/common'
import { getLanguage } from '@/i18n/language'
import AppIcon from '@/app/components/base/app-icon'
import cn from '@/utils/classnames'
type Props = {
showBackButton?: boolean
collection: Collection
isBuiltIn?: boolean
isModel?: boolean
@@ -29,6 +38,7 @@ type Props = {
}
const SettingBuiltInTool: FC<Props> = ({
showBackButton = false,
collection,
isBuiltIn = true,
isModel = true,
@@ -96,39 +106,38 @@ const SettingBuiltInTool: FC<Props> = ({
return valid
})()
const infoUI = (
<div className='pt-2'>
<div className='leading-5 text-sm font-medium text-gray-900'>
{t('tools.setBuiltInTools.toolDescription')}
</div>
<div className='mt-1 leading-[18px] text-xs font-normal text-gray-600'>
{currTool?.description[language]}
</div>
const getType = (type: string) => {
if (type === 'number-input')
return t('tools.setBuiltInTools.number')
if (type === 'text-input')
return t('tools.setBuiltInTools.string')
if (type === 'file')
return t('tools.setBuiltInTools.file')
return type
}
const infoUI = (
<div className=''>
{infoSchemas.length > 0 && (
<div className='mt-6'>
<div className='flex items-center mb-4 leading-[18px] text-xs font-semibold text-gray-500 uppercase'>
<div className='mr-3'>{t('tools.setBuiltInTools.parameters')}</div>
<div className='grow w-0 h-px bg-[#f3f4f6]'></div>
</div>
<div className='space-y-4'>
{infoSchemas.map((item: any, index) => (
<div key={index}>
<div className='flex items-center space-x-2 leading-[18px]'>
<div className='text-[13px] font-semibold text-gray-900'>{item.label[language]}</div>
<div className='text-xs font-medium text-gray-500'>{item.type === 'number-input' ? t('tools.setBuiltInTools.number') : t('tools.setBuiltInTools.string')}</div>
{item.required && (
<div className='text-xs font-medium text-[#EC4A0A]'>{t('tools.setBuiltInTools.required')}</div>
)}
<div className='py-2 space-y-1'>
{infoSchemas.map((item: any, index) => (
<div key={index} className='py-1'>
<div className='flex items-center gap-2'>
<div className='text-text-secondary code-sm-semibold'>{item.label[language]}</div>
<div className='text-text-tertiary system-xs-regular'>
{getType(item.type)}
</div>
{item.human_description && (
<div className='mt-1 leading-[18px] text-xs font-normal text-gray-600'>
{item.human_description?.[language]}
</div>
{item.required && (
<div className='text-text-warning-secondary system-xs-medium'>{t('tools.setBuiltInTools.required')}</div>
)}
</div>
))}
</div>
{item.human_description && (
<div className='mt-0.5 text-text-tertiary system-xs-regular'>
{item.human_description?.[language]}
</div>
)}
</div>
))}
</div>
)}
</div>
@@ -149,75 +158,82 @@ const SettingBuiltInTool: FC<Props> = ({
return (
<Drawer
isShow
onHide={onHide}
title={(
<div className='flex items-center'>
{typeof collection.icon === 'string'
? (
<div
className='w-6 h-6 bg-cover bg-center rounded-md flex-shrink-0'
style={{
backgroundImage: `url(${collection.icon})`,
}}
></div>
)
: (
<AppIcon
className='rounded-md'
size='tiny'
icon={(collection.icon as any)?.content}
background={(collection.icon as any)?.background}
/>
)}
<div className='ml-2 leading-6 text-base font-semibold text-gray-900'>{currTool?.label[language]}</div>
{(hasSetting && !readonly) && (<>
<DiagonalDividingLine className='mx-4' />
<div className='flex space-x-6'>
<div
className={cn(isInfoActive ? 'text-gray-900 font-semibold' : 'font-normal text-gray-600 cursor-pointer', 'relative text-base')}
onClick={() => setCurrType('info')}
>
{t('tools.setBuiltInTools.info')}
{isInfoActive && <div className='absolute left-0 bottom-[-16px] w-full h-0.5 bg-primary-600'></div>}
isOpen
clickOutsideNotOpen={false}
onClose={onHide}
footer={null}
mask={false}
positionCenter={false}
panelClassname={cn('justify-start mt-[64px] mr-2 mb-2 !w-[420px] !max-w-[420px] !p-0 !bg-components-panel-bg rounded-2xl border-[0.5px] border-components-panel-border shadow-xl')}
>
<>
{isLoading && <Loading type='app' />}
{!isLoading && (
<>
{/* header */}
<div className='relative p-4 pb-3 border-b border-divider-subtle'>
<div className='absolute top-3 right-3'>
<ActionButton onClick={onHide}>
<RiCloseLine className='w-4 h-4' />
</ActionButton>
</div>
<div className={cn(!isInfoActive ? 'text-gray-900 font-semibold' : 'font-normal text-gray-600 cursor-pointer', 'relative text-base ')}
onClick={() => setCurrType('setting')}
>
{t('tools.setBuiltInTools.setting')}
{!isInfoActive && <div className='absolute left-0 bottom-[-16px] w-full h-0.5 bg-primary-600'></div>}
</div>
</div>
</>)}
</div>
)}
panelClassName='mt-[65px] !w-[405px]'
maxWidthClassName='!max-w-[405px]'
height='calc(100vh - 65px)'
headerClassName='!border-b-black/5'
body={
<div className='h-full pt-3'>
{isLoading
? <div className='flex h-full items-center'>
<Loading type='app' />
</div>
: (<div className='flex flex-col h-full'>
<div className='grow h-0 overflow-y-auto px-6'>
{isInfoActive ? infoUI : settingUI}
</div>
{!readonly && !isInfoActive && (
<div className='mt-2 shrink-0 flex justify-end py-4 px-6 space-x-2 rounded-b-[10px] bg-gray-50 border-t border-black/5'>
<Button className='flex items-center h-8 !px-3 !text-[13px] font-medium !text-gray-700' onClick={onHide}>{t('common.operation.cancel')}</Button>
<Button className='flex items-center h-8 !px-3 !text-[13px] font-medium' variant='primary' disabled={!isValid} onClick={() => onSave?.(addDefaultValue(tempSetting, formSchemas))}>{t('common.operation.save')}</Button>
{showBackButton && (
<div
className='mb-2 flex items-center gap-1 text-text-accent-secondary system-xs-semibold-uppercase cursor-pointer'
onClick={onHide}
>
<RiArrowLeftLine className='w-4 h-4' />
BACK
</div>
)}
</div>)}
</div>
}
isShowMask={false}
clickOutsideNotOpen={false}
/>
<div className='flex items-center gap-1'>
<Icon size='tiny' className='w-6 h-6' src={collection.icon} />
<OrgInfo
packageNameClassName='w-auto'
orgName={collection.author}
packageName={collection.name.split('/').pop() || ''}
/>
</div>
<div className='mt-1 text-text-primary system-md-semibold'>{currTool?.label[language]}</div>
{!!currTool?.description[language] && (
<Description className='mt-3' text={currTool.description[language]} descriptionLineRows={2}></Description>
)}
</div>
{/* form */}
<div className='h-full'>
<div className='flex flex-col h-full'>
{(hasSetting && !readonly) ? (
<TabSlider
className='shrink-0 mt-1 px-4'
itemClassName='py-3'
noBorderBottom
value={currType}
onChange={(value) => {
setCurrType(value)
}}
options={[
{ value: 'info', text: t('tools.setBuiltInTools.parameters')! },
{ value: 'setting', text: t('tools.setBuiltInTools.setting')! },
]}
/>
) : (
<div className='p-4 pb-1 text-text-primary system-sm-semibold-uppercase'>{t('tools.setBuiltInTools.parameters')}</div>
)}
<div className='grow h-0 overflow-y-auto px-4'>
{isInfoActive ? infoUI : settingUI}
</div>
{!readonly && !isInfoActive && (
<div className='mt-2 shrink-0 flex justify-end py-4 px-6 space-x-2 rounded-b-[10px] bg-components-panel-bg border-t border-divider-regular'>
<Button className='flex items-center h-8 !px-3 !text-[13px] font-medium !text-gray-700' onClick={onHide}>{t('common.operation.cancel')}</Button>
<Button className='flex items-center h-8 !px-3 !text-[13px] font-medium' variant='primary' disabled={!isValid} onClick={() => onSave?.(addDefaultValue(tempSetting, formSchemas))}>{t('common.operation.save')}</Button>
</div>
)}
</div>
</div>
</>
)}
</>
</Drawer>
)
}
export default React.memo(SettingBuiltInTool)
@@ -12,7 +12,7 @@ import AgentTools from './agent/agent-tools'
import ConfigContext from '@/context/debug-configuration'
import ConfigPrompt from '@/app/components/app/configuration/config-prompt'
import ConfigVar from '@/app/components/app/configuration/config-var'
import { type ModelConfig, type PromptVariable } from '@/models/debug'
import type { ModelConfig, PromptVariable } from '@/models/debug'
import type { AppType } from '@/types/app'
import { ModelModeType } from '@/types/app'
@@ -140,11 +140,11 @@ const ParamsConfig = ({
/>
<div className='mt-6 flex justify-end'>
<Button className='mr-2 flex-shrink-0' onClick={() => {
<Button className='mr-2 shrink-0' onClick={() => {
setTempDataSetConfigs(datasetConfigs)
setRerankSettingModalOpen(false)
}}>{t('common.operation.cancel')}</Button>
<Button variant='primary' className='flex-shrink-0' onClick={handleSave} >{t('common.operation.save')}</Button>
<Button variant='primary' className='shrink-0' onClick={handleSave} >{t('common.operation.save')}</Button>
</div>
</Modal>
)
@@ -12,7 +12,7 @@ import Divider from '@/app/components/base/divider'
import Button from '@/app/components/base/button'
import Input from '@/app/components/base/input'
import Textarea from '@/app/components/base/textarea'
import { type DataSet } from '@/models/datasets'
import type { DataSet } from '@/models/datasets'
import { useToastContext } from '@/app/components/base/toast'
import { updateDatasetSetting } from '@/service/datasets'
import { useAppContext } from '@/context/app-context'
@@ -1,4 +1,3 @@
/* eslint-disable multiline-ternary */
'use client'
import type { FC } from 'react'
import React, { useEffect, useRef, useState } from 'react'
+33 -10
View File
@@ -59,7 +59,7 @@ import {
useTextGenerationCurrentProviderAndModelAndModelList,
} from '@/app/components/header/account-setting/model-provider-page/hooks'
import { fetchCollectionList } from '@/service/tools'
import { type Collection } from '@/app/components/tools/types'
import type { Collection } from '@/app/components/tools/types'
import { useStore as useAppStore } from '@/app/components/app/store'
import {
getMultipleRetrievalConfig,
@@ -71,6 +71,8 @@ import { FILE_EXTS } from '@/app/components/base/prompt-editor/constants'
import { SupportUploadFileTypes } from '@/app/components/workflow/types'
import NewFeaturePanel from '@/app/components/base/features/new-feature-panel'
import { fetchFileUploadConfig } from '@/service/common'
import { correctProvider } from '@/utils'
import PluginDependency from '@/app/components/workflow/plugin-dependency'
type PublishConfig = {
modelConfig: ModelConfig
@@ -156,7 +158,7 @@ const Configuration: FC = () => {
const setCompletionParams = (value: FormValue) => {
const params = { ...value }
// eslint-disable-next-line @typescript-eslint/no-use-before-define
// eslint-disable-next-line ts/no-use-before-define
if ((!params.stop || params.stop.length === 0) && (modeModeTypeRef.current === ModelModeType.completion)) {
params.stop = getTempStop()
setTempStop([])
@@ -165,7 +167,7 @@ const Configuration: FC = () => {
}
const [modelConfig, doSetModelConfig] = useState<ModelConfig>({
provider: 'openai',
provider: 'langgenius/openai/openai',
model_id: 'gpt-3.5-turbo',
mode: ModelModeType.unset,
configs: {
@@ -188,7 +190,7 @@ const Configuration: FC = () => {
const isAgent = mode === 'agent-chat'
const isOpenAI = modelConfig.provider === 'openai'
const isOpenAI = modelConfig.provider === 'langgenius/openai/openai'
const [collectionList, setCollectionList] = useState<Collection[]>([])
useEffect(() => {
@@ -361,7 +363,7 @@ const Configuration: FC = () => {
const [canReturnToSimpleMode, setCanReturnToSimpleMode] = useState(true)
const setPromptMode = async (mode: PromptMode) => {
if (mode === PromptMode.advanced) {
// eslint-disable-next-line @typescript-eslint/no-use-before-define
// eslint-disable-next-line ts/no-use-before-define
await migrateToDefaultPrompt()
setCanReturnToSimpleMode(true)
}
@@ -547,8 +549,19 @@ const Configuration: FC = () => {
if (modelConfig.retriever_resource)
setCitationConfig(modelConfig.retriever_resource)
if (modelConfig.annotation_reply)
setAnnotationConfig(modelConfig.annotation_reply, true)
if (modelConfig.annotation_reply) {
let annotationConfig = modelConfig.annotation_reply
if (modelConfig.annotation_reply.enabled) {
annotationConfig = {
...modelConfig.annotation_reply,
embedding_model: {
...modelConfig.annotation_reply.embedding_model,
embedding_provider_name: correctProvider(modelConfig.annotation_reply.embedding_model.embedding_provider_name),
},
}
}
setAnnotationConfig(annotationConfig, true)
}
if (modelConfig.sensitive_word_avoidance)
setModerationConfig(modelConfig.sensitive_word_avoidance)
@@ -558,7 +571,7 @@ const Configuration: FC = () => {
const config = {
modelConfig: {
provider: model.provider,
provider: correctProvider(model.provider),
model_id: model.name,
mode: model.mode,
configs: {
@@ -600,7 +613,6 @@ const Configuration: FC = () => {
annotation_reply: modelConfig.annotation_reply,
external_data_tools: modelConfig.external_data_tools,
dataSets: datasets || [],
// eslint-disable-next-line multiline-ternary
agentConfig: res.mode === 'agent-chat' ? {
max_iteration: DEFAULT_AGENT_SETTING.max_iteration,
...modelConfig.agent_mode,
@@ -611,8 +623,12 @@ const Configuration: FC = () => {
}).map((tool: any) => {
return {
...tool,
isDeleted: res.deleted_tools?.includes(tool.tool_name),
isDeleted: res.deleted_tools?.some((deletedTool: any) => deletedTool.id === tool.id && deletedTool.tool_name === tool.tool_name),
notAuthor: collectionList.find(c => tool.provider_id === c.id)?.is_team_authorization === false,
...(tool.provider_type === 'builtin' ? {
provider_id: correctProvider(tool.provider_name),
provider_name: correctProvider(tool.provider_name),
} : {}),
}
}),
} : DEFAULT_AGENT_SETTING,
@@ -633,6 +649,12 @@ const Configuration: FC = () => {
retrieval_model: RETRIEVE_TYPE.multiWay,
...modelConfig.dataset_configs,
...retrievalConfig,
...(retrievalConfig.reranking_model ? {
reranking_model: {
...retrievalConfig.reranking_model,
reranking_provider_name: correctProvider(modelConfig.dataset_configs.reranking_model.reranking_provider_name),
},
} : {}),
})
setHasFetchedDetail(true)
})
@@ -1020,6 +1042,7 @@ const Configuration: FC = () => {
onAutoAddPromptVariable={handleAddPromptVariable}
/>
)}
<PluginDependency />
</>
</FeaturesProvider>
</ConfigContext.Provider>
@@ -1,124 +0,0 @@
'use client'
import type { FC } from 'react'
import React from 'react'
import { useTranslation } from 'react-i18next'
import { useContext } from 'use-context-selector'
import { usePathname, useRouter } from 'next/navigation'
import ConfigParamModal from './config-param-modal'
import Panel from '@/app/components/app/configuration/base/feature-panel'
import { MessageFast } from '@/app/components/base/icons/src/vender/solid/communication'
import Tooltip from '@/app/components/base/tooltip'
import { LinkExternal02, Settings04 } from '@/app/components/base/icons/src/vender/line/general'
import ConfigContext from '@/context/debug-configuration'
import type { EmbeddingModelConfig } from '@/app/components/app/annotation/type'
import { fetchAnnotationConfig, updateAnnotationScore } from '@/service/annotation'
import type { AnnotationReplyConfig as AnnotationReplyConfigType } from '@/models/debug'
type Props = {
onEmbeddingChange: (embeddingModel: EmbeddingModelConfig) => void
onScoreChange: (score: number, embeddingModel?: EmbeddingModelConfig) => void
}
export const Item: FC<{ title: string; tooltip: string; children: JSX.Element }> = ({
title,
tooltip,
children,
}) => {
return (
<div>
<div className='flex items-center space-x-1'>
<div>{title}</div>
<Tooltip
popupContent={
<div className='max-w-[200px] leading-[18px] text-[13px] font-medium text-gray-800'>{tooltip}</div>
}
/>
</div>
<div>{children}</div>
</div>
)
}
const AnnotationReplyConfig: FC<Props> = ({
onEmbeddingChange,
onScoreChange,
}) => {
const { t } = useTranslation()
const router = useRouter()
const pathname = usePathname()
const matched = pathname.match(/\/app\/([^/]+)/)
const appId = (matched?.length && matched[1]) ? matched[1] : ''
const {
annotationConfig,
} = useContext(ConfigContext)
const [isShowEdit, setIsShowEdit] = React.useState(false)
return (
<>
<Panel
className="mt-4"
headerIcon={
<MessageFast className='w-4 h-4 text-[#444CE7]' />
}
title={t('appDebug.feature.annotation.title')}
headerRight={
<div className='flex items-center'>
<div
className='flex items-center rounded-md h-7 px-3 space-x-1 text-gray-700 cursor-pointer hover:bg-gray-200'
onClick={() => { setIsShowEdit(true) }}
>
<Settings04 className="w-[14px] h-[14px]" />
<div className='text-xs font-medium'>
{t('common.operation.params')}
</div>
</div>
<div
className='ml-1 flex items-center h-7 px-3 space-x-1 leading-[18px] text-xs font-medium text-gray-700 rounded-md cursor-pointer hover:bg-gray-200'
onClick={() => {
router.push(`/app/${appId}/annotations`)
}}>
<div>{t('appDebug.feature.annotation.cacheManagement')}</div>
<LinkExternal02 className='w-3.5 h-3.5' />
</div>
</div>
}
noBodySpacing
/>
{isShowEdit && (
<ConfigParamModal
appId={appId}
isShow
onHide={() => {
setIsShowEdit(false)
}}
onSave={async (embeddingModel, score) => {
const annotationConfig = await fetchAnnotationConfig(appId) as AnnotationReplyConfigType
let isEmbeddingModelChanged = false
if (
embeddingModel.embedding_model_name !== annotationConfig.embedding_model.embedding_model_name
|| embeddingModel.embedding_provider_name !== annotationConfig.embedding_model.embedding_provider_name
) {
await onEmbeddingChange(embeddingModel)
isEmbeddingModelChanged = true
}
if (score !== annotationConfig.score_threshold) {
await updateAnnotationScore(appId, annotationConfig.id, score)
if (isEmbeddingModelChanged)
onScoreChange(score, embeddingModel)
else
onScoreChange(score)
}
setIsShowEdit(false)
}}
annotationConfig={annotationConfig}
/>
)}
</>
)
}
export default React.memo(AnnotationReplyConfig)
@@ -1,45 +0,0 @@
'use client'
import type { FC } from 'react'
import React from 'react'
import { useTranslation } from 'react-i18next'
import GroupName from '../base/group-name'
import Moderation from './moderation'
import Annotation from './annotation/config-param'
import type { EmbeddingModelConfig } from '@/app/components/app/annotation/type'
export type ToolboxProps = {
showModerationSettings: boolean
showAnnotation: boolean
onEmbeddingChange: (embeddingModel: EmbeddingModelConfig) => void
onScoreChange: (score: number, embeddingModel?: EmbeddingModelConfig) => void
}
const Toolbox: FC<ToolboxProps> = ({
showModerationSettings,
showAnnotation,
onEmbeddingChange,
onScoreChange,
}) => {
const { t } = useTranslation()
return (
<div className='mt-7'>
<GroupName name={t('appDebug.feature.toolbox.title')} />
{
showModerationSettings && (
<Moderation />
)
}
{
showAnnotation && (
<Annotation
onEmbeddingChange={onEmbeddingChange}
onScoreChange={onScoreChange}
/>
)
}
</div>
)
}
export default React.memo(Toolbox)
@@ -25,6 +25,7 @@ import AppsFull from '@/app/components/billing/apps-full-in-dialog'
import { NEED_REFRESH_APP_LIST_KEY } from '@/config'
import { getRedirection } from '@/utils/app-redirection'
import cn from '@/utils/classnames'
import { usePluginDependencies } from '@/app/components/workflow/plugin-dependency/hooks'
type CreateFromDSLModalProps = {
show: boolean
@@ -50,6 +51,7 @@ const CreateFromDSLModal = ({ show, onSuccess, onClose, activeTab = CreateFromDS
const [showErrorModal, setShowErrorModal] = useState(false)
const [versions, setVersions] = useState<{ importedVersion: string; systemVersion: string }>()
const [importId, setImportId] = useState<string>()
const { handleCheckPluginDependencies } = usePluginDependencies()
const readFile = (file: File) => {
const reader = new FileReader()
@@ -114,6 +116,8 @@ const CreateFromDSLModal = ({ show, onSuccess, onClose, activeTab = CreateFromDS
children: status === DSLImportStatus.COMPLETED_WITH_WARNINGS && t('app.newApp.appCreateDSLWarning'),
})
localStorage.setItem(NEED_REFRESH_APP_LIST_KEY, '1')
if (app_id)
await handleCheckPluginDependencies(app_id)
getRedirection(isCurrentWorkspaceEditor, { id: app_id }, push)
}
else if (status === DSLImportStatus.PENDING) {
@@ -132,6 +136,7 @@ const CreateFromDSLModal = ({ show, onSuccess, onClose, activeTab = CreateFromDS
notify({ type: 'error', message: t('app.newApp.appCreateFailed') })
}
}
// eslint-disable-next-line unused-imports/no-unused-vars
catch (e) {
notify({ type: 'error', message: t('app.newApp.appCreateFailed') })
}
@@ -158,6 +163,8 @@ const CreateFromDSLModal = ({ show, onSuccess, onClose, activeTab = CreateFromDS
type: 'success',
message: t('app.newApp.appCreated'),
})
if (app_id)
await handleCheckPluginDependencies(app_id)
localStorage.setItem(NEED_REFRESH_APP_LIST_KEY, '1')
getRedirection(isCurrentWorkspaceEditor, { id: app_id }, push)
}
@@ -165,6 +172,7 @@ const CreateFromDSLModal = ({ show, onSuccess, onClose, activeTab = CreateFromDS
notify({ type: 'error', message: t('app.newApp.appCreateFailed') })
}
}
// eslint-disable-next-line unused-imports/no-unused-vars
catch (e) {
notify({ type: 'error', message: t('app.newApp.appCreateFailed') })
}
@@ -268,7 +276,7 @@ const CreateFromDSLModal = ({ show, onSuccess, onClose, activeTab = CreateFromDS
>
<div className='flex pb-4 flex-col items-start gap-2 self-stretch'>
<div className='text-text-primary title-2xl-semi-bold'>{t('app.newApp.appCreateDSLErrorTitle')}</div>
<div className='flex flex-grow flex-col text-text-secondary system-md-regular'>
<div className='flex grow flex-col text-text-secondary system-md-regular'>
<div>{t('app.newApp.appCreateDSLErrorPart1')}</div>
<div>{t('app.newApp.appCreateDSLErrorPart2')}</div>
<br />
+3
View File
@@ -79,6 +79,9 @@ const HandThumbIconWithCount: FC<{ count: number; iconType: 'up' | 'down' }> = (
}
const statusTdRender = (statusCount: StatusCount) => {
if (!statusCount)
return null
if (statusCount.partial_success + statusCount.failed === 0) {
return (
<div className='inline-flex items-center gap-1 system-xs-semibold-uppercase'>
@@ -27,8 +27,8 @@ const APIKeyInfoPanel: FC = () => {
return null
return (
<div className={cn('bg-[#EFF4FF] border-[#D1E0FF]', 'mb-6 relative rounded-2xl shadow-md border p-8 ')}>
<div className={cn('text-[24px] text-gray-800 font-semibold', isCloud ? 'flex items-center h-8 space-x-1' : 'leading-8 mb-6')}>
<div className={cn('bg-components-panel-bg border-components-panel-border', 'mb-6 relative rounded-2xl shadow-md border p-8 ')}>
<div className={cn('text-[24px] text-text-primary font-semibold', isCloud ? 'flex items-center h-8 space-x-1' : 'leading-8 mb-6')}>
{isCloud && <em-emoji id={'😀'} />}
{isCloud
? (
@@ -42,11 +42,11 @@ const APIKeyInfoPanel: FC = () => {
)}
</div>
{isCloud && (
<div className='mt-1 text-sm text-gray-600 font-normal'>{t(`appOverview.apiKeyInfo.cloud.${'trial'}.description`)}</div>
<div className='mt-1 text-sm text-text-tertiary font-normal'>{t(`appOverview.apiKeyInfo.cloud.${'trial'}.description`)}</div>
)}
<Button
variant='primary'
className='space-x-2'
className='mt-2 space-x-2'
onClick={() => setShowAccountSettingModal({ payload: 'provider' })}
>
<div className='text-sm font-medium'>{t('appOverview.apiKeyInfo.setAPIBtn')}</div>
@@ -65,7 +65,7 @@ const APIKeyInfoPanel: FC = () => {
<div
onClick={() => setIsShow(false)}
className='absolute right-4 top-4 flex items-center justify-center w-8 h-8 cursor-pointer '>
<RiCloseLine className='w-4 h-4 text-gray-500' />
<RiCloseLine className='w-4 h-4 text-text-tertiary' />
</div>
</div>
)
@@ -1,29 +0,0 @@
'use client'
import type { FC } from 'react'
import React from 'react'
import s from './style.module.css'
import cn from '@/utils/classnames'
export type IProgressProps = {
className?: string
value: number // percent
}
const Progress: FC<IProgressProps> = ({
className,
value,
}) => {
const exhausted = value === 100
return (
<div className={cn(className, 'relative grow h-2 flex bg-gray-200 rounded-md overflow-hidden')}>
<div
className={cn(s.bar, exhausted && s['bar-error'], 'absolute top-0 left-0 right-0 bottom-0')}
style={{ width: `${value}%` }}
/>
{Array(10).fill(0).map((i, k) => (
<div key={k} className={s['bar-item']} />
))}
</div>
)
}
export default React.memo(Progress)
@@ -1,16 +0,0 @@
.bar {
background: linear-gradient(90deg, rgba(41, 112, 255, 0.9) 0%, rgba(21, 94, 239, 0.9) 100%);
}
.bar-error {
background: linear-gradient(90deg, rgba(240, 68, 56, 0.72) 0%, rgba(217, 45, 32, 0.9) 100%);
}
.bar-item {
width: 10%;
border-right: 1px solid rgba(255, 255, 255, 0.5);
}
.bar-item:last-of-type {
border-right: 0;
}
+18 -31
View File
@@ -1,6 +1,9 @@
'use client'
import type { HTMLProps } from 'react'
import React, { useMemo, useState } from 'react'
import {
RiLoopLeftLine,
} from '@remixicon/react'
import {
Cog8ToothIcon,
DocumentTextIcon,
@@ -16,24 +19,25 @@ import style from './style.module.css'
import type { ConfigParams } from './settings'
import Tooltip from '@/app/components/base/tooltip'
import AppBasic from '@/app/components/app-sidebar/basic'
import { asyncRunSafe, randomString } from '@/utils'
import { asyncRunSafe } from '@/utils'
import Button from '@/app/components/base/button'
import Tag from '@/app/components/base/tag'
import Switch from '@/app/components/base/switch'
import Divider from '@/app/components/base/divider'
import CopyFeedback from '@/app/components/base/copy-feedback'
import ActionButton from '@/app/components/base/action-button'
import Confirm from '@/app/components/base/confirm'
import ShareQRCode from '@/app/components/base/qrcode'
import SecretKeyButton from '@/app/components/develop/secret-key/secret-key-button'
import type { AppDetailResponse } from '@/models/app'
import { useAppContext } from '@/context/app-context'
import type { AppSSO } from '@/types/app'
import cn from '@/utils/classnames'
export type IAppCardProps = {
className?: string
appInfo: AppDetailResponse & Partial<AppSSO>
cardType?: 'api' | 'webapp'
customBgColor?: string
onChangeStatus: (val: boolean) => Promise<void>
onSaveSiteConfig?: (params: ConfigParams) => Promise<void>
onGenerateCode?: () => Promise<void>
@@ -46,7 +50,6 @@ const EmbedIcon = ({ className = '' }: HTMLProps<HTMLDivElement>) => {
function AppCard({
appInfo,
cardType = 'webapp',
customBgColor,
onChangeStatus,
onSaveSiteConfig,
onGenerateCode,
@@ -92,10 +95,6 @@ function AppCard({
const appUrl = `${app_base_url}/${appMode}/${access_token}`
const apiUrl = appInfo?.api_base_url
let bgColor = 'bg-primary-50 bg-opacity-40'
if (cardType === 'api')
bgColor = 'bg-purple-50'
const genClickFuncByName = (opName: string) => {
switch (opName) {
case t('appOverview.overview.appInfo.preview'):
@@ -133,11 +132,8 @@ function AppCard({
}
return (
<div
className={
`shadow-xs border-[0.5px] rounded-lg border-gray-200 ${className ?? ''}`}
>
<div className={`px-6 py-5 ${customBgColor ?? bgColor} rounded-lg`}>
<div className={cn('rounded-xl border-effects-highlight border-t border-l-[0.5px] bg-background-default', className)}>
<div className={cn('px-6 py-5')}>
<div className="mb-2.5 flex flex-row items-start justify-between">
<AppBasic
iconType={cardType}
@@ -161,23 +157,20 @@ function AppCard({
</div>
<div className="flex flex-col justify-center py-2">
<div className="py-1">
<div className="pb-1 text-xs text-gray-500">
<div className="pb-1 text-xs text-text-tertiary">
{isApp
? t('appOverview.overview.appInfo.accessibleAddress')
: t('appOverview.overview.apiInfo.accessibleAddress')}
</div>
<div className="w-full h-9 pl-2 pr-0.5 py-0.5 bg-black bg-opacity-2 rounded-lg border border-black border-opacity-5 justify-start items-center inline-flex">
<div className="w-full h-9 px-2 py-0.5 bg-components-input-bg-normal rounded-lg justify-start items-center inline-flex">
<div className="h-4 px-2 justify-start items-start gap-2 flex flex-1 min-w-0">
<div className="text-gray-700 text-xs font-medium text-ellipsis overflow-hidden whitespace-nowrap">
<div className="text-text-secondary system-xs-medium truncate">
{isApp ? appUrl : apiUrl}
</div>
</div>
<Divider type="vertical" className="!h-3.5 shrink-0 !mx-0.5" />
{isApp && <ShareQRCode content={isApp ? appUrl : apiUrl} selectorId={randomString(8)} className={'hover:bg-gray-200'} />}
<CopyFeedback
content={isApp ? appUrl : apiUrl}
className={'hover:bg-gray-200'}
/>
<Divider type="vertical" className="!h-3.5 shrink-0" />
{isApp && <ShareQRCode content={isApp ? appUrl : apiUrl} />}
<CopyFeedback content={isApp ? appUrl : apiUrl}/>
{/* button copy link/ button regenerate */}
{showConfirmDelete && (
<Confirm
@@ -196,22 +189,16 @@ function AppCard({
<Tooltip
popupContent={t('appOverview.overview.appInfo.regenerate') || ''}
>
<div
className="w-8 h-8 ml-0.5 cursor-pointer hover:bg-gray-200 rounded-lg"
onClick={() => setShowConfirmDelete(true)}
>
<div
className={
`w-full h-full ${style.refreshIcon} ${genLoading ? style.generateLogo : ''}`}
></div>
</div>
<ActionButton onClick={() => setShowConfirmDelete(true)}>
<RiLoopLeftLine className={cn('w-4 h-4', genLoading && 'animate-spin')} />
</ActionButton>
</Tooltip>
)}
</div>
</div>
</div>
<div className={'pt-2 flex flex-row items-center flex-wrap gap-y-2'}>
{!isApp && <SecretKeyButton className='flex-shrink-0 !h-8 bg-white mr-2' textCls='!text-gray-700 font-medium' iconCls='stroke-[1.2px]' appId={appInfo.id} />}
{!isApp && <SecretKeyButton className='shrink-0 !h-8 mr-2' textCls='!text-text-secondary font-medium' iconCls='stroke-[1.2px]' appId={appInfo.id} />}
{OPERATIONS_MAP[cardType].map((op) => {
const disabled
= op.opName === t('appOverview.overview.appInfo.settings.entry')
+7 -7
View File
@@ -216,8 +216,8 @@ const Chart: React.FC<IChartProps> = ({
return `<div style='color:#6B7280;font-size:12px'>${params.name}</div>
<div style='font-size:14px;color:#1F2A37'>${valueFormatter((params.data as any)[yField])}
${!CHART_TYPE_CONFIG[chartType].showTokens
? ''
: `<span style='font-size:12px'>
? ''
: `<span style='font-size:12px'>
<span style='margin-left:4px;color:#6B7280'>(</span>
<span style='color:#FF8A4C'>~$${get(params.data, 'total_price', 0)}</span>
<span style='color:#6B7280'>)</span>
@@ -231,7 +231,7 @@ const Chart: React.FC<IChartProps> = ({
const sumData = isAvg ? (sum(yData) / yData.length) : sum(yData)
return (
<div className={`flex flex-col w-full px-6 py-4 border-[0.5px] rounded-lg border-gray-200 shadow-xs ${className ?? ''}`}>
<div className={`flex flex-col w-full px-6 py-4 rounded-xl bg-components-chart-bg shadow-xs ${className ?? ''}`}>
<div className='mb-3'>
<Basic name={title} type={timePeriod} hoverTip={explanation} />
</div>
@@ -242,11 +242,11 @@ const Chart: React.FC<IChartProps> = ({
type={!CHART_TYPE_CONFIG[chartType].showTokens
? ''
: <span>{t('appOverview.analysis.tokenUsage.consumed')} Tokens<span className='text-sm'>
<span className='ml-1 text-gray-500'>(</span>
<span className='text-orange-400'>~{sum(statistics.map(item => parseFloat(get(item, 'total_price', '0')))).toLocaleString('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: 4 })}</span>
<span className='text-gray-500'>)</span>
<span className='ml-1 text-text-tertiary'>(</span>
<span className='text-orange-400'>~{sum(statistics.map(item => Number.parseFloat(get(item, 'total_price', '0')))).toLocaleString('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: 4 })}</span>
<span className='text-text-tertiary'>)</span>
</span></span>}
textStyle={{ main: `!text-3xl !font-normal ${sumData === 0 ? '!text-gray-300' : ''}` }} />
textStyle={{ main: `!text-3xl !font-normal ${sumData === 0 ? '!text-text-quaternary' : ''}` }} />
</div>
<ReactECharts option={options} style={{ height: 160 }} />
</div>
@@ -21,7 +21,7 @@ type IShareLinkProps = {
}
const StepNum: FC<{ children: React.ReactNode }> = ({ children }) =>
<div className='h-7 w-7 flex justify-center items-center flex-shrink-0 mr-3 text-primary-600 bg-primary-50 rounded-2xl'>
<div className='h-7 w-7 flex justify-center items-center shrink-0 mr-3 text-text-accent bg-util-colors-blue-blue-50 rounded-2xl'>
{children}
</div>
@@ -54,27 +54,27 @@ const CustomizeModal: FC<IShareLinkProps> = ({
className='!max-w-2xl w-[640px]'
closable={true}
>
<div className='w-full mt-4 px-6 py-5 border-gray-200 rounded-lg border-[0.5px]'>
<Tag bordered={true} hideBg={true} className='text-primary-600 border-primary-600 uppercase'>{t(`${prefixCustomize}.way`)} 1</Tag>
<p className='my-2 text-base font-medium text-gray-800'>{t(`${prefixCustomize}.way1.name`)}</p>
<div className='w-full mt-4 px-6 py-5 border-components-panel-border rounded-lg border-[0.5px]'>
<Tag bordered={true} hideBg={true} className='text-text-accent-secondary border-text-accent-secondary uppercase'>{t(`${prefixCustomize}.way`)} 1</Tag>
<p className='my-2 system-sm-medium text-text-secondary'>{t(`${prefixCustomize}.way1.name`)}</p>
<div className='flex py-4'>
<StepNum>1</StepNum>
<div className='flex flex-col'>
<div className='text-gray-900'>{t(`${prefixCustomize}.way1.step1`)}</div>
<div className='text-gray-500 text-xs mt-1 mb-2'>{t(`${prefixCustomize}.way1.step1Tip`)}</div>
<div className='text-text-primary'>{t(`${prefixCustomize}.way1.step1`)}</div>
<div className='text-text-tertiary text-xs mt-1 mb-2'>{t(`${prefixCustomize}.way1.step1Tip`)}</div>
<a href={`https://github.com/langgenius/${isChatApp ? 'webapp-conversation' : 'webapp-text-generator'}`} target='_blank' rel='noopener noreferrer'>
<Button><GithubIcon className='text-gray-800 mr-2' />{t(`${prefixCustomize}.way1.step1Operation`)}</Button>
<Button><GithubIcon className='text-text-secondary mr-2' />{t(`${prefixCustomize}.way1.step1Operation`)}</Button>
</a>
</div>
</div>
<div className='flex pt-4'>
<StepNum>2</StepNum>
<div className='flex flex-col'>
<div className='text-gray-900'>{t(`${prefixCustomize}.way1.step3`)}</div>
<div className='text-gray-500 text-xs mt-1 mb-2'>{t(`${prefixCustomize}.way1.step2Tip`)}</div>
<div className='text-text-primary'>{t(`${prefixCustomize}.way1.step3`)}</div>
<div className='text-text-tertiary text-xs mt-1 mb-2'>{t(`${prefixCustomize}.way1.step2Tip`)}</div>
<a href="https://vercel.com/docs/concepts/deployments/git/vercel-for-github" target='_blank' rel='noopener noreferrer'>
<Button>
<div className='mr-1.5 border-solid border-t-0 border-r-[7px] border-l-[7px] border-b-[12px] border-r-transparent border-b-black border-l-transparent border-t-transparent'></div>
<div className='mr-1.5 border-solid border-t-0 border-r-[7px] border-l-[7px] border-b-[12px] border-r-transparent border-text-primary border-l-transparent border-t-transparent'></div>
<span>{t(`${prefixCustomize}.way1.step2Operation`)}</span>
</Button>
</a>
@@ -83,9 +83,9 @@ const CustomizeModal: FC<IShareLinkProps> = ({
<div className='flex py-4'>
<StepNum>3</StepNum>
<div className='flex flex-col w-full overflow-hidden'>
<div className='text-gray-900'>{t(`${prefixCustomize}.way1.step3`)}</div>
<div className='text-gray-500 text-xs mt-1 mb-2'>{t(`${prefixCustomize}.way1.step3Tip`)}</div>
<pre className='overflow-x-scroll box-border py-3 px-4 bg-gray-100 text-xs font-medium rounded-lg select-text'>
<div className='text-text-primary'>{t(`${prefixCustomize}.way1.step3`)}</div>
<div className='text-text-tertiary text-xs mt-1 mb-2'>{t(`${prefixCustomize}.way1.step3Tip`)}</div>
<pre className='overflow-x-scroll box-border py-3 px-4 bg-background-section text-xs font-medium rounded-lg select-text text-text-secondary border-[0.5px] border-components-panel-border'>
NEXT_PUBLIC_APP_ID={`'${appId}'`} <br />
NEXT_PUBLIC_APP_KEY={'\'<Web API Key From Dify>\''} <br />
NEXT_PUBLIC_API_URL={`'${api_base_url}'`}
@@ -94,9 +94,9 @@ const CustomizeModal: FC<IShareLinkProps> = ({
</div>
</div>
<div className='w-full mt-4 px-6 py-5 border-gray-200 rounded-lg border-[0.5px]'>
<Tag bordered={true} hideBg={true} className='text-primary-600 border-primary-600 uppercase'>{t(`${prefixCustomize}.way`)} 2</Tag>
<p className='mt-2 text-base font-medium text-gray-800'>{t(`${prefixCustomize}.way2.name`)}</p>
<div className='w-full mt-4 px-6 py-5 border-components-panel-border rounded-lg border-[0.5px]'>
<Tag bordered={true} hideBg={true} className='text-text-accent-secondary border-text-accent-secondary uppercase'>{t(`${prefixCustomize}.way`)} 2</Tag>
<p className='my-2 system-sm-medium text-text-secondary'>{t(`${prefixCustomize}.way2.name`)}</p>
<Button
className='mt-2'
onClick={() =>
@@ -109,8 +109,8 @@ const CustomizeModal: FC<IShareLinkProps> = ({
)
}
>
<span className='text-sm text-gray-800'>{t(`${prefixCustomize}.way2.operation`)}</span>
<ArrowTopRightOnSquareIcon className='w-4 h-4 ml-1 text-gray-800 shrink-0' />
<span className='text-sm text-text-secondary'>{t(`${prefixCustomize}.way2.operation`)}</span>
<ArrowTopRightOnSquareIcon className='w-4 h-4 ml-1 text-text-secondary shrink-0' />
</Button>
</div>
</Modal>
@@ -1,15 +1,19 @@
import React, { useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next'
import {
RiClipboardFill,
RiClipboardLine,
} from '@remixicon/react'
import copy from 'copy-to-clipboard'
import style from './style.module.css'
import cn from '@/utils/classnames'
import Modal from '@/app/components/base/modal'
import copyStyle from '@/app/components/base/copy-btn/style.module.css'
import Tooltip from '@/app/components/base/tooltip'
import { useAppContext } from '@/context/app-context'
import { IS_CE_EDITION } from '@/config'
import type { SiteInfo } from '@/models/share'
import { useThemeContext } from '@/app/components/base/chat/embedded-chatbot/theme/theme-context'
import ActionButton from '@/app/components/base/action-button'
import cn from '@/utils/classnames'
type Props = {
siteInfo?: SiteInfo
@@ -35,12 +39,12 @@ const OPTION_MAP = {
`<script>
window.difyChatbotConfig = {
token: '${token}'${isTestEnv
? `,
? `,
isDev: true`
: ''}${IS_CE_EDITION
? `,
: ''}${IS_CE_EDITION
? `,
baseUrl: '${url}'`
: ''}
: ''}
}
</script>
<script
@@ -119,7 +123,7 @@ const Embedded = ({ siteInfo, isShow, onClose, appBaseUrl, accessToken, classNam
wrapperClassName={className}
closable={true}
>
<div className="mb-4 mt-8 text-gray-900 text-[14px] font-medium leading-tight">
<div className="mb-4 mt-8 text-text-primary system-sm-medium">
{t(`${prefixEmbedded}.explanation`)}
</div>
<div className="flex flex-wrap items-center justify-between gap-y-2">
@@ -143,30 +147,37 @@ const Embedded = ({ siteInfo, isShow, onClose, appBaseUrl, accessToken, classNam
{option === 'chromePlugin' && (
<div className="w-full mt-6">
<div className={cn('gap-2 py-3 justify-center items-center inline-flex w-full rounded-lg',
'bg-primary-600 hover:bg-primary-600/75 hover:shadow-md cursor-pointer text-white hover:shadow-sm flex-shrink-0')}>
'bg-primary-600 hover:bg-primary-600/75 cursor-pointer text-white hover:shadow-sm flex-shrink-0')}>
<div className={`w-4 h-4 relative ${style.pluginInstallIcon}`}></div>
<div className="text-white text-sm font-medium font-['Inter'] leading-tight" onClick={navigateToChromeUrl}>{t(`${prefixEmbedded}.chromePlugin`)}</div>
</div>
</div>
)}
<div className={cn('w-full bg-gray-100 rounded-lg flex-col justify-start items-start inline-flex',
<div className={cn('w-full bg-background-section border-[0.5px] border-components-panel-border rounded-lg flex-col justify-start items-start inline-flex',
'mt-6')}>
<div className="inline-flex items-center self-stretch justify-start gap-2 py-1 pl-3 pr-1 border border-black rounded-tl-lg rounded-tr-lg bg-gray-50 border-opacity-5">
<div className="grow shrink basis-0 text-slate-700 text-[13px] font-medium leading-none">
<div className="inline-flex items-center self-stretch justify-start gap-2 py-1 pl-3 pr-1 rounded-t-lg bg-background-section-burn">
<div className="grow shrink-0 text-text-secondary system-sm-medium">
{t(`${prefixEmbedded}.${option}`)}
</div>
<div className="flex items-center justify-center gap-1 p-2 rounded-lg">
<Tooltip
popupContent={(isCopied[option] ? t(`${prefixEmbedded}.copied`) : t(`${prefixEmbedded}.copy`)) || ''}
>
<div className="w-8 h-8 rounded-lg cursor-pointer hover:bg-gray-100">
<div onClick={onClickCopy} className={`w-full h-full ${copyStyle.copyIcon} ${isCopied[option] ? copyStyle.copied : ''}`}></div>
<Tooltip
popupContent={
(isCopied[option]
? t(`${prefixEmbedded}.copied`)
: t(`${prefixEmbedded}.copy`)) || ''
}
>
<ActionButton>
<div
onClick={onClickCopy}
>
{isCopied[option] && <RiClipboardFill className='w-4 h-4' />}
{!isCopied[option] && <RiClipboardLine className='w-4 h-4' />}
</div>
</Tooltip>
</div>
</ActionButton>
</Tooltip>
</div>
<div className="flex items-start justify-start w-full gap-2 p-3 overflow-x-auto">
<div className="grow shrink basis-0 text-slate-700 text-[13px] leading-tight font-mono">
<div className="grow shrink basis-0 text-text-secondary text-[13px] leading-tight font-mono">
<pre className='select-text'>{OPTION_MAP[option].getContent(appBaseUrl, accessToken, themeBuilder.theme?.primaryColor ?? '#1C64F2', isTestEnv)}</pre>
</div>
</div>
@@ -5,7 +5,6 @@ import { ChevronRightIcon } from '@heroicons/react/20/solid'
import Link from 'next/link'
import { Trans, useTranslation } from 'react-i18next'
import { useContextSelector } from 'use-context-selector'
import s from './style.module.css'
import Modal from '@/app/components/base/modal'
import Button from '@/app/components/base/button'
import Input from '@/app/components/base/input'
@@ -21,6 +20,8 @@ import Tooltip from '@/app/components/base/tooltip'
import AppContext, { useAppContext } from '@/context/app-context'
import type { AppIconSelection } from '@/app/components/base/app-icon-picker'
import AppIconPicker from '@/app/components/base/app-icon-picker'
import Divider from '@/app/components/base/divider'
import cn from '@/utils/classnames'
export type ISettingsModalProps = {
isChat: boolean
@@ -195,9 +196,9 @@ const SettingsModal: FC<ISettingsModalProps> = ({
title={t(`${prefixSettings}.title`)}
isShow={isShow}
onClose={onHide}
className={`${s.settingsModal}`}
className='max-w-[520px]'
>
<div className={`mt-6 font-medium ${s.settingTitle} text-gray-900`}>{t(`${prefixSettings}.webName`)}</div>
<div className={cn('mt-6 system-sm-semibold text-text-secondary')}>{t(`${prefixSettings}.webName`)}</div>
<div className='flex mt-2'>
<AppIcon size='large'
onClick={() => { setShowAppIconPicker(true) }}
@@ -214,8 +215,8 @@ const SettingsModal: FC<ISettingsModalProps> = ({
placeholder={t('app.appNamePlaceholder') || ''}
/>
</div>
<div className={`mt-6 font-medium ${s.settingTitle} text-gray-900 `}>{t(`${prefixSettings}.webDesc`)}</div>
<p className={`mt-1 ${s.settingsTip} text-gray-500`}>{t(`${prefixSettings}.webDescTip`)}</p>
<div className={cn('mt-6 system-sm-semibold text-text-secondary')}>{t(`${prefixSettings}.webDesc`)}</div>
<p className={cn('mt-1 body-xs-regular text-text-tertiary')}>{t(`${prefixSettings}.webDescTip`)}</p>
<Textarea
className='mt-2'
value={inputInfo.desc}
@@ -225,36 +226,36 @@ const SettingsModal: FC<ISettingsModalProps> = ({
{isChatBot && (
<div className='w-full mt-4'>
<div className='flex justify-between items-center'>
<div className={`font-medium ${s.settingTitle} text-gray-900 `}>{t('app.answerIcon.title')}</div>
<div className={cn('system-sm-semibold text-text-secondary')}>{t('app.answerIcon.title')}</div>
<Switch
defaultValue={inputInfo.use_icon_as_answer_icon}
onChange={v => setInputInfo({ ...inputInfo, use_icon_as_answer_icon: v })}
/>
</div>
<p className='body-xs-regular text-gray-500'>{t('app.answerIcon.description')}</p>
<p className='body-xs-regular text-text-tertiary'>{t('app.answerIcon.description')}</p>
</div>
)}
<div className={`mt-6 mb-2 font-medium ${s.settingTitle} text-gray-900 `}>{t(`${prefixSettings}.language`)}</div>
<div className={cn('mt-6 mb-2 system-sm-semibold text-text-secondary')}>{t(`${prefixSettings}.language`)}</div>
<SimpleSelect
items={languages.filter(item => item.supported)}
defaultValue={language}
onSelect={item => setLanguage(item.value as Language)}
/>
<div className='w-full mt-8'>
<p className='system-xs-medium text-gray-500'>{t(`${prefixSettings}.workflow.title`)}</p>
<p className='system-xs-medium text-text-tertiary'>{t(`${prefixSettings}.workflow.title`)}</p>
<div className='flex justify-between items-center'>
<div className='font-medium system-sm-semibold flex-grow text-gray-900'>{t(`${prefixSettings}.workflow.subTitle`)}</div>
<div className='font-medium system-sm-semibold grow text-text-primary'>{t(`${prefixSettings}.workflow.subTitle`)}</div>
<Switch
disabled={!(appInfo.mode === 'workflow' || appInfo.mode === 'advanced-chat')}
defaultValue={inputInfo.show_workflow_steps}
onChange={v => setInputInfo({ ...inputInfo, show_workflow_steps: v })}
/>
</div>
<p className='body-xs-regular text-gray-500'>{t(`${prefixSettings}.workflow.showDesc`)}</p>
<p className='body-xs-regular text-text-tertiary'>{t(`${prefixSettings}.workflow.showDesc`)}</p>
</div>
{isChat && <> <div className={`mt-8 font-medium ${s.settingTitle} text-gray-900`}>{t(`${prefixSettings}.chatColorTheme`)}</div>
<p className={`mt-1 ${s.settingsTip} text-gray-500`}>{t(`${prefixSettings}.chatColorThemeDesc`)}</p>
{isChat && <> <div className={cn('mt-8 system-sm-semibold text-text-secondary')}>{t(`${prefixSettings}.chatColorTheme`)}</div>
<p className='mt-1 body-xs-regular text-text-tertiary'>{t(`${prefixSettings}.chatColorThemeDesc`)}</p>
<Input
className='mt-2 h-10'
value={inputInfo.chatColorTheme ?? ''}
@@ -262,14 +263,14 @@ const SettingsModal: FC<ISettingsModalProps> = ({
placeholder='E.g #A020F0'
/>
<div className="mt-1 flex justify-between items-center">
<p className={`ml-2 ${s.settingsTip} text-gray-500`}>{t(`${prefixSettings}.chatColorThemeInverted`)}</p>
<p className='ml-2 body-xs-regular text-text-tertiary'>{t(`${prefixSettings}.chatColorThemeInverted`)}</p>
<Switch defaultValue={inputInfo.chatColorThemeInverted} onChange={v => setInputInfo({ ...inputInfo, chatColorThemeInverted: v })}></Switch>
</div>
</>}
{systemFeatures.enable_web_sso_switch_component && <div className='w-full mt-8'>
<p className='system-xs-medium text-gray-500'>{t(`${prefixSettings}.sso.label`)}</p>
<p className='system-xs-medium text-text-tertiary'>{t(`${prefixSettings}.sso.label`)}</p>
<div className='flex justify-between items-center'>
<div className='font-medium system-sm-semibold flex-grow text-gray-900'>{t(`${prefixSettings}.sso.title`)}</div>
<div className='system-sm-semibold grow text-text-secondary'>{t(`${prefixSettings}.sso.title`)}</div>
<Tooltip
disabled={systemFeatures.sso_enforced_for_web}
popupContent={
@@ -280,31 +281,31 @@ const SettingsModal: FC<ISettingsModalProps> = ({
<Switch disabled={!systemFeatures.sso_enforced_for_web || !isCurrentWorkspaceEditor} defaultValue={systemFeatures.sso_enforced_for_web && inputInfo.enable_sso} onChange={v => setInputInfo({ ...inputInfo, enable_sso: v })}></Switch>
</Tooltip>
</div>
<p className='body-xs-regular text-gray-500'>{t(`${prefixSettings}.sso.description`)}</p>
<p className='body-xs-regular text-text-tertiary'>{t(`${prefixSettings}.sso.description`)}</p>
</div>}
{!isShowMore && <div className='w-full cursor-pointer mt-8' onClick={() => setIsShowMore(true)}>
<div className='flex justify-between'>
<div className={`font-medium ${s.settingTitle} flex-grow text-gray-900`}>{t(`${prefixSettings}.more.entry`)}</div>
<div className='flex-shrink-0 w-4 h-4 text-gray-500'>
<div className='system-sm-semibold text-text-secondary'>{t(`${prefixSettings}.more.entry`)}</div>
<div className='shrink-0 w-4 h-4 text-text-tertiary'>
<ChevronRightIcon />
</div>
</div>
<p className={`mt-1 ${s.policy} text-gray-500`}>{t(`${prefixSettings}.more.copyright`)} & {t(`${prefixSettings}.more.privacyPolicy`)}</p>
<p className='mt-1 body-xs-regular text-text-tertiary'>{t(`${prefixSettings}.more.copyright`)} & {t(`${prefixSettings}.more.privacyPolicy`)}</p>
</div>}
{isShowMore && <>
<hr className='w-full mt-6' />
<div className={`mt-6 font-medium ${s.settingTitle} text-gray-900`}>{t(`${prefixSettings}.more.copyright`)}</div>
<Divider className='my-6' />
<div className='system-sm-semibold text-text-secondary'>{t(`${prefixSettings}.more.copyright`)}</div>
<Input
className='mt-2 h-10'
value={inputInfo.copyright}
onChange={onChange('copyright')}
placeholder={t(`${prefixSettings}.more.copyRightPlaceholder`) as string}
/>
<div className={`mt-8 font-medium ${s.settingTitle} text-gray-900`}>{t(`${prefixSettings}.more.privacyPolicy`)}</div>
<p className={`mt-1 ${s.settingsTip} text-gray-500`}>
<div className='mt-8 system-sm-semibold text-text-secondary'>{t(`${prefixSettings}.more.privacyPolicy`)}</div>
<p className='mt-1 body-xs-regular text-text-tertiary'>
<Trans
i18nKey={`${prefixSettings}.more.privacyPolicyTip`}
components={{ privacyPolicyLink: <Link href={'https://docs.dify.ai/user-agreement/privacy-policy'} target='_blank' rel='noopener noreferrer' className='text-primary-600' /> }}
components={{ privacyPolicyLink: <Link href={'https://docs.dify.ai/user-agreement/privacy-policy'} target='_blank' rel='noopener noreferrer' className='text-text-accent' /> }}
/>
</p>
<Input
@@ -313,8 +314,8 @@ const SettingsModal: FC<ISettingsModalProps> = ({
onChange={onChange('privacyPolicy')}
placeholder={t(`${prefixSettings}.more.privacyPolicyPlaceholder`) as string}
/>
<div className={`mt-8 font-medium ${s.settingTitle} text-gray-900`}>{t(`${prefixSettings}.more.customDisclaimer`)}</div>
<p className={`mt-1 ${s.settingsTip} text-gray-500`}>{t(`${prefixSettings}.more.customDisclaimerTip`)}</p>
<div className='mt-8 system-sm-semibold text-text-secondary'>{t(`${prefixSettings}.more.customDisclaimer`)}</div>
<p className='mt-1 body-xs-regular text-text-tertiary'>{t(`${prefixSettings}.more.customDisclaimerTip`)}</p>
<Input
className='mt-2 h-10'
value={inputInfo.customDisclaimer}
@@ -1,18 +0,0 @@
.settingsModal {
max-width: 32.5rem !important;
}
.settingTitle {
line-height: 21px;
font-size: 0.875rem;
}
.settingsTip {
line-height: 1.125rem;
font-size: 0.75rem;
}
.policy {
font-size: 0.75rem;
line-height: 1.125rem;
}
@@ -2,9 +2,7 @@
@layer components {
.action-btn {
@apply inline-flex justify-center items-center cursor-pointer text-text-tertiary
hover:text-text-secondary
hover:bg-state-base-hover
@apply inline-flex justify-center items-center cursor-pointer text-text-tertiary hover:text-text-secondary hover:bg-state-base-hover
}
.action-btn-disabled {
@@ -29,21 +27,15 @@
}
.action-btn.action-btn-active {
@apply
text-text-accent
bg-state-accent-active
hover:bg-state-accent-active-alt
@apply text-text-accent bg-state-accent-active hover:bg-state-accent-active-alt
}
.action-btn.action-btn-disabled {
@apply
text-text-disabled
@apply text-text-disabled
}
.action-btn.action-btn-destructive {
@apply
text-text-destructive
bg-state-destructive-hover
@apply text-text-destructive bg-state-destructive-hover
}
}
@@ -28,7 +28,7 @@ const actionButtonVariants = cva(
)
export type ActionButtonProps = {
size?: 'xs' | 'm' | 'l' | 'xl'
size?: 'xs' | 's' | 'm' | 'l' | 'xl'
state?: ActionButtonState
styleCss?: CSSProperties
} & React.ButtonHTMLAttributes<HTMLButtonElement> & VariantProps<typeof actionButtonVariants>
@@ -0,0 +1,23 @@
.appIcon {
@apply flex items-center justify-center relative w-9 h-9 text-lg rounded-lg grow-0 shrink-0;
}
.appIcon.large {
@apply w-10 h-10;
}
.appIcon.small {
@apply w-8 h-8;
}
.appIcon.tiny {
@apply w-6 h-6 text-base;
}
.appIcon.xs {
@apply w-5 h-5 text-base;
}
.appIcon.rounded {
@apply rounded-full;
}
@@ -1,6 +1,6 @@
import AudioPlayer from '@/app/components/base/audio-btn/audio'
declare global {
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
// eslint-disable-next-line ts/consistent-type-definitions
interface AudioPlayerManager {
instance: AudioPlayerManager
}
+1 -1
View File
@@ -2,7 +2,7 @@ import Toast from '@/app/components/base/toast'
import { textToAudioStream } from '@/service/share'
declare global {
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
// eslint-disable-next-line ts/consistent-type-definitions
interface Window {
ManagedMediaSource: any
}
@@ -2,15 +2,15 @@
display: flex;
flex-direction: row;
align-items: center;
background-color: #ffffff;
background-color: var(--color-components-chat-input-audio-bg-alt);
border-radius: 10px;
padding: 8px;
min-width: 240px;
max-width: 420px;
max-height: 40px;
backdrop-filter: blur(5px);
border: 1px solid rgba(16, 24, 40, 0.08);
box-shadow: 0 1px 2px rgba(9, 9, 11, 0.05);
border: 1px solid var(--color-components-panel-border-subtle);
box-shadow: 0 1px 2px var(--color-shadow-shadow-3);
gap: 8px;
}
@@ -19,8 +19,8 @@
width: 16px;
height: 16px;
border-radius: 50%;
background-color: #296DFF;
color: white;
background-color: var(--color-components-button-primary-bg);
color: var(--color-components-chat-input-audio-bg-alt);
border: none;
cursor: pointer;
align-items: center;
@@ -30,16 +30,15 @@
}
.playButton:hover {
background-color: #3367d6;
background-color: var(--color-components-button-primary-bg-hover);
}
.playButton:disabled {
background-color: #bdbdbf;
background-color: var(--color-components-button-primary-bg-disabled);
}
.audioControls {
flex-grow: 1;
}
.progressBarContainer {
@@ -76,8 +75,8 @@
.timeDisplay {
/* position: absolute; */
color: #296DFF;
border-radius: 2px;
color: var(--color-text-accent-secondary);
font-size: 12px;
order: 0;
height: 100%;
width: 50px;
@@ -97,7 +96,6 @@
} */
.duration {
background-color: rgba(255, 255, 255, 0.8);
padding: 2px 4px;
border-radius: 10px;
}
@@ -114,6 +112,6 @@
}
.playButton svg path,
.playButton svg rect{
fill:currentColor;
}
.playButton svg rect {
fill: currentColor;
}
@@ -55,7 +55,7 @@ const AudioPlayer: React.FC<AudioPlayerProps> = ({ src }) => {
audio.load()
// Delayed generation of waveform data
// eslint-disable-next-line @typescript-eslint/no-use-before-define
// eslint-disable-next-line ts/no-use-before-define
const timer = setTimeout(() => generateWaveformData(src), 1000)
return () => {
+10 -3
View File
@@ -1,11 +1,13 @@
import type { ReactNode } from 'react'
import { memo } from 'react'
import cn from '@/utils/classnames'
type BadgeProps = {
className?: string
text?: string
children?: React.ReactNode
text?: ReactNode
children?: ReactNode
uppercase?: boolean
hasRedCornerMark?: boolean
}
const Badge = ({
@@ -13,15 +15,20 @@ const Badge = ({
text,
children,
uppercase = true,
hasRedCornerMark,
}: BadgeProps) => {
return (
<div
className={cn(
'inline-flex items-center px-[5px] h-5 rounded-[5px] border border-divider-deep leading-3 text-text-tertiary',
'relative inline-flex items-center px-[5px] h-5 rounded-[5px] border border-divider-deep leading-3 text-text-tertiary',
uppercase ? 'system-2xs-medium-uppercase' : 'system-xs-medium',
className,
)}
>
{hasRedCornerMark && (
<div className='absolute top-[-2px] right-[-2px] w-1.5 h-1.5 border border-components-badge-status-light-error-border-inner bg-components-badge-status-light-error-bg rounded-[2px] shadow-sm'>
</div>
)}
{children || text}
</div>
)
+28
View File
@@ -0,0 +1,28 @@
@tailwind components;
@layer components {
.badge {
@apply inline-flex justify-center items-center text-text-tertiary border border-divider-deep
}
.badge-l {
@apply rounded-md gap-1 min-w-6
}
/* m is for the regular button */
.badge-m {
@apply rounded-md gap-[3px] min-w-5
}
.badge-s {
@apply rounded-[5px] gap-0.5 min-w-[18px]
}
.badge.badge-warning {
@apply text-text-warning border border-text-warning
}
.badge.badge-accent {
@apply text-text-accent-secondary border border-text-accent-secondary
}
}
+81
View File
@@ -0,0 +1,81 @@
import type { CSSProperties, ReactNode } from 'react'
import React from 'react'
import { type VariantProps, cva } from 'class-variance-authority'
import classNames from '@/utils/classnames'
import './index.css'
enum BadgeState {
Warning = 'warning',
Accent = 'accent',
Default = '',
}
const BadgeVariants = cva(
'badge',
{
variants: {
size: {
s: 'badge-s',
m: 'badge-m',
l: 'badge-l',
},
},
defaultVariants: {
size: 'm',
},
},
)
type BadgeProps = {
size?: 's' | 'm' | 'l'
iconOnly?: boolean
uppercase?: boolean
state?: BadgeState
styleCss?: CSSProperties
children?: ReactNode
} & React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof BadgeVariants>
function getBadgeState(state: BadgeState) {
switch (state) {
case BadgeState.Warning:
return 'badge-warning'
case BadgeState.Accent:
return 'badge-accent'
default:
return ''
}
}
const Badge: React.FC<BadgeProps> = ({
className,
size,
state = BadgeState.Default,
iconOnly = false,
uppercase = false,
styleCss,
children,
...props
}) => {
return (
<div
className={classNames(
BadgeVariants({ size, className }),
getBadgeState(state),
size === 's'
? (iconOnly ? 'p-[3px]' : 'px-[5px] py-[3px]')
: size === 'l'
? (iconOnly ? 'p-1.5' : 'px-2 py-1')
: (iconOnly ? 'p-1' : 'px-[5px] py-[2px]'),
uppercase ? 'system-2xs-medium-uppercase' : 'system-2xs-medium',
)}
style={styleCss}
{...props}
>
{children}
</div>
)
}
Badge.displayName = 'Badge'
export default Badge
export { Badge, BadgeState, BadgeVariants }
@@ -263,7 +263,7 @@ describe('build chat item tree and get thread messages', () => {
expect(tree7).toMatchSnapshot()
})
const partialMessages2 = (partialMessages as ChatItemInTree[])
const partialMessages2 = partialMessages as ChatItemInTree[]
const tree8 = buildChatItemTree(partialMessages2)
it('should work with partial messages 2', () => {
expect(tree8).toMatchSnapshot()
@@ -1,5 +1,4 @@
import {
useCallback,
useEffect,
useMemo,
useState,
@@ -15,7 +14,6 @@ import TracingPanel from '@/app/components/workflow/run/tracing-panel'
import cn from '@/utils/classnames'
import { CheckCircle } from '@/app/components/base/icons/src/vender/solid/general'
import { WorkflowRunningStatus } from '@/app/components/workflow/types'
import { useStore as useAppStore } from '@/app/components/app/store'
type WorkflowProcessProps = {
data: WorkflowProcess
@@ -26,7 +24,6 @@ type WorkflowProcessProps = {
}
const WorkflowProcessItem = ({
data,
item,
expand = false,
hideInfo = false,
hideProcessDetail = false,
@@ -54,22 +51,6 @@ const WorkflowProcessItem = ({
setCollapse(!expand)
}, [expand])
const setCurrentLogItem = useAppStore(s => s.setCurrentLogItem)
const setShowMessageLogModal = useAppStore(s => s.setShowMessageLogModal)
const setCurrentLogModalActiveTab = useAppStore(s => s.setCurrentLogModalActiveTab)
const showIterationDetail = useCallback(() => {
setCurrentLogItem(item)
setCurrentLogModalActiveTab('TRACING')
setShowMessageLogModal(true)
}, [item, setCurrentLogItem, setCurrentLogModalActiveTab, setShowMessageLogModal])
const showRetryDetail = useCallback(() => {
setCurrentLogItem(item)
setCurrentLogModalActiveTab('TRACING')
setShowMessageLogModal(true)
}, [item, setCurrentLogItem, setCurrentLogModalActiveTab, setShowMessageLogModal])
return (
<div
className={cn(
@@ -110,8 +91,6 @@ const WorkflowProcessItem = ({
{
<TracingPanel
list={data.tracing}
onShowIterationDetail={showIterationDetail}
onShowRetryDetail={showRetryDetail}
hideNodeInfo={hideInfo}
hideNodeProcessDetail={hideProcessDetail}
/>
+2 -2
View File
@@ -28,13 +28,13 @@ export type UserInputFormTextInput = {
}
export type UserInputFormSelect = {
'select': UserInputForm & {
select: UserInputForm & {
options: string[]
}
}
export type UserInputFormParagraph = {
'paragraph': UserInputForm
paragraph: UserInputForm
}
export type VisionConfig = VisionSettings
+15 -6
View File
@@ -1,6 +1,7 @@
'use client'
import { useState } from 'react'
import { t } from 'i18next'
import { debounce } from 'lodash-es'
import copy from 'copy-to-clipboard'
import s from './style.module.css'
import Tooltip from '@/app/components/base/tooltip'
@@ -18,24 +19,32 @@ const CopyBtn = ({
}: ICopyBtnProps) => {
const [isCopied, setIsCopied] = useState(false)
const onClickCopy = debounce(() => {
copy(value)
setIsCopied(true)
}, 100)
const onMouseLeave = debounce(() => {
setIsCopied(false)
}, 100)
return (
<div className={`${className}`}>
<Tooltip
popupContent={(isCopied ? t('appApi.copied') : t('appApi.copy'))}
asChild={false}
>
<div
className={'box-border p-0.5 flex items-center justify-center rounded-md bg-white cursor-pointer'}
onMouseLeave={onMouseLeave}
className={'box-border p-0.5 flex items-center justify-center rounded-md bg-components-button-secondary-bg cursor-pointer'}
style={!isPlain
? {
boxShadow: '0px 4px 8px -2px rgba(16, 24, 40, 0.1), 0px 2px 4px -2px rgba(16, 24, 40, 0.06)',
}
: {}}
onClick={() => {
copy(value)
setIsCopied(true)
}}
onClick={onClickCopy}
>
<div className={`w-6 h-6 rounded-md hover:bg-gray-50 ${s.copyIcon} ${isCopied ? s.copied : ''}`}></div>
<div className={`w-6 h-6 rounded-md hover:bg-components-button-secondary-bg-hover ${s.copyIcon} ${isCopied ? s.copied : ''}`}></div>
</div>
</Tooltip>
</div>
+12 -11
View File
@@ -1,10 +1,15 @@
'use client'
import React, { useState } from 'react'
import { useTranslation } from 'react-i18next'
import {
RiClipboardFill,
RiClipboardLine,
} from '@remixicon/react'
import { debounce } from 'lodash-es'
import copy from 'copy-to-clipboard'
import copyStyle from './style.module.css'
import Tooltip from '@/app/components/base/tooltip'
import ActionButton from '@/app/components/base/action-button'
type Props = {
content: string
@@ -13,7 +18,7 @@ type Props = {
const prefixEmbedded = 'appOverview.overview.appInfo.embedded'
const CopyFeedback = ({ content, className }: Props) => {
const CopyFeedback = ({ content }: Props) => {
const { t } = useTranslation()
const [isCopied, setIsCopied] = useState<boolean>(false)
@@ -34,19 +39,15 @@ const CopyFeedback = ({ content, className }: Props) => {
: t(`${prefixEmbedded}.copy`)) || ''
}
>
<div
className={`w-8 h-8 cursor-pointer hover:bg-gray-100 rounded-lg ${
className ?? ''
}`}
>
<ActionButton>
<div
onClick={onClickCopy}
onMouseLeave={onMouseLeave}
className={`w-full h-full ${copyStyle.copyIcon} ${
isCopied ? copyStyle.copied : ''
}`}
></div>
</div>
>
{isCopied && <RiClipboardFill className='w-4 h-4' />}
{!isCopied && <RiClipboardLine className='w-4 h-4' />}
</div>
</ActionButton>
</Tooltip>
)
}
+4 -4
View File
@@ -51,18 +51,18 @@ export default function Drawer({
<Dialog.Overlay
className={cn('z-40 fixed inset-0', mask && 'bg-black bg-opacity-30')}
/>
<div className={cn('relative z-50 flex flex-col justify-between bg-background-body w-full max-w-sm p-6 overflow-hidden text-left align-middle shadow-xl', panelClassname)}>
<div className={cn('relative z-50 flex flex-col justify-between bg-components-panel-bg w-full max-w-sm p-6 overflow-hidden text-left align-middle shadow-xl', panelClassname)}>
<>
{title && <Dialog.Title
as="h3"
className="text-lg font-medium leading-6 text-gray-900"
className="text-lg font-medium leading-6 text-text-primary"
>
{title}
</Dialog.Title>}
{showClose && <Dialog.Title className="flex items-center mb-4" as="div">
<XMarkIcon className='w-4 h-4 text-gray-500' onClick={onClose} />
<XMarkIcon className='w-4 h-4 text-text-tertiary' onClick={onClose} />
</Dialog.Title>}
{description && <Dialog.Description className='text-gray-500 text-xs font-normal mt-2'>{description}</Dialog.Description>}
{description && <Dialog.Description className='text-text-tertiary text-xs font-normal mt-2'>{description}</Dialog.Description>}
{children}
</>
{footer || (footer === null
+6 -6
View File
@@ -48,16 +48,16 @@ const Dropdown: FC<DropdownProps> = ({
<div
className={`
flex items-center justify-center w-6 h-6 cursor-pointer rounded-md
${open && 'bg-black/5'}
${open && 'bg-divider-regular'}
`}
>
<RiMoreFill className='w-4 h-4 text-gray-500' />
<RiMoreFill className='w-4 h-4 text-text-tertiary' />
</div>
)
}
</PortalToFollowElemTrigger>
<PortalToFollowElemContent className={popupClassName}>
<div className='rounded-lg border-[0.5px] border-gray-200 bg-white shadow-lg text-sm text-gray-700'>
<div className='rounded-lg border-[0.5px] border-components-panel-border bg-components-panel-bg shadow-lg text-sm text-text-secondary'>
{
!!items.length && (
<div className='p-1'>
@@ -65,7 +65,7 @@ const Dropdown: FC<DropdownProps> = ({
items.map(item => (
<div
key={item.value}
className='flex items-center px-3 h-8 rounded-lg cursor-pointer hover:bg-gray-100'
className='flex items-center px-3 h-8 rounded-lg cursor-pointer hover:bg-components-panel-on-panel-item-bg-hover'
onClick={() => handleSelect(item)}
>
{item.text}
@@ -77,7 +77,7 @@ const Dropdown: FC<DropdownProps> = ({
}
{
(!!items.length && !!secondItems?.length) && (
<div className='h-[1px] bg-gray-100' />
<div className='h-[1px] bg-divider-regular' />
)
}
{
@@ -87,7 +87,7 @@ const Dropdown: FC<DropdownProps> = ({
secondItems.map(item => (
<div
key={item.value}
className='flex items-center px-3 h-8 rounded-lg cursor-pointer hover:bg-gray-100'
className='flex items-center px-3 h-8 rounded-lg cursor-pointer hover:bg-components-panel-on-panel-item-bg-hover'
onClick={() => handleSelect(item)}
>
{item.text}
+14 -12
View File
@@ -7,13 +7,15 @@ import { init } from 'emoji-mart'
import {
MagnifyingGlassIcon,
} from '@heroicons/react/24/outline'
import cn from '@/utils/classnames'
import Input from '@/app/components/base/input'
import Divider from '@/app/components/base/divider'
import { searchEmoji } from '@/utils/emoji'
import cn from '@/utils/classnames'
declare global {
// eslint-disable-next-line ts/no-namespace
namespace JSX {
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
// eslint-disable-next-line ts/consistent-type-definitions
interface IntrinsicElements {
'em-emoji': React.DetailedHTMLProps< React.HTMLAttributes<HTMLElement>, HTMLElement >
}
@@ -71,12 +73,12 @@ const EmojiPickerInner: FC<IEmojiPickerInnerProps> = ({
<div className='flex flex-col items-center w-full px-3 pb-2'>
<div className="relative w-full">
<div className="absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none">
<MagnifyingGlassIcon className="w-5 h-5 text-gray-400" aria-hidden="true" />
<MagnifyingGlassIcon className="w-5 h-5 text-text-quaternary" aria-hidden="true" />
</div>
<input
<Input
className="pl-10"
type="search"
id="search"
className='block w-full h-10 px-3 pl-10 text-sm font-normal bg-gray-100 rounded-lg'
placeholder="Search emojis..."
onChange={async (e: ChangeEvent<HTMLInputElement>) => {
if (e.target.value === '') {
@@ -91,12 +93,12 @@ const EmojiPickerInner: FC<IEmojiPickerInnerProps> = ({
/>
</div>
</div>
<Divider className='m-0 mb-3' />
<Divider className='my-3' />
<div className="w-full max-h-[200px] overflow-x-hidden overflow-y-auto px-3">
{isSearching && <>
<div key={'category-search'} className='flex flex-col'>
<p className='font-medium uppercase text-xs text-[#101828] mb-1'>Search</p>
<p className='system-xs-medium-uppercase text-text-primary mb-1'>Search</p>
<div className='w-full h-full grid grid-cols-8 gap-1'>
{searchedEmojis.map((emoji: string, index: number) => {
return <div
@@ -106,7 +108,7 @@ const EmojiPickerInner: FC<IEmojiPickerInnerProps> = ({
setSelectedEmoji(emoji)
}}
>
<div className='cursor-pointer w-8 h-8 p-1 flex items-center justify-center rounded-lg hover:ring-1 ring-offset-1 ring-gray-300'>
<div className='cursor-pointer w-8 h-8 p-1 flex items-center justify-center rounded-lg hover:ring-1 ring-offset-1 ring-components-input-border-hover'>
<em-emoji id={emoji} />
</div>
</div>
@@ -117,7 +119,7 @@ const EmojiPickerInner: FC<IEmojiPickerInnerProps> = ({
{categories.map((category, index: number) => {
return <div key={`category-${index}`} className='flex flex-col'>
<p className='font-medium uppercase text-xs text-[#101828] mb-1'>{category.id}</p>
<p className='system-xs-medium-uppercase text-text-primary mb-1'>{category.id}</p>
<div className='w-full h-full grid grid-cols-8 gap-1'>
{category.emojis.map((emoji, index: number) => {
return <div
@@ -127,7 +129,7 @@ const EmojiPickerInner: FC<IEmojiPickerInnerProps> = ({
setSelectedEmoji(emoji)
}}
>
<div className='cursor-pointer w-8 h-8 p-1 flex items-center justify-center rounded-lg hover:ring-1 ring-offset-1 ring-gray-300'>
<div className='cursor-pointer w-8 h-8 p-1 flex items-center justify-center rounded-lg hover:ring-1 ring-offset-1 ring-components-input-border-hover'>
<em-emoji id={emoji} />
</div>
</div>
@@ -140,7 +142,7 @@ const EmojiPickerInner: FC<IEmojiPickerInnerProps> = ({
{/* Color Select */}
<div className={cn('p-3 pb-0', selectedEmoji === '' ? 'opacity-25' : '')}>
<p className='font-medium uppercase text-xs text-[#101828] mb-2'>Choose Style</p>
<p className='system-xs-medium-uppercase text-text-primary mb-2'>Choose Style</p>
<div className='w-full h-full grid grid-cols-8 gap-1'>
{backgroundColors.map((color) => {
return <div
@@ -150,7 +152,7 @@ const EmojiPickerInner: FC<IEmojiPickerInnerProps> = ({
'cursor-pointer',
'hover:ring-1 ring-offset-1',
'inline-flex w-10 h-10 rounded-lg items-center justify-center',
color === selectedBackground ? 'ring-1 ring-gray-300' : '',
color === selectedBackground ? 'ring-1 ring-components-input-border-hover' : '',
)}
onClick={() => {
setSelectedBackground(color)
@@ -2,7 +2,6 @@
import type { FC } from 'react'
import React, { useCallback, useState } from 'react'
import { useTranslation } from 'react-i18next'
import s from './style.module.css'
import EmojiPickerInner from './Inner'
import cn from '@/utils/classnames'
import Divider from '@/app/components/base/divider'
@@ -37,12 +36,12 @@ const EmojiPicker: FC<IEmojiPickerProps> = ({
isShow
closable={false}
wrapperClassName={className}
className={cn(s.container, '!w-[362px] !p-0')}
className={cn('flex flex-col max-h-[552px] border-[0.5px] border-divider-subtle rounded-xl shadow-xl p-0')}
>
<EmojiPickerInner
className="pt-3"
onSelect={handleSelectEmoji} />
<Divider className='m-0' />
<Divider className='mb-0 mt-3' />
<div className='w-full flex items-center justify-center p-3 gap-2'>
<Button className='w-full' onClick={() => {
onClose && onClose()
@@ -1,12 +0,0 @@
.container {
display: flex;
flex-direction: column;
align-items: flex-start;
width: 362px;
max-height: 552px;
border: 0.5px solid #EAECF0;
box-shadow: 0px 12px 16px -4px rgba(16, 24, 40, 0.08), 0px 4px 6px -2px rgba(16, 24, 40, 0.03);
border-radius: 12px;
background: #fff;
}
@@ -60,7 +60,7 @@ const ModerationSettingModal: FC<ModerationSettingModalProps> = ({
'/code-based-extension?module=moderation',
fetchCodeBasedExtensionList,
)
const openaiProvider = modelProviders?.data.find(item => item.provider === 'openai')
const openaiProvider = modelProviders?.data.find(item => item.provider === 'langgenius/openai/openai')
const systemOpenaiProviderEnabled = openaiProvider?.system_configuration.enabled
const systemOpenaiProviderQuota = systemOpenaiProviderEnabled ? openaiProvider?.system_configuration.quota_configurations.find(item => item.quota_type === openaiProvider.system_configuration.current_quota_type) : undefined
const systemOpenaiProviderCanUse = systemOpenaiProviderQuota?.is_valid
@@ -59,7 +59,7 @@ const FileFromLinkOrLocal = ({
<PortalToFollowElemTrigger onClick={() => setOpen(v => !v)} asChild>
{trigger(open)}
</PortalToFollowElemTrigger>
<PortalToFollowElemContent className='z-10'>
<PortalToFollowElemContent className='z-[1001]'>
<div className='p-3 w-[280px] bg-components-panel-bg-blur border-[0.5px] border-components-panel-border rounded-xl shadow-lg'>
{
showFromLink && (

Some files were not shown because too many files have changed in this diff Show More