import type { StudioSession, StudioPartStore, StudioMessageStore, StudioSessionStore, StudioToolChoice, StudioToolContext } from '../../domain/types' import type { CustomApiConfig } from '../../../types' import type { StudioResolvedSkill, StudioSkillDiscoveryEntry, StudioSkillUsageSummary } from '../../skills/schema/skill-types' export type { StudioResolvedSkill, StudioSkillDiscoveryEntry, StudioSkillUsageSummary } from '../../skills/schema/skill-types' export interface StudioSubagentRunRequest { projectId: string parentSession: StudioSession childSession: StudioSession description: string inputText: string subagentType: 'reviewer' | 'designer' skillName?: string files?: string[] customApiConfig?: CustomApiConfig toolChoice?: StudioToolChoice } export interface StudioSubagentRunResult { text: string } export interface StudioToolPermissionRequest { permission: string patterns: string[] metadata?: Record always?: string[] } export interface StudioRuntimeBackedToolContext extends StudioToolContext { partStore?: StudioPartStore messageStore?: StudioMessageStore sessionStore?: StudioSessionStore runSubagent?: (input: StudioSubagentRunRequest) => Promise resolveSkill?: (name: string, session: StudioSession) => Promise listSkills?: (session: StudioSession) => Promise listSkillSummaries?: (session: StudioSession) => Promise recordSkillUsage?: (input: { session: StudioSession skillName: string reason?: string takeaway?: string stillRelevant?: boolean }) => Promise }