11import { randomUUID } from "node:crypto" ;
22import { agentCommandFromIngress } from "../agents/agent-command.js" ;
3- import { resolveSessionAgentId } from "../agents/agent-scope.js" ;
3+ import {
4+ resolveAgentDir ,
5+ resolveAgentWorkspaceDir ,
6+ resolveSessionAgentId ,
7+ } from "../agents/agent-scope.js" ;
48import { ensureContextWindowCacheLoaded } from "../agents/context.js" ;
59import { DEFAULT_PROVIDER } from "../agents/defaults.js" ;
10+ import { prewarmAgentHarnessRuntime } from "../agents/harness/prewarm.js" ;
611import {
712 buildAllowedModelSet ,
813 buildConfiguredModelCatalog ,
@@ -385,7 +390,6 @@ export class EmbeddedTuiBackend implements TuiBackend {
385390 catalog,
386391 } ) ;
387392 }
388-
389393 return {
390394 sessionKey : opts . sessionKey ,
391395 sessionId,
@@ -396,6 +400,28 @@ export class EmbeddedTuiBackend implements TuiBackend {
396400 } ;
397401 }
398402
403+ async prewarmAgentRuntime ( opts : { sessionKey : string } ) {
404+ const { cfg, entry } = loadSessionEntry ( opts . sessionKey ) ;
405+ const sessionId = entry ?. sessionId ;
406+ const sessionAgentId = resolveSessionAgentId ( { sessionKey : opts . sessionKey , config : cfg } ) ;
407+ const resolvedSessionModel = resolveSessionModelRef ( cfg , entry , sessionAgentId ) ;
408+ const agentRuntimePrewarm = await prewarmAgentHarnessRuntime ( {
409+ cfg,
410+ provider : resolvedSessionModel . provider ,
411+ modelId : resolvedSessionModel . model ,
412+ agentId : sessionAgentId ,
413+ sessionKey : opts . sessionKey ,
414+ sessionId,
415+ sessionFile : entry ?. sessionFile ,
416+ agentDir : resolveAgentDir ( cfg , sessionAgentId ) ,
417+ workspaceDir : entry ?. spawnedWorkspaceDir ?? resolveAgentWorkspaceDir ( cfg , sessionAgentId ) ,
418+ authProfileId : entry ?. authProfileOverride ,
419+ authProfileIdSource : entry ?. authProfileOverrideSource ,
420+ reason : "tui-startup" ,
421+ } ) ;
422+ return { agentRuntimePrewarm } ;
423+ }
424+
399425 async listSessions ( opts ?: Parameters < TuiBackend [ "listSessions" ] > [ 0 ] ) : Promise < TuiSessionList > {
400426 const cfg = getRuntimeConfig ( ) ;
401427 const { storePath, store } = loadCombinedSessionStoreForGateway ( cfg ) ;
0 commit comments