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.ts8
1 files changed, 5 insertions, 3 deletions
diff --git a/packages/kernel/src/runtime/run-turn.ts b/packages/kernel/src/runtime/run-turn.ts
index ac87a1f..273482f 100644
--- a/packages/kernel/src/runtime/run-turn.ts
+++ b/packages/kernel/src/runtime/run-turn.ts
@@ -27,7 +27,9 @@ import {
usageEvent,
} from "./events.js";
-export const MAX_STEPS = 50;
+/** Max steps per turn. 0 = unlimited (the loop runs until the model stops
+ * making tool calls or the abort signal fires). */
+export const MAX_STEPS = 0;
function zeroUsage(): Usage {
return { inputTokens: 0, outputTokens: 0 };
@@ -615,7 +617,7 @@ export async function runTurn(input: RunTurnInput): Promise<RunTurnResult> {
input.emit(turnStartEvent(conversationId, turnId));
try {
- for (let step = 0; step < MAX_STEPS; step++) {
+ for (let step = 0; MAX_STEPS === 0 || step < MAX_STEPS; step++) {
if (signal.aborted) {
finishReason = "aborted";
break;
@@ -708,7 +710,7 @@ export async function runTurn(input: RunTurnInput): Promise<RunTurnResult> {
break;
}
- if (step === MAX_STEPS - 1) {
+ if (MAX_STEPS > 0 && step === MAX_STEPS - 1) {
finishReason = "max-steps";
// No next step → no tool-result boundary. Leave any pending
// steering messages for the caller (it owns the queue).