--- name: manage-channels description: Wire channels to agent groups, manage isolation levels, add new channel groups. Use after adding a channel, during setup, or standalone to reconfigure. --- # Manage Channels Wire messaging channels to agent groups. See `docs/v2-isolation-model.md` for the full isolation model. ## Assess Current State Read the v2 central DB (`data/v2.db`) — query `agent_groups`, `messaging_groups`, and `messaging_group_agents` tables. Also check `.env` for channel tokens and `src/channels/index.ts` for uncommented imports. Categorize channels as: **wired** (has DB entities), **configured but unwired** (has credentials + barrel import, no DB entities), or **not configured**. ## First Channel (No Agent Groups Exist) 1. Ask the assistant name (default: project name or "Andy") 2. Ask which channel is the primary/admin channel 3. **Telegram special case:** if the chosen channel is `telegram`, do not ask for an ID. Run `npx tsx setup/index.ts --step pair-telegram -- --intent main`, show the user the 4-digit CODE from the `PAIR_TELEGRAM_ISSUED` block, and tell them to DM the bot with `@ CODE` from the chat they want as their main. Wait for the `PAIR_TELEGRAM` block — `PLATFORM_ID`, `IS_GROUP`, `ADMIN_USER_ID` come back from there. Skip step 4 of this list (the messaging group is already created with admin binding); instead run only the agent-group + wiring portion via `setup --step register` with the returned `PLATFORM_ID`. 4. Otherwise (non-Telegram), ask for the platform ID — read the channel's SKILL.md `## Channel Info` > `how-to-find-id` to guide them, then register: ```bash npx tsx setup/index.ts --step register -- \ --platform-id "" --name "" --folder "main" \ --channel "" --is-main --no-trigger-required \ --assistant-name "" --session-mode "shared" ``` 5. Continue to "Wire New Channel" for any remaining configured channels. ## Wire New Channel For each unwired channel: 1. Read its SKILL.md `## Channel Info` for terminology, how-to-find-id, typical-use, and default-isolation 2. Ask for the platform ID using the platform's terminology 3. Ask the isolation question (see below) 4. Register with the appropriate flags ### Isolation Question Present a multiple-choice with a contextual recommendation. The three options: - **Same conversation** (`--session-mode "agent-shared"` + existing folder) — all messages land in one session. Recommend for webhook + chat combos (GitHub + Slack). - **Same agent, separate conversations** (`--session-mode "shared"` + existing folder) — shared workspace/memory, independent threads. Recommend for same user across platforms. - **Separate agent** (new `--folder`) — full isolation. Recommend when different people are involved. Use the channel's `typical-use` and `default-isolation` fields to pick the recommendation. Offer to explain more if the user is unsure — reference `docs/v2-isolation-model.md` for the detailed explanation. ### Register Command ```bash npx tsx setup/index.ts --step register -- \ --platform-id "" --name "" \ --folder "" --channel "" \ --session-mode "" \ --assistant-name "" ``` For separate agents, also ask for a folder name and optionally a different assistant name. ## Add Channel Group When adding another group/chat on an already-configured platform (e.g. a second Telegram group): 1. **Telegram:** ask the isolation question first to determine intent (`wire-to:` for an existing agent, `new-agent:` for a fresh one). Run `npx tsx setup/index.ts --step pair-telegram -- --intent `, show the CODE, and tell the user to post `@ CODE` in the target group (or DM the bot for a private chat). Wait for the `PAIR_TELEGRAM` block, then run `setup --step register` with the returned `PLATFORM_ID` and the chosen folder/session-mode. The messaging group row is already created with `admin_user_id` set — `register` only needs to add the wiring. 2. **Other channels:** read the channel's SKILL.md `## Channel Info` for terminology and how-to-find-id. Ask for the new group/chat ID, ask the isolation question, then register. No package or credential changes needed. ## Change Wiring 1. Show current wiring 2. Ask which channel to move and to which agent group 3. Delete the old `messaging_group_agents` entry, create a new one 4. Note: existing sessions stay with the old agent group; new messages route to the new one ## Show Configuration Display a readable summary showing agent groups with their wired channels, configured-but-unwired channels, and unconfigured channels.