pub enum DaemonAction {
Show 74 variants
NativeAgentHistory {
owner: String,
child: String,
before: Option<(u64, String)>,
},
Ping,
PrepareUpgrade,
UpgradeBlockers,
Status,
WebViewerAccess,
RecoverWebViewer(WebViewerRecovery),
InspectWebListener,
ListWorkspaces,
CreateWorkspace {
name: String,
},
RenameWorkspace {
workspace_id: String,
name: String,
},
TouchWorkspace {
workspace_id: String,
},
CloseWorkspace {
workspace_id: String,
},
CancelWorkspaceClose {
workspace_id: String,
},
DeleteWorkspace {
workspace_id: String,
},
Attach {
client_id: String,
pid: u32,
},
Detach {
client_id: String,
},
PersistReadReceipt {
client_id: String,
workspace_id: String,
session_id: String,
through: u64,
},
PersistDetachedSessionState {
client_id: String,
workspace_id: String,
session_id: String,
through: u64,
owner_pid: u32,
draft: DetachedSessionDraft,
},
SaveActiveReview {
session_id: String,
review: StoredReview,
},
ClearActiveReview {
session_id: String,
},
SaveWorkspacePaneSizes {
workspace_id: String,
sizes: PaneSizes,
},
SaveWorkspaceLayout {
workspace_id: String,
layout: ConversationLayout,
},
PersistImportedSession {
session: Box<SessionRecord>,
},
SetSessionTitle {
session_id: String,
title: String,
},
SetSessionWorkspace {
session_id: String,
workspace_id: String,
},
SetSessionContainerSettings {
session_id: String,
cpus: Option<String>,
memory: Option<String>,
mounts: Vec<AdditionalMount>,
mount_history: Vec<PathBuf>,
},
SetSessionAcpTitle {
session_id: String,
title: Option<String>,
},
MarkSessionTargetMissing {
session_id: String,
detail: String,
updated_at: String,
},
CheckpointSession {
session_id: String,
},
ProjectCatalog {
refresh: bool,
retry: bool,
},
CreateProject {
sources: Vec<String>,
},
WikiSearch {
query: String,
limit: usize,
},
SessionTextSearch {
query: String,
},
WikiBrief {
wiki_id: String,
max_chars: usize,
},
WikiHits {
wiki_id: String,
query: String,
context_messages: usize,
per_message_chars: usize,
},
WikiSession {
wiki_id: String,
},
WikiRestore(WikiRestoreRequest),
ScanRecovery {
all_instances: bool,
},
AdoptRecovery {
session_id: String,
target_id: String,
profile: Option<String>,
bundle: Option<String>,
all_instances: bool,
},
DestroyRecovery {
session_id: String,
target_id: String,
confirmation: String,
all_instances: bool,
},
Snapshot {
workspace_id: String,
},
RuntimeChanges {
cursor: Option<RuntimeCursor>,
wait: bool,
},
SessionTail {
session_id: String,
cursor: RuntimeCursor,
},
ResumeCandidates,
SessionRecord {
session_id: String,
},
GoStartupSession {
workspace_id: String,
last_session_id: Option<String>,
},
RefreshQuota,
SubagentOptions {
profile: String,
model: Option<String>,
config: Option<Box<Config>>,
},
WarmProfileCapabilities {
config: Box<Config>,
},
RenameProfile {
old_id: String,
new_id: String,
},
RenameTarget {
old_id: String,
new_id: String,
},
SubmitSessionCommand {
inherited_draft: Option<String>,
session_id: String,
command_id: String,
command: RelayCommand,
},
QueueStartupPrompt {
session_id: String,
text: String,
inherited_draft: Option<String>,
},
WithdrawStartupPrompt {
session_id: String,
text: String,
},
SyncSession {
session_id: String,
},
RespondElicitation {
session_id: String,
elicitation_id: String,
response: ElicitationResponse,
},
StopBackgroundTask {
session_id: String,
background_task_id: String,
},
ReviewerAction {
session_id: String,
role: Option<String>,
action: ReviewerAction,
},
StartTurnReview {
session_id: String,
},
ResolveTurnReview {
session_id: String,
resolution: Resolution,
},
SuspendSession {
session_id: String,
acknowledge_unpublished_work: bool,
},
StartCreateSession(CreateSessionRequest),
WaitCreateSession {
session_id: String,
},
ResumeSession(ResumeSessionRequest),
PrepareMoveSession(MoveSelection),
MoveSession(MoveSessionRequest),
MoveSources {
session_id: String,
cleanup_operation_id: Option<String>,
},
DiscardSinceCheckpoint {
session_id: String,
checkpoint: CheckpointMetadata,
},
DestroyStoppedSession {
session_id: String,
delete_branch: bool,
},
ForceDestroySession {
session_id: String,
delete_branch: bool,
},
CancelLifecycle {
session_id: String,
},
RecoverDraft {
draft_id: String,
},
Stop,
}Expand description
Ping, Status, and Stop form the frozen management subset: their wire
encoding — together with RequestEnvelope, ResponseEnvelope,
DaemonStatus, and WebViewerStatus — must never change shape, because
clients and daemons of any protocol version rely on them to identify,
stop, and replace each other. PrepareUpgrade and its Done /
UpgradePending replies are also frozen from protocol 33 onward: they
drain accepted work before closing admission atomically. Every other
action may change freely behind a PROTOCOL_VERSION bump.
Variants§
NativeAgentHistory
Ping
PrepareUpgrade
Frozen upgrade handshake, available from daemon protocol 33 onward. Busy replies leave every operation and control channel running.
UpgradeBlockers
Names the daemon-owned work that is currently holding an automatic handoff open, for the CLI’s wait notice.
Added after protocol 33, so it is not part of the frozen management subset. A daemon that predates it cannot deserialize the frame: it fails the request and closes the connection. Callers must therefore treat any failure, including a dropped connection or an error frame, as “unknown” and say nothing about what the upgrade is waiting for.
Status
WebViewerAccess
RecoverWebViewer(WebViewerRecovery)
InspectWebListener
ListWorkspaces
CreateWorkspace
RenameWorkspace
TouchWorkspace
CloseWorkspace
CancelWorkspaceClose
DeleteWorkspace
Attach
Detach
PersistReadReceipt
PersistDetachedSessionState
Fields
draft: DetachedSessionDraftSaveActiveReview
ClearActiveReview
SaveWorkspacePaneSizes
SaveWorkspaceLayout
PersistImportedSession
Fields
session: Box<SessionRecord>SetSessionTitle
SetSessionWorkspace
SetSessionContainerSettings
Fields
mounts: Vec<AdditionalMount>SetSessionAcpTitle
MarkSessionTargetMissing
CheckpointSession
ProjectCatalog
Search the user’s SessionWiki index. An empty query lists the most recent sessions.
CreateProject
WikiSearch
SessionTextSearch
The live sessions whose user or agent messages contain a query, ignoring case. Tool calls and tool output do not count.
WikiBrief
The markdown briefing for one indexed session.
WikiHits
The passages of one indexed session that match a query, with context.
WikiSession
What one indexed session is, and what continuing it would mean.
WikiRestore(WikiRestoreRequest)
Start a new session from an archived one’s transcript.
ScanRecovery
AdoptRecovery
Fields
DestroyRecovery
Snapshot
RuntimeChanges
SessionTail
One live session’s transcript tail as it was at cursor, so the
deltas after that cursor apply to it exactly.
ResumeCandidates
The sessions the resume dialog lists. The runtime feed carries only live sessions, so the dialog asks for these when it opens.
SessionRecord
One session’s whole record, live or stopped. The resume wizard reads it for the row picked in the resume dialog.
GoStartupSession
The session mj go opens: the remembered one while it is still
eligible, otherwise the most recently updated eligible session of the
workspace, live or stopped.
RefreshQuota
Ask the daemon’s quota poller to probe now. The daemon is the only process that probes; the result arrives in the runtime feed. Added in protocol 43.
SubagentOptions
Discover eligible subagent models in the daemon, which owns the cache.
Fields
WarmProfileCapabilities
Ensure valid unsaved profile definitions are hydrating. Results arrive through runtime publications; this request does no discovery itself.
RenameProfile
RenameTarget
SubmitSessionCommand
QueueStartupPrompt
Deliver a prompt typed while a session was still starting, once the daemon sees that session’s harness become ready. The daemon owns the wait, so the prompt arrives whether or not this client is still running or still showing that session.
Fields
WithdrawStartupPrompt
Take back a prompt queued with QueueStartupPrompt that the daemon has
not started delivering, so the person can edit it. The daemon cancels
the newest queued prompt with this exact text and replies
PromptWithdrawn(true), or PromptWithdrawn(false) when none is
waiting because delivery already started.
SyncSession
RespondElicitation
StopBackgroundTask
ReviewerAction
Drive a session’s second-opinion reviewer. The reviewer is a sidecar of the session’s worker, so it travels the session’s own relay rather than becoming a session of its own here.
Fields
role: Option<String>Which reviewing role the action drives; absent means the default one, which is what plan review uses.
action: ReviewerActionStartTurnReview
Review the turn this session just finished, on a surface’s request.
ResolveTurnReview
Forward, dismiss, or cancel the open review.
SuspendSession
StartCreateSession(CreateSessionRequest)
WaitCreateSession
ResumeSession(ResumeSessionRequest)
PrepareMoveSession(MoveSelection)
MoveSession(MoveSessionRequest)
MoveSources
DiscardSinceCheckpoint
DestroyStoppedSession
Fields
ForceDestroySession
CancelLifecycle
RecoverDraft
Stop
Trait Implementations§
Source§impl Clone for DaemonAction
impl Clone for DaemonAction
Source§fn clone(&self) -> DaemonAction
fn clone(&self) -> DaemonAction
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DaemonAction
impl Debug for DaemonAction
Source§impl<'de> Deserialize<'de> for DaemonAction
impl<'de> Deserialize<'de> for DaemonAction
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<DaemonAction, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<DaemonAction, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Serialize for DaemonAction
impl Serialize for DaemonAction
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl Freeze for DaemonAction
impl RefUnwindSafe for DaemonAction
impl Send for DaemonAction
impl Sync for DaemonAction
impl Unpin for DaemonAction
impl UnsafeUnpin for DaemonAction
impl UnwindSafe for DaemonAction
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more