apps/server/src/assets/AttachmentUpload.test.ts | 128 +++++++++++ apps/server/src/assets/AttachmentUpload.ts | 214 ++++++++++++++++++ apps/server/src/attachmentStore.test.ts | 85 +++++++ apps/server/src/attachmentStore.ts | 118 +++++++++- apps/server/src/auth/RpcAuthorization.ts | 2 + apps/server/src/config.ts | 11 + apps/server/src/environment/ServerEnvironment.test.ts | 1 + apps/server/src/environment/ServerEnvironment.ts | 1 + apps/server/src/http.ts | 50 ++++ apps/server/src/orchestration/Normalizer.attachments.test.ts | 318 ++++++++++++++++++++++++++ apps/server/src/orchestration/Normalizer.ts | 122 +++++++++- apps/server/src/orchestration/http.ts | 17 +- apps/server/src/server.test.ts | 142 +++++++++--- apps/server/src/server.ts | 2 + apps/server/src/ws.ts | 20 +- apps/web/src/components/ChatView.tsx | 52 ++++- apps/web/src/components/LegacySidebar.tsx | 2 + apps/web/src/components/Sidebar.tsx | 2 + apps/web/src/components/chat/ChatComposer.tsx | 219 ++++++++++++------ apps/web/src/components/chat/ComposerPreviewAnnotationCards.test.tsx | 32 ++- apps/web/src/components/chat/ComposerPreviewAnnotationCards.tsx | 33 ++- apps/web/src/components/settings/ProjectSettingsPanel.tsx | 2 + apps/web/src/hooks/useThreadActions.ts | 2 + apps/web/src/lib/attachmentUploadQueue.test.ts | 306 +++++++++++++++++++++++++ apps/web/src/lib/attachmentUploadQueue.ts | 389 ++++++++++++++++++++++++++++++++ apps/web/src/lib/attachmentUploadState.test.ts | 75 ++++++ apps/web/src/lib/attachmentUploadState.ts | 54 +++++ apps/web/src/lib/composerDraftUploads.ts | 23 ++ apps/web/src/state/attachments.ts | 15 ++ docs/user/composer.md | 3 + packages/contracts/src/assets.test.ts | 30 +++ packages/contracts/src/assets.ts | 43 +++- packages/contracts/src/environment.test.ts | 13 ++ packages/contracts/src/environment.ts | 2 + packages/contracts/src/orchestration.test.ts | 43 ++++ packages/contracts/src/orchestration.ts | 2 +- packages/contracts/src/rpc.ts | 25 +- 37 files changed, 2475 insertions(+), 123 deletions(-)