chatd/src/outbound-types.ts
Rama main · réplica de lectura del repositorio original.
import type { AttachmentAlreadyKept } from "./outgoing-attachment.ts";
import type { VisibleContextMessageDocument } from "./visible-context.ts";
export interface ReplyAttachmentDocument {
devicePath?: string;
filename?: string;
contentType?: string;
sizeBytes?: number;
title?: string;
contentBase64?: string;
}
export interface AskChoiceOptionDocument {
key: string;
label: string;
shortLabel?: string;
value?: string;
}
export interface AskInteractionDocument {
interactionID?: string;
taskRunID?: string;
kind?: string;
message?: string;
question?: string;
options?: AskChoiceOptionDocument[];
recommendedOptionKey?: string;
selectionMode?: string;
responseLanguage?: string;
targetPlatformUserID?: string;
}
export interface ReplySendRequest {
replyTargetID: string;
// The message this reply answers, so a reply written deep in a thread is
// answered where it was written rather than at the top of the thread.
answeringMessageID?: string;
message: string;
taskRunID?: string;
replyKind?: string;
rawEventID?: string;
outboxID?: string;
attachments?: ReplyAttachmentDocument[];
interaction?: AskInteractionDocument;
isError?: boolean;
}
export interface ReplySendResponse {
dispatchID: string;
}
export interface ProgressRequest {
replyTargetID: string;
answeringMessageID?: string;
}
export interface ReactionRequest {
conversationID?: string;
messageID: string;
emojiName: string;
reason?: string;
}
export interface HistoryFetchRequest {
historyCursor?: string;
threadID?: string;
channelID?: string;
channelName?: string;
limit?: number;
direction?: string;
}
export interface HistoryFetchResponse {
messages: VisibleContextMessageDocument[];
hasMoreBefore: boolean;
historyCursor: string;
channelID?: string;
channelName?: string;
conversationType?: string;
}
export interface ChannelEnsureRequest {
name: string;
displayName?: string;
description?: string;
topic?: string;
}
export interface ChannelEnsureResponse {
channelID: string;
replyTargetID: string;
created: boolean;
}
export interface DirectMessageSendRequest {
userSecretHex: string;
message: string;
attachments?: ReplyAttachmentDocument[];
channelId?: string;
replyToRootId?: string;
// Who the message is addressed to. The messenger web sends to the agent and
// says nothing, so an absent counterpart still means the agent.
counterpartPubkeyHex?: string;
}
export interface DirectMessagePostRequest {
counterpartPubkeyHex: string;
message: string;
}
export interface DirectMessagePostResponse {
channelID: string;
messageID: string;
}
export interface DirectMessageOpenRequest {
externalUserID: string;
}
export interface DirectMessageOpenResponse {
conversationID: string;
replyTargetID: string;
}
export interface ConversationsListRequest {
userSecretHex: string;
}
export interface ConversationDocument {
id: string;
name: string;
kind: "dm" | "group";
avatarURL?: string;
}
export interface ConversationsListResponse {
conversations: ConversationDocument[];
}
export interface DirectMessageSendResponse {
channelID: string;
replyTargetID: string;
messageID: string;
}
export interface DirectMessageEnsureRequest {
userSecretHex: string;
channelId?: string;
counterpartPubkeyHex?: string;
}
export interface PeopleListResponse {
people: { id: string; name: string; avatarURL?: string }[];
}
export interface DirectMessageEnsureResponse {
channelID: string;
replyTargetID: string;
historyCursor: string;
userPubkeyHex: string;
botName?: string;
botAvatarURL?: string;
}
export interface MessageEditRequest {
replyTargetID: string;
messageID: string;
message: string;
requesterPubkeyHex?: string;
attachments?: ReplyAttachmentDocument[];
}
export interface MessageDeleteRequest {
replyTargetID: string;
messageID: string;
requesterPubkeyHex?: string;
}
export interface MessageSearchRequest {
replyTargetID?: string;
channelID?: string;
channelName?: string;
rootMessageID?: string;
messageIDs?: string[];
authoredBy?: string;
requesterPubkeyHex?: string;
queries?: string[];
limit?: number;
}
export interface MessageSearchCandidateDocument {
messageID: string;
channelID: string;
rootMessageID?: string;
authorPubkeyHex: string;
authoredByAssistant: boolean;
editable: boolean;
deletable: boolean;
createdAt: number;
text: string;
score: number;
}
export interface MessageSearchResponse {
channelID: string;
candidates: MessageSearchCandidateDocument[];
}
export interface InputAttachmentDocument {
platform?: string;
fileID?: string;
url?: string;
messageID?: string;
filename?: string;
contentType?: string;
sizeBytes?: number;
path?: string;
contentBase64?: string;
isAvailable?: boolean;
errorCode?: string;
message?: string;
}
export interface AttachmentImportRequest {
messageID: string;
targetDirectoryPath: string;
inputAttachments: InputAttachmentDocument[];
}
export interface AgentPartSourceDocument {
platform?: string;
messageID?: string;
fileID?: string;
}
export interface AgentFilePartDocument {
path: string;
filename?: string;
contentType?: string;
sizeBytes?: number;
}
export interface AgentImagePartDocument {
path: string;
filename?: string;
mimeType?: string;
}
export interface AgentPartDocument {
type: "file" | "image";
file?: AgentFilePartDocument;
image?: AgentImagePartDocument;
source?: AgentPartSourceDocument;
}
export interface AttachmentImportResponse {
inputParts: AgentPartDocument[];
inputAttachments: InputAttachmentDocument[];
}
export interface MessagePostRequest {
threadID?: string;
channelID?: string;
channelName?: string;
message: string;
attachments?: ReplyAttachmentDocument[];
keptAttachments: AttachmentAlreadyKept[];
}
export interface MessagePostResponse {
messageID: string;
channelID?: string;
}
export interface IdentityResolveRequest {
senderID: string;
}
export interface IdentitySelfResponse {
pubkeyHex: string;
name: string;
}
export interface IdentityResolveResponse {
displayName?: string;
email?: string;
}