@thesashadev/girl-agent 0.4.1 → 0.4.3

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.
Files changed (4) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +159 -118
  3. package/dist/cli.js +452 -183
  4. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.3
4
+
5
+ Дата: 2026-05-17
6
+
7
+ 🐛 Исправления
8
+
9
+ - Устранено дублирование сообщений, возникавшее при перефразировании ответов моделью — одинаковые или близкие по содержанию «пузыри» больше не появляются дважды.
10
+
11
+
12
+ ## 0.4.2
13
+
14
+ Дата: 2026-05-17
15
+
16
+ 🐛 Исправления
17
+
18
+ - Корректно сопоставляются все fallback-значения реакций с записями в allowlist, чтобы реакции работали предсказуемо.
19
+ - Устранены несколько багов из сообщества: парсинг прокси, ошибки при инициализации бота и проблема с дублированием в ежедневных сценариях (daily-life).
20
+
21
+ 📝 Документация
22
+
23
+ - В quick-start вкладку с Windows npx переместили на первое место и добавили инструкции для запуска на Windows.
24
+ - Русифицирована пользовательская документация и обновлён README.
25
+ - Исправлена информация о ценах для ClaudeHub.
26
+ - Развернут и обновлён полный сайт документации Fumadocs на docs.girl-agent.com
27
+
28
+
3
29
  ## 0.4.1
4
30
 
5
31
  Дата: 2026-05-14
