@lobehub/chat 0.73.0 → 0.75.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/contributor-help.yml +1 -1
- package/.github/workflows/sync.yml +43 -0
- package/.github/workflows/wiki-sync.yml +1 -0
- package/CHANGELOG.md +87 -0
- package/README.md +40 -6
- package/{README-zh_CN.md → README.zh-CN.md} +38 -4
- package/docs/Home.md +6 -0
- package/docs/Upstream-Sync.en-US.md +16 -0
- package/docs/Upstream-Sync.zh-CN.md +16 -0
- package/docs/_Sidebar.md +6 -0
- package/locales/en_US/market.json +12 -0
- package/locales/en_US/plugin.json +11 -2
- package/locales/en_US/setting.json +63 -2
- package/locales/ru_RU/market.json +12 -0
- package/locales/ru_RU/plugin.json +44 -49
- package/locales/ru_RU/setting.json +63 -2
- package/locales/zh_CN/common.json +1 -1
- package/locales/zh_CN/market.json +12 -0
- package/locales/zh_CN/plugin.json +19 -5
- package/locales/zh_CN/setting.json +62 -14
- package/package.json +5 -4
- package/scripts/i18nWorkflow/const.ts +19 -0
- package/scripts/i18nWorkflow/genDefaultLocale.ts +19 -0
- package/scripts/i18nWorkflow/genDiff.ts +50 -0
- package/scripts/i18nWorkflow/genResources.ts +26 -0
- package/scripts/i18nWorkflow/index.ts +15 -0
- package/scripts/i18nWorkflow/utils.ts +85 -0
- package/src/const/layoutTokens.ts +3 -1
- package/src/const/market.ts +15 -0
- package/src/const/url.ts +29 -4
- package/src/features/AgentSetting/AgentConfig/index.tsx +1 -2
- package/src/features/AgentSetting/AgentPlugin/MarketSettingModal.tsx +1 -1
- package/src/features/AgentSetting/store/initialState.ts +1 -1
- package/src/features/MobileTabBar/index.tsx +2 -2
- package/src/features/SideBar/TopActions.tsx +2 -2
- package/src/locales/default/market.ts +12 -0
- package/src/locales/resources/en_US.ts +2 -0
- package/src/locales/resources/ru_RU.ts +2 -0
- package/src/locales/resources/zh_CN.ts +2 -0
- package/src/pages/chat/features/Conversation/Input/{Action.tsx → ActionBar/ActionLeft.tsx} +2 -2
- package/src/pages/chat/features/Conversation/Input/ActionBar/ActionRight.tsx +36 -0
- package/src/pages/chat/features/Conversation/Input/Desktop.tsx +40 -0
- package/src/pages/chat/features/Conversation/Input/Footer/SaveTopic.tsx +27 -0
- package/src/pages/chat/features/Conversation/Input/Footer/index.tsx +35 -0
- package/src/pages/chat/features/Conversation/Input/Mobile.tsx +12 -0
- package/src/pages/chat/features/Conversation/Input/index.tsx +20 -38
- package/src/pages/chat/features/SessionList/Header/Desktop.tsx +6 -13
- package/src/pages/chat/features/SessionList/Header/Mobile.tsx +1 -1
- package/src/pages/chat/features/SessionList/List/AddButton.tsx +1 -1
- package/src/pages/chat/features/SessionList/List/Item/index.tsx +4 -3
- package/src/pages/chat/features/SessionList/List/index.tsx +1 -3
- package/src/pages/chat/features/SessionList/Mobile.tsx +2 -12
- package/src/pages/chat/features/SessionSearchBar/index.tsx +26 -0
- package/src/pages/chat/features/Sidebar/Topic/index.tsx +18 -6
- package/src/pages/chat/features/Sidebar/TopicSearchBar/index.tsx +24 -0
- package/src/pages/chat/features/Sidebar/index.tsx +2 -9
- package/src/pages/market/features/AgentCard/AgentCardBanner.tsx +64 -0
- package/src/pages/market/features/AgentCard/AgentCardItem.tsx +57 -0
- package/src/pages/market/features/AgentCard/Loading.tsx +13 -0
- package/src/pages/market/features/AgentCard/index.tsx +37 -0
- package/src/pages/market/features/AgentCard/style.ts +22 -0
- package/src/pages/market/features/AgentSearchBar/index.tsx +26 -0
- package/src/pages/market/features/Header/Desktop.tsx +15 -4
- package/src/pages/market/features/Header/Mobile.tsx +7 -24
- package/src/pages/market/features/SideBar/AgentInfo/Comment.tsx +16 -0
- package/src/pages/market/features/SideBar/AgentInfo/Header.tsx +68 -0
- package/src/pages/market/features/SideBar/AgentInfo/Loading.tsx +61 -0
- package/src/pages/market/features/SideBar/AgentInfo/TokenTag.tsx +25 -0
- package/src/pages/market/features/SideBar/AgentInfo/index.tsx +68 -0
- package/src/pages/market/features/SideBar/AgentInfo/style.ts +46 -0
- package/src/pages/market/features/SideBar/Desktop.tsx +70 -0
- package/src/pages/market/features/SideBar/Mobile.tsx +36 -0
- package/src/pages/market/features/SideBar/index.tsx +23 -0
- package/src/pages/market/features/TagList/index.tsx +29 -0
- package/src/pages/market/index.page.tsx +11 -2
- package/src/pages/market/layout.mobile.tsx +8 -7
- package/src/pages/market/layout.tsx +39 -1
- package/src/pages/settings/features/Header/Desktop.tsx +2 -4
- package/src/pages/settings/features/Header/Mobile.tsx +1 -1
- package/src/pages/settings/features/Settings/Common.tsx +1 -2
- package/src/pages/settings/features/Settings/index.tsx +17 -4
- package/src/services/agentMarket.ts +21 -0
- package/src/store/global/initialState.ts +1 -2
- package/src/store/market/action.ts +57 -0
- package/src/store/market/index.ts +3 -0
- package/src/store/market/initialState.ts +17 -0
- package/src/store/market/selectors.ts +36 -0
- package/src/store/market/store.ts +51 -0
- package/src/store/session/slices/session/action.ts +5 -3
- package/src/store/session/slices/session/initialState.ts +2 -0
- package/src/store/session/slices/session/reducers/session.test.ts +4 -4
- package/src/types/market.ts +19 -0
- package/src/types/meta.ts +1 -1
- package/src/utils/filter.ts +1 -1
- package/src/utils/findDuplicates.ts +22 -0
- package/scripts/genDefaultLocale.ts +0 -18
- package/scripts/genResources.ts +0 -51
- package/scripts/toc.ts +0 -7
- package/src/components/Empty/index.tsx +0 -63
- package/src/components/Empty/style.ts +0 -31
- package/src/components/SelectWithImg/index.tsx +0 -97
- package/src/components/SelectWithImg/styles.ts +0 -43
- package/src/pages/chat/features/Conversation/Input/ActionRight.tsx +0 -31
- package/src/pages/chat/features/Conversation/Input/Footer.tsx +0 -49
- /package/src/components/{ManifestPreviewer.tsx → ManifestPreviewer/index.tsx} +0 -0
- /package/src/pages/chat/features/Conversation/Input/{Token.tsx → ActionBar/Token.tsx} +0 -0
|
@@ -13,7 +13,7 @@ jobs:
|
|
|
13
13
|
with:
|
|
14
14
|
token: ${{ secrets.GH_TOKEN }}
|
|
15
15
|
style: 'simple'
|
|
16
|
-
update-files: 'README.md, README-
|
|
16
|
+
update-files: 'README.md, README.zh-CN.md'
|
|
17
17
|
update-places: '<!-- CONTRIBUTION GROUP -->/<!-- CONTRIBUTION END -->, <!-- CONTRIBUTION GROUP -->/<!-- CONTRIBUTION END -->'
|
|
18
18
|
|
|
19
19
|
- name: Commit and push if changed
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
name: Upstream Sync
|
|
2
|
+
|
|
3
|
+
permissions:
|
|
4
|
+
contents: write
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
schedule:
|
|
8
|
+
- cron: "0 0 * * *" # every day
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
sync_latest_from_upstream:
|
|
13
|
+
name: Sync latest commits from upstream repo
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
if: ${{ github.event.repository.fork }}
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
# Step 1: run a standard checkout action
|
|
19
|
+
- name: Checkout target repo
|
|
20
|
+
uses: actions/checkout@v3
|
|
21
|
+
|
|
22
|
+
# Step 2: run the sync action
|
|
23
|
+
- name: Sync upstream changes
|
|
24
|
+
id: sync
|
|
25
|
+
uses: aormsby/Fork-Sync-With-Upstream-action@v3.4
|
|
26
|
+
with:
|
|
27
|
+
upstream_sync_repo: lobehub/lobe-chat
|
|
28
|
+
upstream_sync_branch: main
|
|
29
|
+
target_sync_branch: main
|
|
30
|
+
target_repo_token: ${{ secrets.GITHUB_TOKEN }} # automatically generated, no need to set
|
|
31
|
+
|
|
32
|
+
# Set test_mode true to run tests instead of the true action!!
|
|
33
|
+
test_mode: false
|
|
34
|
+
|
|
35
|
+
# Step 3: run check
|
|
36
|
+
- name: Sync check
|
|
37
|
+
if: failure()
|
|
38
|
+
uses: actions-cool/issues-helper@v3
|
|
39
|
+
with:
|
|
40
|
+
actions: 'create-issue'
|
|
41
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
42
|
+
title: '🚨 同步失败 | Sync Fail'
|
|
43
|
+
body: '由于 [LobeChat][lobechat] 上游仓库的 workflow 文件变更,导致 GitHub 自动暂停了本次自动更新,你需要手动 Sync Fork 一次,请查看[详细教程][tutorial-zh-CN]\n---\nDue to a change in the workflow file of the [LobeChat][lobechat] upstream repository, GitHub has automatically suspended the scheduled automatic update. You need to manually sync your fork. Please refer to the detailed [Tutorial][tutorial-en-US] for instructions.\n\n[lobechat]: https://github.com/lobehub/lobe-chat\n[tutorial-zh-CN]: https://github.com/lobehub/lobe-chat/wiki/Upstream-Sync.zh-CN\n[tutorial-en-US]: https://github.com/lobehub/lobe-chat/wiki/Upstream-Sync.zh-CN'
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,93 @@
|
|
|
2
2
|
|
|
3
3
|
# Changelog
|
|
4
4
|
|
|
5
|
+
## [Version 0.75.0](https://github.com/lobehub/lobe-chat/compare/v0.74.0...v0.75.0)
|
|
6
|
+
|
|
7
|
+
<sup>Released on **2023-09-11**</sup>
|
|
8
|
+
|
|
9
|
+
#### ♻ Code Refactoring
|
|
10
|
+
|
|
11
|
+
- **misc**: Fefactor index url fetch.
|
|
12
|
+
|
|
13
|
+
#### ✨ Features
|
|
14
|
+
|
|
15
|
+
- **market**: Add prompt token count.
|
|
16
|
+
- **misc**: Add agents market and improve UI components, Add and refactor components for chat input feature, Add functions for generating and analyzing JSON files, generating resource files and table of contents, and formatting console output, Add new settings for Azure OpenAI and OpenAI in locales files, Add new string, create AgentModal component, implement GridCardItem and Loading components, import AgentModal, Add SideBar component, new actions, and update market store state and selectors, Add translations and new setting to "setting.json", Improve functionality and user interface of market page, Modify market features components and update CSS styles, support add agent to chat.
|
|
17
|
+
|
|
18
|
+
#### 🐛 Bug Fixes
|
|
19
|
+
|
|
20
|
+
- **misc**: Fix fetcher, Fix market sidebar scroll and add i18n.
|
|
21
|
+
|
|
22
|
+
#### 💄 Styles
|
|
23
|
+
|
|
24
|
+
- **misc**: Update loading style and compatible with unknown agent identifier.
|
|
25
|
+
|
|
26
|
+
<br/>
|
|
27
|
+
|
|
28
|
+
<details>
|
|
29
|
+
<summary><kbd>Improvements and Fixes</kbd></summary>
|
|
30
|
+
|
|
31
|
+
#### Code refactoring
|
|
32
|
+
|
|
33
|
+
- **misc**: Fefactor index url fetch ([257584b](https://github.com/lobehub/lobe-chat/commit/257584b))
|
|
34
|
+
|
|
35
|
+
#### What's improved
|
|
36
|
+
|
|
37
|
+
- **market**: Add prompt token count ([16221a7](https://github.com/lobehub/lobe-chat/commit/16221a7))
|
|
38
|
+
- **misc**: Add agents market and improve UI components ([116c136](https://github.com/lobehub/lobe-chat/commit/116c136))
|
|
39
|
+
- **misc**: Add and refactor components for chat input feature ([f1ac9fe](https://github.com/lobehub/lobe-chat/commit/f1ac9fe))
|
|
40
|
+
- **misc**: Add functions for generating and analyzing JSON files, generating resource files and table of contents, and formatting console output ([d7c2e74](https://github.com/lobehub/lobe-chat/commit/d7c2e74))
|
|
41
|
+
- **misc**: Add new settings for Azure OpenAI and OpenAI in locales files ([e9e25b5](https://github.com/lobehub/lobe-chat/commit/e9e25b5))
|
|
42
|
+
- **misc**: Add new string, create AgentModal component, implement GridCardItem and Loading components, import AgentModal ([2a0e59f](https://github.com/lobehub/lobe-chat/commit/2a0e59f))
|
|
43
|
+
- **misc**: Add SideBar component, new actions, and update market store state and selectors ([8f6cfda](https://github.com/lobehub/lobe-chat/commit/8f6cfda))
|
|
44
|
+
- **misc**: Add translations and new setting to "setting.json" ([aca3822](https://github.com/lobehub/lobe-chat/commit/aca3822))
|
|
45
|
+
- **misc**: Improve functionality and user interface of market page ([1d465d6](https://github.com/lobehub/lobe-chat/commit/1d465d6))
|
|
46
|
+
- **misc**: Modify market features components and update CSS styles ([97e4179](https://github.com/lobehub/lobe-chat/commit/97e4179))
|
|
47
|
+
- **misc**: Support add agent to chat ([3b930c4](https://github.com/lobehub/lobe-chat/commit/3b930c4))
|
|
48
|
+
|
|
49
|
+
#### What's fixed
|
|
50
|
+
|
|
51
|
+
- **misc**: Fix fetcher ([171b2da](https://github.com/lobehub/lobe-chat/commit/171b2da))
|
|
52
|
+
- **misc**: Fix market sidebar scroll and add i18n ([9c897d2](https://github.com/lobehub/lobe-chat/commit/9c897d2))
|
|
53
|
+
|
|
54
|
+
#### Styles
|
|
55
|
+
|
|
56
|
+
- **misc**: Update loading style and compatible with unknown agent identifier ([2e2231d](https://github.com/lobehub/lobe-chat/commit/2e2231d))
|
|
57
|
+
|
|
58
|
+
</details>
|
|
59
|
+
|
|
60
|
+
<div align="right">
|
|
61
|
+
|
|
62
|
+
[](#readme-top)
|
|
63
|
+
|
|
64
|
+
</div>
|
|
65
|
+
|
|
66
|
+
## [Version 0.74.0](https://github.com/lobehub/lobe-chat/compare/v0.73.0...v0.74.0)
|
|
67
|
+
|
|
68
|
+
<sup>Released on **2023-09-11**</sup>
|
|
69
|
+
|
|
70
|
+
#### ✨ Features
|
|
71
|
+
|
|
72
|
+
- **misc**: Add russian localy, Update Russian and English localy (LLM tab).
|
|
73
|
+
|
|
74
|
+
<br/>
|
|
75
|
+
|
|
76
|
+
<details>
|
|
77
|
+
<summary><kbd>Improvements and Fixes</kbd></summary>
|
|
78
|
+
|
|
79
|
+
#### What's improved
|
|
80
|
+
|
|
81
|
+
- **misc**: Add russian localy ([7b67c9f](https://github.com/lobehub/lobe-chat/commit/7b67c9f))
|
|
82
|
+
- **misc**: Update Russian and English localy (LLM tab) ([3b23e70](https://github.com/lobehub/lobe-chat/commit/3b23e70))
|
|
83
|
+
|
|
84
|
+
</details>
|
|
85
|
+
|
|
86
|
+
<div align="right">
|
|
87
|
+
|
|
88
|
+
[](#readme-top)
|
|
89
|
+
|
|
90
|
+
</div>
|
|
91
|
+
|
|
5
92
|
## [Version 0.73.0](https://github.com/lobehub/lobe-chat/compare/v0.72.4...v0.73.0)
|
|
6
93
|
|
|
7
94
|
<sup>Released on **2023-09-10**</sup>
|
package/README.md
CHANGED
|
@@ -10,14 +10,15 @@
|
|
|
10
10
|
|
|
11
11
|
LobeChat is a open-source, extensible ([Function Calling][fc-url]), high-performance chatbot framework. <br/> It supports one-click free deployment of your private ChatGPT/LLM web application.
|
|
12
12
|
|
|
13
|
-
**English** · [简体中文](./README-
|
|
13
|
+
**English** · [简体中文](./README.zh-CN.md) · [Changelog](./CHANGELOG.md) · [Report Bug][issues-url] · [Request Feature][issues-url]
|
|
14
14
|
|
|
15
15
|
<!-- SHIELD GROUP -->
|
|
16
16
|
|
|
17
17
|
[![release][release-shield]][release-url]
|
|
18
18
|
[![releaseDate][release-date-shield]][release-date-url]
|
|
19
|
+
[![][license-shield]][fossa-license-url]
|
|
19
20
|
[![ciTest][ci-test-shield]][ci-test-url]
|
|
20
|
-
[![ciRelease][ci-release-shield]][ci-release-url]
|
|
21
|
+
[![ciRelease][ci-release-shield]][ci-release-url]<br/>
|
|
21
22
|
[![contributors][contributors-shield]][contributors-url]
|
|
22
23
|
[![forks][forks-shield]][forks-url]
|
|
23
24
|
[![stargazers][stargazers-shield]][stargazers-url]
|
|
@@ -35,12 +36,21 @@ LobeChat is a open-source, extensible ([Function Calling][fc-url]), high-perform
|
|
|
35
36
|
#### TOC
|
|
36
37
|
|
|
37
38
|
- [👋🏻 Getting Started & Join Our Community](#-getting-started--join-our-community)
|
|
39
|
+
|
|
38
40
|
- [✨ Features](#-features)
|
|
41
|
+
|
|
39
42
|
- [🛳 Self Hosting](#-self-hosting)
|
|
43
|
+
|
|
44
|
+
- [Keep Updated](#keep-updated)
|
|
45
|
+
|
|
40
46
|
- [📦 Ecosystem](#-ecosystem)
|
|
47
|
+
|
|
41
48
|
- [🧩 Plugins](#-plugins)
|
|
49
|
+
|
|
42
50
|
- [⌨️ Local Development](#️-local-development)
|
|
51
|
+
|
|
43
52
|
- [🤝 Contributing](#-contributing)
|
|
53
|
+
|
|
44
54
|
- [🔗 More Products](#-more-products)
|
|
45
55
|
|
|
46
56
|
####
|
|
@@ -70,7 +80,7 @@ Please be aware that LobeChat is currently under active development,feedback i
|
|
|
70
80
|
- [x] 🔒 **Privacy Protection**: All data is stored locally in the user's browser, ensuring user privacy;
|
|
71
81
|
- [x] 🤖 **Customizable Assistant Roles**: Users can create, share, and debug personalized dialogue assistant roles according to their needs, providing more flexible and personalized dialogue functions;
|
|
72
82
|
- [x] 🌐 **Custom Domain**: If users have their own domain, they can bind it to the platform for quick access to the dialogue assistant from anywhere.
|
|
73
|
-
- [
|
|
83
|
+
- [x] 🏬 **Role Market**: A Role Market is provided where users can select their preferred dialogue assistant roles, enriching the content and style of the dialogue;
|
|
74
84
|
|
|
75
85
|
> **👉 Roadmap:** You can find our upcoming [Roadmap][project-url] plans in the Projects section.
|
|
76
86
|
|
|
@@ -91,7 +101,8 @@ LobeChat provides a [self-hosted version][deploy-url] with Vercel. This allows y
|
|
|
91
101
|
|
|
92
102
|
[![Deploy with Vercel][deploy-button-image]][deploy-url]
|
|
93
103
|
|
|
94
|
-
>
|
|
104
|
+
> **Note**\
|
|
105
|
+
> This project provides some additional configuration items, set with environment variables:
|
|
95
106
|
|
|
96
107
|
| Environment Variable | Required | Description | Example |
|
|
97
108
|
| -------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
|
|
@@ -99,6 +110,10 @@ LobeChat provides a [self-hosted version][deploy-url] with Vercel. This allows y
|
|
|
99
110
|
| `OPENAI_PROXY_URL` | No | If you manually configure the OpenAI interface proxy, you can use this configuration item to override the default OpenAI API request base URL | `https://api.chatanywhere.cn`<br/>The default value is<br/>`https://api.openai.com` |
|
|
100
111
|
| `ACCESS_CODE` | No | Add a password to access this service, the password should be a 6-digit number or letter | `awCT74` or `e3@09!` |
|
|
101
112
|
|
|
113
|
+
### Keep Updated
|
|
114
|
+
|
|
115
|
+
If you have deployed your own project following the one-click deployment steps in the README, you might encounter constant prompts indicating "updates available". This is because Vercel defaults to creating a new project instead of forking this one, resulting in an inability to accurately detect updates. We suggest you redeploy using the following steps, [Maintaining Updates with LobeChat Self-Deployment](https://github.com/lobehub/lobe-chat/wiki/Upstream-Sync.en-US).
|
|
116
|
+
|
|
102
117
|
<div align="right">
|
|
103
118
|
|
|
104
119
|
[![][back-to-top]](#readme-top)
|
|
@@ -123,7 +138,8 @@ LobeChat provides a [self-hosted version][deploy-url] with Vercel. This allows y
|
|
|
123
138
|
|
|
124
139
|
Plugins provide a means to extend the [Function Calling][fc-url] capabilities of LobeChat. They can be used to introduce new function calls, and even new ways to render message results.
|
|
125
140
|
|
|
126
|
-
>
|
|
141
|
+
> **Note**\
|
|
142
|
+
> The plugin system is currently undergoing significant development. You can expect to see it in <https://github.com/lobehub/lobe-chat/issues/97>.
|
|
127
143
|
|
|
128
144
|
- [@lobehub/lobe-chat-plugins][lobe-chat-plugins]: This is the plugin index for LobeChat. It accesses index.json from this repository to display a list of available plugins for LobeChat to the user.
|
|
129
145
|
- [@lobehub/chat-plugin-sdk][chat-plugin-sdk]: The LobeChat Plugin SDK assists you in creating exceptional chat plugins for Lobe Chat.
|
|
@@ -166,6 +182,10 @@ $ pnpm dev
|
|
|
166
182
|
|
|
167
183
|
Contributions of all types are more than welcome, if you are interested in contributing code, feel free to check out our GitHub [Issues][issues-url] and [Projects][project-url] to get stuck in to show us what you’re made of.
|
|
168
184
|
|
|
185
|
+
[![][pr-welcome-shield]][pr-welcome-url]
|
|
186
|
+
[![][submit-agents-shield]][submit-agents-url]
|
|
187
|
+
[![][submit-plugin-shield]][submit-plugin-url]
|
|
188
|
+
|
|
169
189
|
<!-- CONTRIBUTION GROUP -->
|
|
170
190
|
|
|
171
191
|
> 📊 Total: <kbd>**5**</kbd>
|
|
@@ -208,7 +228,12 @@ Contributions of all types are more than welcome, if you are interested in contr
|
|
|
208
228
|
|
|
209
229
|
---
|
|
210
230
|
|
|
211
|
-
|
|
231
|
+
<details>
|
|
232
|
+
<summary><h4>📝 License</h4></summary>
|
|
233
|
+
|
|
234
|
+
[![][fossa-license-shield]][fossa-license-url]
|
|
235
|
+
|
|
236
|
+
</details>
|
|
212
237
|
|
|
213
238
|
Copyright © 2023 [LobeHub][profile-url]. <br />
|
|
214
239
|
This project is [MIT](./LICENSE) licensed.
|
|
@@ -234,9 +259,12 @@ This project is [MIT](./LICENSE) licensed.
|
|
|
234
259
|
[fc-url]: https://sspai.com/post/81986
|
|
235
260
|
[forks-shield]: https://img.shields.io/github/forks/lobehub/lobe-chat.svg?style=flat
|
|
236
261
|
[forks-url]: https://github.com/lobehub/lobe-chat/network/members
|
|
262
|
+
[fossa-license-shield]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Flobehub%2Flobe-chat.svg?type=large
|
|
263
|
+
[fossa-license-url]: https://app.fossa.com/projects/git%2Bgithub.com%2Flobehub%2Flobe-chat
|
|
237
264
|
[gitpod-url]: https://gitpod.io/#https://github.com/lobehub/lobe-chat
|
|
238
265
|
[issues-shield]: https://img.shields.io/github/issues/lobehub/lobe-chat.svg?style=flat
|
|
239
266
|
[issues-url]: https://img.shields.io/github/issues/lobehub/lobe-chat.svg?style=flat
|
|
267
|
+
[license-shield]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Flobehub%2Flobe-chat.svg?type=shield&issueType=license
|
|
240
268
|
[lobe-assets-github]: https://github.com/lobehub/lobe-assets
|
|
241
269
|
[lobe-chat-plugins]: https://github.com/lobehub/lobe-chat-plugins
|
|
242
270
|
[lobe-commit]: https://github.com/lobehub/lobe-commit/tree/master/packages/lobe-commit
|
|
@@ -250,6 +278,8 @@ This project is [MIT](./LICENSE) licensed.
|
|
|
250
278
|
[lobe-ui-url]: https://www.npmjs.com/package/@lobehub/ui
|
|
251
279
|
[official-shield]: https://img.shields.io/website?down_message=offline&label=🤯%20Try%20LobeChat&up_message=online&url=https%3A%2F%2Flobe-chat.vercel.app&style=for-the-badge
|
|
252
280
|
[official-url]: https://lobe-chat.vercel.app
|
|
281
|
+
[pr-welcome-shield]: https://img.shields.io/badge/🤯_pr_welcome-%E2%86%92-FEE064?style=for-the-badge
|
|
282
|
+
[pr-welcome-url]: https://github.com/lobehub/lobe-chat/pulls
|
|
253
283
|
[profile-url]: https://github.com/lobehub
|
|
254
284
|
[project-url]: https://github.com/lobehub/lobe-chat/projects
|
|
255
285
|
[release-date-shield]: https://img.shields.io/github/release-date/lobehub/lobe-chat?style=flat
|
|
@@ -258,3 +288,7 @@ This project is [MIT](./LICENSE) licensed.
|
|
|
258
288
|
[release-url]: https://www.npmjs.com/package/@lobehub/chat
|
|
259
289
|
[stargazers-shield]: https://img.shields.io/github/stars/lobehub/lobe-chat.svg?style=flat
|
|
260
290
|
[stargazers-url]: https://github.com/lobehub/lobe-chat/stargazers
|
|
291
|
+
[submit-agents-shield]: https://img.shields.io/badge/🤖/🏪_submit_agent-%E2%86%92-9DFF92?style=for-the-badge
|
|
292
|
+
[submit-agents-url]: https://github.com/lobehub/lobe-chat-agents
|
|
293
|
+
[submit-plugin-shield]: https://img.shields.io/badge/🧩/🏪_submit_plugin-%E2%86%92-50E3C2?style=for-the-badge
|
|
294
|
+
[submit-plugin-url]: https://github.com/lobehub/lobe-chat-plugins
|
|
@@ -16,6 +16,7 @@ LobeChat 是一个开源的、可扩展的([Function Calling][fc-url])高性
|
|
|
16
16
|
|
|
17
17
|
[![release][release-shield]][release-url]
|
|
18
18
|
[![releaseDate][release-date-shield]][release-date-url]
|
|
19
|
+
[![][license-shield]][fossa-license-url]
|
|
19
20
|
[![ciTest][ci-test-shield]][ci-test-url]
|
|
20
21
|
[![ciRelease][ci-release-shield]][ci-release-url] <br/>
|
|
21
22
|
[![contributors][contributors-shield]][contributors-url]
|
|
@@ -35,12 +36,21 @@ LobeChat 是一个开源的、可扩展的([Function Calling][fc-url])高性
|
|
|
35
36
|
#### TOC
|
|
36
37
|
|
|
37
38
|
- [👋🏻 开始使用 & 交流](#-开始使用--交流)
|
|
39
|
+
|
|
38
40
|
- [✨ 功能特性](#-功能特性)
|
|
41
|
+
|
|
39
42
|
- [🛳 开箱即用](#-开箱即用)
|
|
43
|
+
|
|
44
|
+
- [保持更新](#保持更新)
|
|
45
|
+
|
|
40
46
|
- [📦 生态系统](#-生态系统)
|
|
47
|
+
|
|
41
48
|
- [🧩 插件体系](#-插件体系)
|
|
49
|
+
|
|
42
50
|
- [⌨️ 本地开发](#️-本地开发)
|
|
51
|
+
|
|
43
52
|
- [🤝 参与贡献](#-参与贡献)
|
|
53
|
+
|
|
44
54
|
- [🔗 更多工具](#-更多工具)
|
|
45
55
|
|
|
46
56
|
####
|
|
@@ -70,7 +80,7 @@ LobeChat 是一个开源的、可扩展的([Function Calling][fc-url])高性
|
|
|
70
80
|
- [x] 🔒 **隐私安全**:所有数据保存在用户浏览器本地,保证用户的隐私安全;
|
|
71
81
|
- [x] 🤖 **自定义助手角色**:用户可以根据自己的需求创建、分享和调试个性化的对话助手角色,提供更加灵活和个性化的对话功能;
|
|
72
82
|
- [x] 🌐 **自定义域名**:如果用户拥有自己的域名,可以将其绑定到平台上,方便在任何地方快速访问对话助手。
|
|
73
|
-
- [
|
|
83
|
+
- [x] 🏬 **角色市场**:提供角色市场,用户可以在市场上选择自己喜欢的对话助手角色,丰富对话的内容和风格;
|
|
74
84
|
|
|
75
85
|
> **👉 Roadmap:** 你可以在 Projects 中找到我们后续的 [Roadmap][project-url] 计划
|
|
76
86
|
|
|
@@ -91,7 +101,8 @@ LobeChat 提供了 Vercel 的 [自托管版本][deploy-url]。这使你可以在
|
|
|
91
101
|
|
|
92
102
|
[![使用 Vercel 部署][deploy-button-image]][deploy-url]
|
|
93
103
|
|
|
94
|
-
>
|
|
104
|
+
> **Note**\
|
|
105
|
+
> 本项目提供了一些额外的配置项,使用环境变量进行设置:
|
|
95
106
|
|
|
96
107
|
| 环境变量 | 类型 | 描述 | 示例 |
|
|
97
108
|
| ------------------ | ---- | -------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
|
|
@@ -99,6 +110,10 @@ LobeChat 提供了 Vercel 的 [自托管版本][deploy-url]。这使你可以在
|
|
|
99
110
|
| `OPENAI_PROXY_URL` | 可选 | 如果你手动配置了 OpenAI 接口代理,可以使用此配置项来覆盖默认的 OpenAI API 请求基础 URL | `https://api.chatanywhere.cn`<br/>默认值:<br/>`https://api.openai.com` |
|
|
100
111
|
| `ACCESS_CODE` | 可选 | 添加访问此服务的密码,密码应为 6 位数字或字母 | `awCT74` 或 `e3@09!` |
|
|
101
112
|
|
|
113
|
+
### 保持更新
|
|
114
|
+
|
|
115
|
+
如果你根据 README 中的一键部署步骤部署了自己的项目,你可能会发现总是被提示“有可用更新”。这是因为 Vercel 默认为你创建新项目而非 fork 本项目,这将导致无法准确检测更新。我们建议按照 [LobeChat 自部署保持更新](https://github.com/lobehub/lobe-chat/wiki/Upstream-Sync.zh-CN) 步骤重新部署。
|
|
116
|
+
|
|
102
117
|
<div align="right">
|
|
103
118
|
|
|
104
119
|
[![][back-to-top]](#readme-top)
|
|
@@ -123,7 +138,8 @@ LobeChat 提供了 Vercel 的 [自托管版本][deploy-url]。这使你可以在
|
|
|
123
138
|
|
|
124
139
|
插件提供了扩展 LobeChat [Function Calling][fc-url] 能力的方法。可以用于引入新的 Function Calling,甚至是新的消息结果渲染方式。
|
|
125
140
|
|
|
126
|
-
>
|
|
141
|
+
> **Note**\
|
|
142
|
+
> 插件系统目前正在进行重大开发。您可以在 <https://github.com/lobehub/lobe-chat/issues/97> 中了解更多信息。
|
|
127
143
|
|
|
128
144
|
- [@lobehub/lobe-chat-plugins][lobe-chat-plugins]:这是 LobeChat 的插件索引。它从该仓库的 index.json 中获取插件列表并显示给用户。
|
|
129
145
|
- [@lobehub/chat-plugin-sdk][chat-plugin-sdk]:LobeChat 插件 SDK 可帮助您创建出色的 Lobe Chat 插件。
|
|
@@ -166,6 +182,10 @@ $ pnpm dev
|
|
|
166
182
|
|
|
167
183
|
我们非常欢迎各种形式的贡献。如果你对贡献代码感兴趣,可以查看我们的 GitHub [Issues][issues-url] 和 [Projects][project-url],大展身手,向我们展示你的奇思妙想。
|
|
168
184
|
|
|
185
|
+
[![][pr-welcome-shield]][pr-welcome-url]
|
|
186
|
+
[![][submit-agents-shield]][submit-agents-url]
|
|
187
|
+
[![][submit-plugin-shield]][submit-plugin-url]
|
|
188
|
+
|
|
169
189
|
<!-- CONTRIBUTION GROUP -->
|
|
170
190
|
|
|
171
191
|
> 📊 Total: <kbd>**5**</kbd>
|
|
@@ -208,7 +228,12 @@ $ pnpm dev
|
|
|
208
228
|
|
|
209
229
|
---
|
|
210
230
|
|
|
211
|
-
|
|
231
|
+
<details>
|
|
232
|
+
<summary><h4>📝 License</h4></summary>
|
|
233
|
+
|
|
234
|
+
[![][fossa-license-shield]][fossa-license-url]
|
|
235
|
+
|
|
236
|
+
</details>
|
|
212
237
|
|
|
213
238
|
Copyright © 2023 [LobeHub][profile-url]. <br />
|
|
214
239
|
This project is [MIT](./LICENSE) licensed.
|
|
@@ -234,9 +259,12 @@ This project is [MIT](./LICENSE) licensed.
|
|
|
234
259
|
[fc-url]: https://sspai.com/post/81986
|
|
235
260
|
[forks-shield]: https://img.shields.io/github/forks/lobehub/lobe-chat.svg?style=flat
|
|
236
261
|
[forks-url]: https://github.com/lobehub/lobe-chat/network/members
|
|
262
|
+
[fossa-license-shield]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Flobehub%2Flobe-chat.svg?type=large
|
|
263
|
+
[fossa-license-url]: https://app.fossa.com/projects/git%2Bgithub.com%2Flobehub%2Flobe-chat
|
|
237
264
|
[gitpod-url]: https://gitpod.io/#https://github.com/lobehub/lobe-chat
|
|
238
265
|
[issues-shield]: https://img.shields.io/github/issues/lobehub/lobe-chat.svg?style=flat
|
|
239
266
|
[issues-url]: https://img.shields.io/github/issues/lobehub/lobe-chat.svg?style=flat
|
|
267
|
+
[license-shield]: https://app.fossa.com/api/projects/git%2Bgithub.com%2Flobehub%2Flobe-chat.svg?type=shield&issueType=license
|
|
240
268
|
[lobe-assets-github]: https://github.com/lobehub/lobe-assets
|
|
241
269
|
[lobe-chat-plugins]: https://github.com/lobehub/lobe-chat-plugins
|
|
242
270
|
[lobe-commit]: https://github.com/lobehub/lobe-commit/tree/master/packages/lobe-commit
|
|
@@ -250,6 +278,8 @@ This project is [MIT](./LICENSE) licensed.
|
|
|
250
278
|
[lobe-ui-url]: https://www.npmjs.com/package/@lobehub/ui
|
|
251
279
|
[official-shield]: https://img.shields.io/website?down_message=offline&label=🤯%20Try%20LobeChat&up_message=online&url=https%3A%2F%2Flobe-chat.vercel.app&style=for-the-badge
|
|
252
280
|
[official-url]: https://lobe-chat.vercel.app
|
|
281
|
+
[pr-welcome-shield]: https://img.shields.io/badge/🤯_pr_welcome-%E2%86%92-FEE064?style=for-the-badge
|
|
282
|
+
[pr-welcome-url]: https://github.com/lobehub/lobe-chat/pulls
|
|
253
283
|
[profile-url]: https://github.com/lobehub
|
|
254
284
|
[project-url]: https://github.com/lobehub/lobe-chat/projects
|
|
255
285
|
[release-date-shield]: https://img.shields.io/github/release-date/lobehub/lobe-chat?style=flat
|
|
@@ -258,3 +288,7 @@ This project is [MIT](./LICENSE) licensed.
|
|
|
258
288
|
[release-url]: https://www.npmjs.com/package/@lobehub/chat
|
|
259
289
|
[stargazers-shield]: https://img.shields.io/github/stars/lobehub/lobe-chat.svg?style=flat
|
|
260
290
|
[stargazers-url]: https://github.com/lobehub/lobe-chat/stargazers
|
|
291
|
+
[submit-agents-shield]: https://img.shields.io/badge/🤖/🏪_submit_agent-%E2%86%92-9DFF92?style=for-the-badge
|
|
292
|
+
[submit-agents-url]: https://github.com/lobehub/lobe-chat-agents
|
|
293
|
+
[submit-plugin-shield]: https://img.shields.io/badge/🧩/🏪_submit_plugin-%E2%86%92-50E3C2?style=for-the-badge
|
|
294
|
+
[submit-plugin-url]: https://github.com/lobehub/lobe-chat-plugins
|
package/docs/Home.md
CHANGED
|
@@ -14,6 +14,12 @@ LobeChat is a open-source, extensible (Function Calling), high-performance chatb
|
|
|
14
14
|
|
|
15
15
|
<br/>
|
|
16
16
|
|
|
17
|
+
### 🤯 LobeChat
|
|
18
|
+
|
|
19
|
+
- [Upstream Sync](Upstream-Sync.en-US)
|
|
20
|
+
- [English](Upstream-Sync.en-US)
|
|
21
|
+
- [简体中文](Upstream-Sync.zh-CN)
|
|
22
|
+
|
|
17
23
|
## 🤖 Agents
|
|
18
24
|
|
|
19
25
|
- [Agent Index](https://github.com/lobehub/lobe-chat-agents)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Maintaining Updates with LobeChat Self-Deployment
|
|
2
|
+
|
|
3
|
+
If you have deployed your own project following the one-click deployment steps in the README, you might encounter constant prompts indicating "updates available". This is because Vercel defaults to creating a new project instead of forking this one, resulting in an inability to accurately detect updates. We suggest you redeploy using the following steps:
|
|
4
|
+
|
|
5
|
+
- Remove the original repository;
|
|
6
|
+
- Use the <kbd>Fork</kbd> button at the top right corner of the page to fork this project;
|
|
7
|
+
- Re-select and deploy on `Vercel`.
|
|
8
|
+
|
|
9
|
+
## Enabling Automatic Updates
|
|
10
|
+
|
|
11
|
+
> **👉🏻 Note:** If you encounter an error executing Upstream Sync, manually Sync Fork once
|
|
12
|
+
|
|
13
|
+
Once you have forked the project, due to Github restrictions, you will need to manually enable Workflows on the Actions page of your forked project and activate the Upstream Sync Action. Once enabled, you can set up hourly automatic updates.
|
|
14
|
+
|
|
15
|
+

|
|
16
|
+

|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# LobeChat 自部署保持更新
|
|
2
|
+
|
|
3
|
+
如果你根据 README 中的一键部署步骤部署了自己的项目,你可能会发现总是被提示“有可用更新”。这是因为 Vercel 默认为你创建新项目而非 fork 本项目,这将导致无法准确检测更新。我们建议按照以下步骤重新部署:
|
|
4
|
+
|
|
5
|
+
- 删除原有的仓库;
|
|
6
|
+
- 使用页面右上角的 <kbd>Fork</kbd> 按钮,Fork 本项目;
|
|
7
|
+
- 在 `Vercel` 上重新选择并部署。
|
|
8
|
+
|
|
9
|
+
## 启动自动更新
|
|
10
|
+
|
|
11
|
+
> **👉🏻 提示:** 如果你在执行 `Upstream Sync` 时遇到错误,请手动执再行一次
|
|
12
|
+
|
|
13
|
+
当你 Fork 了项目后,由于 Github 的限制,你需要手动在你 Fork 的项目的 Actions 页面启用 Workflows,并启动 Upstream Sync Action。启用后,你可以设置每小时进行一次自动更新。
|
|
14
|
+
|
|
15
|
+

|
|
16
|
+

|
package/docs/_Sidebar.md
CHANGED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"addAgent": "Add Assistant",
|
|
3
|
+
"search": {
|
|
4
|
+
"placeholder": "Search assistant name, description or keywords..."
|
|
5
|
+
},
|
|
6
|
+
"sidebar": {
|
|
7
|
+
"comment": "Comments",
|
|
8
|
+
"prompt": "Prompts",
|
|
9
|
+
"title": "Assistant Details"
|
|
10
|
+
},
|
|
11
|
+
"submitAgent": "Submit Assistant"
|
|
12
|
+
}
|
|
@@ -84,7 +84,8 @@
|
|
|
84
84
|
"list": {
|
|
85
85
|
"item": {
|
|
86
86
|
"local.config": "Configuration",
|
|
87
|
-
"local.title": "Local"
|
|
87
|
+
"local.title": "Local",
|
|
88
|
+
"deprecated.title": "Deleted"
|
|
88
89
|
}
|
|
89
90
|
},
|
|
90
91
|
"loading": {
|
|
@@ -113,5 +114,13 @@
|
|
|
113
114
|
"title": "Weather Data for the Next 7 Days ({{city}})",
|
|
114
115
|
"updateAt": "Last Updated"
|
|
115
116
|
},
|
|
116
|
-
"responseData": "Response Data"
|
|
117
|
+
"responseData": "Response Data",
|
|
118
|
+
"settings": {
|
|
119
|
+
"indexUrl": {
|
|
120
|
+
"title": "Marketplace Index",
|
|
121
|
+
"tooltip": "Editing is not supported at the moment"
|
|
122
|
+
},
|
|
123
|
+
"modalDesc": "After configuring the address of the plugin marketplace, you can use a custom plugin marketplace",
|
|
124
|
+
"title": "Configure Plugin Marketplace"
|
|
125
|
+
}
|
|
117
126
|
}
|
|
@@ -20,6 +20,64 @@
|
|
|
20
20
|
"session": "Session Settings",
|
|
21
21
|
"sessionWithName": "Session Settings · {{name}}"
|
|
22
22
|
},
|
|
23
|
+
"llm": {
|
|
24
|
+
"AzureOpenAI": {
|
|
25
|
+
"endpoint": {
|
|
26
|
+
"desc": "This value can be found in the Keys and Endpoints section when checking out a resource on an Azure site.",
|
|
27
|
+
"placeholder": "https://docs-test-001.openai.azure.com",
|
|
28
|
+
"title": "Azure API URL"
|
|
29
|
+
},
|
|
30
|
+
"models": {
|
|
31
|
+
"desc": "Supported models",
|
|
32
|
+
"title": "List of models"
|
|
33
|
+
},
|
|
34
|
+
"title": "Azure OpenAI Settings",
|
|
35
|
+
"token": {
|
|
36
|
+
"desc": "This value can be found in the Keys and Endpoints section when checking out a resource on an Azure site. You can use KEY1 or KEY2",
|
|
37
|
+
"placeholder": "Azure API Key",
|
|
38
|
+
"title": "API Key"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"OpenAI": {
|
|
42
|
+
"azureApiVersion": {
|
|
43
|
+
"desc": "Azure API version in YYYY-MM-DD format, check [latest version](https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference#chat-completions)",
|
|
44
|
+
"fetch": "Get list",
|
|
45
|
+
"title": "Azure API version"
|
|
46
|
+
},
|
|
47
|
+
"check": {
|
|
48
|
+
"button": "Check",
|
|
49
|
+
"desc": "Check that the Api Key and proxy server address are filled in correctly.",
|
|
50
|
+
"pass": "Connection successful",
|
|
51
|
+
"title": "Checking connectivity"
|
|
52
|
+
},
|
|
53
|
+
"endpoint": {
|
|
54
|
+
"desc": "Must contain http(s):// in addition to the default address.",
|
|
55
|
+
"placeholder": "https://api.openai.com/v1",
|
|
56
|
+
"title": "API proxy address"
|
|
57
|
+
},
|
|
58
|
+
"models": {
|
|
59
|
+
"count": "Total supported models: {{count}}",
|
|
60
|
+
"desc": "Supported models",
|
|
61
|
+
"fetch": "Fetching the list of models",
|
|
62
|
+
"notSupport": "Azure OpenAI currently does not support viewing lists of models",
|
|
63
|
+
"notSupportTip": "Make sure that the deployment name matches the model name",
|
|
64
|
+
"refetch": "Fetching the list of models",
|
|
65
|
+
"title": "List of models"
|
|
66
|
+
},
|
|
67
|
+
"title": "OpenAI Settings",
|
|
68
|
+
"token": {
|
|
69
|
+
"desc": "Use your own OpenAI key",
|
|
70
|
+
"placeholder": "OpenAI API Key",
|
|
71
|
+
"title": "API Key"
|
|
72
|
+
},
|
|
73
|
+
"useAzure": {
|
|
74
|
+
"desc": "Using OpenAI services from Azure",
|
|
75
|
+
"fetch": "Get list",
|
|
76
|
+
"title": "Azure OpenAI"
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
"waitingForMore": "<1>Access to other models is planned</1>, so stay tuned ✨"
|
|
80
|
+
},
|
|
23
81
|
"settingAgent": {
|
|
24
82
|
"avatar": {
|
|
25
83
|
"title": "Avatar"
|
|
@@ -131,7 +189,9 @@
|
|
|
131
189
|
"title": "Plugin List",
|
|
132
190
|
"add": "Add",
|
|
133
191
|
"addTooltip": "Add custom plugin",
|
|
134
|
-
"config": "{{id}} Plugin Configuration"
|
|
192
|
+
"config": "{{id}} Plugin Configuration",
|
|
193
|
+
"clearDeprecated": "Remove Deprecated Plugins",
|
|
194
|
+
"settings": "Plugin Marketplace Settings"
|
|
135
195
|
},
|
|
136
196
|
"settingSystem": {
|
|
137
197
|
"accessCode": {
|
|
@@ -170,6 +230,7 @@
|
|
|
170
230
|
},
|
|
171
231
|
"tab": {
|
|
172
232
|
"agent": "Default Assistant",
|
|
173
|
-
"common": "Common Settings"
|
|
233
|
+
"common": "Common Settings",
|
|
234
|
+
"llm": "Custom LLM API"
|
|
174
235
|
}
|
|
175
236
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"addAgent": "Добавить агента",
|
|
3
|
+
"search": {
|
|
4
|
+
"placeholder": "Введите название или ключевое слово помощника..."
|
|
5
|
+
},
|
|
6
|
+
"sidebar": {
|
|
7
|
+
"comment": "Комментарии",
|
|
8
|
+
"prompt": "Подсказка",
|
|
9
|
+
"title": "Детали агента"
|
|
10
|
+
},
|
|
11
|
+
"submitAgent": "Отправить агента"
|
|
12
|
+
}
|