WIP: feat(conductor): add interactive conductor type#393
Open
BestSithInEU wants to merge 2 commits intoasheshgoplani:mainfrom
Open
WIP: feat(conductor): add interactive conductor type#393BestSithInEU wants to merge 2 commits intoasheshgoplani:mainfrom
BestSithInEU wants to merge 2 commits intoasheshgoplani:mainfrom
Conversation
Initial branch for interactive conductor implementation.
There was a problem hiding this comment.
Pull request overview
Adds an initial stub artifact intended to relate to the proposed new interactive conductor type.
Changes:
- Add a new root-level
.interactive-conductorfile containing placeholder content.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Contributor
Author
|
What do you think @asheshgoplani ? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add a new
interactiveconductor type that provides direct session control from messaging platforms (Telegram, Slack, Discord) — no Claude-powered conductor in the middle. The user becomes the orchestrator, interacting with individual agent-deck sessions through chat threads, inline keyboards, and paginated output.Inspired by ccbot but built from scratch in Go as part of the agent-deck ecosystem.
Key differences from standard conductor
bridge.py)Architecture
Plugin-per-platform — shared Go core library (
internal/bridge/core/) with thin platform binaries:cmd/agent-deck-bridge-telegram/cmd/agent-deck-bridge-slack/cmd/agent-deck-bridge-discord/Each bridge runs as an independent systemd/launchd service. Fault isolation: one platform crashing doesn't affect others.
Core components:
fsnotifyon JSONL files with debouncing + poll fallbackImplementation Plan
Phase 1: Core Library & ConductorMeta Extension
Typefield toConductorMetawithGetType()accessor (default:"standard")InteractiveConductorSettingstoConductorSettingsstructSetupConductor()andhandleConductorSetup()with--typeflaginternal/bridge/core/config.go— config loading from[conductor.interactive]internal/bridge/core/auth.go— role-based auth managerinternal/bridge/core/executor.go— CLI wrapper for agent-deck commandsPhase 2: Transcript Watcher & Event System
internal/bridge/core/events.gointernal/bridge/core/watcher.go— fsnotify + tail-follow JSONL parserPhase 3: Session Router & State Persistence
internal/bridge/core/router.go— chat target ↔ session mappingrouter-telegram.json,router-slack.json,router-discord.json)Phase 4: Rendering & Pagination
internal/bridge/core/paginator.go— page splitting + inline button navigationinternal/bridge/core/renderer.go— ANSI-to-PNG usingcharmbracelet/x/ansi+golang.org/x/imagePhase 5: Platform Adapter Interface & Telegram Bridge
PlatformAdapterinterface ininternal/bridge/platform/adapter.gointernal/bridge/platform/telegram/)Retry-Afterfor 429 rate limitscmd/agent-deck-bridge-telegram/main.goPhase 6: Slack & Discord Bridges
internal/bridge/platform/slack/) — Socket Mode, button attachmentsinternal/bridge/platform/discord/) — button components, forum channelscmd/agent-deck-bridge-slack/main.goandcmd/agent-deck-bridge-discord/main.goPhase 7: Build & Deployment
Makefilefor bridge binaries.goreleaser.ymlconductor setup --type interactivefor automatic service installationChat Commands
/help/status/sessions/subscribe <session>/unsubscribe <session>/output <session>/screenshot <session>/send <session> <msg>/new <path> [-t title]/launch <path> -t <title> -m <msg>/start / /stop / /restart <session>/worktree <path> -b <branch>Test Plan
type: "interactive"setup/teardownconductor setup --type interactiveskips heartbeat/Python/screenshotrenders PNG correctlyDependencies
github.com/fsnotify/fsnotifygithub.com/charmbracelet/x/ansigithub.com/go-telegram-bot-api/telegram-bot-api/v5github.com/slack-go/slackgithub.com/bwmarrin/discordgogolang.org/x/image/font