fix(goal-session): discriminate plugin turn triggers

This commit is contained in:
Tianyi Cui
2026-07-21 16:08:53 +08:00
parent 5d411f9c4e
commit 6475e51825
6 changed files with 47 additions and 9 deletions

View File

@@ -345,11 +345,17 @@ export function apply(ctx: Context): void {
switch (event.type) {
case 'turn/start':
state.openTurn = event.data.turn
if (state.attempt !== undefined && isGoalRoundSource(event.data.trigger.source)
&& sameRound(event.data.trigger.source, state.attempt)) {
state.attempt.turn = event.data.turn
switch (event.data.trigger.kind) {
case 'message':
if (state.attempt !== undefined && isGoalRoundSource(event.data.trigger.source)
&& sameRound(event.data.trigger.source, state.attempt)) {
state.attempt.turn = event.data.turn
}
return
default:
// Injection and merge-extensible plugin triggers cannot admit a queued goal message.
return
}
return
case 'user/message':
if (state.attempt !== undefined && isGoalRoundSource(event.data.source)
&& sameRound(event.data.source, state.attempt)) {