npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@erllecta/coding-helper

v1.0.27

Published

ER-GPT Coding Helper — автоматизация общекорпоративных сервисов CFU IT ЭР-Телеком Холдинг (Claude Code / OpenCode)

Downloads

7,893

Readme

ER-GPT Coding Helper

CLI-утилита для настройки интеграции coding-ассистентов с ER-GPT.

Установка / npx

# Явная версия (надёжнее, чем @latest после релиза)
npm install -g @erllecta/[email protected] --no-fund --no-audit

# Если «уже установлено», но версия старая:
npm install -g @erllecta/[email protected] --force --no-fund --no-audit
ergpt-coding-helper --version

Без установки:

npx --yes -p @erllecta/[email protected] ergpt-coding-helper

Первый запуск спросит API ключ (личный кабинет). Повторный сразу переписывает Claude/OpenCode из сохранённого профиля (каталог + GET /api/settings/public с API key), затем открывает меню. Ключ сменить пунктом «Сменить API ключ».

MCP пишет тот же /mcp/sse (Bearer API key):

  • ergpt-builtinбез X-Assistant-Id, в клиенте только web_search (не crawl/code/skills). Ассистент не нужен.
  • ergptс X-Assistant-Id, тулы выбранного ассистента. Aider MCP не пишет (в доке нет файла).

Фильтр builtin — в конфиге хоста (Hermes tools.include, OpenCode tools, Claude includeTools). Continue и Cline в доке не умеют hide per-tool: им gateway по-прежнему отдаёт полный catalog.

Если ETARGET сразу после релиза — подождите 10–30 сек или:

npm cache clean --force
npm view @erllecta/coding-helper versions

Релиз: тег vX.Y.Z → CI job publish (нужен NPM_TOKEN). На main — manual play.

Использование

# Интерактивная настройка (каждый запуск обновляет Claude/OpenCode из профиля)
ergpt-coding-helper

# Stage (или prod) до UI
ergpt-coding-helper --env stage

# Показать текущую конфигурацию
ergpt-coding-helper --status
ergpt-coding-helper --env prod --status

# Только обновить конфиги и выйти
ergpt-coding-helper --refresh

# Очистить всю конфигурацию (store + Claude/OpenCode)
ergpt-coding-helper --clear

В меню пункт «Окружение: prod → stage» переключает активный профиль. У prod и stage отдельные API-ключ, ассистент и targets; при переключении tool-конфиги переписываются из сохранённого профиля (если ключ есть).

Поддерживаемые инструменты

Claude Code

Настраивает файлы:

  • ~/.claude/settings.jsonANTHROPIC_AUTH_TOKEN, ANTHROPIC_BASE_URL, слоты каталога с именами (не сырой id). Helper пишет CLAUDE_CODE_MAX_OUTPUT_TOKENS=8192 (иначе Claude Code шлёт 32k и GPU 128k overflow), CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1 и capabilities effort,xhigh_effort,max_effort,thinking без adaptive_thinking: Qwen не умеет Anthropic adaptive, глубину выбираете /effort (low/medium/high/xhigh/max → шлюз xhigh). CLAUDE_CODE_ALWAYS_ENABLE_EFFORT=1 — слать effort даже на чужом id. CLAUDE_CODE_MAX_CONTEXT_TOKENS — из max_context каталога (чтобы не было ложного [1m]).
  • ~/.claude.json — MCP ergpt (ассистент) и ergpt-builtin (includeTools: только web_search)

OpenCode

Настраивает файл:

  • ~/.config/opencode/opencode.json — провайдер ergpt (@ai-sdk/openai-compatible) с baseURL = …/api/openai; limit.context берётся из каталога max_context / context_window. Для каждой модели: reasoning: true, стрим из reasoning_content, варианты none/low/medium/high/xhigh (reasoningEffort). База для моделей с каталожным thinking: truecommon.thinking_effort из GET /api/settings/public (не литерал в helper и не id Fast). Вариант none остаётся в UI. Модели без thinking — default none. Каталожные modals → OpenCode modalities.input + attachment: true, если есть image (иначе OpenCode считает кастомный провайдер text-only и read картинок блокирует).
  • MCP: mcp.ergpt и ergpt-builtin (SSE); tools.ergpt-builtin_* = false, кроме web_search.

Не путать с Claude: OpenCode ходит в OpenAI-compatible (/api/openai/chat/completions), не в /api/anthropic. Claude Code: thinking enabled (adaptive выключен helper’ом), глубина — /effort. OpenCode — варианты reasoningEffort.

Hermes Agent

Настраивает файлы:

  • ~/.hermes/config.yaml — named provider ergpt (provider: custom:ergpt) с api = …/api/openai и моделью из каталога; context_length из max_context, если есть. Каталожные modals с imagemodel.supports_vision и providers.ergpt.models.<id>.supports_vision (иначе Hermes считает кастомный id text-only и режет картинки / гоняет vision_analyze).
  • ~/.hermes/.envERGPT_API_KEY (не OPENAI_API_KEY, чтобы не перебить чужой OpenAI).
  • MCP: mcp_servers.ergpt (ассистент) и ergpt-builtin (tools.include: только web_search).

Continue (VS Code / JetBrains / CLI cn)

