Luigit
repositories / will

will

owned by admin

src/shared/events.ts

Raw
/**
 * Wire and storage types shared by service, agent, and web.
 * These are the serialization contracts snapshot tests pin.
 */

/** Provenance of executing code vs edited source (spec: audit distinguishes both). */
export interface ReleaseProvenance {
  revision?: string | undefined
  agentDigest?: string | undefined
  worktreeHead?: string | undefined
  worktreeDirty?: boolean | undefined
}

export interface AuditEvent {
  id: string
  ts: string
  kind: string
  sessionId?: string | undefined
  provenance?: ReleaseProvenance
  payload: unknown
}

/** Stored audit row as returned by timeline/recall APIs (payload parsed). */
export interface AuditRow {
  seq: number
  id: string
  ts: string
  kind: string
  sessionId?: string | undefined
  provenance?: ReleaseProvenance
  payload: unknown
}

export type ChatDirection = 'in' | 'out'

export type TriggerReason = 'mention' | 'reply' | 'command' | 'none'

export interface MediaRef {
  digest: string
  type: string
  fileName?: string
  size: number
  telegramFileId?: string
}

/** Inbound or outbound chat message as ingested by the service. */
export interface ChatMessageIn {
  id: string
  chatId: number
  messageId: number
  direction: ChatDirection
  ts: string
  updateId?: number | undefined
  senderId?: string | undefined
  senderName?: string | undefined
  replyToMessageId?: number | undefined
  triggerReason?: TriggerReason | undefined
  text?: string | undefined
  media?: MediaRef[] | undefined
}

/** Chat row served to the UI; hidden messages are tombstoned. */
export interface ChatRow {
  id: string
  chatId: number
  messageId: number
  direction: ChatDirection
  ts: string
  senderId?: string | undefined
  senderName?: string | undefined
  replyToMessageId?: number | undefined
  triggerReason?: TriggerReason | undefined
  text?: string | undefined
  media?: MediaRef[] | undefined
  hidden: boolean
}

export interface TombstoneIn {
  messageId: number
  requesterId: string
  authority: 'sender' | 'oliver'
  reason?: string | undefined
  ts: string
}

export type DeploymentEventKind =
  | 'build'
  | 'deploy'
  | 'promote'
  | 'startup-failed'
  | 'probation-failed'
  | 'rollback'
  | 'reconcile'

export interface DeploymentEventMirror {
  id: string
  ts: string
  kind: DeploymentEventKind
  revision?: string | undefined
  detail: unknown
}

export interface MediaMeta {
  digest: string
  size: number
  type: string
  originalName?: string | undefined
  telegramFileId?: string | undefined
  createdAt: string
}

export interface AnalysisRecord {
  digest: string
  capability: string
  model: string
  schemaVersion: number
  result: unknown
  usage?: unknown | undefined
  createdAt: string
}

export interface JobRecord {
  kind: string
  status: 'running' | 'done' | 'failed'
  startedAt: string
  finishedAt?: string | undefined
  detail?: unknown | undefined
}