Add new feature requests notes
This commit is contained in:
34
NEW_FEAT.md
Normal file
34
NEW_FEAT.md
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# New Feature Requests
|
||||||
|
|
||||||
|
## 1) Multi-Message Mode (human multi-message)
|
||||||
|
|
||||||
|
### Config
|
||||||
|
- **Multi-message start marker**: configurable, default **↗️**
|
||||||
|
- **Multi-message end marker**: configurable, default **↙️**
|
||||||
|
- **Multi-message prompt marker**: configurable, default **⤵️**
|
||||||
|
|
||||||
|
### Logic
|
||||||
|
- When a **human** message contains the **start marker**:
|
||||||
|
- Pause **turn manager** in that channel.
|
||||||
|
- All agents in the channel reply using **no-reply** model.
|
||||||
|
- Channel enters **multi-msg mode**.
|
||||||
|
- In multi-msg mode:
|
||||||
|
- Each human message triggers **moderator bot** to reply with the **prompt marker**.
|
||||||
|
- Continues until a human message contains the **end marker**.
|
||||||
|
- When a human message contains the **end marker**:
|
||||||
|
- **Turn manager** resumes for that channel.
|
||||||
|
- **Moderator** sends the **scheduler marker** prompting the next agent to speak.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2) Shuffle Mode (turn order reshuffle)
|
||||||
|
|
||||||
|
### Config / Command
|
||||||
|
- Maintain `shuffling: boolean` **per Discord channel**.
|
||||||
|
- Slash command: `/turn-shuffling [on | off]` to view/control.
|
||||||
|
|
||||||
|
### Logic
|
||||||
|
- When shuffle is **on**:
|
||||||
|
- After the **last speaker** in the turn list speaks,
|
||||||
|
- Shuffle the **turn order list**.
|
||||||
|
- Constraint: **the previous last speaker must NOT become the first speaker** after shuffle.
|
||||||
86
TASKLIST.md
86
TASKLIST.md
@@ -1,86 +0,0 @@
|
|||||||
# 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**: 6 individual tools (Discord tools prefixed `dirigent_discord_*`):
|
|
||||||
- `dirigent_discord_channel_create` — Create private Discord channel
|
|
||||||
- `dirigent_discord_channel_update` — Update channel permissions
|
|
||||||
- `dirigent_discord_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
|
|
||||||
- Turn management (status/advance/reset) NOT exposed as tools — purely internal plugin logic, accessible via `/dirigent` slash commands.
|
|
||||||
- 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.
|
|
||||||
|
|
||||||
## 8) Wait for Human Reply ✅
|
|
||||||
- Added configurable `waitIdentifier` (default: `👤`) to config and config schema.
|
|
||||||
- Prompt injection in group chats: tells agents to end with `👤` instead of end symbol when they need a human response. Warns to use sparingly — only when human is actively participating.
|
|
||||||
- Detection in `before_message_write` and `message_sent`: if last char matches wait identifier → `setWaitingForHuman(channelId)`.
|
|
||||||
- Turn manager `waitingForHuman` state:
|
|
||||||
- `checkTurn()` blocks all agents (`reason: "waiting_for_human"`) → routed to no-reply model.
|
|
||||||
- `onNewMessage()` clears `waitingForHuman` on human message → normal flow resumes.
|
|
||||||
- Non-human messages ignored while waiting.
|
|
||||||
- `resetTurn()` also clears waiting state.
|
|
||||||
- **Done**: Full lifecycle implemented across turn-manager, rules, and index.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 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.
|
|
||||||
Reference in New Issue
Block a user