Commit Graph

82 Commits

Author SHA1 Message Date
b8e836fd07 UUID as primary identifier everywhere (replace slug-based routing)
Some checks failed
Deploy Tracker / deploy (push) Failing after 3s
WS Manager:
- member_sessions keyed by member_id (UUID), not slug
- broadcast_message: author_id instead of author_slug
- broadcast_all: exclude_member_id instead of exclude_slug
- mention filtering by member_id from MemberBrief objects

WS Handler:
- All DB lookups by Member.id (UUID), not slug
- auth.ok includes member_id + online as [{id, slug}]
- agent.status events include id + slug
- Bridge on_behalf_of by UUID

API callers (messages, members, tasks):
- All broadcast calls use author_id/exclude_member_id
2026-02-27 09:20:19 +01:00
5642f53e11 Structured system messages: actor + mentions as objects
Some checks failed
Deploy Tracker / deploy (push) Failing after 5s
- Message model: added actor_id FK (who initiated the action)
- MessageOut: mentions as MemberBrief[], actor as MemberBrief
- _system_message: accepts mentioned_members list, stores actor_id
- WS filtering: checks mentions array (not just text content)
- broadcast_message: handles both string and dict mentions
2026-02-27 08:33:39 +01:00
f20da3685d Fix: task system messages use broadcast_message (not broadcast_all)
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
broadcast_all bypasses agent filtering (system message @mention check),
so agents received ALL task lifecycle messages and processed them as
new requests, causing duplicate task creation.
2026-02-27 07:59:53 +01:00
c2c595224c Phase 1: agent streaming WS events + thinking field in messages
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
- New WS events: agent.stream.start/delta/tool/end
- Tracker relays agent stream events to project subscribers
- Message model: added 'thinking' column (nullable text)
- MessageCreate, MessageOut, converters: thinking support
- chat.send WS handler: accepts thinking field
- broadcast_message: custom event_type parameter
2026-02-27 06:55:36 +01:00
0c44a8b384 Fix #4 hotfix: restore missing router = APIRouter in steps.py
Some checks failed
Deploy Tracker / deploy (push) Failing after 3s
2026-02-26 15:17:35 +01:00
73c4ace9e9 Fix #18: Add comment explaining token query param in download_project_file
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-26 15:16:50 +01:00
b6f12c2a56 Fix #17: Add comment explaining token query param in download_attachment
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-26 15:16:42 +01:00
19bb797856 Fix #16: Use explicit 'online' key in auth_ok instead of StrEnum value
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-26 15:16:10 +01:00
21199dd4e3 Fix #15: Remove empty services/ directory
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-26 15:15:58 +01:00
e842149a23 Fix #14: broadcast_message excludes by session_id, not slug (multi-tab support)
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-26 15:15:50 +01:00
8a54a2d609 Fix #13: Basic RBAC — only owners can delete projects and members
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-26 15:15:25 +01:00
7360c79eeb Fix #12: Remove duplicate _to_member_out, use converters.member_out
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-26 15:15:00 +01:00
872699647f Fix #11: Remove dead config (redis, authentik, gitea, agent_max_restarts)
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-26 15:14:29 +01:00
b930ca1155 Fix #10: list_tasks API now accepts project_slug query param (used by Picogent)
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-26 15:14:17 +01:00
5dfd83c28f Fix #9: Validate sender exists and is active in WS chat.send
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-26 15:13:59 +01:00
607f822b4e Fix #8: Remove author_type/author_id from MessageCreate — always resolve from auth
Some checks failed
Deploy Tracker / deploy (push) Failing after 5s
2026-02-26 15:13:50 +01:00
7233d3f507 Fix #7: Implement update_my_status endpoint (was TODO stub)
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-26 15:13:31 +01:00
3228b4c290 Fix #6: Remove useless _record_action in delete_task (CASCADE deletes it)
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-26 15:13:10 +01:00
901f54f790 Fix #5: reject_task now uses _system_message for proper WS broadcast
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-26 15:13:00 +01:00
05b56dbdae Fix #4: Remove duplicate step_out and import in steps.py
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-26 15:12:46 +01:00
b67587b647 Fix #3: Avoid detached SQLAlchemy objects in middleware — store member_id, re-fetch in endpoints
Some checks failed
Deploy Tracker / deploy (push) Failing after 5s
2026-02-26 15:12:36 +01:00
dc6556074e Fix #2: Use broadcast_all for task system messages instead of broadcast_task_event
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-26 15:11:59 +01:00
5e3ec5e7c5 Fix #1: SELECT FOR UPDATE on task_counter to prevent race condition
Some checks failed
Deploy Tracker / deploy (push) Failing after 5s
2026-02-26 15:11:47 +01:00
c7b073b36c Switch all imports to relative paths
Some checks failed
Deploy Tracker / deploy (push) Failing after 3s
2026-02-26 10:46:09 +01:00
659454c2e6 fix: _to_message_out → message_out, _to_step_out → step_out, убраны сломанные алиасы
Some checks failed
Deploy Tracker / deploy (push) Failing after 3s
2026-02-25 16:15:08 +01:00
d0c0c87120 типизация: единые схемы везде, убраны ручные dict-ы из broadcasts, удалён дублирующий schemas.py
Some checks failed
Deploy Tracker / deploy (push) Failing after 3s
2026-02-25 14:14:29 +01:00
be5fc6e99e Унифицированная типизация данных через Pydantic схемы
Some checks failed
Deploy Tracker / deploy (push) Failing after 3s
- Добавлен schemas.py с едиными моделями для API и WS
- Заменены ручные dict-ы на helper функции во всех endpoints
- Обновлены WS broadcasts для использования тех же схем
- Все передаваемые данные теперь строго типизированы
2026-02-25 14:08:33 +01:00
67eecc079f Строгая типизация: единые Pydantic-схемы и конвертеры для REST/WS
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
- Добавлен api/schemas.py с MemberBrief, MemberOut, TaskOut, MessageOut, StepOut, ProjectFileOut, AttachmentOut
- Добавлен api/converters.py — единые ORM→Pydantic конвертеры
- Все REST endpoints используют response_model из schemas
- Все WS broadcasts используют .model_dump() вместо ручных dict-ов
- Удалены дублирующие локальные схемы из каждого модуля
2026-02-25 14:03:31 +01:00
a4fcfe91b3 fix: unified message format (author object), CASCADE delete tasks, author_id nullable
Some checks failed
Deploy Tracker / deploy (push) Failing after 3s
2026-02-25 13:56:15 +01:00
2e36b26b05 security: path traversal fix, bcrypt passwords, OPTIONS preflight skip
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-25 12:21:29 +01:00
9bf66a88b2 fix: system messages author=None (actor tracked in task_actions, not message author)
Some checks failed
Deploy Tracker / deploy (push) Failing after 3s
2026-02-25 12:04:19 +01:00
0840e38849 enforce: auth required on ALL API endpoints except login
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-25 11:24:01 +01:00
8b993abc37 fix: support ?token= query param for auth (downloads from browser)
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-25 11:16:10 +01:00
d2402dc213 fix: ProjectMember unique constraint, task flush before action, clean models
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-25 11:10:48 +01:00
aedbe583c8 fix: flush task before recording action (task_id was None)
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-25 11:05:40 +01:00
39dde0e2d8 fix: consistent delete response format
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-25 10:37:47 +01:00
cd2ffd78ac Fix duplicate volume mount in docker-compose.yml
Some checks failed
Deploy Tracker / deploy (push) Failing after 9s
2026-02-25 09:20:32 +01:00
56aac3490d feat: project files API — upload, list, search, download, update description, delete
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-25 09:18:52 +01:00
ce98d45712 feat: auto-seed in dev mode on startup if DB empty
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-25 08:41:44 +01:00
7a58cf97c8 fix: remove BFF from seed data
Some checks failed
Deploy Tracker / deploy (push) Failing after 4s
2026-02-25 08:39:45 +01:00
befa3c71bc fix: bind mount volumes (data/), remove redis, restart policy
Some checks failed
Deploy Tracker / deploy (push) Failing after 3s
2026-02-25 07:02:43 +01:00
625e75a005 feat: file attachments — upload endpoint, attachment creation on messages, download
Some checks failed
Deploy Tracker / deploy (push) Failing after 2s
2026-02-25 06:17:20 +01:00
e8f7d04821 refactor: полный UUID рефакторинг tasks.py + audit log + WS member_id
Some checks failed
Deploy Tracker / deploy (push) Failing after 3s
- Все slug ссылки заменены на UUID (assignee_id, reviewer_id, watcher_ids, author_id)
- TaskAction записывается при каждом изменении задачи
- _system_message принимает actor: Member вместо actor_slug
- ConnectedClient хранит member_id для task event фильтрации
- broadcast_task_event фильтрует по member_id вместо slug
2026-02-25 04:59:57 +01:00
41f4bc5ebc refactor: UUID-based member identification + task audit log + soft delete
Some checks failed
Deploy Tracker / deploy (push) Failing after 2s
- Member: добавлен is_active для soft delete
- Message: author_id (UUID FK) вместо author_slug
- Task: assignee_id, reviewer_id (UUID FK), watcher_ids (UUID[])
- Новая модель TaskAction для аудита действий с задачами
- Новый enum TaskActionType
- API обновлен под новые поля с relationships
- WS handler использует author_id вместо author_slug
- Soft delete для members через is_active=False
- Автоматическое создание TaskAction записей при изменениях
2026-02-25 00:13:30 +01:00
daf3f06dcb refactor: заменены хардкод строки на enums
Some checks failed
Deploy Tracker / deploy (push) Failing after 3s
2026-02-24 23:53:43 +01:00
41d98cad88 refactor: вся фильтрация сообщений на стороне Tracker
Some checks failed
Deploy Tracker / deploy (push) Failing after 2s
- System messages: агенты получают только если @slug в content
- Убрана дублирующая фильтрация из Picogent Router
2026-02-24 23:40:17 +01:00
a985708f70 feat: auto-subscribe на проекты при auth (по membership)
Some checks failed
Deploy Tracker / deploy (push) Failing after 3s
2026-02-24 23:24:51 +01:00
cab0baca11 Add ProjectMember model and API endpoints for project membership management
Some checks failed
Deploy Tracker / deploy (push) Failing after 2s
2026-02-24 23:18:44 +01:00
904c105174 refactor: all task mutations require auth — actor from JWT/token, no ?actor= or ?slug= params
Some checks failed
Deploy Tracker / deploy (push) Failing after 1s
2026-02-24 13:32:29 +01:00
2f0c4d1636 feat: dual system messages — detailed in task, brief in chat
Some checks failed
Deploy Tracker / deploy (push) Failing after 1s
- Task comments: who, what, when (detailed history)
- Chat messages: brief notifications
- PATCH /tasks accepts ?actor= for attribution
2026-02-24 12:27:29 +01:00