diff options
| author | Adam Malczewski <[email protected]> | 2026-06-10 09:51:00 +0900 |
|---|---|---|
| committer | Adam Malczewski <[email protected]> | 2026-06-10 09:51:00 +0900 |
| commit | 5ff460688519e48fd0bfab893ebaed4258dee789 (patch) | |
| tree | 8c5bcdfb04122b178c5e9bc8654afd563872a8a0 /packages/kernel/src/runtime/run-turn.test.ts | |
| parent | a980aba97aed34692dd655e716747c4ff53fb186 (diff) | |
| download | dispatch-5ff460688519e48fd0bfab893ebaed4258dee789.tar.gz dispatch-5ff460688519e48fd0bfab893ebaed4258dee789.zip | |
kernel/run-turn: thread providerOpts (model) into provider.stream
executeStep built the stream opts with only the logger, so providerOpts.model
(the selected model) never reached any provider — each fell back to its own
default. Carry providerOpts through StepContext into the per-step stream opts,
plus a regression test asserting the model is forwarded.
Diffstat (limited to 'packages/kernel/src/runtime/run-turn.test.ts')
| -rw-r--r-- | packages/kernel/src/runtime/run-turn.test.ts | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/packages/kernel/src/runtime/run-turn.test.ts b/packages/kernel/src/runtime/run-turn.test.ts index 6db6645..fa2aba4 100644 --- a/packages/kernel/src/runtime/run-turn.test.ts +++ b/packages/kernel/src/runtime/run-turn.test.ts @@ -1523,6 +1523,35 @@ describe("runTurn", () => { expect(capturedOpts).toBeDefined(); expect(capturedOpts?.logger).toBeUndefined(); }); + + it("threads providerOpts.model through to provider.stream opts", async () => { + let capturedOpts: Record<string, unknown> | undefined; + + const provider: ProviderContract = { + id: "fake", + stream(_messages, _tools, opts) { + capturedOpts = opts !== undefined ? { ...opts } : undefined; + return (async function* () { + yield { type: "text-delta", delta: "hi" } as ProviderEvent; + yield { type: "usage", usage: { inputTokens: 1, outputTokens: 1 } } as ProviderEvent; + yield { type: "finish", reason: "stop" } as ProviderEvent; + })(); + }, + }; + + await runTurn({ + provider, + messages: [userMessage], + tools: [], + dispatch: { maxConcurrent: 1, eager: false }, + conversationId: "conv-1", + turnId: "turn-1", + emit: () => {}, + providerOpts: { model: "some-model-id" }, + }); + + expect(capturedOpts?.model).toBe("some-model-id"); + }); }); describe("span tree nesting", () => { |
