Types
All types are importable from @arlopass/react. This includes React-specific types and re-exports from @arlopass/web-sdk.
import type {
MessageId,
TrackedChatMessage,
ToolCallInfo,
SubscriptionEvent,
ChatSubscribe,
ChatSubscribeNoTools,
ArlopassProviderProps,
} from "@arlopass/react";
React SDK types
MessageId
type MessageId = string;
Opaque string identifier for tracked messages (UUID v4).
TrackedChatMessage
type TrackedChatMessage = Readonly<{
id: MessageId;
role: ChatRole;
content: string;
inResponseTo?: MessageId;
status: "pending" | "streaming" | "complete" | "error";
pinned: boolean;
toolCalls?: readonly ToolCallInfo[];
}>;
Immutable message object returned by useChat and useConversation. Extends the base ChatMessage with tracking metadata.
ToolCallInfo
type ToolCallInfo = Readonly<{
toolCallId: string;
name: string;
arguments: Record<string, unknown>;
result?: string;
status: "pending" | "executing" | "complete" | "error";
}>;
Attached to a TrackedChatMessage when the assistant invokes tools.
SubscriptionEvent
type SubscriptionEvent =
| "response"
| "stream"
| "error"
| "tool_call"
| "tool_result"
| "tool_priming_start"
| "tool_priming_match"
| "tool_priming_end";
ChatSubscribe
type ChatSubscribe = {
(
event: "response",
messageId: MessageId,
handler: (msg: TrackedChatMessage) => void,
): () => void;
(event: "response", handler: (msg: TrackedChatMessage) => void): () => void;
(
event: "stream",
messageId: MessageId,
handler: (delta: string, accumulated: string) => void,
): () => void;
(
event: "error",
handler: (error: ArlopassSDKError, messageId: MessageId | null) => void,
): () => void;
(
event: "error",
messageId: MessageId,
handler: (error: ArlopassSDKError) => void,
): () => void;
(
event: "tool_call",
handler: (
toolCallId: string,
name: string,
args: Record<string, unknown>,
messageId: MessageId,
) => void,
): () => void;
(
event: "tool_call",
messageId: MessageId,
handler: (
toolCallId: string,
name: string,
args: Record<string, unknown>,
) => void,
): () => void;
(
event: "tool_result",
handler: (
toolCallId: string,
name: string,
result: string,
messageId: MessageId,
) => void,
): () => void;
(
event: "tool_result",
messageId: MessageId,
handler: (toolCallId: string, name: string, result: string) => void,
): () => void;
(event: "tool_priming_start", handler: (message: string) => void): () => void;
(
event: "tool_priming_match",
handler: (tools: readonly string[]) => void,
): () => void;
(event: "tool_priming_end", handler: () => void): () => void;
};
Overloaded subscribe function returned by useConversation. Supports targeted subscriptions by message ID.
ChatSubscribeNoTools
type ChatSubscribeNoTools = {
(
event: "response",
messageId: MessageId,
handler: (msg: TrackedChatMessage) => void,
): () => void;
(event: "response", handler: (msg: TrackedChatMessage) => void): () => void;
(
event: "stream",
messageId: MessageId,
handler: (delta: string, accumulated: string) => void,
): () => void;
(
event: "error",
handler: (error: ArlopassSDKError, messageId: MessageId | null) => void,
): () => void;
(
event: "error",
messageId: MessageId,
handler: (error: ArlopassSDKError) => void,
): () => void;
};
Restricted subscribe type returned by useChat (no tool events).
ArlopassProviderProps
type ArlopassProviderProps = Readonly<{
appId?: string;
appSuffix?: string;
appName?: string;
appDescription?: string;
appIcon?: string;
defaultProvider?: string;
defaultModel?: string;
autoConnect?: boolean;
onError?: (error: ArlopassSDKError) => void;
children: React.ReactNode;
}>;
ClientSnapshot
type ClientSnapshot = Readonly<{
state: ClientState;
sessionId: string | null;
selectedProvider: Readonly<{ providerId: string; modelId: string }> | null;
providers: readonly ProviderDescriptor[];
error: ArlopassSDKError | null;
}>;
Internal store snapshot exposed by the provider context.
Re-exported from @arlopass/web-sdk
These types are re-exported so you only need the @arlopass/react package.
// Re-exported from @arlopass/web-sdk — no need to install web-sdk separately
import type {
ChatMessage,
ChatRole,
ClientState,
ProviderDescriptor,
SelectProviderInput,
ChatOperationOptions,
ChatStreamEvent,
ArlopassSDKError,
ArlopassStateError,
ArlopassTransport,
ToolDefinition,
ConversationStreamEvent,
ToolCall,
ToolResult,
ToolCallEvent,
ToolResultEvent,
ToolPrimingStartEvent,
ToolPrimingMatchEvent,
ToolPrimingEndEvent,
} from "@arlopass/react";
ChatMessage
type ChatMessage = Readonly<{ role: ChatRole; content: string }>;
ChatRole
type ChatRole = "system" | "user" | "assistant";
ClientState
type ClientState =
| "disconnected"
| "connecting"
| "connected"
| "degraded"
| "reconnecting"
| "failed";
ProviderDescriptor
type ProviderDescriptor = Readonly<{
providerId: string;
providerName: string;
models: readonly string[];
}>;
SelectProviderInput
type SelectProviderInput = Readonly<{ providerId: string; modelId: string }>;
ToolDefinition
type ToolDefinition = Readonly<{
name: string;
description: string;
parameters?: ToolParameterSchema;
handler?: (args: Record<string, unknown>) => Promise<string> | string;
}>;