# dsh-plugins — shared DeepSeek Harness plugins monorepo Общее монорепо кастомных плагинов для DeepSeek Harness. Каждый пакет собирается изолированно (`tsc` → `lib/`) с core-зависимостями `@deepseek-ai/*` из публичного npmjs и публикуется в npm-реестр Gitea `https://git.byte-mate.ru/api/packages/Coder/npm/` под scope `@deepseek-ai/*`. ## Состав | Пакет | Версия | Назначение | |---|---|---| | `@deepseek-ai/dsh-tool-lab` | `0.1.0-rc.7` | Модельные lab-инструменты: ComfyUI imagegen, Docling OCR, Whishper STT | | `@deepseek-ai/dsh-web-search-searxng` | `0.1.0-rc.7` | SearXNG-провайдер поиска для seam `ctx.web` | | `@deepseek-ai/dsh-telegram-remote` | `0.2.0` | Удалённое управление DSH через Telegram Bot API | ## Сборка и тесты ```sh pnpm install # резолвит точные версии core-пакетов из npmjs pnpm -r build # tsc каждого TS-пакета → lib/ pnpm -r test # vitest (шаблон *.spec.ts; *.e2e.ts исключён) pnpm -r pack # контроль упаковки tarball ``` `pnpm-lock.yaml` фиксируется в репозитории. В корневом `.npmrc` **нет** маппинга `@deepseek-ai` → Gitea — это сломало бы сборку (core тянется с npmjs). ## Публикация Пакеты публикуются в Gitea npm-реестр (`https://git.byte-mate.ru/api/packages/Coder/npm/`) под scope `@deepseek-ai/*`. Транзитивные core-зависимости (`@deepseek-ai/cordis`, `dsh-settings`, `dsh-web`, `schemastery` и т.д.) тянутся из публичного npmjs — реестр Gitea не проксирует npmjs, поэтому скоуп `@deepseek-ai` НЕ перенаправляется на Gitea при установке. ### Через CI (рекомендуется) 1. Убедись, что в настройках репозитория есть секрет `GITEA_NPM_TOKEN` (токен пользователя `Coder` с правами на packages) — Settings → Actions → Secrets. 2. Создай git-тег с префиксом `v*` (например `v0.1.0-rc.7`) и запушь его. 3. Job `publish` в `.gitea/workflows/publish.yml` соберёт пакеты и опубликует те, которых ещё нет (идемпотентно через `check-published.mjs`). Пуш в `main` гоняет только `build-test` (сборка + тесты), публикация — по тегу. ### Вручную ```sh pnpm --filter @deepseek-ai/dsh-tool-lab publish --no-git-checks \ --registry https://git.byte-mate.ru/api/packages/Coder/npm/ \ "--//git.byte-mate.ru/api/packages/Coder/npm/:_authToken=$GITEA_NPM_TOKEN" ``` ## Установка плагина Скрипты-установщики добавляют плагины в активный профиль DSH как **прямые tarball URL из Gitea-реестра** (не скоупят `@deepseek-ai` — транзитивные core-зависимости берутся из npmjs) и идемпотентно дописывают insert-записи в `cordis.patch.yml`. ### Windows ```powershell $env:GITEA_NPM_TOKEN = "<токен>" .\scripts\dsh-plugin-install.ps1 -Profile web ``` ### bash/macOS/Linux ```bash export GITEA_NPM_TOKEN="<токен>" ./scripts/dsh-plugin-install.sh web ``` После установки перезапусти dsh. Пакет → id записи в `cordis.patch.yml`: - `@deepseek-ai/dsh-tool-lab` → `tool-lab` - `@deepseek-ai/dsh-web-search-searxng` → `web-search-searxng` - `@deepseek-ai/dsh-telegram-remote` → `telegram-remote` Пользовательские конфиги плагинов (например, `tokenFile`, `comfyBaseUrl`) — поле `config` той же insert-записи — редактируются в `cordis.patch.yml` после установки.