@goodandready/dsh-session-control 0.1.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/CHANGELOG.md +40 -0
- package/LICENSE +21 -0
- package/README.md +147 -0
- package/cordis.patch.yml +21 -0
- package/lib/client.js +1515 -0
- package/lib/index.js +127 -0
- package/lib/transcript.js +67 -0
- package/package.json +54 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
Формат — [Keep a Changelog](https://keepachangelog.com/ru/1.1.0/),
|
|
4
|
+
версии — [SemVer](https://semver.org/lang/ru/).
|
|
5
|
+
|
|
6
|
+
## [0.1.0] — 2026-09-07
|
|
7
|
+
|
|
8
|
+
Первый выпуск.
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Список сессий в боковой панели взамен штатного блока рабочих папок: папки,
|
|
13
|
+
сессии, поиск, свёртка, режим узкой панели, создание рабочей папки с выбором
|
|
14
|
+
каталога.
|
|
15
|
+
- Закрепление диалогов, общее на всю панель; порядок задаётся вручную.
|
|
16
|
+
- Обратимое скрытие — в отличие от ядрового архива, который необратим.
|
|
17
|
+
- Раздел архива, которого в штатной панели нет вовсе, разбитый по периодам:
|
|
18
|
+
сегодня, на этой неделе, в этом месяце, раньше. Свёрнутый период не рисуется.
|
|
19
|
+
- Расшифровка архивной сессии, только на чтение: маршрут
|
|
20
|
+
`GET /dsh-session-control/transcript?session=<id>` и окно просмотра.
|
|
21
|
+
- Фрагмент с совпадением в результатах поиска по содержимому.
|
|
22
|
+
- Скрытие сессий без сообщений, кроме текущей; переключается в настройках.
|
|
23
|
+
- Множественный выбор строк с диапазоном по Shift и групповыми действиями.
|
|
24
|
+
- Переименование по двойному клику или F2 прямо в строке.
|
|
25
|
+
- Индикатор работающей сессии в строке.
|
|
26
|
+
- Карточка настроек в «Настройки → Плагины».
|
|
27
|
+
|
|
28
|
+
### Notes
|
|
29
|
+
|
|
30
|
+
- Плагин заменяет тело боковой панели и отдаёт вместо ядрового модуля служебный
|
|
31
|
+
сервис `uiWorkspace`, от которого зависят модули панели и беседы. Половина
|
|
32
|
+
«сервис» отделена от половины «интерфейс», чтобы отказ вёрстки не гасил
|
|
33
|
+
приложение.
|
|
34
|
+
- Переноса диалога между рабочими папками нет и не будет: членство выводится из
|
|
35
|
+
рабочего каталога сессии, а не хранится меткой.
|
|
36
|
+
- Возврата из архива нет: ядро умеет только помещать в архив.
|
|
37
|
+
- Часть архивных журналов раннего формата ядро читать отказывается; такие
|
|
38
|
+
сессии показываются с пояснением, а не с ложным «нет сообщений».
|
|
39
|
+
- Интерфейс только на английском; переводы поставляет отдельный языковой
|
|
40
|
+
плагин.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 GooDAnDReaDY
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# @goodandready/dsh-session-control
|
|
2
|
+
|
|
3
|
+
Управление сессиями в боковой панели DeepSeek Harness: закрепление нужных
|
|
4
|
+
диалогов, поиск по содержимому, чтение архивных разговоров и уборка шума.
|
|
5
|
+
|
|
6
|
+
## Что плагин делает с панелью
|
|
7
|
+
|
|
8
|
+
Плагин **заменяет тело боковой панели** — блок со списком рабочих папок.
|
|
9
|
+
Остальная панель остаётся штатной: бренд, кнопка новой сессии, подвал и вход в
|
|
10
|
+
настройки не затрагиваются.
|
|
11
|
+
|
|
12
|
+
Заменяет, а не дополняет, вынужденно: слот `sidebar.workspaces` объявлен ядром
|
|
13
|
+
как `kind: "single"`, второго регистранта у него не бывает, а другого слота в
|
|
14
|
+
теле панели нет.
|
|
15
|
+
|
|
16
|
+
## Чем отличается от штатной панели
|
|
17
|
+
|
|
18
|
+
| | Штатная панель | С плагином |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| Закрепление диалогов | нет | есть, общее на всю панель |
|
|
21
|
+
| Архив | не виден нигде | отдельный раздел, разбитый по периодам |
|
|
22
|
+
| Чтение архивной сессии | невозможно | расшифровка только на чтение |
|
|
23
|
+
| Результаты поиска | только заголовок строки | плюс фрагмент с совпадением |
|
|
24
|
+
| Пустые сессии | вперемешку с рабочими | скрыты, кроме текущей |
|
|
25
|
+
| Действия над пачкой строк | нет | выбор галочками, Shift для диапазона |
|
|
26
|
+
| Скрыть лишнее | только архив, необратимо | обратимое скрытие |
|
|
27
|
+
| Индикатор работающей сессии | не показан | точка в строке |
|
|
28
|
+
| Переименование | диалогом | по двойному клику в строке |
|
|
29
|
+
|
|
30
|
+
Штатные возможности — рабочие папки, поиск по содержимому диалогов, ответвление
|
|
31
|
+
сессии — остаются на месте: плагин их переиспользует, а не переписывает.
|
|
32
|
+
|
|
33
|
+
## Установка
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
dsh plugin --profile web add @goodandready/dsh-session-control
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Как вернуть штатную панель
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
dsh plugin --profile web remove @goodandready/dsh-session-control
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Штатный ряд `ui-workspace` включается обратно, панель возвращается к исходному
|
|
46
|
+
виду. Закрепления и скрытия остаются в настройках и подхватятся, если плагин
|
|
47
|
+
поставить снова.
|
|
48
|
+
|
|
49
|
+
## Возможности
|
|
50
|
+
|
|
51
|
+
**Закрепление.** Нужные диалоги отдельной группой сверху, общей на всю панель.
|
|
52
|
+
Переживают перезагрузку, смену браузера и устройство: настройки хранятся на
|
|
53
|
+
хосте.
|
|
54
|
+
|
|
55
|
+
**Поиск с фрагментом.** Ядро ищет по содержимому диалогов и возвращает кусок
|
|
56
|
+
текста вокруг совпадения — плагин показывает его второй строкой, поэтому видно,
|
|
57
|
+
чем именно нашлась строка, без открытия сессии.
|
|
58
|
+
|
|
59
|
+
**Архив по периодам.** Сегодня, на этой неделе, в этом месяце, раньше.
|
|
60
|
+
Свёрнутый период не рисуется вовсе, поэтому сотни архивных строк не попадают в
|
|
61
|
+
разметку разом. При активном поиске периоды раскрываются, чтобы совпадения не
|
|
62
|
+
прятались за свёрнутым заголовком.
|
|
63
|
+
|
|
64
|
+
**Расшифровка архивной сессии.** Заархивированную сессию нельзя открыть в
|
|
65
|
+
беседе — ядро снимает выбор с такой сессии. Плагин показывает её содержимое
|
|
66
|
+
отдельным окном, только на чтение.
|
|
67
|
+
|
|
68
|
+
**Скрытие пустых.** Сессии без единого сообщения непрерывно создают расписания,
|
|
69
|
+
мессенджеры и доски. Они не показываются; текущая сессия не прячется никогда,
|
|
70
|
+
даже пустая. Переключатель в карточке настроек возвращает прежнее поведение.
|
|
71
|
+
|
|
72
|
+
**Обратимое скрытие.** Своё, в отличие от ядрового архива: скрытое возвращается
|
|
73
|
+
одним нажатием.
|
|
74
|
+
|
|
75
|
+
**Множественный выбор.** Галочка при наведении, Shift берёт диапазон. Над
|
|
76
|
+
выбранным доступны скрытие, возврат и закрепление.
|
|
77
|
+
|
|
78
|
+
**Переименование по месту.** Двойной клик по заголовку или F2.
|
|
79
|
+
|
|
80
|
+
## Настройки
|
|
81
|
+
|
|
82
|
+
Карточка в «Настройки → Плагины → Настройки плагинов». Пространство настроек —
|
|
83
|
+
`dsh-session-control`:
|
|
84
|
+
|
|
85
|
+
| Поле | Смысл |
|
|
86
|
+
|---|---|
|
|
87
|
+
| `pinned` | закреплённые сессии, порядок массива = порядок в панели |
|
|
88
|
+
| `hidden` | скрытые сессии |
|
|
89
|
+
| `hideBlank` | прятать сессии без сообщений (по умолчанию да) |
|
|
90
|
+
|
|
91
|
+
Настройки хранятся на хосте, поэтому переживают смену браузера и устройство.
|
|
92
|
+
|
|
93
|
+
## Чего плагин не умеет
|
|
94
|
+
|
|
95
|
+
**Переносить диалог в другую рабочую папку.** Рабочая папка — это каталог, а
|
|
96
|
+
членство сессии выводится из её рабочего каталога: реестр отвергает сессию, чей
|
|
97
|
+
`cwd` не совпадает с путём папки. Это не пробел в API, а устройство модели, и
|
|
98
|
+
поэтому такого пункта нет и в штатной панели.
|
|
99
|
+
|
|
100
|
+
**Возвращать из архива.** Ядро умеет только помещать в архив; метода возврата в
|
|
101
|
+
API нет. Архивная сессия доступна на чтение, но вернуть её в папку нельзя.
|
|
102
|
+
|
|
103
|
+
**Читать очень старые журналы.** Часть архивных сессий хранится в раннем
|
|
104
|
+
формате, который ядро отказывается читать. Такие показываются с пояснением, а
|
|
105
|
+
не с ложным «нет сообщений».
|
|
106
|
+
|
|
107
|
+
**Удалять сессии.** Удаления нет ни в одном публичном интерфейсе ядра, и плагин
|
|
108
|
+
его не изобретает.
|
|
109
|
+
|
|
110
|
+
## Устройство
|
|
111
|
+
|
|
112
|
+
Плагин собран из двух независимых половин, и это требование безопасности, а не
|
|
113
|
+
украшение архитектуры.
|
|
114
|
+
|
|
115
|
+
Заменяемый ядровый модуль попутно отдаёт служебный сервис `uiWorkspace`,
|
|
116
|
+
который стоит в обязательных зависимостях у модулей боковой панели и интерфейса
|
|
117
|
+
беседы. Если его не отдать, приложение не поднимется вовсе.
|
|
118
|
+
|
|
119
|
+
- **Половина «сервис»** отдаёт `uiWorkspace` и корневой хук списка папок. Без
|
|
120
|
+
React, без логики плагина, без настроек.
|
|
121
|
+
- **Половина «интерфейс»** — список, расшифровка, карточка настроек. Целиком в
|
|
122
|
+
защитной обёртке.
|
|
123
|
+
|
|
124
|
+
Отказ интерфейса оставляет тело панели пустым, но панель, настройки и беседа
|
|
125
|
+
продолжают работать.
|
|
126
|
+
|
|
127
|
+
Серверная половина добавляет один маршрут — расшифровку архивной сессии. Все
|
|
128
|
+
остальные действия идут через штатные вызовы ядра.
|
|
129
|
+
|
|
130
|
+
## Язык интерфейса
|
|
131
|
+
|
|
132
|
+
Плагин везёт только английский. Переводы поставляются отдельным языковым
|
|
133
|
+
плагином; регистрация словаря защищена и не может уронить панель, если
|
|
134
|
+
пространство уже занято.
|
|
135
|
+
|
|
136
|
+
## Совместимость
|
|
137
|
+
|
|
138
|
+
Проверен на ядрах `0.1.2-rc.1` и `0.1.3-alpha.1`. Плагин опирается на контракт
|
|
139
|
+
слотов боковой панели и на поверхность сервиса `uiWorkspace`; при смене этого
|
|
140
|
+
контракта потребуется правка.
|
|
141
|
+
|
|
142
|
+
Поверхность хранилища сессий у разных выпусков ядра различается, поэтому плагин
|
|
143
|
+
спрашивает бэкенд, какие методы у него есть, а не полагается на номер версии.
|
|
144
|
+
|
|
145
|
+
## Лицензия
|
|
146
|
+
|
|
147
|
+
MIT
|
package/cordis.patch.yml
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Слой dsh-session-control: применяется автоматически, когда пакет установлен
|
|
2
|
+
# как bundle профиля (package.json объявляет dsh.bundle.patch).
|
|
3
|
+
#
|
|
4
|
+
# Плагин занимает тело боковой панели — слот sidebar.workspaces. Слот объявлен
|
|
5
|
+
# ядром как kind: "single", второго регистранта не бывает, поэтому штатный ряд
|
|
6
|
+
# приходится освободить.
|
|
7
|
+
#
|
|
8
|
+
# Ряд ui-workspace попутно отдавал служебный сервис uiWorkspace, который стоит в
|
|
9
|
+
# ОБЯЗАТЕЛЬНОМ inject у dsh-client-ui-sidebar и dsh-client-ui-conversation.
|
|
10
|
+
# Наша половина «сервис» отдаёт его вместо ядровой; без неё не поднимутся ни
|
|
11
|
+
# панель, ни интерфейс беседы.
|
|
12
|
+
#
|
|
13
|
+
# Аварийный выход: dsh plugin remove @goodandready/dsh-session-control —
|
|
14
|
+
# ряд ui-workspace снова включается и возвращается штатная панель.
|
|
15
|
+
- id: ui-workspace
|
|
16
|
+
disabled: true
|
|
17
|
+
|
|
18
|
+
- insert:
|
|
19
|
+
- id: dsh-session-control
|
|
20
|
+
name: '@goodandready/dsh-session-control'
|
|
21
|
+
config: {}
|