# エージェントA: メッセージング機能実装タスク
## 背景
spec.md(行112-148)に記載されたAgent Communication MCP Serverのメッセージング機能を完全実装する。
## タスク
以下のドキュメントを**全セクション**読んで実装してください:
1. 仕様書(/home/miyagi/dev/personal_pj/agent-communication-mcp/spec.md)の行112-148
2. 実装方針(/home/miyagi/dev/personal_pj/agent-communication-mcp/implementation-policy.md)
3. 並列実装計画書(/home/miyagi/dev/personal_pj/agent-communication-mcp/parallel-implementation-plan.md)の行59-114
## 実装項目(優先順位順)
【最高優先度】必須機能
1. MessageService.sendMessage()
- spec.md行112-125の仕様を**完全に**実装
- パラメータ: agentName, roomName, message, metadata(オプション)
- 戻り値: success, messageId, roomName, timestamp, mentions配列
- メッセージIDはUUIDv4形式で生成
- タイムスタンプはISO 8601形式
2. MessageService.getMessages()
- spec.md行128-148の仕様を**完全に**実装
- パラメータ: roomName, agentName(オプション), limit(デフォルト50), offset(デフォルト0), mentionsOnly(デフォルトfalse)
- 戻り値: roomName, messages配列, count, hasMore
- ページネーション完全対応
【高優先度】コア機能
3. メンション解析機能
- 正規表現: /@([a-zA-Z0-9_-]+)/g
- 抽出したメンションをmentions配列に格納
- 重複除去を実施
4. JSONLファイル操作
- ファイルパス: data/rooms/{roomName}/messages.jsonl
- 追記専用(append only)
- ファイルが存在しない場合は自動作成
- ディレクトリが存在しない場合も自動作成
5. バリデーション(Zodスキーマ)
```typescript
// src/schemas/message.schema.ts
sendMessageSchema = z.object({
agentName: z.string().min(1).max(50),
roomName: z.string().regex(/^[a-zA-Z0-9-_]+$/),
message: z.string().min(1).max(1000),
metadata: z.record(z.any()).optional()
});
```
【中優先度】最適化機能
6. MessageCache実装
- LRUキャッシュ(最大1000メッセージ)
- ルーム別にキャッシュ管理
- mentionsOnlyクエリの高速化
7. パフォーマンス最適化
- ストリーミング読み込み(大量メッセージ対応)
- 1000メッセージ/秒の処理性能
## エラーハンドリング
以下のエラーを実装(implementation-policy.md参照):
```typescript
// メッセージ送信時
throw new RoomNotFoundError(roomName); // ルームが存在しない場合
throw new ValidationError('Invalid message format', 'INVALID_MESSAGE_FORMAT');
// メッセージ取得時
throw new StorageError('Failed to read messages', 'STORAGE_ERROR');
```
## テスト要件
1. **単体テスト**(tests/messaging/unit/)
- MessageService.test.ts
- MessageCache.test.ts
- カバレッジ90%以上必須
2. **統合テスト**(tests/messaging/integration/)
- messaging-flow.test.ts(送信→取得の一連フロー)
3. **パフォーマンステスト**(tests/messaging/performance/)
- throughput.test.ts(1000msg/秒の検証)
## 公開API(src/features/messaging/index.ts)
```typescript
export interface IMessagingAPI {
sendMessage(params: SendMessageParams): Promise<Message>;
getMessages(params: GetMessagesParams): Promise<MessageListResponse>;
getMessageCount(roomName: string): Promise<number>;
}
export class MessagingAPI implements IMessagingAPI {
// 実装
}
// MCPツール定義もエクスポート
export { messagingTools } from './tools/messaging.tools';
```
## 完了条件
- [ ] spec.md行112-148の**すべて**の仕様を満たしている
- [ ] implementation-policy.mdのエラーハンドリング方針に準拠
- [ ] 単体テストカバレッジ90%以上
- [ ] パフォーマンステスト(1000msg/秒)合格
- [ ] src/features/messaging/README.mdにAPIドキュメント作成
## 注意事項
- ルーム存在確認は一旦モック(mockRoomChecker)を使用
- ファイルロックは実装不要(エージェントDが統合時に追加)
- 他エージェントの機能に依存しないこと