fix(schedule): reuse same-turn time context

This commit is contained in:
pku-xht
2026-08-06 20:32:06 +08:00
committed by Tianyi Cui
parent 32c6866adf
commit 6f2317e578
7 changed files with 33 additions and 18 deletions

View File

@@ -217,7 +217,7 @@ interface AtTimeZoneContext {
readonly clientTimeZones: string[]
}
/** Derive request zones only while the current open step contains a time-context reading. */
/** Derive request zones only while the current open turn contains a time-context reading. */
function currentClientTimeZoneContext(agent: Agent): ReturnType<typeof deriveClientTimeZoneContext> | undefined {
const events = agent.session.events
let stepStart = -1
@@ -234,13 +234,13 @@ function currentClientTimeZoneContext(agent: Agent): ReturnType<typeof deriveCli
}
}
if (stepStart < 0) return undefined
const hasReading = events.slice(stepStart + 1).some(event => event.type === 'user/message'
const turnStart = events.findLastIndex(event => event.type === 'turn/start' && event.data.turn === turn)
if (turnStart < 0) return undefined
const hasReading = events.slice(turnStart + 1).some(event => event.type === 'user/message'
&& event.data.source.kind === 'plugin'
&& event.data.source.plugin === 'time-context'
&& Object.keys(event.data.source).length === 2)
if (!hasReading) return undefined
const turnStart = events.findLastIndex(event => event.type === 'turn/start' && event.data.turn === turn)
if (turnStart < 0) return undefined
const messages = events.slice(turnStart + 1)
.flatMap(event => event.type === 'user/message' ? [event.data] : [])
return deriveClientTimeZoneContext(messages)