Skip to content

Documentation / @agentick/client-multiplexer / SharedTransport

Class: SharedTransport ​

Defined in: client-multiplexer/src/shared-transport.ts:60

@agentick/client-multiplexer

Multi-tab connection multiplexer for Agentick client.

Reduces server connections by electing a leader tab that maintains the SSE connection while other tabs communicate via BroadcastChannel.

Features:

  • Leader election using Web Locks API (instant, reliable)
  • BroadcastChannel fallback for older browsers
  • Automatic failover when leader tab closes
  • Per-tab subscription filtering (each tab only receives its events)
  • Subscription aggregation (leader subscribes to union of all tabs' sessions)

Example ​

typescript
import { createClient } from '@agentick/client';
import { createSharedTransport } from '@agentick/client-multiplexer';

// Create client with shared transport
const client = createClient({
  baseUrl: '/api',
  transport: createSharedTransport({ baseUrl: '/api', token: 'your-token' }),
});

// Use exactly like a regular client
const session = client.session('main');
session.subscribe(); // Subscribe to events
session.onEvent((event) => console.log(event));

// Send a message
const handle = session.send('Hello!');
await handle.result;

// Check leadership status (optional, for debugging/UI)
const transport = client.getTransport() as SharedTransport | undefined;
console.log('Is leader:', transport?.isLeader);

Implements ​

Constructors ​

Constructor ​

new SharedTransport(config): SharedTransport

Defined in: client-multiplexer/src/shared-transport.ts:101

Parameters ​

config ​

SharedTransportConfig

Returns ​

SharedTransport

Accessors ​

connectionId ​

Get Signature ​

get connectionId(): string | undefined

Defined in: client-multiplexer/src/shared-transport.ts:120

Connection ID (if assigned by server)

Returns ​

string | undefined

Connection ID (if assigned by server)

Implementation of ​

ClientTransport.connectionId


isLeader ​

Get Signature ​

get isLeader(): boolean

Defined in: client-multiplexer/src/shared-transport.ts:422

Returns ​

boolean


state ​

Get Signature ​

get state(): TransportState

Defined in: client-multiplexer/src/shared-transport.ts:116

Current connection state

Returns ​

TransportState

Current connection state

Implementation of ​

ClientTransport.state


tabId ​

Get Signature ​

get tabId(): string

Defined in: client-multiplexer/src/shared-transport.ts:426

Returns ​

string

Methods ​

abortSession() ​

abortSession(sessionId, reason?): Promise<void>

Defined in: client-multiplexer/src/shared-transport.ts:328

Abort a session's execution

Parameters ​

sessionId ​

string

reason? ​

string

Returns ​

Promise<void>

Implementation of ​

ClientTransport.abortSession


closeSession() ​

closeSession(sessionId): Promise<void>

Defined in: client-multiplexer/src/shared-transport.ts:341

Close a session

Parameters ​

sessionId ​

string

Returns ​

Promise<void>

Implementation of ​

ClientTransport.closeSession


connect() ​

connect(): Promise<void>

Defined in: client-multiplexer/src/shared-transport.ts:124

Connect to the server

Returns ​

Promise<void>

Implementation of ​

ClientTransport.connect


disconnect() ​

disconnect(): void

Defined in: client-multiplexer/src/shared-transport.ts:196

Disconnect from the server

Returns ​

void

Implementation of ​

ClientTransport.disconnect


onEvent() ​

onEvent(handler): () => void

Defined in: client-multiplexer/src/shared-transport.ts:408

Register event handler for incoming events

Parameters ​

handler ​

(event) => void

Returns ​

(): void

Returns ​

void

Implementation of ​

ClientTransport.onEvent


onLeadershipChange() ​

onLeadershipChange(callback): () => void

Defined in: client-multiplexer/src/shared-transport.ts:430

Parameters ​

callback ​

(isLeader) => void

Returns ​

(): void

Returns ​

void


onStateChange() ​

onStateChange(handler): () => void

Defined in: client-multiplexer/src/shared-transport.ts:413

Register state change handler

Parameters ​

handler ​

(state) => void

Returns ​

(): void

Returns ​

void

Implementation of ​

ClientTransport.onStateChange


publishToChannel() ​

publishToChannel(sessionId, channel, event): Promise<void>

Defined in: client-multiplexer/src/shared-transport.ts:395

Publish to a channel

Parameters ​

sessionId ​

string

channel ​

string

event ​

ChannelEvent

Returns ​

Promise<void>

Implementation of ​

ClientTransport.publishToChannel


send() ​

send(input, sessionId?): AsyncIterable<TransportEventData, any, any> & object

Defined in: client-multiplexer/src/shared-transport.ts:209

Send a message and return a stream of events. Returns an async iterator of events for this execution.

Parameters ​

input ​

SendInput

sessionId? ​

string

Returns ​

AsyncIterable<TransportEventData, any, any> & object

Implementation of ​

ClientTransport.send


submitToolResult() ​

submitToolResult(sessionId, toolUseId, result): Promise<void>

Defined in: client-multiplexer/src/shared-transport.ts:362

Submit tool result

Parameters ​

sessionId ​

string

toolUseId ​

string

result ​

ToolConfirmationResponse

Returns ​

Promise<void>

Implementation of ​

ClientTransport.submitToolResult


subscribeToChannel() ​

subscribeToChannel(sessionId, channel): Promise<void>

Defined in: client-multiplexer/src/shared-transport.ts:379

Subscribe to a channel

Parameters ​

sessionId ​

string

channel ​

string

Returns ​

Promise<void>

Implementation of ​

ClientTransport.subscribeToChannel


subscribeToSession() ​

subscribeToSession(sessionId): Promise<void>

Defined in: client-multiplexer/src/shared-transport.ts:296

Subscribe to session events

Parameters ​

sessionId ​

string

Returns ​

Promise<void>

Implementation of ​

ClientTransport.subscribeToSession


unsubscribeFromSession() ​

unsubscribeFromSession(sessionId): Promise<void>

Defined in: client-multiplexer/src/shared-transport.ts:311

Unsubscribe from session events

Parameters ​

sessionId ​

string

Returns ​

Promise<void>

Implementation of ​

ClientTransport.unsubscribeFromSession

Released under the ISC License.