summaryrefslogtreecommitdiffhomepage
path: root/packages/kernel/src/runtime/run-turn.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/kernel/src/runtime/run-turn.ts')
-rw-r--r--packages/kernel/src/runtime/run-turn.ts13
1 files changed, 11 insertions, 2 deletions
diff --git a/packages/kernel/src/runtime/run-turn.ts b/packages/kernel/src/runtime/run-turn.ts
index d5db1bf..b50e8ee 100644
--- a/packages/kernel/src/runtime/run-turn.ts
+++ b/packages/kernel/src/runtime/run-turn.ts
@@ -1,6 +1,11 @@
import type { ChatMessage, Chunk, StepId } from "../contracts/conversation.js";
import type { Logger, Span } from "../contracts/logging.js";
-import type { ProviderContract, ProviderEvent, Usage } from "../contracts/provider.js";
+import type {
+ ProviderContract,
+ ProviderEvent,
+ ProviderStreamOptions,
+ Usage,
+} from "../contracts/provider.js";
import type { EventEmitter, RunTurnInput, RunTurnResult } from "../contracts/runtime.js";
import type { ToolCall, ToolContract } from "../contracts/tool.js";
import { createStepDispatcher, type StepDispatcher } from "./dispatch.js";
@@ -100,6 +105,8 @@ interface StepContext {
readonly toolSpans: Map<string, Span>;
readonly cwd: string | undefined;
readonly now: (() => number) | undefined;
+ /** Per-turn provider options (model, systemPrompt, …) threaded to stream(). */
+ readonly providerOpts: ProviderStreamOptions | undefined;
}
interface TimingState {
@@ -295,7 +302,8 @@ async function executeStep(ctx: StepContext): Promise<StepResult> {
}
try {
- const opts = {
+ const opts: ProviderStreamOptions = {
+ ...ctx.providerOpts,
...(ctx.turnSpan !== undefined && stepSpan !== undefined ? { logger: stepSpan.log } : {}),
};
const stream = ctx.provider.stream(ctx.messages, ctx.tools, opts);
@@ -501,6 +509,7 @@ export async function runTurn(input: RunTurnInput): Promise<RunTurnResult> {
toolSpans,
cwd: input.cwd,
now,
+ providerOpts: input.providerOpts,
});
totalUsage = addUsage(totalUsage, stepResult.usage);