feat: транспорт folder: — связь с хабом через общую папку (#5) #6

Merged
aep merged 3 commits from feat/5-folder-transport into main 2026-10-13 09:07:38 +03:00
Owner

Closes #5

Что сделано

Транспорт агента через общую папку UTM, hub_url = "folder:<абсолютный путь>". Спека: jira-hub/openspec/changes/folder-transport/.

  • FolderTransport:
    • пишет req/<id>.json атомарно: временный файл на точку и os.replace;
    • ждёт resp/<id>.json, опрашивая раз в 0,1 с;
    • сводит ответ к тем же исключениям, что HTTP: 2xx → тело, иначе HttpError;
    • если ответа нет к сроку, если папки нет или ответ нечитаем дольше 2 с — ConnectionError;
    • если ответа нет к сроку, удаляет свой запрос;
    • чужие и опоздавшие ответы не трогает.
  • HubClient.call. При folder: делегирует транспорту. Runner, журнал и восстановление не менялись.
  • load_config. При folder: без абсолютного пути выходит с понятной ошибкой.
  • check. Печатает «хаб: доступен через папку …» или «НЕДОСТУПЕН», ждёт не больше 10 с.
  • AGENT_VERSION = 2.
  • Документация. README (раздел «Связь с хабом через общую папку»), ARCHITECTURE.md, CLAUDE.md, openspec/changes/folder-transport/design.md.

Хаб: aep/jira-hub PR из ветки feat/5-folder-transport. Агент работает и со старым хабом по http://.

Проверка

  • /usr/bin/python3 -W error::ResourceWarning -m unittest discover -s tests -t . — 133 OK. Из них 14 тестов папки:
    • путь с пробелами;
    • 404, срок claim не меньше 45 с;
    • молчащее реле, нечитаемый ответ, опоздавший ответ, чужие файлы;
    • сквозной цикл Runner через папку, check, относительный путь.
  • Совместимость с настоящим реле хаба подтверждена ревьюером и приёмкой на моке Jira. Подробности — в PR хаба.

Rulings I made

  • R-2 (design.md). В белый список stdlib tests/test_py39.py добавлен uuid, его требует спека. Цена ошибки: нет.

Находки

Маркер Статус Что
M-2 deferred ответ с корректным JSON, но неверными типами status/body даёт ValueError/TypeError и роняет агента; настоящее реле таких ответов не пишет
O-3 deferred в логе «хаб: хаб не ответил через папку …» слово «хаб» дважды

🤖 Generated with Claude Code

Closes #5 ## Что сделано Транспорт агента через общую папку UTM, `hub_url = "folder:<абсолютный путь>"`. Спека: `jira-hub/openspec/changes/folder-transport/`. - **`FolderTransport`:** - пишет `req/<id>.json` атомарно: временный файл на точку и `os.replace`; - ждёт `resp/<id>.json`, опрашивая раз в 0,1 с; - сводит ответ к тем же исключениям, что HTTP: 2xx → тело, иначе `HttpError`; - если ответа нет к сроку, если папки нет или ответ нечитаем дольше 2 с — `ConnectionError`; - если ответа нет к сроку, удаляет свой запрос; - чужие и опоздавшие ответы не трогает. - **`HubClient.call`.** При `folder:` делегирует транспорту. Runner, журнал и восстановление не менялись. - **`load_config`.** При `folder:` без абсолютного пути выходит с понятной ошибкой. - **`check`.** Печатает «хаб: доступен через папку …» или «НЕДОСТУПЕН», ждёт не больше 10 с. - **`AGENT_VERSION = 2`.** - **Документация.** README (раздел «Связь с хабом через общую папку»), ARCHITECTURE.md, CLAUDE.md, `openspec/changes/folder-transport/design.md`. Хаб: aep/jira-hub PR из ветки `feat/5-folder-transport`. Агент работает и со старым хабом по `http://`. ## Проверка - `/usr/bin/python3 -W error::ResourceWarning -m unittest discover -s tests -t .` — 133 OK. Из них 14 тестов папки: - путь с пробелами; - 404, срок `claim` не меньше 45 с; - молчащее реле, нечитаемый ответ, опоздавший ответ, чужие файлы; - сквозной цикл Runner через папку, `check`, относительный путь. - Совместимость с настоящим реле хаба подтверждена ревьюером и приёмкой на моке Jira. Подробности — в PR хаба. ## Rulings I made - **R-2 (design.md).** В белый список stdlib `tests/test_py39.py` добавлен `uuid`, его требует спека. Цена ошибки: нет. ## Находки | Маркер | Статус | Что | |---|---|---| | M-2 | deferred | ответ с корректным JSON, но неверными типами `status`/`body` даёт `ValueError`/`TypeError` и роняет агента; настоящее реле таких ответов не пишет | | O-3 | deferred | в логе «хаб: хаб не ответил через папку …» слово «хаб» дважды | 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 3 commits 2026-10-13 00:09:18 +03:00
aep merged commit 6342e47230 into main 2026-10-13 09:07:38 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: aep/jira-agent#6
No description provided.