import * as plugins from './plugins.js'; import type { TControllerResource, TControllerResourceKind, TControllerTerminalAgentKind, TControllerResourceAttachmentTarget, TControllerSessionId, } from './interfaces.js'; export interface IReq_ControllerResourceList extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerResourceList > { method: 'controller.resource.list'; /** Omitting the project lists every project that holds a tracked conversation. */ request: { projectId?: string }; response: { resources: TControllerResource[]; /** More projects held resources than the cross-project read bound allows. */ truncated?: true; }; } export interface IReq_ControllerResourceCreate extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerResourceCreate > { method: 'controller.resource.create'; request: { projectId: string; kind: TControllerResourceKind; title?: string; /** Terminal resources only: run a controller-owned coding agent as the PTY root. */ agent?: TControllerTerminalAgentKind; }; response: { resource: TControllerResource }; } export interface IReq_ControllerResourceRename extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerResourceRename > { method: 'controller.resource.rename'; request: { projectId: string; resourceId: string; title: string }; response: { resource: TControllerResource }; } export interface IReq_ControllerResourceAttach extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerResourceAttach > { method: 'controller.resource.attach'; /** * Adds one membership to the resource's attachment set; idempotent when the subject is already * attached. Exactly one of `sessionId` and `terminalResourceId` selects it. `replace` turns the * add into a Move: the named membership is removed in the same step. */ request: { projectId: string; resourceId: string; sessionId?: TControllerSessionId; terminalResourceId?: string; replace?: TControllerResourceAttachmentTarget; expectedAttachmentRevision: number; }; response: { resource: TControllerResource }; } export interface IReq_ControllerResourceDetach extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerResourceDetach > { method: 'controller.resource.detach'; /** Removes one membership, or every membership when `entry` is omitted. */ request: { projectId: string; resourceId: string; entry?: TControllerResourceAttachmentTarget; expectedAttachmentRevision: number; }; response: { resource: TControllerResource }; } export interface IReq_ControllerResourceRetire extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerResourceRetire > { method: 'controller.resource.retire'; request: { projectId: string; resourceId: string }; response: { retired: true }; } export interface IReq_ControllerResourceStart extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerResourceStart > { method: 'controller.resource.start'; request: { projectId: string; resourceId: string }; response: { resource: TControllerResource }; } export interface IReq_ControllerResourceStop extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerResourceStop > { method: 'controller.resource.stop'; request: { projectId: string; resourceId: string }; response: { resource: TControllerResource }; }