<!-- source-hash: 5dd665815decf79ecf870dd4eb652947 -->
Defines the minimal wire shape for Slack message data as displayed in the chat RAG result card, representing a post-retrieval projection stripped of community-feature fields like reactions and threading.

## Key Components

### `SlackMessageItem` interface

A lean projection of a `slack_messages` RAG table row containing only the fields required to render the `slack-message-card` UI component.

| Field | Type | Description |
|---|---|---|
| `id` | `string` | Slack message ID (`ts` or URL-derived) |
| `title` | `string` | Display title — typically `"author · channel"` |
| `preview` | `string?` | PII-sanitized message body preview |
| `channel` | `string?` | Channel name parsed from URL or stored row |
| `dateUpdated` | `string \| number \| null?` | ISO timestamp or millisecond epoch |
| `url` | `string \| null?` | Full Slack permalink (`https://*.slack.com/archives/...`) |

## Usage Example

```typescript
import { SlackMessageItem } from '@/types/slack-message';

// Mapping a RAG table row to the card's wire shape
const item: SlackMessageItem = {
  id: '1712345678.000100',
  title: 'jane.doe · #support',
  preview: 'Has anyone seen the ticket for the VPN issue?',
  channel: 'support',
  dateUpdated: '2024-04-05T14:22:00.000Z',
  url: 'https://acme.slack.com/archives/C01AB2CD3EF/p1712345678000100',
};
```

> **Naming note:** This interface is intentionally distinct from the broader `SlackMessage` type in `src/types/slack.ts`, which covers the full Slack Community feature shape including reactions, threading, and user objects.