Bin29's picture
Sync from main: e764154 feat(plot-skill): add math-exam-diagram SKILL.md for exam-style math figures
abcf568
import { resolveStudioToolChoice } from '../../session/session-agent-config'
import type { StudioAssistantMessage, StudioRun } from '../../../domain/types'
import type {
StudioPreparedRunContext,
StudioRunRequestInput,
StudioSessionRunnerDependencies
} from './dependency-center'
import { hasUsableCustomApiConfig } from './factory'
import { createAgentLoopExecution, createResolvedPlanExecution } from './execution-factories'
import { executePreparedStream } from './execution-manager'
export async function routePreparedRun(
deps: StudioSessionRunnerDependencies,
prepared: StudioPreparedRunContext,
abortSignal: AbortSignal,
): Promise<{ run: StudioRun; assistantMessage: StudioAssistantMessage; text: string }> {
if (hasUsableCustomApiConfig(prepared.input.customApiConfig)) {
return executePreparedStream(deps, prepared, createAgentLoopExecution(deps, {
prepared,
customApiConfig: prepared.input.customApiConfig,
toolChoice: resolveStudioToolChoice({ session: prepared.input.session, override: prepared.input.toolChoice }),
abortSignal,
}), abortSignal)
}
const plan = await deps.resolveTurnPlan({
projectId: prepared.input.projectId,
session: prepared.input.session,
run: prepared.run,
assistantMessage: prepared.assistantMessage,
inputText: prepared.input.inputText,
workContext: prepared.workContext
})
return executePreparedStream(deps, prepared, createResolvedPlanExecution(deps, {
prepared,
plan,
customApiConfig: prepared.input.customApiConfig,
toolChoice: prepared.input.toolChoice,
abortSignal,
}), abortSignal)
}