diff --git a/packages/core/src/session/runner/llm.ts b/packages/core/src/session/runner/llm.ts index 4104996db..07f503850 100644 --- a/packages/core/src/session/runner/llm.ts +++ b/packages/core/src/session/runner/llm.ts @@ -213,6 +213,7 @@ export const layer = Layer.effect( const context = entries.map((entry) => entry.message) const request = LLM.request({ model, + providerOptions: { openai: { promptCacheKey: session.id } }, system: [agent.info?.system, system.baseline] .filter((part): part is string => part !== undefined && part.length > 0) .map(SystemPart.make), diff --git a/packages/core/test/session-runner.test.ts b/packages/core/test/session-runner.test.ts index c291e4df7..7df44617b 100644 --- a/packages/core/test/session-runner.test.ts +++ b/packages/core/test/session-runner.test.ts @@ -2812,6 +2812,10 @@ describe("SessionRunnerLLM", () => { yield* Effect.yieldNow expect(requests).toHaveLength(2) + expect(requests.map((request) => request.providerOptions?.openai?.promptCacheKey)).toEqual([ + sessionID, + otherSessionID, + ]) yield* Deferred.succeed(streamGate, undefined) yield* Fiber.join(first) yield* Fiber.join(second)