Самообновление агента: публикация версии в хабе (#22) #23
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/22-agent-self-update"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #22. Агентская часть — aep/jira-agent#19 (PR рядом).
Что сделано
Самообновление агента моста, сторона хаба (OpenSpec change
agent-self-update, спека и решения —openspec/changes/agent-self-update/).jira-hub agent publish <agent.py>— версия из строкиAGENT_VERSION = N, только вверх, sha256; файлыrelease/agent.py+manifest.jsonв каталоге данных (0700), без изменения схемы БД.POST /agent/claim: в ответеagent_release {version, sha256} | null; в теле принимаютсяupdate_state,launcher_version(хаб хранит в памяти, неверные типы игнорирует).GET /agent/release(агентский токен) →{version, sha256, content}; нет публикации/sha не сходится — 404no_release.GET /agentи MCPagent_status: публикация, состояние обновления, запускатель, подсказка (update_hint).Тесты:
uv run pytest -q→ 233 passed.openspec validate agent-self-update --strict— valid.Rulings I made
Рулинги спеки R-1…R-18 — в
design.md(«Decisions made without discussion»). При исполнении и ревью:test_version_is_4→test_version_is_5; цена ошибки: нет.run.pyсам получил SIGINT/SIGTERM, иначе падение (вtrial— откат); цена:kill <pid агента>перезапускает агента, останавливать нужноrun.py.sleepвpause) повышена до Important и исправлена; цена: нет.Находки финального ревью (opus)
release/→ 500 наclaimпосле выдачи команды (очередь уходит в failed)3a4fed9publish— трейсбек, новый agent.py при старом манифестеHub.__init__(web_dir/release_dir) при ребейзе; CLAUDE.md «текущий change»load: не-UTF-8 файл с совпадающим sha → 500 вместо 404release._write_atomicбез fsyncversionманифеста приводитсяint()без проверки типаПосле merge
git pull+launchctl kickstart -k gui/$(id -u)/ru.aepif.jira-hub;GET /agent→release = null. Затем — PR агента и последнее ручное обновление на виртуалке (design.md, Migration Plan).🤖 Generated with Claude Code