На Python 3.9 `<![foo]>` вызывал NotImplementedError из ParserBase.error(), а адрес вида `http://[::1` — ValueError в urljoin/urlsplit; одна такая конструкция роняла wiki_sync целиком. Теперь нестандартная секция пропускается до `>`, битая ссылка — пропускается, остальные ссылки страницы сохраняются. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
eva-agent
Агент модуля wiki хаба (sdlc-hub) для виртуалки банка с доступом к Eva. Опрашивает хаб, выгружает поддерево страниц
Eva (wiki_sync) и скачивает вложения (wiki_fetch); в Eva только читает. Python 3.9, только стандартная библиотека,
один файл src/agent.py и запускатель src/run.py.
Установка на виртуалку
- Каталог рядом с jira-agent, например
C:\...\eva-agent\или~/eva-agent/. - Положить в него
agent.pyиrun.py(изsrc/) иagent.json(изagent.example.json):hub_url— тот жеfolder:<путь>, что у jira-agent (общая папка с хабом; при VPN виртуалка не видит Mac mini по сети), либоhttp://<хост>:8790;hub_token— строка «агент wiki» изjira-hub tokens(токен именно агента wiki, не jira и не клиентский);eva.base_url— адрес Eva;eva.token— токен из профиля Eva (Безопасность);verify_ssl,ca_bundle— при корпоративном сертификате.agent.jsonсодержит токены: не коммитить, не выносить с виртуалки.
- Проверка:
python3 agent.py check— печатает «хаб: доступен…» и «eva: ok»; код 0, при недоступности хаба или Eva — 3. - Запуск:
python3 run.py(запускатель следит за версиями и самообновлением).python3 agent.py run— без запускателя. - Автозапуск — как у jira-agent (планировщик задач / launchd по тому же образцу); запускатель сам перезапускает агента.
Другие команды: python3 agent.py run --once (выполнить выданное и выйти при первом пустом claim), selftest
(версия + check, код 0 или 3), prune (чистка журнала).
Выкатка новых версий
Из основного checkout репозитория (не из worktree), при поднятой версии AGENT_VERSION в src/agent.py:
uv run --project ../jira-hub jira-hub agent publish --module wiki src/agent.py
Агент подтянет её сам (auto_update); min_agent_version хаба поднимать после того, как agent_status покажет новую.
Разработка
Настройки — src/agent.example.json. Тесты: /usr/bin/python3 -W error::ResourceWarning -m unittest discover -s tests -t .
Сквозной прогон с настоящим хабом и фейковой Eva: bash scripts/e2e-hub.sh (печатает «e2e: ok», ~1 мин). Хаб берётся из
../../../jira-hub/.wt/wiki (переменная HUB_SRC), запускается на свободном порту с временным JIRA_HUB_HOME;
живой хаб не затрагивается. Проверяет: проект с wiki_root, wiki_sync на 5 страниц, Markdown со ссылкой
attachment:<id>, wiki_fetch вложения и его содержимое.