Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions assistant/src/api/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,15 @@ type from `../../api/events/my-event.js`. The domain-level
`_<Domain>ServerMessages` union alias (consumed by `message-protocol.ts`)
keeps its existing shape — it just references the canonical types now.

**Do not add `export type MyEventLocalName = MyEvent` alias bridges in the
daemon message-types files.** They shadow the canonical name and create a
second name for the same thing — exactly the drift this directory exists to
prevent. Reference the canonical `*Event` name directly inside the
`_<Domain>ServerMessages` aggregator union, and have downstream daemon
consumers import the canonical type from `../../api/events/<name>.js` at the
use site. The only thing that should live in `message-types/<domain>.ts` for
a migrated event is the import and the union membership.

### 3. Cut over web consumers

`apps/web/src/domains/chat/api/event-types.ts` no longer needs to list the
Expand Down
9 changes: 3 additions & 6 deletions assistant/src/daemon/message-types/conversations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,7 @@ export interface UsageResponse {
* `/compact`). Carries the fresh `estimatedInputTokens` so clients can refresh
* the context-window indicator without waiting for the next `usage_update`.
*
* Scoped per-conversation — see `CompactionCircuitOpen` doc for why.
* Scoped per-conversation — see `CompactionCircuitOpenEvent` doc for why.
*/
export interface ContextCompacted {
type: "context_compacted";
Expand Down Expand Up @@ -511,9 +511,6 @@ export interface ContextCompacted {
* conversation would set the "auto-compaction paused" banner on every open
* `ChatViewModel`.
*/
export type CompactionCircuitOpen = CompactionCircuitOpenEvent;

export type CompactionCircuitClosed = CompactionCircuitClosedEvent;

export type ConversationErrorCode =
| "PROVIDER_NETWORK"
Expand Down Expand Up @@ -632,8 +629,8 @@ export type _ConversationsServerMessages =
| UsageProgress
| UsageResponse
| ContextCompacted
| CompactionCircuitOpen
| CompactionCircuitClosed
| CompactionCircuitOpenEvent
| CompactionCircuitClosedEvent
| ConversationErrorMessage
| ConversationInfo
| ConversationTitleUpdated
Expand Down
4 changes: 1 addition & 3 deletions assistant/src/daemon/message-types/home.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@
import type { HomeFeedUpdatedEvent } from "../../api/events/home-feed-updated.js";
import type { RelationshipStateUpdatedEvent } from "../../api/events/relationship-state-updated.js";

export type HomeFeedUpdated = HomeFeedUpdatedEvent;

export type _HomeServerMessages =
| RelationshipStateUpdatedEvent
| HomeFeedUpdated;
| HomeFeedUpdatedEvent;
38 changes: 6 additions & 32 deletions assistant/src/daemon/message-types/messages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@

import type { AssistantTextDeltaEvent } from "../../api/events/assistant-text-delta.js";
import type { AssistantTurnStartEvent } from "../../api/events/assistant-turn-start.js";
import type {
InteractionResolutionState as CanonicalInteractionResolutionState,
InteractionResolvedEvent,
} from "../../api/events/interaction-resolved.js";
import type { InteractionResolvedEvent } from "../../api/events/interaction-resolved.js";
import type { MessageCompleteEvent } from "../../api/events/message-complete.js";
import type { MessageDequeuedEvent } from "../../api/events/message-dequeued.js";
import type { MessageQueuedEvent } from "../../api/events/message-queued.js";
Expand Down Expand Up @@ -323,14 +320,6 @@ export interface ErrorMessage {
errorCategory?: string;
}

export type MessageQueued = MessageQueuedEvent;

export type MessageDequeued = MessageDequeuedEvent;

export type MessageRequestComplete = MessageRequestCompleteEvent;

export type MessageQueuedDeleted = MessageQueuedDeletedEvent;

export interface MessageSteered {
type: "message_steered";
conversationId: string;
Expand Down Expand Up @@ -364,21 +353,6 @@ export interface ConfirmationStateChanged {
toolUseId?: string;
}

/**
* Lifecycle states reported by `interaction_resolved`.
*
* - `"approved"` / `"rejected"` — user-supplied verdict on a confirmation.
* - `"answered"` — user/client provided a response (secret value, question
* answer, host-proxy result).
* - `"cancelled"` — the interaction was torn down without a user response
* (timeout, abort, dispose, prompter shutdown).
* - `"superseded"` — invalidated by a newer event (auto-deny on enqueue, a
* fresh user message arriving while a confirmation was outstanding).
*/
export type InteractionResolutionState = CanonicalInteractionResolutionState;

export type InteractionResolved = InteractionResolvedEvent;

/**
* Server-side assistant activity lifecycle for thinking indicator placement.
*
Expand Down Expand Up @@ -498,15 +472,15 @@ export type _MessagesServerMessages =
| QuestionRequest
| MessageCompleteEvent
| ErrorMessage
| MessageQueued
| MessageDequeued
| MessageRequestComplete
| MessageQueuedDeleted
| MessageQueuedEvent
| MessageDequeuedEvent
| MessageRequestCompleteEvent
| MessageQueuedDeletedEvent
| MessageSteered
| SuggestionResponse
| TraceEvent
| ConfirmationStateChanged
| AssistantActivityState
| TurnProfileAutoRouted
| ConversationInferenceProfileUpdated
| InteractionResolved;
| InteractionResolvedEvent;
4 changes: 2 additions & 2 deletions assistant/src/runtime/pending-interactions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@
* resolve the interaction.
*/

import type { InteractionResolutionState } from "../daemon/message-types/messages.js";
import type { InteractionResolutionState } from "../api/events/interaction-resolved.js";
import type { UserDecision } from "../permissions/types.js";
import { getLogger } from "../util/logger.js";
import { broadcastMessage } from "./assistant-event-hub.js";

const log = getLogger("pending-interactions");

export type { InteractionResolutionState } from "../daemon/message-types/messages.js";
export type { InteractionResolutionState } from "../api/events/interaction-resolved.js";

export interface ConfirmationDetails {
toolName: string;
Expand Down
Loading