feat(#170): Implement mosaic-bridge module for Discord
Created the mosaic-bridge module to enable Discord integration for chat-based control of Mosaic Stack. This module provides the foundation for receiving commands via Discord and forwarding them to the stitcher for job orchestration. Key Features: - Discord bot connection and authentication - Command parsing (@mosaic fix, status, cancel, verbose, quiet, help) - Thread management for job updates - Chat provider interface for future platform extensibility - Noise management (low/medium/high verbosity levels) Implementation Details: - Created IChatProvider interface for platform abstraction - Implemented DiscordService with Discord.js - Basic command parsing (detailed parsing in #171) - Thread creation for job-specific updates - Configuration via environment variables Commands Supported: - @mosaic fix <issue> - Start job for issue - @mosaic status <job> - Get job status (placeholder) - @mosaic cancel <job> - Cancel running job (placeholder) - @mosaic verbose <job> - Stream full logs (placeholder) - @mosaic quiet - Reduce notifications (placeholder) - @mosaic help - Show available commands Testing: - 23/23 tests passing (TDD approach) - Unit tests for Discord service - Module integration tests - 100% coverage of critical paths Quality Gates: - Typecheck: PASSED - Lint: PASSED - Build: PASSED - Tests: PASSED (23/23) Environment Variables: - DISCORD_BOT_TOKEN - Bot authentication token - DISCORD_GUILD_ID - Server/Guild ID (optional) - DISCORD_CONTROL_CHANNEL_ID - Channel for commands Files Created: - apps/api/src/bridge/bridge.module.ts - apps/api/src/bridge/discord/discord.service.ts - apps/api/src/bridge/interfaces/chat-provider.interface.ts - apps/api/src/bridge/index.ts - Full test coverage Dependencies Added: - discord.js@latest Next Steps: - Issue #171: Implement detailed command parsing - Issue #172: Add Herald integration for job updates - Future: Add Slack, Matrix support via IChatProvider Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -163,6 +163,15 @@ GITEA_REPO_NAME=stack
|
||||
# Configure in Gitea: Repository Settings → Webhooks → Add Webhook
|
||||
GITEA_WEBHOOK_SECRET=REPLACE_WITH_RANDOM_WEBHOOK_SECRET
|
||||
|
||||
# ======================
|
||||
# Discord Bridge (Optional)
|
||||
# ======================
|
||||
# Discord bot integration for chat-based control
|
||||
# Get bot token from: https://discord.com/developers/applications
|
||||
# DISCORD_BOT_TOKEN=your-discord-bot-token-here
|
||||
# DISCORD_GUILD_ID=your-discord-server-id
|
||||
# DISCORD_CONTROL_CHANNEL_ID=channel-id-for-commands
|
||||
|
||||
# ======================
|
||||
# Logging & Debugging
|
||||
# ======================
|
||||
|
||||
Reference in New Issue
Block a user