import type { LiveRef } from '#/_base/di/instantiation'; import type { ILogService } from '#/_base/log/log'; import type { IAgentIdentity } from '#/app/agentIdentity/agentIdentity'; import type { IBuiltinAgentProfileLoader } from '#/app/agentProfileCatalog/builtinAgentProfileLoader'; import type { IAgentProfileRegistry } from '#/app/agentProfileCatalog/agentProfileRegistry'; import type { IBootstrapService } from '#/app/bootstrap/bootstrap'; import type { IConfigService } from '#/app/config/config'; import type { IGitService } from '#/app/git/git'; import type { McpOAuthService } from '#/mcpCore/oauth/service'; import type { IMcpConfigStore } from '#/app/mcpConfig/configStore'; import type { IPluginService } from '#/app/plugin/plugin'; import type { ISessionManager } from '#/app/sessionManager/sessionManager'; import type { IBuiltinSkillSource } from '#/features/skill/catalog/builtinSkillSource'; import type { IAppStateService } from '#/app/state/appState'; import type { ITelemetryService } from '#/app/telemetry/telemetry'; import type { IHostFileSystem } from '#/os/interface/hostFileSystem'; import type { IAtomicDocumentStore } from '#/persistence/interface/atomicDocumentStore'; import type { SessionLifecycleService } from '#/workspace/sessionLifecycle/sessionLifecycleService'; import type { IWorkspaceContext } from '#/workspace/workspaceContext/workspaceContext'; import type { IExtraAgentProfileLoader } from '#/workspace/workspaceAgentProfileLoader/extraAgentProfileLoader'; import type { IExplicitAgentProfileLoader } from '#/workspace/workspaceAgentProfileLoader/explicitAgentProfileLoader'; import type { IPluginAgentProfileLoader } from '#/workspace/workspaceAgentProfileLoader/pluginAgentProfileLoader'; import type { IUserAgentProfileLoader } from '#/workspace/workspaceAgentProfileLoader/userAgentProfileLoader'; import type { IWorkspaceAgentProfileLoader } from '#/workspace/workspaceAgentProfileLoader/workspaceAgentProfileLoader'; import type { IWorkspaceDirs } from '#/workspace/workspaceDirs/workspaceDirs'; import type { IWorkspaceInstructionsService } from '#/workspace/workspaceInstructions/workspaceInstructions'; import type { IWorkspaceMcpService } from '#/workspace/workspaceMcp/workspaceMcp'; import type { IWorkspaceSkillCatalog } from '#/features/skill/workspace/workspaceSkillCatalog'; export interface ProgramSessionControllerInput { readonly context: IWorkspaceContext; readonly fs: IHostFileSystem; readonly workspaceAgentProfiles: IWorkspaceAgentProfileLoader; readonly extraAgentProfiles: IExtraAgentProfileLoader; readonly explicitAgentProfiles: IExplicitAgentProfileLoader; readonly userAgentProfiles: IUserAgentProfileLoader; readonly pluginAgentProfiles: IPluginAgentProfileLoader; readonly dirs: IWorkspaceDirs; readonly skills: IWorkspaceSkillCatalog; readonly instructions: IWorkspaceInstructionsService; readonly mcp: IWorkspaceMcpService; readonly onDispose: () => void; } export interface ProgramDependencies { readonly appState: IAppStateService; readonly bootstrap: IBootstrapService; readonly config: IConfigService; readonly git: LiveRef; readonly identity: IAgentIdentity; readonly log: ILogService; readonly oauth: McpOAuthService; readonly configStore: IMcpConfigStore; readonly plugins: IPluginService; readonly sessionManager: LiveRef; readonly agentProfiles: IAgentProfileRegistry; readonly builtinAgentProfiles: IBuiltinAgentProfileLoader; readonly builtinSkills: IBuiltinSkillSource; readonly telemetry: ITelemetryService; readonly docs: IAtomicDocumentStore; createSessionController(input: ProgramSessionControllerInput): SessionLifecycleService; }