Spaces:
Running
Running
| 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<string, unknown> | |
| preferredAgent?: 'builder' | 'reviewer' | 'designer' | |
| allowedTools?: string[] | |
| files: string[] | |
| } | |
| export interface StudioToolPermissionRequest { | |
| permission: string | |
| patterns: string[] | |
| metadata?: Record<string, unknown> | |
| always?: string[] | |
| } | |
| export interface StudioRuntimeBackedToolContext extends StudioToolContext { | |
| sessionStore?: StudioSessionStore | |
| ask?: (request: StudioToolPermissionRequest) => Promise<StudioPermissionDecision> | |
| runSubagent?: (input: StudioSubagentRunRequest) => Promise<StudioSubagentRunResult> | |
| resolveSkill?: (name: string, session: StudioSession) => Promise<StudioResolvedSkill> | |
| } | |
| export function toPermissionRequest( | |
| request: StudioToolPermissionRequest, | |
| base: Pick<StudioPermissionRequest, 'id' | 'sessionID'>, | |
| tool: NonNullable<StudioPermissionRequest['tool']> | |
| ): StudioPermissionRequest { | |
| return { | |
| id: base.id, | |
| sessionID: base.sessionID, | |
| permission: request.permission, | |
| patterns: request.patterns, | |
| metadata: request.metadata, | |
| always: request.always ?? request.patterns, | |
| tool | |
| } | |
| } | |