Это и есть путь «VS Code»: не сам редактор, а Continue. Официальный файл:

  • ~/.continue/config.yaml (schema: v1) — модели provider: openai, apiBase = …/api/openai (без выдуманного /v1), apiKey, useResponsesApi: false (иначе Continue для части моделей ходит в /responses, которого у ER-GPT нет). Каталожные modals с imagecapabilities: [tool_use, image_input] (иначе Continue не включает загрузку картинок для кастомного id).
  • MCP: mcpServers ER-GPT (ассистент) и ER-GPT builtin (type: sse).

Бинар в PATH для пометки «установлен» — официальный CLI cn. Расширение VS Code без cn всё равно получит конфиг.

Cline (VS Code / CLI)

По доке Cline и OpenAI Compatible:

  • ~/.cline/data/settings/providers.jsonlastUsedProvider: openai-compatible, ключ/base/model в providers["openai-compatible"].settings (version: 1). Каталожные modals с imageopenAiModelInfo.supportsImages (тот же флаг, что UI «Supports Images»). CLI читает этот файл.
  • ~/.cline/data/globalState.json + secrets.json — слот VS Code Cline 3.x (planModeApiProvider / actModeApiProvider: openai, openAiBaseUrl, planModeOpenAiModelInfo.supportsImages / actModeOpenAiModelInfo, ключ openAiApiKey). Merge: чужие ключи не трогаем. --clear снимает их только если openAiBaseUrl содержит /api/openai.
  • MCP: mcpServers.ergpt и ergpt-builtin (type: sse) в обоих файлах.

Aider

По YAML config и OpenAI compatible APIs:

  • ~/.aider.conf.ymlopenai-api-key, openai-api-base = …/api/openai, model: openai/<id>.
  • MCP у Aider в доке нет — helper его не пишет.
  • Слоты OpenAI в Aider глобальные: apply перезапишет чужой openai-api-key / base. --clear снимает их только если base содержит /api/openai.

В меню хост без бинаря в PATH остаётся выбираемым, но помечается «не установлен» (конфиг всё равно записывается). Helper не ставит CLI сам.

Новый coding-агент добавляется записью в src/tools/registry.ts, а не копипастой switch по инструментам. OMO (Oh My OpenAgent Ultimate) — харнесс поверх OpenCode: отдельного пункта нет, достаточно настроить OpenCode.

Не в меню (проверено по официальным докам, writer не пишем):

  • Cursor — Override OpenAI Base URL только в GUI, канонического файла нет.
  • VS Code Copilot — модели GitHub, не наш шлюз.
  • Codex CLI — Responses API, не chat completions ER-GPT.
  • Gemini CLI — протокол Gemini, не /api/openai.
  • Goose — ключи не в config.yaml (keyring / secrets.yaml); SSE MCP Goose не поддерживает.
  • Roo Code — настройки в зашифрованном storage расширения, не в файле.

Что происходит при настройке

  1. API ключ — сохраняется в локальное хранилище (отдельно для prod/stage) и прописывается в конфиги инструментов
  2. Ассистент — выбирается из каталога ER-GPT (опционально)
  3. Base URL — формируется автоматически на основе выбранного ассистента и активного окружения
  4. MCPergpt-builtin всегда (только web_search); ergpt с X-Assistant-Id, если выбран ассистент

URL по умолчанию

| Окружение | API | UI | | --------- | ---------------------------------------- | ------------------------------------ | | prod | https://api.er-gpt.ertelecom.loc | https://er-gpt.ertelecom.loc | | stage | https://api.stage.er-gpt.ertelecom.loc | https://stage.er-gpt.ertelecom.loc |

Аварийный override API только для активного окружения:

export ERGPT_API_BASE=https://api.example.com
ergpt-coding-helper

Требования

  • Node.js ≥ 18 (для corp TLS без ручного CA — лучше ≥ 22.15)
  • API ключ ER-GPT (получить в личном кабинете)

CLI подхватывает system CA (macOS Keychain). Если всё же TLS-ошибка:

export NODE_EXTRA_CA_CERTS=/path/to/corp-root.pem

Разработка

Репозиторий публикации: git.erllecta.ru/ergpt/coding-tool
Исходники автора: git.erllecta.ru/ergpt/code-helper

npm install
npm run ci       # lint + typecheck + unit/regression tests
npm run build    # tsc: src/ → dist/ (dist не коммитим)
npm test         # build + ava
npm run lint     # prettier --check
npm run format   # prettier --write

dist/ и src/api/types/generated.ts в git не хранятся — собираются локально / в CI / в prepublishOnly перед npm publish.

Опционально обновить OpenAPI-типы из openapi.json:

npm run api:generate

Тесты:

  • test/unit/ — URL defaults, maskApiKey, write/clear Claude/OpenCode
  • test/regression/ — Ink screens (нет raw text вне <Text>), package bin/engines, --clear semantics, нет api.er-gpt.ru в dist/src

Перегенерация типов API:

npm run api:generate

TLS в корпоративной сети

Node.js может не доверять корпоративному CA:

security find-certificate -a -c "ERTelecom-CA-New" -p /Library/Keychains/System.keychain > ~/.ertelecom-ca.pem
export NODE_EXTRA_CA_CERTS="$HOME/.ertelecom-ca.pem"

Лицензия

MIT