Skip to content
Open
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
96 changes: 13 additions & 83 deletions src/types/protocol.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ export type MessageType = "CORTI_EMBEDDED" | "CORTI_EMBEDDED_RESPONSE" | "CORTI_

export type DefaultMode = "virtual" | "in-person";

// WARNING: "_init" is an internal-only action used by the embedded Assistant component
// for initialization handshake. External applications should NOT send _init messages.
// Use only public actions listed below.
export type EmbeddedAction =
| "_init" // @internal - Internal-only handshake action
| "auth"
| "createInteraction"
| "addFacts"
Expand All @@ -22,19 +26,6 @@ export type EmbeddedAction =
| "setCredentials"
| "showDeviceLinkQR";

export type DeprecatedEmbeddedEvent =
| "ready"
| "loaded"
| "recordingStarted"
| "recordingStopped"
| "documentGenerated"
| "documentUpdated"
| "documentSynced"
| "authChanged"
| "interactionCreated"
| "navigationChanged"
| "usage";

// Base Message Types
export interface BaseMessage {
type: MessageType;
Expand All @@ -59,27 +50,23 @@ export interface EmbeddedResponse extends BaseMessage {
errorDetails?: unknown;
}

interface BaseEventMessage extends BaseMessage {
export interface EmbeddedEventMessage extends BaseMessage {
type: "CORTI_EMBEDDED_EVENT";
event: string | DeprecatedEmbeddedEvent;
payload?: unknown;
}

export interface DeprecatedEmbeddedEventMessage extends BaseEventMessage {
event: DeprecatedEmbeddedEvent;
deprecated: true;
}

export interface EmbeddedEventMessage extends BaseEventMessage {
event: string;
payload: null | Record<string, unknown>;
confidential: boolean;
deprecated?: boolean;
}

// Specific Request Types
export interface AuthRequest extends EmbeddedRequest {
action: "auth";
}

export interface InitRequest extends EmbeddedRequest {
action: "_init";
}

export interface CreateInteractionRequest extends EmbeddedRequest {
action: "createInteraction";
}
Expand Down Expand Up @@ -132,53 +119,9 @@ export interface ShowDeviceLinkQRRequest extends EmbeddedRequest {
action: "showDeviceLinkQR";
}

// Event Types
export interface ReadyEvent extends DeprecatedEmbeddedEventMessage {
event: "ready";
}

export interface LoadedEvent extends DeprecatedEmbeddedEventMessage {
event: "loaded";
}

export interface RecordingStartedEvent extends DeprecatedEmbeddedEventMessage {
event: "recordingStarted";
}

export interface RecordingStoppedEvent extends DeprecatedEmbeddedEventMessage {
event: "recordingStopped";
}

export interface DocumentGeneratedEvent extends DeprecatedEmbeddedEventMessage {
event: "documentGenerated";
}

export interface DocumentUpdatedEvent extends DeprecatedEmbeddedEventMessage {
event: "documentUpdated";
}

export interface DocumentSyncedEvent extends DeprecatedEmbeddedEventMessage {
event: "documentSynced";
}

export interface AuthChangedEvent extends DeprecatedEmbeddedEventMessage {
event: "authChanged";
}

export interface InteractionCreatedEvent extends DeprecatedEmbeddedEventMessage {
event: "interactionCreated";
}

export interface NavigationChangedEvent extends DeprecatedEmbeddedEventMessage {
event: "navigationChanged";
}

export interface UsageEvent extends DeprecatedEmbeddedEventMessage {
event: "usage";
}

// Request/Response/Event type unions
export type AnyEmbeddedRequest =
| InitRequest
| AuthRequest
| CreateInteractionRequest
| AddFactsRequest
Expand All @@ -196,19 +139,6 @@ export type AnyEmbeddedRequest =

export type AnyEmbeddedResponse = EmbeddedResponse;

export type AnyDeprecatedEmbeddedEvent =
| ReadyEvent
| LoadedEvent
| RecordingStartedEvent
| RecordingStoppedEvent
| DocumentGeneratedEvent
| DocumentUpdatedEvent
| DocumentSyncedEvent
| AuthChangedEvent
| InteractionCreatedEvent
| NavigationChangedEvent
| UsageEvent;

export type AnyEvent = EmbeddedEventMessage | AnyDeprecatedEmbeddedEvent;
export type AnyEvent = EmbeddedEventMessage;

export type AnyEmbeddedMessage = AnyEmbeddedRequest | AnyEmbeddedResponse | AnyEvent;
15 changes: 13 additions & 2 deletions src/types/responses.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,25 @@ export interface EmbeddedTemplate {
isCustom: boolean;
}

export interface GetStatusResponse {
export interface MedicalDeviceMetadata {
buildDate: string;
deviceIdentifier: string;
udi: string;
}

export type MedicalDeviceStatus =
| { isMedicalDevice: false; medicalDevice?: undefined }
| { isMedicalDevice: true; medicalDevice: MedicalDeviceMetadata };

export type GetStatusResponse = {
auth: {
isAuthenticated: boolean;
user?: UserInfo;
};
applicationVersion: string;
currentUrl: string;
interaction: EmbeddedInterviewDetails | null;
}
} & MedicalDeviceStatus;

export interface GetTemplatesResponse {
templates: EmbeddedTemplate[];
Expand Down
Loading