Feature 1: Split dirigent_tools - Replace monolithic dirigent_tools (9 actions) with 9 individual tools - Discord: dirigent_channel_create, dirigent_channel_update, dirigent_member_list - Policy: dirigent_policy_get, dirigent_policy_set, dirigent_policy_delete - Turn: dirigent_turn_status, dirigent_turn_advance, dirigent_turn_reset - Extract shared executeDiscordAction() helper Feature 2: Human @mention override - When humanList user @mentions agents, temporarily override turn order - Only mentioned agents cycle, ordered by their turn order position - Original order restores when cycle returns to first agent or all NO_REPLY - New: setMentionOverride(), hasMentionOverride(), extractMentionedUserIds() - New: buildUserIdToAccountIdMap() for reverse userId→accountId resolution Bump version to 0.3.0
4.0 KiB
4.0 KiB
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 viaresolveDiscordUserId().
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
schedulingIdentifierconfig 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_writeandmessage_senthandoff 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()andbuildSchedulingIdentifierInstruction()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
whispergateentry ifdirigentnot found
- plugin name/id →
- Done: All files updated.
6) Split dirigent_tools into Individual Tools ✅
- Before: Single
dirigent_toolstool withactionparameter managing 9 sub-actions. - After: 9 individual tools, each with focused parameters:
dirigent_channel_create— Create private Discord channeldirigent_channel_update— Update channel permissionsdirigent_member_list— List guild membersdirigent_policy_get— Get all channel policiesdirigent_policy_set— Set/update a channel policydirigent_policy_delete— Delete a channel policydirigent_turn_status— Show turn statusdirigent_turn_advance— Manually advance turndirigent_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
humanListuser 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.
resetTurnclears 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_receivedhandler.
Open Items / Notes
- User requested the previous README commit should have been pushed to
maindirectly (was pushed to a branch). Address separately if needed.