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.