import type { StudioPermissionDecision, StudioPermissionRequest, StudioSession, StudioSessionStore, StudioToolChoice, StudioToolContext } from '../domain/types' import type { CustomApiConfig } from '../../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 StudioResolvedSkill { name: string description: string directory: string entryFile: string content: string manifestPath?: string manifest?: Record preferredAgent?: 'builder' | 'reviewer' | 'designer' allowedTools?: string[] files: string[] } export interface StudioToolPermissionRequest { permission: string patterns: string[] metadata?: Record always?: string[] } export interface StudioRuntimeBackedToolContext extends StudioToolContext { sessionStore?: StudioSessionStore ask?: (request: StudioToolPermissionRequest) => Promise runSubagent?: (input: StudioSubagentRunRequest) => Promise resolveSkill?: (name: string, session: StudioSession) => Promise } export function toPermissionRequest( request: StudioToolPermissionRequest, base: Pick, tool: NonNullable ): StudioPermissionRequest { return { id: base.id, sessionID: base.sessionID, permission: request.permission, patterns: request.patterns, metadata: request.metadata, always: request.always ?? request.patterns, tool } }