import * as plugins from './plugins.js'; import type { IControllerMessageBundle, IControllerMessagePage, TControllerModelChoice, IControllerRuntimeId, IControllerSession, IControllerSessionDraft, IControllerDraftAttachment, IControllerSessionGroup, IControllerSessionLayout, TControllerLayoutItemRef, IControllerSessionDetail, IControllerChildSessionDetail, IControllerSessionAuxiliary, IControllerSessionScratchpad, IControllerIntelligenceExchange, TControllerPermissionReply, TControllerSessionHarnessId, } from './interfaces.js'; export interface IReq_ControllerSessionGet extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionGet > { method: 'controller.session.get'; request: { projectId: string; sessionId: IControllerRuntimeId; }; response: IControllerSessionDetail; } export interface IReq_ControllerSessionChildGet extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionChildGet > { method: 'controller.session.child.get'; request: { projectId: string; parentSessionId: IControllerRuntimeId & { harnessId: 'opencode' }; childSessionId: IControllerRuntimeId & { harnessId: 'opencode' }; }; response: IControllerChildSessionDetail; } export interface IReq_ControllerSessionChildMessagesPage extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionChildMessagesPage > { method: 'controller.session.child.messages.page'; request: { projectId: string; parentSessionId: IControllerRuntimeId & { harnessId: 'opencode' }; childSessionId: IControllerRuntimeId & { harnessId: 'opencode' }; scopeGeneration: string; limit: number; before?: string; }; response: IControllerMessagePage; } export interface IReq_ControllerSessionChildMessageGet extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionChildMessageGet > { method: 'controller.session.child.message.get'; request: { projectId: string; parentSessionId: IControllerRuntimeId & { harnessId: 'opencode' }; childSessionId: IControllerRuntimeId & { harnessId: 'opencode' }; scopeGeneration: string; messageId: IControllerRuntimeId & { harnessId: 'opencode' }; }; response: IControllerMessageBundle; } export interface IReq_ControllerSessionChildPermissionReply extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionChildPermissionReply > { method: 'controller.session.child.permission.reply'; request: { projectId: string; parentSessionId: IControllerRuntimeId & { harnessId: 'opencode' }; childSessionId: IControllerRuntimeId & { harnessId: 'opencode' }; scopeGeneration: string; requestId: IControllerRuntimeId & { harnessId: 'opencode' }; reply: TControllerPermissionReply; message?: string; }; response: { success: boolean; }; } export interface IReq_ControllerSessionChildQuestionReply extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionChildQuestionReply > { method: 'controller.session.child.question.reply'; request: { projectId: string; parentSessionId: IControllerRuntimeId & { harnessId: 'opencode' }; childSessionId: IControllerRuntimeId & { harnessId: 'opencode' }; scopeGeneration: string; requestId: IControllerRuntimeId & { harnessId: 'opencode' }; answers: string[][] | null; }; response: { success: boolean; }; } export interface IReq_ControllerSessionAuxiliaryGet extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionAuxiliaryGet > { method: 'controller.session.auxiliary.get'; request: { projectId: string; sessionId: IControllerRuntimeId; }; response: IControllerSessionAuxiliary; } export interface IReq_ControllerSessionModelUpdate extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionModelUpdate > { method: 'controller.session.model.update'; request: { projectId: string; sessionId: IControllerRuntimeId; model: TControllerModelChoice; /** Required for Flex; unsupported for OpenCode. */ providerConnectionId?: string; }; response: { model: TControllerModelChoice; /** Exact persisted Flex provider account. */ providerConnectionId?: string; }; } export interface IReq_ControllerSessionScratchpadSave extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionScratchpadSave > { method: 'controller.session.scratchpad.save'; request: { projectId: string; sessionId: IControllerRuntimeId; text: string; expectedRevision: number; }; response: { scratchpad: IControllerSessionScratchpad; }; } export interface IReq_ControllerSessionIntelligenceAsk extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionIntelligenceAsk > { method: 'controller.session.intelligence.ask'; request: { projectId: string; sessionId: IControllerRuntimeId; question: string; }; response: { exchange: IControllerIntelligenceExchange; }; } export interface IReq_ControllerSessionMessagesPage extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionMessagesPage > { method: 'controller.session.messages.page'; request: { projectId: string; sessionId: IControllerRuntimeId; limit: number; /** Opaque harness cursor returned by the previous page. */ before?: string; }; response: IControllerMessagePage; } export interface IReq_ControllerSessionMessageGet extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionMessageGet > { method: 'controller.session.message.get'; request: { projectId: string; sessionId: IControllerRuntimeId; messageId: IControllerRuntimeId; }; response: IControllerMessageBundle; } export interface IReq_ControllerSessionCreate extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionCreate > { method: 'controller.session.create'; request: { projectId: string; harnessId: TControllerSessionHarnessId; title?: string; /** Initial durable model choice for this session. */ model?: TControllerModelChoice; /** Exact Flex provider account paired with the initial model. */ providerConnectionId?: string; }; response: { session: IControllerSession; /** The assigned conversation is retained; finish initial metadata before sending. */ creationPending?: boolean; }; } export interface IReq_ControllerSessionDelete extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionDelete > { method: 'controller.session.delete'; request: { projectId: string; sessionId: IControllerRuntimeId; }; response: { success: boolean; }; } export interface IReq_ControllerSessionDiscardEmpty extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionDiscardEmpty > { method: 'controller.session.discard-empty'; request: { projectId: string; sessionId: IControllerRuntimeId; }; response: { discarded: boolean; retryable: boolean; }; } export interface IReq_ControllerSessionDraftGet extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionDraftGet > { method: 'controller.session.draft.get'; request: { projectId: string; sessionId: IControllerRuntimeId; }; response: { draft: IControllerSessionDraft; }; } export interface IReq_ControllerSessionDraftUpdate extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionDraftUpdate > { method: 'controller.session.draft.update'; request: { projectId: string; sessionId: IControllerRuntimeId; expectedRevision: number; text?: string; attachments?: IControllerDraftAttachment[]; }; response: { draft: IControllerSessionDraft; }; } export interface IReq_ControllerSessionSend extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionSend > { method: 'controller.session.send'; request: { projectId: string; sessionId: IControllerRuntimeId; /** Exact controller-memory draft snapshot to send and conditionally clear. */ draftRevision: number; /** Native Codex input steering targets its acknowledged current turn. Default send queues behind AGL work. */ delivery?: 'steer'; /** Turn observed by the caller. Native Codex rejects steering if another turn became active. */ expectedTurnId?: string; /** Per-message override; the persisted default applies when absent. */ model?: TControllerModelChoice; /** Exact Flex provider account paired with the model override. */ providerConnectionId?: string; }; response: { accepted: true; }; } export interface IReq_ControllerSessionAbort extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionAbort > { method: 'controller.session.abort'; request: { projectId: string; sessionId: IControllerRuntimeId; /** Exact Codex turn the user observed. Required before interrupting an external writer. */ expectedTurnId?: string; }; response: { success: boolean; }; } export interface IReq_ControllerSessionGroupsGet extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionGroupsGet > { method: 'controller.sessiongroups.get'; /** One layout per controller: the sidebar orders conversations and resources of every project. */ request: Record; response: IControllerSessionLayout; } export interface IReq_ControllerSessionGroupsUpdate extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionGroupsUpdate > { method: 'controller.sessiongroups.update'; request: { /** Full replacement: the stored group list becomes exactly this, across every project. */ groups: IControllerSessionGroup[]; /** Absent preserves the stored order of items that stay ungrouped. */ ungroupedItemIds?: TControllerLayoutItemRef[]; /** Optimistic concurrency against the controller-wide layout revision. */ expectedRevision?: number; }; response: IControllerSessionLayout; } export interface IReq_ControllerSessionRename extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionRename > { method: 'controller.session.rename'; request: { projectId: string; sessionId: IControllerRuntimeId; title: string; }; response: { session: IControllerSession; }; } export interface IReq_ControllerSessionArchive extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionArchive > { method: 'controller.session.archive'; request: { projectId: string; sessionId: IControllerRuntimeId; }; response: { session: IControllerSession; }; } export interface IReq_ControllerSessionYolo extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ControllerSessionYolo > { method: 'controller.session.yolo'; request: { projectId: string; sessionId: IControllerRuntimeId; /** True auto-accepts every permission request of this chat until disabled or restart. */ enabled: boolean; }; response: { enabled: boolean; }; }