Spaces:
Running
Running
| 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) | |
| } | |