Skip to content

Actor ops

This page is the structured index of every op Chat sends to actors outside its own chat.* namespace.

To system.agents

The cognitive runtime. Both RemoteActorConversationAdapter (chat-app) and ConversationSurfaceActor (chat-component) target this.

$prompt

App-side (sendToInbox, fire-and-forget):

ts
RequestReply.sendToInbox(context, '<promptTarget>', '$prompt', {
  prompt:        text,
  requestId:     <uuid>,
  traceId?:      <uuid>,
  activityTo?:   string[],
  callerSnapshot?: object,
  callerRealm?:  string,
  callerMount?:  string,
  sessionId?:    string,
  principalId?:  string,
});

Surface-side (execute, with ACK):

ts
RequestReply.execute(context, 'system.agents', '$prompt', {
  prompt, requestId, activityTo,
  callerRoot, callerRealm, callerMount, callerRuntimeRoot, callerSurfaceMount,
  snapshotTree, targetSnapshots,
  sessionId?, principalId?,
}, { timeoutMs: 30_000, targetRoot: <serviceRoot> });

$cancel

ts
RequestReply.sendToInbox(context, '<promptTarget>', '$cancel', { requestId });

$sessionList

ts
RequestReply.execute(context, 'system.agents', '$sessionList', {
  principalId?,
  targetKey?,        // surface variant filters by targetKey
}, { timeoutMs: 8_000-10_000 });

$sessionDelete

ts
RequestReply.execute(context, '<conversation-target>', '$sessionDelete', {
  sessionId,
}, { timeoutMs: 10_000 });

session_state.read / session_state.upsert

ts
RequestReply.execute(context, '<backendTarget>', 'session_state.read', {
  sessionId, key,                  // key: 'transcript' for full history
}, { timeoutMs: 10_000 });

RequestReply.execute(context, '<backendTarget>', 'session_state.upsert', {
  sessionId, key, data,
}, { timeoutMs: 10_000 });

To target actors (per prompt)

Before sending a prompt with a snapshotTree, the surface introspects the target:

ts
RequestReply.execute(context, '<targetMount>', '$introspect', {
  depth: 'full',
}, { timeoutMs: 5_000, targetRoot: <targetRoot> });

The result is normalized into the snapshotTree payload sent with $prompt.

To system.inference

Only the dependency probe (ChatApp.ts:3357-3375):

ts
RequestReply.execute(context, 'system.inference', 'status.get', {},
  { timeoutMs: PROMPT_DEPENDENCY_TIMEOUT_MS });
// Validate: response.effective.provider must be a non-empty string.

To <conversation-target> itself (Component Library)

RemoteActorComponentLibraryAdapter makes calls like:

ts
'components.list'           {} → { components: [...] }
'components.get'            { id }
'components.scan-package'   { packageMount }

Exact ops depend on the bound componentLibraryRef target — typically chat.component-library proxying to system.agents or a dedicated component-library actor.

To <identity-target>, <preferences-target>, etc.

The other Remote* adapters follow the same pattern. Each implements an IChat*Service contract; each translates its method calls into RequestReply.execute against the configured target. See chat/src/app/services/adapters/:

  • RemoteActorIdentityAdapterchat.identity (or any IChatIdentityService-compliant target).
  • RemoteActorPreferencesAdapterchat.preferences.
  • RemoteActorSessionStateAdapterchat.session-state.
  • RemoteActorMcpAdapterchat.mcp.
  • HttpIdentityAdapter → HTTP-based identity (not actor-bus; for special bootstrap modes).

Subscriptions

Both MatrixChatApp and ConversationSurfaceActor use on$Activity to consume $activity frames. The frames arrive on the actor's own inbox (the page actor's inbox or the surface actor's), not as a request-reply.

The surface actor sends activityTo: [<my qualified mount>] in its prompts so frames are routed back to it.

Ops Chat does NOT send

For completeness:

  • inference.complete / inference.stream — never. Only status.get.
  • factotum.* — never.
  • host.control.* — never.
  • runtimes.start / stop / register — never.
  • auth.* — never.

Inference, credentials, lifecycle, and auth are all out of Chat's scope.

See also

Source: chat/src/app/services/adapters/*.ts, chat-component/src/surface/ConversationSurfaceActor.ts:339-435, chat/src/ChatApp.ts (probe code at 3336-3384).