跳转到内容

alignHistoryPage

function alignHistoryPage(
messages,
offset,
limit
): AlignedHistoryPage | null;

历史分页边界对齐:消息索引口径的窗口 [offset, offset + limit) 扩到配对干净的边界。「干净边界」= 该长度的前缀内每个 assistant tool_call 都已见到配对 tool_result(无 open 调用)——两端皆干净的切片 自身必配对完整,可直接作视图/initialMessages。

  • start 向前(更早)取 ≤ offset 的最大干净边界(0 恒干净);
  • end 向后(更晚)取 ≥ min(offset + limit, length) 的最小干净边界;尾部 tool_call 悬而未决(源历史本身断尾)时无此边界,取 length——分页只切不合成占位;
  • limit 是下限:为凑齐工具轮,返回区间可比 limit 长。 返回 null = 序列内出现无主 tool_result(其 tool_call 在序列之前,序列不自包含), 调用方须扩大装载范围(file-store 段跳读据此再装一段)。offset/limit 越界按 length 钳制;非整数向下取整;负数按 0。

readonly IRMessage[]

number

number

AlignedHistoryPage | null