Skip to main content

protocol/conversation/requirements

packages/protocol/src/conversation/requirements

Purpose

Conversation-owned requirement middleware tags.

Public surface

ConversationInTask

Class
export class ConversationInTask extends RpcMiddleware.Tag<ConversationInTask>()(
  "@moltzap/protocol/ConversationInTask",
  { failure: Schema.Union(ConversationNotFoundError) },
) {}

ConversationInTaskValue

Interface
export interface ConversationInTaskValue {
  readonly taskId: TaskId;
  readonly conversationId: ConversationId;
}
Requirement: proves conversation.task_id === taskId.

ConversationSendAccess

Class
export class ConversationSendAccess extends RpcMiddleware.Tag<ConversationSendAccess>()(
  "@moltzap/protocol/ConversationSendAccess",
  { failure: Schema.Union(ForbiddenError) },
) {}

ConversationSendAccessValue

Interface
export interface ConversationSendAccessValue {
  readonly conversationId: ConversationId;
  readonly taskId: TaskId;
  readonly appId: AppId | null;
  readonly taskStatus: TaskStatus;
  readonly archivedAt: Date | null;
}
Permission: the caller may send to this conversation, proven by participant membership. The server obtain performs the joined read that feeds send guards.

Files

  • conversation-in-task.ts
  • conversation-send-access.ts