Ctrl K
ComunidadGuías…

chatd/src/outbound-types.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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;
}