Skip to content

feat(storage): upload + auto-parse — «загрузил файл, агент разобрал» - #87

Open
dailysergey wants to merge 1 commit into
0717376:mainfrom
dailysergey:feat/upload-parse
Open

feat(storage): upload + auto-parse — «загрузил файл, агент разобрал»#87
dailysergey wants to merge 1 commit into
0717376:mainfrom
dailysergey:feat/upload-parse

Conversation

@dailysergey

Copy link
Copy Markdown

Связывает две части, которые уже жили порознь: файловое хранилище /storage и чат.

Backend:

  • POST /storage/upload?parse=1 возвращает готовый parse_prompt c абсолютным путём файла внутри контейнера; сам агент отсюда не дёргается — разбор идёт той же WebSocket-нитью, что и любой запрос пользователя.
  • engines/claude.py: FILES_DIR добавлен в add_dirs, чтобы Read/Grep работали напрямую (раньше — только через Bash cwd-trick).

Frontend (wiki):

  • StorageView: чекбокс «Разобрать агентом после загрузки» (сохраняется в localStorage), кнопка «Разобрать» на карточке файла. Оба пути стучатся в чат одним CustomEvent bender:chat-send — StorageView не знает про ChatPane.
  • ChatPane: слушатель этого CustomEvent, отправляет строку через существующий useWebSocket.send.
  • api.ts: storageUpload теперь возвращает {path, size, parse_prompt?}.
  • i18n: три новых строки (ru + en).

Что можно теперь: перетащить PDF/DOCX/картинку в «Файлы» — с включённым чекбоксом или нажав «Разобрать» — и агент прочитает файл и коротко расскажет, что там (плюс предложит разложить в вики/задачи).

Связывает две части, которые уже жили порознь: файловое хранилище /storage и чат.

Backend:
- POST /storage/upload?parse=1 возвращает готовый `parse_prompt` c абсолютным
  путём файла внутри контейнера; сам агент отсюда не дёргается — разбор идёт
  той же WebSocket-нитью, что и любой запрос пользователя.
- engines/claude.py: FILES_DIR добавлен в add_dirs, чтобы Read/Grep работали
  напрямую (раньше — только через Bash cwd-trick).

Frontend (wiki):
- StorageView: чекбокс «Разобрать агентом после загрузки» (сохраняется в
  localStorage), кнопка «Разобрать» на карточке файла. Оба пути стучатся в чат
  одним CustomEvent `bender:chat-send` — StorageView не знает про ChatPane.
- ChatPane: слушатель этого CustomEvent, отправляет строку через существующий
  useWebSocket.send.
- api.ts: storageUpload теперь возвращает {path, size, parse_prompt?}.
- i18n: три новых строки (ru + en).

Что можно теперь: перетащить PDF/DOCX/картинку в «Файлы» — с включённым
чекбоксом или нажав «Разобрать» — и агент прочитает файл и коротко расскажет,
что там (плюс предложит разложить в вики/задачи).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@dailysergey dailysergey mentioned this pull request Sep 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant