@agentick/client 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,114 @@
1
+ /**
2
+ * WebSocket Transport - Alternative transport implementation
3
+ *
4
+ * Bidirectional communication over WebSocket.
5
+ * Use when you need lower latency or when SSE is not available.
6
+ *
7
+ * @module @tentickle/client/transports/websocket
8
+ */
9
+ import type { Transport, ClientConfig, ConnectionState, ConnectionMetadata, ChannelEvent } from "../types.js";
10
+ /**
11
+ * WebSocket constructor signature.
12
+ * Allows replacing the default WebSocket (e.g., with 'ws' package in Node.js).
13
+ */
14
+ export interface WebSocketConstructor {
15
+ new (url: string | URL, protocols?: string | string[]): WebSocket;
16
+ }
17
+ /**
18
+ * WebSocket transport configuration.
19
+ */
20
+ export interface WebSocketConfig extends ClientConfig {
21
+ /** WebSocket URL (ws:// or wss://) - overrides baseUrl */
22
+ wsUrl?: string;
23
+ /** WebSocket protocols */
24
+ protocols?: string[];
25
+ /**
26
+ * Custom WebSocket constructor.
27
+ * Use this for Node.js (ws package) or custom implementations.
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * import WebSocket from 'ws';
32
+ *
33
+ * const transport = createWebSocketTransport({
34
+ * baseUrl: 'wss://api.example.com',
35
+ * WebSocket: WebSocket as unknown as WebSocketConstructor,
36
+ * });
37
+ * ```
38
+ */
39
+ WebSocket?: WebSocketConstructor;
40
+ }
41
+ /**
42
+ * WebSocket Transport implementation.
43
+ *
44
+ * Use this when:
45
+ * - You need bidirectional real-time communication
46
+ * - SSE is blocked or unavailable
47
+ * - You want lower latency
48
+ */
49
+ export declare class WebSocketTransport implements Transport {
50
+ readonly name = "websocket";
51
+ private _state;
52
+ private sessionId?;
53
+ private metadata?;
54
+ private ws?;
55
+ private reconnectAttempts;
56
+ private reconnectTimer?;
57
+ private receiveHandlers;
58
+ private stateHandlers;
59
+ private readonly wsUrl;
60
+ private readonly protocols?;
61
+ private readonly token?;
62
+ private readonly reconnectDelay;
63
+ private readonly maxReconnectAttempts;
64
+ /** Custom WebSocket constructor (defaults to global WebSocket) */
65
+ private readonly WebSocketCtor;
66
+ constructor(config: WebSocketConfig);
67
+ get state(): ConnectionState;
68
+ private setState;
69
+ /**
70
+ * Connect to WebSocket server.
71
+ */
72
+ connect(sessionId: string, metadata?: ConnectionMetadata): Promise<void>;
73
+ private connectWebSocket;
74
+ private handleReconnect;
75
+ private closeWebSocket;
76
+ /**
77
+ * Disconnect from server.
78
+ */
79
+ disconnect(): Promise<void>;
80
+ /**
81
+ * Send event via WebSocket.
82
+ */
83
+ send(event: ChannelEvent): Promise<void>;
84
+ /**
85
+ * Register receive handler.
86
+ */
87
+ onReceive(handler: (event: ChannelEvent) => void): () => void;
88
+ /**
89
+ * Register state change handler.
90
+ */
91
+ onStateChange(handler: (state: ConnectionState) => void): () => void;
92
+ private notifyReceive;
93
+ }
94
+ /**
95
+ * Create WebSocket transport.
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * // Browser usage
100
+ * const transport = createWebSocketTransport({
101
+ * baseUrl: 'wss://api.example.com',
102
+ * });
103
+ *
104
+ * // Node.js with ws package
105
+ * import WebSocket from 'ws';
106
+ *
107
+ * const nodeTransport = createWebSocketTransport({
108
+ * baseUrl: 'wss://api.example.com',
109
+ * WebSocket: WebSocket as unknown as WebSocketConstructor,
110
+ * });
111
+ * ```
112
+ */
113
+ export declare function createWebSocketTransport(config: WebSocketConfig): Transport;
114
+ //# sourceMappingURL=websocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/transports/websocket.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,YAAY,EACb,MAAM,aAAa,CAAC;AAMrB;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;CACnE;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE,oBAAoB,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,qBAAa,kBAAmB,YAAW,SAAS;IAClD,QAAQ,CAAC,IAAI,eAAe;IAE5B,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,CAAqB;IACtC,OAAO,CAAC,EAAE,CAAC,CAAY;IACvB,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAgC;IACvD,OAAO,CAAC,eAAe,CAA4C;IACnE,OAAO,CAAC,aAAa,CAA+C;IAEpE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAW;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAE9C,kEAAkE;IAClE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;gBAEzC,MAAM,EAAE,eAAe;IAiBnC,IAAI,KAAK,IAAI,eAAe,CAE3B;IAED,OAAO,CAAC,QAAQ;IAYhB;;OAEG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;YAmBhE,gBAAgB;IAuD9B,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAajC;;OAEG;IACG,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB9C;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI;IAO7D;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI;IAOpE,OAAO,CAAC,aAAa;CAStB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAE3E"}
@@ -0,0 +1,239 @@
1
+ /**
2
+ * WebSocket Transport - Alternative transport implementation
3
+ *
4
+ * Bidirectional communication over WebSocket.
5
+ * Use when you need lower latency or when SSE is not available.
6
+ *
7
+ * @module @tentickle/client/transports/websocket
8
+ */
9
+ /**
10
+ * WebSocket Transport implementation.
11
+ *
12
+ * Use this when:
13
+ * - You need bidirectional real-time communication
14
+ * - SSE is blocked or unavailable
15
+ * - You want lower latency
16
+ */
17
+ export class WebSocketTransport {
18
+ name = "websocket";
19
+ _state = "disconnected";
20
+ sessionId;
21
+ metadata;
22
+ ws;
23
+ reconnectAttempts = 0;
24
+ reconnectTimer;
25
+ receiveHandlers = new Set();
26
+ stateHandlers = new Set();
27
+ wsUrl;
28
+ protocols;
29
+ token;
30
+ reconnectDelay;
31
+ maxReconnectAttempts;
32
+ /** Custom WebSocket constructor (defaults to global WebSocket) */
33
+ WebSocketCtor;
34
+ constructor(config) {
35
+ // Convert HTTP URL to WebSocket URL if needed
36
+ const baseUrl = config.wsUrl ?? config.baseUrl;
37
+ this.wsUrl = baseUrl
38
+ .replace(/^http:/, "ws:")
39
+ .replace(/^https:/, "wss:")
40
+ .replace(/\/$/, "");
41
+ this.protocols = config.protocols;
42
+ this.token = config.token;
43
+ this.reconnectDelay = config.reconnectDelay ?? 1000;
44
+ this.maxReconnectAttempts = config.maxReconnectAttempts ?? 10;
45
+ // Use custom implementation or fall back to global
46
+ this.WebSocketCtor = config.WebSocket ?? globalThis.WebSocket;
47
+ }
48
+ get state() {
49
+ return this._state;
50
+ }
51
+ setState(state) {
52
+ if (this._state === state)
53
+ return;
54
+ this._state = state;
55
+ for (const handler of this.stateHandlers) {
56
+ try {
57
+ handler(state);
58
+ }
59
+ catch (error) {
60
+ console.error("Error in state handler:", error);
61
+ }
62
+ }
63
+ }
64
+ /**
65
+ * Connect to WebSocket server.
66
+ */
67
+ async connect(sessionId, metadata) {
68
+ if (this._state === "connected") {
69
+ throw new Error("Already connected");
70
+ }
71
+ this.sessionId = sessionId;
72
+ this.metadata = metadata;
73
+ this.reconnectAttempts = 0;
74
+ this.setState("connecting");
75
+ try {
76
+ await this.connectWebSocket();
77
+ this.setState("connected");
78
+ }
79
+ catch (error) {
80
+ this.setState("error");
81
+ throw error;
82
+ }
83
+ }
84
+ async connectWebSocket() {
85
+ if (!this.sessionId) {
86
+ throw new Error("Session ID required");
87
+ }
88
+ // Close existing connection
89
+ this.closeWebSocket();
90
+ // Build WebSocket URL with query params
91
+ const url = new URL(this.wsUrl);
92
+ url.searchParams.set("sessionId", this.sessionId);
93
+ if (this.metadata?.userId) {
94
+ url.searchParams.set("userId", String(this.metadata.userId));
95
+ }
96
+ if (this.token) {
97
+ url.searchParams.set("token", this.token);
98
+ }
99
+ return new Promise((resolve, reject) => {
100
+ try {
101
+ this.ws = new this.WebSocketCtor(url.toString(), this.protocols);
102
+ this.ws.onopen = () => {
103
+ this.reconnectAttempts = 0;
104
+ resolve();
105
+ };
106
+ this.ws.onmessage = (event) => {
107
+ try {
108
+ const channelEvent = JSON.parse(event.data);
109
+ this.notifyReceive(channelEvent);
110
+ }
111
+ catch (error) {
112
+ console.error("Failed to parse WebSocket message:", error);
113
+ }
114
+ };
115
+ this.ws.onerror = () => {
116
+ if (this._state === "connecting") {
117
+ reject(new Error("WebSocket connection failed"));
118
+ }
119
+ };
120
+ this.ws.onclose = () => {
121
+ if (this._state === "disconnected") {
122
+ // Intentional disconnect
123
+ return;
124
+ }
125
+ this.handleReconnect();
126
+ };
127
+ }
128
+ catch (error) {
129
+ reject(error);
130
+ }
131
+ });
132
+ }
133
+ handleReconnect() {
134
+ if (this.reconnectAttempts >= this.maxReconnectAttempts) {
135
+ console.error("Max reconnection attempts reached");
136
+ this.setState("error");
137
+ return;
138
+ }
139
+ this.reconnectAttempts++;
140
+ const delay = this.reconnectDelay * Math.min(this.reconnectAttempts, 5);
141
+ this.reconnectTimer = setTimeout(() => {
142
+ if (this.sessionId && this._state !== "disconnected") {
143
+ this.connectWebSocket()
144
+ .then(() => this.setState("connected"))
145
+ .catch((error) => {
146
+ console.error("Reconnection failed:", error);
147
+ });
148
+ }
149
+ }, delay);
150
+ }
151
+ closeWebSocket() {
152
+ if (this.ws) {
153
+ this.ws.close();
154
+ this.ws = undefined;
155
+ }
156
+ }
157
+ /**
158
+ * Disconnect from server.
159
+ */
160
+ async disconnect() {
161
+ if (this.reconnectTimer) {
162
+ clearTimeout(this.reconnectTimer);
163
+ this.reconnectTimer = undefined;
164
+ }
165
+ this.setState("disconnected"); // Set before close to prevent reconnect
166
+ this.closeWebSocket();
167
+ this.sessionId = undefined;
168
+ this.metadata = undefined;
169
+ this.reconnectAttempts = 0;
170
+ }
171
+ /**
172
+ * Send event via WebSocket.
173
+ */
174
+ async send(event) {
175
+ if (!this.ws || this._state !== "connected") {
176
+ throw new Error("Not connected");
177
+ }
178
+ this.ws.send(JSON.stringify({
179
+ ...event,
180
+ metadata: {
181
+ ...event.metadata,
182
+ sessionId: this.sessionId,
183
+ userId: this.metadata?.userId,
184
+ timestamp: Date.now(),
185
+ },
186
+ }));
187
+ }
188
+ /**
189
+ * Register receive handler.
190
+ */
191
+ onReceive(handler) {
192
+ this.receiveHandlers.add(handler);
193
+ return () => {
194
+ this.receiveHandlers.delete(handler);
195
+ };
196
+ }
197
+ /**
198
+ * Register state change handler.
199
+ */
200
+ onStateChange(handler) {
201
+ this.stateHandlers.add(handler);
202
+ return () => {
203
+ this.stateHandlers.delete(handler);
204
+ };
205
+ }
206
+ notifyReceive(event) {
207
+ for (const handler of this.receiveHandlers) {
208
+ try {
209
+ handler(event);
210
+ }
211
+ catch (error) {
212
+ console.error("Error in receive handler:", error);
213
+ }
214
+ }
215
+ }
216
+ }
217
+ /**
218
+ * Create WebSocket transport.
219
+ *
220
+ * @example
221
+ * ```typescript
222
+ * // Browser usage
223
+ * const transport = createWebSocketTransport({
224
+ * baseUrl: 'wss://api.example.com',
225
+ * });
226
+ *
227
+ * // Node.js with ws package
228
+ * import WebSocket from 'ws';
229
+ *
230
+ * const nodeTransport = createWebSocketTransport({
231
+ * baseUrl: 'wss://api.example.com',
232
+ * WebSocket: WebSocket as unknown as WebSocketConstructor,
233
+ * });
234
+ * ```
235
+ */
236
+ export function createWebSocketTransport(config) {
237
+ return new WebSocketTransport(config);
238
+ }
239
+ //# sourceMappingURL=websocket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/transports/websocket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Client Types
3
+ *
4
+ * @module @agentick/client/types
5
+ */
6
+ import type { ChannelEvent, SessionResultPayload, ToolConfirmationRequest, ToolConfirmationResponse, SendInput, Message, ContentBlock } from "@agentick/shared";
7
+ import type { StreamEvent } from "@agentick/shared";
8
+ export type { ChannelEvent, SessionResultPayload, ToolConfirmationRequest, ToolConfirmationResponse, SendInput, Message, ContentBlock, StreamEvent, };
9
+ export type ConnectionState = "disconnected" | "connecting" | "connected" | "error";
10
+ /**
11
+ * Default endpoint paths.
12
+ */
13
+ export declare const DEFAULT_PATHS: {
14
+ /** SSE stream endpoint */
15
+ readonly events: "/events";
16
+ /** Send endpoint */
17
+ readonly send: "/send";
18
+ /** Subscribe endpoint */
19
+ readonly subscribe: "/subscribe";
20
+ /** Abort endpoint */
21
+ readonly abort: "/abort";
22
+ /** Close endpoint */
23
+ readonly close: "/close";
24
+ /** Tool response endpoint */
25
+ readonly toolResponse: "/tool-response";
26
+ /** Channel endpoint */
27
+ readonly channel: "/channel";
28
+ };
29
+ /**
30
+ * Endpoint path configuration.
31
+ */
32
+ export interface PathConfig {
33
+ /** SSE stream endpoint (default: /events) */
34
+ events?: string;
35
+ /** Send endpoint (default: /send) */
36
+ send?: string;
37
+ /** Subscribe endpoint (default: /subscribe) */
38
+ subscribe?: string;
39
+ /** Abort endpoint (default: /abort) */
40
+ abort?: string;
41
+ /** Close endpoint (default: /close) */
42
+ close?: string;
43
+ /** Tool response endpoint (default: /tool-response) */
44
+ toolResponse?: string;
45
+ /** Channel endpoint (default: /channel) */
46
+ channel?: string;
47
+ }
48
+ /**
49
+ * Client configuration.
50
+ */
51
+ export interface ClientConfig {
52
+ /** Base URL for the server (e.g., https://api.example.com) */
53
+ baseUrl: string;
54
+ /** Override default endpoint paths */
55
+ paths?: PathConfig;
56
+ /** Authentication token */
57
+ token?: string;
58
+ /** Request timeout in ms (default: 30000) */
59
+ timeout?: number;
60
+ }
61
+ /**
62
+ * Channel accessor for pub/sub operations.
63
+ */
64
+ export interface ChannelAccessor {
65
+ /** Channel name */
66
+ readonly name: string;
67
+ /**
68
+ * Subscribe to channel events.
69
+ * Returns unsubscribe function.
70
+ */
71
+ subscribe<T = unknown>(handler: (payload: T, event: ChannelEvent<T>) => void): () => void;
72
+ /**
73
+ * Publish event to channel.
74
+ */
75
+ publish<T = unknown>(type: string, payload: T): Promise<void>;
76
+ /**
77
+ * Request/response pattern.
78
+ * Returns the response payload.
79
+ */
80
+ request<TReq = unknown, TRes = unknown>(type: string, payload: TReq, timeoutMs?: number): Promise<TRes>;
81
+ }
82
+ /**
83
+ * Handler for stream events.
84
+ */
85
+ /**
86
+ * Stream event emitted from multiplexed sessions.
87
+ * Always includes the sessionId for routing.
88
+ */
89
+ export type SessionStreamEvent = StreamEvent & {
90
+ sessionId: string;
91
+ };
92
+ /**
93
+ * Handler for multiplexed stream events (includes sessionId).
94
+ */
95
+ export type GlobalEventHandler = (event: SessionStreamEvent) => void;
96
+ /**
97
+ * Handler for session-scoped stream events (no sessionId required).
98
+ */
99
+ export type SessionEventHandler = (event: StreamEvent) => void;
100
+ /**
101
+ * Handler for execution results.
102
+ */
103
+ export type SessionResultHandler = (result: SessionResultPayload) => void;
104
+ /**
105
+ * Handler for tool confirmations.
106
+ */
107
+ export type SessionToolConfirmationHandler = (request: ToolConfirmationRequest, respond: (response: ToolConfirmationResponse) => void) => void;
108
+ /**
109
+ * Handler for connection state changes.
110
+ */
111
+ export type ConnectionHandler = (state: ConnectionState) => void;
112
+ export type StreamEventType = StreamEvent["type"];
113
+ export type StreamEventHandler<T extends StreamEventType> = (event: Extract<StreamEvent, {
114
+ type: T;
115
+ }>) => void;
116
+ export type GlobalStreamEventHandler<T extends StreamEventType> = (event: Extract<SessionStreamEvent, {
117
+ type: T;
118
+ }>) => void;
119
+ export type ClientEventName = "event" | "state" | StreamEventType;
120
+ export type ClientEventHandlerMap = {
121
+ event: GlobalEventHandler;
122
+ state: ConnectionHandler;
123
+ } & {
124
+ [K in StreamEventType]: GlobalStreamEventHandler<K>;
125
+ };
126
+ /**
127
+ * Handle for streaming a single execution from the client.
128
+ */
129
+ export interface ClientExecutionHandle {
130
+ /** Session ID this execution belongs to */
131
+ readonly sessionId: string;
132
+ /** Execution ID (assigned by server) */
133
+ readonly executionId: string;
134
+ /** Current status */
135
+ readonly status: "running" | "completed" | "aborted" | "error";
136
+ /**
137
+ * Async iterator for events from this execution only.
138
+ */
139
+ [Symbol.asyncIterator](): AsyncIterator<StreamEvent>;
140
+ /**
141
+ * Final result for this execution.
142
+ */
143
+ readonly result: Promise<SessionResultPayload>;
144
+ /**
145
+ * Abort this execution.
146
+ */
147
+ abort(reason?: string): void;
148
+ /**
149
+ * Queue a message during execution.
150
+ */
151
+ queueMessage(message: Message): void;
152
+ /**
153
+ * Submit tool confirmation result.
154
+ */
155
+ submitToolResult(toolUseId: string, result: ToolConfirmationResponse): void;
156
+ }
157
+ /**
158
+ * State for accumulated streaming text.
159
+ */
160
+ export interface StreamingTextState {
161
+ /** Accumulated text from content_delta events */
162
+ readonly text: string;
163
+ /** Whether streaming is currently active */
164
+ readonly isStreaming: boolean;
165
+ }
166
+ /**
167
+ * Handler for streaming text state changes.
168
+ */
169
+ export type StreamingTextHandler = (state: StreamingTextState) => void;
170
+ /**
171
+ * Result from a streaming method invocation.
172
+ */
173
+ export interface StreamingMethodResult<T = unknown> {
174
+ /** Whether the result was streamed */
175
+ streaming: true;
176
+ /** Collected chunks from the stream */
177
+ chunks: T[];
178
+ }
179
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Client Types
3
+ *
4
+ * @module @agentick/client/types
5
+ */
6
+ // ============================================================================
7
+ // Client Configuration
8
+ // ============================================================================
9
+ /**
10
+ * Default endpoint paths.
11
+ */
12
+ export const DEFAULT_PATHS = {
13
+ /** SSE stream endpoint */
14
+ events: "/events",
15
+ /** Send endpoint */
16
+ send: "/send",
17
+ /** Subscribe endpoint */
18
+ subscribe: "/subscribe",
19
+ /** Abort endpoint */
20
+ abort: "/abort",
21
+ /** Close endpoint */
22
+ close: "/close",
23
+ /** Tool response endpoint */
24
+ toolResponse: "/tool-response",
25
+ /** Channel endpoint */
26
+ channel: "/channel",
27
+ };
28
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA+BH,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,0BAA0B;IAC1B,MAAM,EAAE,SAAS;IACjB,oBAAoB;IACpB,IAAI,EAAE,OAAO;IACb,yBAAyB;IACzB,SAAS,EAAE,YAAY;IACvB,qBAAqB;IACrB,KAAK,EAAE,QAAQ;IACf,qBAAqB;IACrB,KAAK,EAAE,QAAQ;IACf,6BAA6B;IAC7B,YAAY,EAAE,gBAAgB;IAC9B,uBAAuB;IACvB,OAAO,EAAE,UAAU;CACX,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * WebSocket Transport
3
+ *
4
+ * Implements the ClientTransport interface using WebSocket connections.
5
+ * Compatible with the Gateway's WebSocket protocol.
6
+ */
7
+ import type { ClientTransport, TransportConfig, TransportEventData, TransportEventHandler, TransportState } from "./transport.js";
8
+ import type { SendInput, ChannelEvent, ToolConfirmationResponse } from "./types.js";
9
+ export interface WSTransportConfig extends TransportConfig {
10
+ /** Client ID to use for connection */
11
+ clientId?: string;
12
+ /** WebSocket implementation (for Node.js compatibility) */
13
+ WebSocket?: typeof WebSocket;
14
+ /** Reconnection settings */
15
+ reconnect?: {
16
+ /** Enable auto-reconnection (default: true) */
17
+ enabled?: boolean;
18
+ /** Max reconnection attempts (default: 5) */
19
+ maxAttempts?: number;
20
+ /** Delay between attempts in ms (default: 1000) */
21
+ delay?: number;
22
+ };
23
+ }
24
+ export declare class WSTransport implements ClientTransport {
25
+ private config;
26
+ private WSCtor;
27
+ private socket?;
28
+ private _state;
29
+ private _connectionId?;
30
+ private connectionPromise?;
31
+ private reconnectAttempts;
32
+ private requestCounter;
33
+ private pendingRequests;
34
+ private eventHandlers;
35
+ private stateHandlers;
36
+ private subscriptions;
37
+ private sendStreams;
38
+ constructor(config: WSTransportConfig);
39
+ get state(): TransportState;
40
+ get connectionId(): string | undefined;
41
+ private setState;
42
+ connect(): Promise<void>;
43
+ disconnect(): void;
44
+ private openWebSocket;
45
+ private closeWebSocket;
46
+ private handleClose;
47
+ private handleMessage;
48
+ private handleIncomingEvent;
49
+ private sendRaw;
50
+ private sendRequest;
51
+ send(input: SendInput, sessionId?: string): AsyncIterable<TransportEventData> & {
52
+ abort: (reason?: string) => void;
53
+ };
54
+ subscribeToSession(sessionId: string): Promise<void>;
55
+ unsubscribeFromSession(sessionId: string): Promise<void>;
56
+ abortSession(sessionId: string, reason?: string): Promise<void>;
57
+ closeSession(sessionId: string): Promise<void>;
58
+ submitToolResult(sessionId: string, toolUseId: string, result: ToolConfirmationResponse): Promise<void>;
59
+ publishToChannel(sessionId: string, channel: string, event: ChannelEvent): Promise<void>;
60
+ subscribeToChannel(sessionId: string, channel: string): Promise<void>;
61
+ onEvent(handler: TransportEventHandler): () => void;
62
+ onStateChange(handler: (state: TransportState) => void): () => void;
63
+ /** Send a ping to keep connection alive */
64
+ ping(): void;
65
+ }
66
+ export declare function createWSTransport(config: WSTransportConfig): WSTransport;
67
+ //# sourceMappingURL=ws-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-transport.d.ts","sourceRoot":"","sources":["../src/ws-transport.ts"],"names":[],"mappings":"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"}