sequenceDiagram participant A as Alice participant AC as Alice Chat participant AA as Alice Agent participant XFTP as Alice's XFTP relay(s) participant SMP as Bob's SMP relay participant BA as Bob Agent participant BC as Bob Chat participant B as Bob A ->> AC: APISendMessage AC ->> AA: sendMessage(x.msg.new) /
CIFSSndStored AA ->> SMP: SEND SMP ->> BA: MSG BA ->> BC: MSG BC ->> B: CRNewChatItem
(file not ready) B ->> BC: ReceiveFile BC ->> B: error: no file description AC ->> AA: sendFile AC ->> A: CRSndFileStart AA ->> XFTP: chunk (FNEW, FPUT) AA ->> AC: SFPROG /
CIFSSndTransfer AC ->> A: CRSndFileProgress (new) AA ->> XFTP: chunks AA ->> AC: SFDONE sd rds AC ->> AA: sendMessage(x.msg.file.descr) /
FSComplete / CIFSSndComplete AC ->> A: CRSndFileComplete (?) AA ->> SMP: SEND SMP ->> BA: MSG BA ->> BC: MSG BC ->> B: CRChatItemUpdated
(file is ready) BC ->> B: CRFileReady (TBC) B ->> BC: ReceiveFile BC ->> BA: getFile BC ->> B: CRRcvFileStart XFTP ->> BA: chunk (FGET / FRFile) BA ->> BC: RFPROG BC ->> B: CRRcvFileProgress (new) XFTP ->> BA: chunks BA ->> BC: RFDONE BC ->> B: CRNewChatItem
(file received) BC ->> B: CRRcvFileComplete