import * as plugins from './plugins.js'; import type { IControllerBlockedProjectRemoval, IControllerPathSuggestion, IControllerProject, } from './interfaces.js'; export interface IReq_ControllerProjectList extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerProjectList > { method: 'controller.project.list'; request: Record; response: { projects: IControllerProject[]; /** * Projects whose removal stopped on a deterministic failure. They are not in `projects`: they * are gone from the workspace and only wait for an operator retry. */ blockedRemovals: IControllerBlockedProjectRemoval[]; }; } export interface IReq_ControllerProjectCreate extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerProjectCreate > { method: 'controller.project.create'; request: { /** Existing directory path relative to the projects root; never created. */ path: string; }; response: { project: IControllerProject; }; } export interface IReq_ControllerProjectSuggest extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerProjectSuggest > { method: 'controller.project.suggest'; request: { /** Partial relative path being typed; empty lists the root's directories. */ query: string; }; response: { suggestions: IControllerPathSuggestion[]; }; } export interface IReq_ControllerProjectRemove extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerProjectRemove > { method: 'controller.project.remove'; request: { projectId: string; }; response: { success: boolean; }; } export interface IReq_ControllerProjectRemovalRetry extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerProjectRemovalRetry > { method: 'controller.project.removal.retry'; request: { /** A project listed in `blockedRemovals`; its durable removal resumes immediately. */ projectId: string; }; response: { success: boolean; }; }