feat(guild): wake_mapping, per-recipient wakeup, discuss/work turn engine, channel join/leave
- wake_mapping table; triage onDuty (auto-added member) / custom listeners - per-recipient wakeup metadata on message.created (one message-id; added only at push). Rules: author=false; triage/custom=wake_mapping only; general=all; report=none - discuss/work rotation: channel_turn_state (order/currentSpeaker/round events/cross-round no-reply streak); null activation, queue-jump, /no-reply pass, all-/no-reply pause, end-of-round shuffle (trailing no-reply run to tail, head shuffled, first != last normal speaker) - slash-command registry (/no-reply, /force-proceed); registered commands intercepted and never delivered; guild-authored /ack persisted - POST /channels/:id/join|leave; leave cleans channel_members, wake_mapping and turn-state order Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { Body, Controller, Get, Post, Query, Req, UnauthorizedException } from '@nestjs/common';
|
||||
import { Body, Controller, Get, Param, Post, Query, Req, UnauthorizedException } from '@nestjs/common';
|
||||
import { ChannelsService } from './channels.service';
|
||||
|
||||
// ApiKeyGuard attaches the introspected Center user id onto the request.
|
||||
@@ -27,8 +27,24 @@ export class ChannelsController {
|
||||
xType: body.xType as string | undefined,
|
||||
isPublic: Boolean(body.isPublic),
|
||||
memberUserIds: Array.isArray(body.memberUserIds) ? (body.memberUserIds as string[]) : [],
|
||||
onDuty: body.onDuty as string | undefined,
|
||||
listeners: Array.isArray(body.listeners) ? (body.listeners as string[]) : [],
|
||||
},
|
||||
userId,
|
||||
);
|
||||
}
|
||||
|
||||
@Post(':id/join')
|
||||
join(@Req() req: AuthedRequest, @Param('id') channelId: string) {
|
||||
const userId = req.userId ?? '';
|
||||
if (!userId) throw new UnauthorizedException('missing user');
|
||||
return this.channelsService.joinChannel(channelId, userId);
|
||||
}
|
||||
|
||||
@Post(':id/leave')
|
||||
leave(@Req() req: AuthedRequest, @Param('id') channelId: string) {
|
||||
const userId = req.userId ?? '';
|
||||
if (!userId) throw new UnauthorizedException('missing user');
|
||||
return this.channelsService.leaveChannel(channelId, userId);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user