( messages: ReadonlyArray<Message>, strategy: NonNullable<CachePolicyObject["messages"]>, hint: CacheHint, )
| 83 | } |
| 84 | |
| 85 | const markMessages = ( |
| 86 | messages: ReadonlyArray<Message>, |
| 87 | strategy: NonNullable<CachePolicyObject["messages"]>, |
| 88 | hint: CacheHint, |
| 89 | ): ReadonlyArray<Message> => { |
| 90 | if (messages.length === 0) return messages |
| 91 | if (strategy === "latest-user-message") return markMessageAt(messages, lastIndexOfRole(messages, "user"), hint) |
| 92 | if (strategy === "latest-assistant") return markMessageAt(messages, lastIndexOfRole(messages, "assistant"), hint) |
| 93 | const start = Math.max(0, messages.length - strategy.tail) |
| 94 | let next = messages |
| 95 | for (let i = start; i < messages.length; i++) next = markMessageAt(next, i, hint) |
| 96 | return next |
| 97 | } |
| 98 | |
| 99 | export const applyCachePolicy = (request: LLMRequest): LLMRequest => { |
| 100 | if (!RESPECTS_INLINE_HINTS.has(request.model.route.id)) return request |
no test coverage detected