papayu/docs/CONTRACTS.md
2026-01-29 12:21:43 +03:00

2.3 KiB
Raw Blame History

Контракты UI ↔ Tauri

Единый источник правды для вызовов команд и форматов ответов.


Стандарт ответов команд

Рекомендуемый формат (по возможности):

  • Успех: { ok: true, ...data } или возврат типа AnalyzeReport, PreviewResult, ApplyResult, UndoResult.
  • Ошибка: Result::Err(String) или поле ok: false с error, error_code, при необходимости details.

Текущие команды уже возвращают типы с полями ok, error, error_code где применимо.


Команды (invoke)

Команда Вход Выход Файл UI
analyze_project { path: string } AnalyzeReport lib/analyze.ts
preview_actions { payload: { path, actions } } PreviewResult Tasks.tsx
apply_actions { payload: { path, actions } } ApplyResult Tasks.tsx
undo_last { path: string } UndoResult Tasks.tsx
get_app_info AppInfo { version, app_data_dir, app_config_dir } Diagnostics.tsx

События (listen)

Событие Payload Где эмитится Где слушается
analyze_progress string (сообщение) analyze_project, apply_actions, preview_actions, undo_last Tasks.tsx

Типы payload в будущем можно версионировать (например, { v: 1, message: string }) при изменении формата.


Apply / Undo (транзакционность)

  • apply_actions: создаёт snapshot перед применением; при ошибке откатывает изменения (revert_snapshot). Сессия хранится в app_data_dir/history/<session_id>.
  • undo_last: восстанавливает последнюю сессию из last_session.txt. Откат атомарный по сессии.

Рекомендация: при расширении — сохранять единый формат манифеста сессии (список путей + действия) для воспроизводимости.