# Dirigent – Fixes & Improvements > Note: Project rename from WhisperGate → Dirigent implies updating all code/docs references (plugin/tool names, strings, files, configs). ## 1) Identity Prompt Enhancements ✅ - Current prompt only includes agent-id + discord name. - **Add Discord userId** to identity injection. - **Done**: `buildAgentIdentity()` now resolves and includes Discord userId via `resolveDiscordUserId()`. ## 2) Scheduling Identifier (Default: ➡️) ✅ - Add a **configurable scheduling identifier** (default: `➡️`). - Update agent prompt to explain: - The scheduling identifier itself is meaningless. - When receiving `<@USER_ID>` + scheduling identifier, the agent should check chat history and decide whether to reply. - If no reply needed, return `NO_REPLY`. - **Done**: Added `schedulingIdentifier` config field; `buildSchedulingIdentifierInstruction()` injected for group chats. ## 3) Moderator Handoff Message Format ✅ - Moderator should **no longer send semantic messages** to activate agents. - Replace with: `<@TARGET_USER_ID>` + scheduling identifier (e.g., `<@123>➡️`). - **Done**: Both `before_message_write` and `message_sent` handoff messages now use `<@userId>` + scheduling identifier format. ## 4) Prompt Language ✅ - **All prompts must be in English** (including end-marker instructions and group-chat rules). - **Done**: `buildEndMarkerInstruction()` and `buildSchedulingIdentifierInstruction()` output English. Slash command help text in English. ## 5) Full Project Rename ✅ - Project name changed to **Dirigent**. - Update **all strings** across repo: - plugin name/id → `dirigent` - tool name → `dirigent_tools` - slash command → `/dirigent` - docs, config, scripts, examples - any text mentions - dist output dir → `dist/dirigent` - docker service → `dirigent-no-reply-api` - config key fallback: still reads legacy `whispergate` entry if `dirigent` not found - **Done**: All files updated. --- ## 6) Split dirigent_tools into Individual Tools ✅ - **Before**: Single `dirigent_tools` tool with `action` parameter managing 9 sub-actions. - **After**: 9 individual tools, each with focused parameters: - `dirigent_channel_create` — Create private Discord channel - `dirigent_channel_update` — Update channel permissions - `dirigent_member_list` — List guild members - `dirigent_policy_get` — Get all channel policies - `dirigent_policy_set` — Set/update a channel policy - `dirigent_policy_delete` — Delete a channel policy - `dirigent_turn_status` — Show turn status - `dirigent_turn_advance` — Manually advance turn - `dirigent_turn_reset` — Reset turn order - Shared Discord API helper `executeDiscordAction()` extracted to reduce duplication. - **Done**: All tools registered individually with specific parameter schemas. ## 7) Human @Mention Override ✅ - When a message from a `humanList` user contains `<@USER_ID>` mentions: - Extract mentioned Discord user IDs from the message content. - Map user IDs → accountIds via bot token decoding (reverse of `resolveDiscordUserId`). - Filter to agents in the current turn order. - Order by their position in the current turn order. - Temporarily replace the speaking order with only those agents. - After the cycle returns to the first agent, restore the original order and go dormant. - Edge cases handled: - All override agents NO_REPLY → restore original order, go dormant. - `resetTurn` clears any active override. - New human message without mentions → restores override before normal handling. - Mentioned users not in turn order → ignored, normal flow. - New functions in `turn-manager.ts`: `setMentionOverride()`, `hasMentionOverride()`. - New helpers in `index.ts`: `buildUserIdToAccountIdMap()`, `extractMentionedUserIds()`. - **Done**: Override logic integrated in `message_received` handler. --- ## Open Items / Notes - User requested the previous README commit should have been pushed to `main` directly (was pushed to a branch). Address separately if needed.