feat: split dirigent_tools into individual tools + human @mention override
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
This commit is contained in:
40
TASKLIST.md
40
TASKLIST.md
@@ -39,11 +39,39 @@
|
||||
|
||||
---
|
||||
|
||||
## 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.
|
||||
- **New feature: Human @ list override**
|
||||
- When a message is from a user in `humanList` and contains `<@USER_ID>` mentions:
|
||||
- Detect which agents are @-mentioned (e.g., a, b, c).
|
||||
- Determine their order in the current speaking order list (e.g., a → b → c).
|
||||
- Temporarily replace the speaking order with `[a, b, c]` and cycle a → b → c.
|
||||
- After the cycle returns to **a** again, restore the original speaking order list.
|
||||
|
||||
Reference in New Issue
Block a user