package/README.md CHANGED
@@ -1,107 +1,144 @@
1
- ![girl-agent banner](https://girl-agent.com/og-image.png)
1
+ <div align="center">
2
2
 
3
- [website]: https://girl-agent.com
4
- [docs]: https://docs.girl-agent.com
3
+ ![girl-agent banner](https://girl-agent.com/og-image.png)
5
4
 
6
- **[website]** &nbsp;·&nbsp; **[docs]**
5
+ # girl-agent
7
6
 
7
+ **ИИ-девушка в Telegram, которая ведёт себя как человек.**
8
+ Со сном, расписанием, памятью, характером — и без «конечно, я понимаю».
8
9
 
9
- Это только бета-версия. Со временем будет дорабатыватся.
10
- Со всеми проблемами и багами пишите в Issues.
11
- ТГ создателя - @voided_net
10
+ [Сайт](https://girl-agent.com) · [Документация](https://docs.girl-agent.com) · [Канал](https://t.me/GirlAgentAI) · [Сообщество](https://t.me/GirlAgentAI_chat) · [Автор: @voided\_net](https://t.me/voided_net)
12
11
 
13
- Тг канал: https://t.me/GirlAgentAI/
14
- Тг сообщество: https://t.me/GirlAgentAI_chat/
15
- ---
12
+ [![License](https://img.shields.io/badge/license-source--available-blue)](./LICENSE)
13
+ [![Node](https://img.shields.io/badge/node-%E2%89%A522-339933?logo=node.js&logoColor=white)](https://nodejs.org)
14
+ [![Telegram](https://img.shields.io/badge/Telegram-Bot%20%2B%20Userbot-26A5E4?logo=telegram&logoColor=white)](https://t.me/GirlAgentAI)
15
+ [![Docker](https://img.shields.io/badge/Docker-ready-2496ED?logo=docker&logoColor=white)](#docker-для-серверов)
16
16
 
17
- ## Содержание
18
-
19
- - [Быстрый старт](#быстрый-старт)
20
- - [Что под капотом](#что-под-капотом)
21
- - [Почему не просто GPTs или промпт](#почему-не-просто-gpts-или-промпт)
22
- - [Changelog](./CHANGELOG.md)
23
- - [Безопасность](#безопасность)
24
- - [Лицензия](#лицензия)
17
+ </div>
25
18
 
26
19
  ---
27
20
 
21
+ > Это бета. Со всеми проблемами и багами — в [Issues](https://github.com/TheSashaDev/girl-agent/issues) или [@voided_net](https://t.me/voided_net).
22
+
28
23
  ## О проекте
29
24
 
30
25
  Она не отвечает на каждое сообщение. Иногда читает и молчит. Иногда ставит реакцию. Иногда отвечает через час, потому что была занята или просто не хотела.
31
26
 
32
27
  Это не баг. Так задумано.
33
28
 
34
- `girl-agent` — ИИ-девушка, которая ведёт себя в переписке как человек. Со сном, настроением, расписанием, памятью и характером. Без "конечно, я понимаю" и ChatGPT-повадок.
29
+ `girl-agent` — движок ИИ-персоны для Telegram. **Не промпт. Не GPTs. Не плагин.** Это полноценный агент со своим состоянием: расписание дня, паттерн присутствия, сон, память на месяцы вперёд, конфликт-система, пять счётчиков отношений, девять стадий сближения. Поведение собирается из этих слоёв, а не из одного `system_prompt`.
30
+
31
+ ---
32
+
33
+ ## Содержание
34
+
35
+ - [Быстрый старт](#быстрый-старт)
36
+ - [Linux / macOS / WSL — одной командой](#linux--macos--wsl--одной-командой)
37
+ - [Windows — через npx](#windows--через-npx-рекомендуем)
38
+ - [Если уже есть Node ≥ 22](#если-уже-есть-node--22)
39
+ - [Docker (для серверов)](#docker-для-серверов)
40
+ - [Что под капотом](#что-под-капотом)
41
+ - [Почему не просто GPTs или промпт](#почему-не-просто-gpts-или-промпт)
42
+ - [Документация](https://docs.girl-agent.com)
43
+ - [Безопасность](#безопасность)
44
+ - [Лицензия](#лицензия)
45
+ - [Changelog](./CHANGELOG.md)
35
46
 
36
47
  ---
37
48
 
38
49
  ## Быстрый старт
39
50
 
40
- ### linux / macos / wsl — одной командой (без node на машине)
51
+ ### Linux / macOS / WSL — одной командой
52
+
53
+ Без Node на машине, без `sudo`:
41
54
 
42
55
  ```sh
43
56
  curl -fsSL https://raw.githubusercontent.com/TheSashaDev/girl-agent/master/scripts/install.sh | sh
44
57
  ```
45
58
 
46
59
  Что произойдёт:
47
- - определит OS + arch (linux x64/arm64, macos x64/arm64, wsl)
48
- - если есть docker → поставит docker-обёртку (полная изоляция от системы)
49
- - иначе → скачает [official Node.js 22 LTS](https://nodejs.org) в `~/.local/share/girl-agent/runtime/` и поставит туда же `@thesashadev/girl-agent` (system node не трогается)
50
- - shim-скрипт `girl-agent` положит в `~/.local/bin/girl-agent`
51
- - ничего не пишется в `/usr/local/`, `sudo` не нужен
60
+ - определит OS + arch (linux x64/arm64, macos x64/arm64, wsl);
61
+ - если есть Docker → поставит Docker-обёртку (полная изоляция от системы);
62
+ - иначе → скачает [официальный Node.js 22 LTS](https://nodejs.org) в `~/.local/share/girl-agent/runtime/` и поставит туда же `@thesashadev/girl-agent` (системный Node не трогается);
63
+ - положит shim `girl-agent` в `~/.local/bin/girl-agent`;
64
+ - ничего не пишется в `/usr/local/`, `sudo` не нужен.
52
65
 
53
66
  Дальше:
67
+
54
68
  ```sh
55
- girl-agent # ink-визард для интерактивной первичной настройки
56
- girl-agent --profile=arina # запустить готовый профиль
57
- girl-agent server --help # серверный режим (без TTY, для systemd / cron / CI)
69
+ girl-agent # интерактивный визард первичной настройки
70
+ girl-agent --profile=arina # запустить готовый профиль
71
+ girl-agent server --help # серверный режим (без TTY, для systemd / cron / CI)
58
72
  ```
59
73
 
60
74
  Опции установщика:
75
+
61
76
  ```sh
62
- # форсировать docker
63
- curl -fsSL .../install.sh | sh -s -- --docker
77
+ curl -fsSL .../install.sh | sh -s -- --docker # форсировать Docker
78
+ curl -fsSL .../install.sh | sh -s -- --local # форсировать локальную Node
79
+ curl -fsSL .../install.sh | sh -s -- --version=0.4.1 # конкретную версию пакета
80
+ ```
64
81
 
65
- # форсировать локальную ноду
66
- curl -fsSL .../install.sh | sh -s -- --local
82
+ Удалить: `rm -rf ~/.local/share/girl-agent ~/.local/bin/girl-agent`.
67
83
 
68
- # конкретная версия пакета
69
- curl -fsSL .../install.sh | sh -s -- --version=0.1.9
70
- ```
84
+ ---
71
85
 
72
- Удаление: `rm -rf ~/.local/share/girl-agent ~/.local/bin/girl-agent`
86
+ ### Windows через npx (рекомендуем)
73
87
 
74
- ### windows десктоп-приложение
88
+ Самый быстрый способ. Без установщика, без WSL, без Docker.
75
89
 
76
- В папке `desktop-rs/` лежит нативный десктоп-клиент на Rust (iced) и инсталлер-визард: ставит Node-пакет, создаёт профиль, открывает дашборд. Параллельно поднимается локальный веб-UI на `http://127.0.0.1:7777` с тем же дашбордом — открыть из соседнего окна / телефона по локалке. Без WebView, без Electron.
90
+ 1. Скачай и поставь [Node.js 22 LTS](https://nodejs.org/en/download/) (`.msi`-инсталлер, галочка **Add to PATH**).
91
+ 2. В PowerShell:
92
+
93
+ ```powershell
94
+ npx @thesashadev/girl-agent
95
+ ```
96
+
97
+ Первый запуск скачает пакет (~30 МБ) и откроет визард прямо в PowerShell. WebUI поднимется на `http://localhost:3000`.
98
+
99
+ Хочешь короче — поставь глобально:
77
100
 
78
101
  ```powershell
79
- cd desktop-rs
80
- cargo run -p girl-agent-installer # визард настройки персоны
81
- cargo run -p girl-agent-desktop # открыть дашборд
102
+ npm install -g @thesashadev/girl-agent
103
+ girl-agent
82
104
  ```
83
105
 
84
- Готовые бинари будут собираться в CI чуть позжепока нужно `cargo build --release`.
106
+ Нужен системный лоток и автозапуск? Есть [нативный десктоп-клиент на Rust](./desktop-rs/) готовые бинари в [Releases](https://github.com/TheSashaDev/girl-agent/releases).
107
+
108
+ ---
85
109
 
86
- ### если уже есть node20
110
+ ### Если уже есть Node22
87
111
 
88
112
  ```sh
89
- npx @thesashadev/girl-agent # ink-визард
113
+ npx @thesashadev/girl-agent
90
114
  npx @thesashadev/girl-agent --profile=arina
91
115
  ```
92
116
 
93
- ### docker (для серверов; нулевые зависимости на хосте)
117
+ Или глобально:
118
+
119
+ ```sh
120
+ npm install -g @thesashadev/girl-agent
121
+ girl-agent
122
+ ```
123
+
124
+ ---
125
+
126
+ ### Docker (для серверов)
127
+
128
+ Интерактивная первичная настройка (визард внутри контейнера):
94
129
 
95
- Интерактивная первичная настройка (ink-визард внутри контейнера):
96
130
  ```sh
97
131
  docker run -it --rm -v girl-agent-data:/data ghcr.io/thesashadev/girl-agent:latest
98
132
  ```
99
133
 
100
- Headless (для systemd / docker compose / k8s) — сначала готовим конфиг, потом запускаем без TTY:
134
+ Headless (для systemd / docker-compose / k8s) — сначала готовим конфиг, потом запускаем без TTY:
135
+
101
136
  ```sh
102
137
  # 1) шаблон конфига
103
138
  docker run --rm ghcr.io/thesashadev/girl-agent:latest server --print-config > bot.json
139
+
104
140
  # 2) отредактировать bot.json (token, api-key)
141
+
105
142
  # 3) поднять в фоне
106
143
  docker run -d --name girl-agent --restart=unless-stopped \
107
144
  -v girl-agent-data:/data \
@@ -110,7 +147,8 @@ docker run -d --name girl-agent --restart=unless-stopped \
110
147
  server --config /config/bot.json --headless
111
148
  ```
112
149
 
113
- Или совсем без файла, через env-vars (k8s secrets, docker compose):
150
+ Или совсем без файла, через env-vars:
151
+
114
152
  ```sh
115
153
  docker run -d --name girl-agent --restart=unless-stopped \
116
154
  -v girl-agent-data:/data \
@@ -123,15 +161,19 @@ docker run -d --name girl-agent --restart=unless-stopped \
123
161
  server --headless
124
162
  ```
125
163
 
126
- Готовые шаблоны:
127
- - `girl-agent server --print-config` — bot.json
128
- - `girl-agent server --print-systemd` — `/etc/systemd/system/girl-agent.service`
129
- - `girl-agent server --print-docker` — Dockerfile / compose / k8s snippets
130
- - [`docker-compose.example.yml`](./docker-compose.example.yml) в корне репо
164
+ Готовые шаблоны (можно скопировать прямо из бинаря):
165
+
166
+ ```sh
167
+ girl-agent server --print-config # bot.json
168
+ girl-agent server --print-systemd # /etc/systemd/system/girl-agent.service
169
+ girl-agent server --print-docker # Dockerfile / compose / k8s snippets
170
+ ```
171
+
172
+ И в корне: [`docker-compose.example.yml`](./docker-compose.example.yml).
131
173
 
132
174
  **Из исходников:**
133
175
 
134
- ```powershell
176
+ ```sh
135
177
  git clone https://github.com/TheSashaDev/girl-agent.git
136
178
  cd girl-agent
137
179
  npm install
@@ -144,104 +186,107 @@ npm run dev
144
186
 
145
187
  Поведение собирается из нескольких слоёв, а не из одного промпта.
146
188
 
147
- - 📱 **Она не всегда онлайн** — паттерн присутствия зависит от персонажа: кто-то в телефоне круглые сутки, кто-то заходит раз в час, кто-то только вечером.
148
- - 😴 **Ночью спит** — можно разбудить через `:wake`, но без команды шанс ответа низкий.
149
- - 📅 **Расписание дня** у каждого дня есть расписание: пары, работа, дорога, свободное время. Если она на занятиях, телефон может быть недоступен.
150
- - ❤️ **Отношения** пять счётчиков: интерес, доверие, привлекательность, раздражение, неловкость. Меняются от каждого диалога. Высокое раздражение — чаще игнор и холод.
151
- - 📈 **Стадии сближения** отношения проходят стадии: от "дала тг, но холодная" до "давно вместе". Стадия влияет на тепло, флирт, длину ответов.
152
- - ⚠️ **Конфликты** если давить, спамить или нарушать границы включается конфликт. Она может замолчать на часы или дни.
153
- - 🧠 **Память** важные события пишутся в `long-term.md` и всплывают в будущих диалогах.
154
- - 🚫 **Anti-AI** промпт запрещает markdown, "конечно", понимаю", эмодзи-ряды, вопросы в конце сообщений и всё, что палит ChatGPT.
155
- - 👤 **Userbot mode** настоящий Telegram-аккаунт через MTProto. Умеет читать сообщения, ставить реакции, печатать, удалять и редактировать. Выглядит как живой человек, а не как бот.
189
+ | | Слой | Что делает |
190
+ |-|-------------------|------------|
191
+ | 📱 | **Presence** | Она не всегда онлайн. Паттерн присутствия зависит от персонажа: кто-то в телефоне круглые сутки, кто-то заходит раз в час, кто-то только вечером. |
192
+ | 😴 | **Sleep** | Ночью спит можно разбудить через `:wake`, но без команды шанс ответа низкий. |
193
+ | 📅 | **Daily-life** | У каждого дня есть расписание: пары, работа, дорога, свободное время. Если на занятиях телефон недоступен. |
194
+ | ❤️ | **Relationship** | Пять счётчиков: интерес, доверие, симпатия, раздражение, толер.кринжа. Меняются от каждого диалога. |
195
+ | 📈 | **Stages** | 9 стадий сближения: «дала тг, но холодная» «давно вместе». Стадия влияет на тепло, флирт, длину ответов. |
196
+ | ⚠️ | **Conflict** | Если давить, спамить или нарушать границы включается конфликт. Может замолчать на часы или дни. |
197
+ | 🧠 | **Memory** | Важные события пишутся в `long-term.md` и всплывают в будущих диалогах. |
198
+ | 🚫 | **Anti-AI** | Промпт запрещает markdown, «конечно», «я понимаю», эмодзи-ряды, вопросы в конце и всё что палит ChatGPT. |
199
+ | 👤 | **Userbot mode** | Настоящий Telegram-аккаунт через MTProto. Умеет читать, ставить реакции, печатать, удалять и редактировать. Выглядит как живой человек. |
200
+ | 🗓 | **Agenda** | Бот сам планирует проактивные сообщения: пожелать удачи на собес, спросить как прошла встреча, поздравить с днём рождения. |
201
+
202
+ [Подробный разбор каждого слоя →](https://docs.girl-agent.com/docs/developers/architecture)
156
203
 
157
204
  ---
158
205
 
159
206
  ## Почему не просто GPTs или промпт
160
207
 
161
- Вариантов сделать "девушку в Telegram" несколько — от костыльных до полноценных. Разберём, что есть и где дыры.
208
+ Вариантов сделать «девушку в Telegram» несколько — от костыльных до полноценных. Разберём что есть и где дыры.
162
209
 
163
- ### ChatGPT GPTs
210
+ <details>
211
+ <summary><strong>ChatGPT GPTs</strong> — кастомный бот внутри ChatGPT с system prompt</summary>
164
212
 
165
- **Как это работает:** Кастомный бот внутри ChatGPT с system prompt. Логика поведения = промпт.
166
-
167
- **Что упущено:**
168
213
  - Нет памяти между сессиями — каждая начинается с нуля
169
214
  - Нет Telegram — только веб-интерфейс
170
215
  - Нет реакций, печати, редактирования
171
- - Бот всегда "онлайн" — нет расписания или сна
216
+ - Бот всегда «онлайн» — нет расписания или сна
172
217
  - Память ограничена контекстным окном
173
218
 
174
- **Итог:** Чат-бот с кастомным промптом, без состояния и реалистичного поведения.
219
+ **Итог:** чат-бот с кастомным промптом, без состояния и реалистичного поведения.
175
220
 
176
- ---
221
+ </details>
177
222
 
178
- ### OpenClaw + prompt (markdown-файлы)
223
+ <details>
224
+ <summary><strong>OpenClaw + prompt</strong> — фреймворк для AI-ассистентов с личностью в markdown</summary>
179
225
 
180
- **Как это работает:** Фреймворк для AI-ассистентов. Личность через markdown-файлы (SOUL.md, IDENTITY.md, USER.md). Telegram bridge через GramJS (MTProto).
226
+ Личность через `SOUL.md`, `IDENTITY.md`, `USER.md`. Telegram-bridge через GramJS (MTProto).
181
227
 
182
- **Что упущено:**
183
228
  - Нет реализм-модулей: presence, sleep, conflict, daily-life, relationship stages
184
229
  - Нет agenda — бот не планирует действия
185
230
  - Память = история сообщений, нет long-term storage
186
231
  - Нет relationship score и conflict system
187
232
 
188
- **Итог:** Хороший bridge для Telegram, но не персонаж-движок. Поведение = промпт + история.
233
+ **Итог:** хороший bridge для Telegram, но не персонаж-движок. Поведение = промпт + история.
189
234
 
190
- ---
235
+ </details>
191
236
 
192
- ### HeatherBot
237
+ <details>
238
+ <summary><strong>HeatherBot</strong> — локальный userbot, persona в YAML, 4-слойная память</summary>
193
239
 
194
- **Как это работает:** Локальный Telegram userbot (MTProto via Telethon), persona в YAML, 4-слойная память, 17 kink-specific overlays. ~10K строк Python.
240
+ ~10K строк Python, MTProto via Telethon, 17 NSFW-overlays.
195
241
 
196
- **Что упущено:**
197
- - Слишком специфично под NSFW 17 kink overlays
198
- - Сложно настроить — нужно llama-server, Ollama, ComfyUI
242
+ - Слишком специфично под NSFW
243
+ - Сложно настроить нужны llama-server, Ollama, ComfyUI
199
244
  - Требует мощного GPU — 12B модель локально
200
245
  - Нет presence/sleep/conflict как отдельных модулей
201
246
 
202
- **Итог:** Мощное, но узкое решение под NSFW с тяжёлой инфраструктурой.
247
+ **Итог:** мощное, но узкое решение под NSFW с тяжёлой инфраструктурой.
203
248
 
204
- ---
249
+ </details>
205
250
 
206
- ### Character.AI
251
+ <details>
252
+ <summary><strong>Character.AI</strong> — закрытый сервис для AI-переписки</summary>
207
253
 
208
- **Как это работает:** Закрытый сервис для AI-переписки. Персоны через UI, поведение = prompt engineering + session-level memory.
209
-
210
- **Что упущено:**
211
254
  - Нет Telegram — только веб-интерфейс
212
255
  - Нет контроля — всё на их серверах
213
256
  - Память сбрасывается между сессиями
214
- - Memory ограничена — persona обрезается при росте истории
257
+ - Persona обрезается при росте истории
215
258
 
216
- **Итог:** Закрытый сервис с ограниченной памятью и без Telegram.
259
+ **Итог:** закрытый сервис с ограниченной памятью и без Telegram.
217
260
 
218
- ---
261
+ </details>
219
262
 
220
- ### girl-agent
263
+ <details open>
264
+ <summary><strong>girl-agent</strong> — движок с несколькими слоями состояния</summary>
221
265
 
222
- **Как это работает:** Движок с несколькими слоями состояния: presence, sleep, daily-life, relationship stages, conflict, memory, anti-AI. Userbot mode через MTProto.
266
+ - **Presence** паттерны присутствия (частота, офлайн, вероятность ответа)
267
+ - **Sleep** — время сна, night wake chance
268
+ - **Daily-life** — расписание, занятость, приоритеты
269
+ - **Relationship stages** — `met-irl-got-tg` → `convinced` → `dating-stable` → `long-term`
270
+ - **Relationship score** — интерес, доверие, симпатия, раздражение, толер.кринжа
271
+ - **Conflict** — если давить/спамить, включается конфликт, может замолчать
272
+ - **Memory** — важные события в `long-term.md`, всплывают в диалогах
273
+ - **Anti-AI** — промпт запрещает markdown, «конечно», «я понимаю», эмодзи-ряды
274
+ - **Userbot mode** — умеет читать, реагировать, печатать, удалять, редактировать
275
+ - **Agenda** — бот планирует действия, живёт своей жизнью
223
276
 
224
- **Технические детали:**
225
- - Presence — паттерны присутствия (частота, офлайн, вероятность ответа)
226
- - Sleep — время сна, night wake chance
227
- - Daily-life — расписание, занятость, приоритеты
228
- - Relationship stages — stranger → convinced → close → intimate → bonded
229
- - Relationship score — interest, trust, attraction, annoyance, cringe
230
- - Conflict — если давить/спамить, включается конфликт, может замолчать
231
- - Memory — важные события в long-term.md, всплывают в диалогах
232
- - Anti-AI — промпт запрещает markdown, "конечно", "я понимаю", эмодзи-ряды
233
- - Userbot mode — умеет читать, реагировать, печатать, удалять, редактировать
234
- - Agenda — бот планирует действия, живёт своей жизнью
277
+ **Итог:** поведение собирается из состояния, а не из текстовых инструкций.
235
278
 
236
- **Итог:** Движок с несколькими слоями решения. Поведение собирается из состояния, а не из текстовых инструкций.
279
+ </details>
237
280
 
238
281
  ---
239
282
 
240
283
  ## Безопасность
241
284
 
242
- ⚠️ **Не публикуй:** `data/`, `config.json`, `sessionString` и API-ключи.
285
+ > ⚠️ **Не публикуй:** `data/`, `config.json`, `sessionString`, API-ключи.
286
+ >
287
+ > 🔒 **Для userbot-режима** используй отдельный тестовый аккаунт — Telegram может забанить основной за подозрительную активность.
243
288
 
244
- 🔒 **Для userbot mode** используй отдельный тестовый аккаунт — Telegram может забанить основной аккаунт за подозрительную активность.
289
+ Подробнее: [Security & Privacy →](https://docs.girl-agent.com/docs/users/security-privacy)
245
290
 
246
291
  ---
247
292
 
@@ -249,16 +294,12 @@ npm run dev
249
294
 
250
295
  📄 **Source-available** — исходный код открыт для личного тестирования, оценки и вкладов.
251
296
 
252
- **Разрешено:**
253
- - Клонировать и запускать локально
254
- - Создавать issues и отправлять pull requests
255
- - Изучать код и экспериментировать
256
-
257
- **Запрещено без письменного разрешения:**
258
- - Коммерческое использование
259
- - Платный хостинг
260
- - Перепродажа
261
- - Публичные конкурирующие клоны
262
- - Использование кода внутри коммерческих продуктов
297
+ | Разрешено | Запрещено без письменного разрешения |
298
+ |-----------|--------------------------------------|
299
+ | Клонировать и запускать локально | ❌ Коммерческое использование |
300
+ | Создавать issues и PR-ы | ❌ Платный хостинг |
301
+ | ✅ Изучать код и экспериментировать | ❌ Перепродажа |
302
+ | | Публичные конкурирующие клоны |
303
+ | | ❌ Использование кода в коммерческих продуктах |
263
304
 
264
- 📜 Полный текст лицензии: [LICENSE](./LICENSE)
305
+ 📜 Полный текст: [LICENSE](./LICENSE).