summaryrefslogtreecommitdiffhomepage
path: root/packages/kernel/src/runtime/run-turn.test.ts
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-10 09:51:00 +0900
committerAdam Malczewski <[email protected]>2026-06-10 09:51:00 +0900
commit5ff460688519e48fd0bfab893ebaed4258dee789 (patch)
tree8c5bcdfb04122b178c5e9bc8654afd563872a8a0 /packages/kernel/src/runtime/run-turn.test.ts
parenta980aba97aed34692dd655e716747c4ff53fb186 (diff)
downloaddispatch-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.ts29
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", () => {