Issue Mediator

Pulls tasks from your tracker (Yandex Tracker / GitHub / freeform / Jira / Linear / GitLab), normalises them into four levels of context (general → system → subsystem → ticket) and shows the harness which task it's actually working on.

Когда нужно#

Харнес видит больше, чем код в cwd — он смотрит AGENTS.md, скилы, агентский контекст. Issue Mediator добавляет к этой картине активную задачу: что именно мы делаем в этом cwd прямо сейчас. Сессии автоматически связываются по branch-regex ([A-Z]+-\d+), либо вручную через UI или CLI.

Источники#

ИсточникСтатус (0.2.1)Что нужно настроить
Yandex Tracker✅ работаетOAuth token (secret) + org_id + org_type (y360 / cloud)
GitHub✅ работает$CONTROLUM_SECRET_GITHUB_TOKEN или gh auth login
Freeform✅ работает.controlum-task в репо с заголовками # general/system/subsystem/ticket
Jira / Linear / GitLab🟡 stubsРеальные fetcher'ы в 0.2.4

Sources и Tasks#

Source — это пара (kind + конфиг + ссылка на secret). У одного пользователя может быть несколько источников одного kind'а (например YT-prod и YT-staging). Source хранит только secret_id — сам токен лежит в /secrets, и удаление токенане сломает source молча (ON DELETE RESTRICT) — выскочит 409 в UI.

Task — конкретный тикет, который скилл уже подтянул. Идемпотентен по (source_id, external_id): пере-fetch обновляет в месте, новой строки не создаёт.

Категоризация (4 уровня)#

УровеньYandex TrackerGitHub
generalorg_idorg/user (owner)
systemqueue.displayrepo
subsystemepic / project / parentlabel area/* или milestone
ticketsummaryissue title

Endpoints#

  • GET /plugins/issue-mediator/sources — список источников
  • POST /plugins/issue-mediator/sources — добавить источник
  • PATCH /plugins/issue-mediator/sources/{id} — name / config / enabled
  • DELETE /plugins/issue-mediator/sources/{id} — удалить (CASCADE на tasks)
  • GET /plugins/issue-mediator/tasks — список задач (filter: source_id / status / assignee)
  • POST /plugins/issue-mediator/tasks — UPSERT задачи от скилла
  • POST /plugins/issue-mediator/sessions/{sid}/task — связать с сессией
  • GET /plugins/issue-mediator/sessions/{sid}/task — активная задача сессии (404 если нет)

Quick start#

  1. Получи OAuth token у Яндекса (scope tracker:read) — см. oauth.yandex.ru
  2. Сохрани в /secrets под именем YANDEX_TRACKER_TOKEN
  3. Открой /plugins, включи Issue Mediator, кликни Configure
  4. Add source → Yandex Tracker → выбери secret, заполни org_id + org_type
  5. Запусти claude в репо с веткой вида feature/PROJ-123-thing — Active task появится автоматически