message.ts 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. // Auto-generated stub — replace with real implementation
  2. import type { UUID } from 'crypto'
  3. import type {
  4. ContentBlockParam,
  5. ContentBlock,
  6. } from '@anthropic-ai/sdk/resources/index.mjs'
  7. import type { BetaUsage } from '@anthropic-ai/sdk/resources/beta/messages/messages.mjs'
  8. import type {
  9. BranchAction,
  10. CommitKind,
  11. PrAction,
  12. } from '../tools/shared/gitOperationTracking.js'
  13. /**
  14. * Base message type with discriminant `type` field and common properties.
  15. * Individual message subtypes (UserMessage, AssistantMessage, etc.) extend
  16. * this with narrower `type` literals and additional fields.
  17. */
  18. export type MessageType = 'user' | 'assistant' | 'system' | 'attachment' | 'progress' | 'grouped_tool_use' | 'collapsed_read_search'
  19. /** A single content element inside message.content arrays. */
  20. export type ContentItem = ContentBlockParam | ContentBlock
  21. export type MessageContent = string | ContentBlockParam[] | ContentBlock[]
  22. /**
  23. * Typed content array — used in narrowed message subtypes so that
  24. * `message.content[0]` resolves to `ContentItem` instead of
  25. * `string | ContentBlockParam | ContentBlock`.
  26. */
  27. export type TypedMessageContent = ContentItem[]
  28. export type Message = {
  29. type: MessageType
  30. uuid: UUID
  31. isMeta?: boolean
  32. isCompactSummary?: boolean
  33. toolUseResult?: unknown
  34. isVisibleInTranscriptOnly?: boolean
  35. attachment?: { type: string; toolUseID?: string; [key: string]: unknown }
  36. message?: {
  37. role?: string
  38. id?: string
  39. content?: MessageContent
  40. usage?: BetaUsage | Record<string, unknown>
  41. [key: string]: unknown
  42. }
  43. [key: string]: unknown
  44. }
  45. export type AssistantMessage = Message & { type: 'assistant' }
  46. export type AttachmentMessage<T = unknown> = Message & { type: 'attachment'; attachment: { type: string; [key: string]: unknown } }
  47. export type ProgressMessage<T = unknown> = Message & { type: 'progress'; data: T }
  48. export type SystemLocalCommandMessage = Message & { type: 'system' }
  49. export type SystemMessage = Message & { type: 'system' }
  50. export type UserMessage = Message & { type: 'user' }
  51. export type NormalizedUserMessage = UserMessage
  52. export type RequestStartEvent = { type: string; [key: string]: unknown }
  53. export type StreamEvent = { type: string; [key: string]: unknown }
  54. export type SystemCompactBoundaryMessage = Message & {
  55. type: 'system'
  56. compactMetadata: {
  57. preservedSegment?: {
  58. headUuid: UUID
  59. tailUuid: UUID
  60. anchorUuid: UUID
  61. [key: string]: unknown
  62. }
  63. [key: string]: unknown
  64. }
  65. }
  66. export type TombstoneMessage = Message
  67. export type ToolUseSummaryMessage = Message
  68. export type MessageOrigin = string
  69. export type CompactMetadata = Record<string, unknown>
  70. export type SystemAPIErrorMessage = Message & { type: 'system' }
  71. export type SystemFileSnapshotMessage = Message & { type: 'system' }
  72. export type NormalizedAssistantMessage<T = unknown> = AssistantMessage
  73. export type NormalizedMessage = Message
  74. export type PartialCompactDirection = string
  75. export type StopHookInfo = {
  76. command?: string
  77. durationMs?: number
  78. [key: string]: unknown
  79. }
  80. export type SystemAgentsKilledMessage = Message & { type: 'system' }
  81. export type SystemApiMetricsMessage = Message & { type: 'system' }
  82. export type SystemAwaySummaryMessage = Message & { type: 'system' }
  83. export type SystemBridgeStatusMessage = Message & { type: 'system' }
  84. export type SystemInformationalMessage = Message & { type: 'system' }
  85. export type SystemMemorySavedMessage = Message & { type: 'system' }
  86. export type SystemMessageLevel = string
  87. export type SystemMicrocompactBoundaryMessage = Message & { type: 'system' }
  88. export type SystemPermissionRetryMessage = Message & { type: 'system' }
  89. export type SystemScheduledTaskFireMessage = Message & { type: 'system' }
  90. export type SystemStopHookSummaryMessage = Message & {
  91. type: 'system'
  92. subtype: string
  93. hookLabel: string
  94. hookCount: number
  95. totalDurationMs?: number
  96. hookInfos: StopHookInfo[]
  97. }
  98. export type SystemTurnDurationMessage = Message & { type: 'system' }
  99. export type GroupedToolUseMessage = Message & {
  100. type: 'grouped_tool_use'
  101. toolName: string
  102. messages: NormalizedAssistantMessage[]
  103. results: NormalizedUserMessage[]
  104. displayMessage: NormalizedAssistantMessage | NormalizedUserMessage
  105. }
  106. export type RenderableMessage =
  107. | AssistantMessage
  108. | UserMessage
  109. | (Message & { type: 'system' })
  110. | (Message & { type: 'attachment'; attachment: { type: string; memories?: { path: string; content: string; mtimeMs: number }[]; [key: string]: unknown } })
  111. | (Message & { type: 'progress' })
  112. | GroupedToolUseMessage
  113. | CollapsedReadSearchGroup
  114. export type CollapsibleMessage =
  115. | AssistantMessage
  116. | UserMessage
  117. | GroupedToolUseMessage
  118. export type CollapsedReadSearchGroup = {
  119. type: 'collapsed_read_search'
  120. uuid: UUID
  121. timestamp?: unknown
  122. searchCount: number
  123. readCount: number
  124. listCount: number
  125. replCount: number
  126. memorySearchCount: number
  127. memoryReadCount: number
  128. memoryWriteCount: number
  129. readFilePaths: string[]
  130. searchArgs: string[]
  131. latestDisplayHint?: string
  132. messages: CollapsibleMessage[]
  133. displayMessage: CollapsibleMessage
  134. mcpCallCount?: number
  135. mcpServerNames?: string[]
  136. bashCount?: number
  137. gitOpBashCount?: number
  138. commits?: { sha: string; kind: CommitKind }[]
  139. pushes?: { branch: string }[]
  140. branches?: { ref: string; action: BranchAction }[]
  141. prs?: { number: number; url?: string; action: PrAction }[]
  142. hookTotalMs?: number
  143. hookCount?: number
  144. hookInfos?: StopHookInfo[]
  145. relevantMemories?: { path: string; content: string; mtimeMs: number }[]
  146. teamMemorySearchCount?: number
  147. teamMemoryReadCount?: number
  148. teamMemoryWriteCount?: number
  149. [key: string]: unknown
  150. }
  151. export type HookResultMessage = Message
  152. export type SystemThinkingMessage = Message & { type: 'system' }