code-mode: define transport-neutral runtime types (#29170)

## Summary

- introduce a private `session_runtime` boundary for cell creation
requests, observation modes, lifecycle events, output items, and tool
metadata
- update the cell actor and in-process service to use those
transport-neutral types
- keep cell ID allocation on the owning session side

## Motivation

Cell lifecycle vocabulary currently lives inside the cell actor
implementation. That makes the service adapter and future session
runtime depend on actor-specific types, increasing the size and
complexity of the runtime ownership change.

This is the first reviewable slice of the session-runtime stack. It
separates the transport-neutral data model without moving lifecycle
ownership or changing behavior.

Later slices will move session state behind this boundary, harden
terminal and shutdown behavior, and split cell creation from
observation.

## Behavior

There are no public API or user-visible behavior changes in this PR.

In particular:

- `CodeModeSession::execute` and `wait` are unchanged
- cell IDs remain allocated by the owning session
- cell admission, observation, termination, and shutdown behavior are
unchanged
This commit is contained in:
Channing Conger
2026-06-21 10:49:31 -07:00
committed by GitHub
Unverified
parent 6f5dd7b422
commit 6d993ca646
8 changed files with 114 additions and 91 deletions
+8 -8
View File
@@ -33,18 +33,18 @@ use tokio_util::sync::CancellationToken;
use crate::cell_actor::CellActor;
use crate::cell_actor::CellError;
use crate::cell_actor::CellEvent;
use crate::cell_actor::CellEventFuture;
use crate::cell_actor::CellHandle;
use crate::cell_actor::CellHost;
use crate::cell_actor::CellImageDetail;
use crate::cell_actor::CellOutputItem;
use crate::cell_actor::CellRequest;
use crate::cell_actor::CellToolCall;
use crate::cell_actor::CellToolDefinition;
use crate::cell_actor::CellToolKind;
use crate::cell_actor::CellToolName;
use crate::cell_actor::ObserveMode;
use crate::session_runtime::CellEvent;
use crate::session_runtime::CreateCellRequest as CellRequest;
use crate::session_runtime::ImageDetail as CellImageDetail;
use crate::session_runtime::ObserveMode;
use crate::session_runtime::OutputItem as CellOutputItem;
use crate::session_runtime::ToolDefinition as CellToolDefinition;
use crate::session_runtime::ToolKind as CellToolKind;
use crate::session_runtime::ToolName as CellToolName;
pub struct NoopCodeModeSessionDelegate;