@agntk/client 0.1.0

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 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAwB,KAAK,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACzG,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtE,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,QAAQ,CAAC,CAAuB;gBAE5B,OAAO,EAAE,kBAAkB;IAQvC,aAAa,IAAI,eAAe;IAI1B,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAIrD,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhF,uBAAuB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,IAAI;IAIxE,UAAU,IAAI,IAAI;CAGnB"}
package/dist/client.js ADDED
@@ -0,0 +1,34 @@
1
+ // Main client combining HTTP and WebSocket
2
+ import { AgentHttpClient } from './http-client.js';
3
+ import { AgentWebSocketClient } from './websocket-client.js';
4
+ export class AgentClient {
5
+ httpClient;
6
+ wsClient;
7
+ constructor(options) {
8
+ this.httpClient = new AgentHttpClient(options.baseUrl);
9
+ if (options.useWebSocket) {
10
+ const wsUrl = options.baseUrl.replace(/^http/, 'ws') + '/ws';
11
+ this.wsClient = new AgentWebSocketClient({ url: wsUrl });
12
+ }
13
+ }
14
+ getHttpClient() {
15
+ return this.httpClient;
16
+ }
17
+ async generate(request) {
18
+ return this.httpClient.generate(request);
19
+ }
20
+ async stream(message, callbacks) {
21
+ if (!this.wsClient) {
22
+ throw new Error('WebSocket not configured');
23
+ }
24
+ await this.wsClient.connect();
25
+ this.wsClient.send(message, callbacks);
26
+ }
27
+ onConnectionStateChange(handler) {
28
+ this.wsClient?.onConnectionStateChange(handler);
29
+ }
30
+ disconnect() {
31
+ this.wsClient?.disconnect();
32
+ }
33
+ }
34
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAiD,MAAM,oBAAoB,CAAC;AAQzG,MAAM,OAAO,WAAW;IACd,UAAU,CAAkB;IAC5B,QAAQ,CAAwB;IAExC,YAAY,OAA2B;QACrC,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;YAC7D,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAoB;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAoB,EAAE,SAA6B;QAC9D,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,uBAAuB,CAAC,OAAyC;QAC/D,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,UAAU;QACR,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;IAC9B,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ export declare class ApiClientError extends Error {
2
+ readonly status?: number | undefined;
3
+ readonly response?: unknown | undefined;
4
+ constructor(message: string, status?: number | undefined, response?: unknown | undefined);
5
+ }
6
+ export declare class WebSocketError extends Error {
7
+ readonly code?: number | undefined;
8
+ constructor(message: string, code?: number | undefined);
9
+ }
10
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,qBAAa,cAAe,SAAQ,KAAK;aAGrB,MAAM,CAAC,EAAE,MAAM;aACf,QAAQ,CAAC,EAAE,OAAO;gBAFlC,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,QAAQ,CAAC,EAAE,OAAO,YAAA;CAKrC;AAED,qBAAa,cAAe,SAAQ,KAAK;aAGrB,IAAI,CAAC,EAAE,MAAM;gBAD7B,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,MAAM,YAAA;CAKhC"}
package/dist/errors.js ADDED
@@ -0,0 +1,20 @@
1
+ // Error classes
2
+ export class ApiClientError extends Error {
3
+ status;
4
+ response;
5
+ constructor(message, status, response) {
6
+ super(message);
7
+ this.status = status;
8
+ this.response = response;
9
+ this.name = 'ApiClientError';
10
+ }
11
+ }
12
+ export class WebSocketError extends Error {
13
+ code;
14
+ constructor(message, code) {
15
+ super(message);
16
+ this.code = code;
17
+ this.name = 'WebSocketError';
18
+ }
19
+ }
20
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAEhB,MAAM,OAAO,cAAe,SAAQ,KAAK;IAGrB;IACA;IAHlB,YACE,OAAe,EACC,MAAe,EACf,QAAkB;QAElC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,WAAM,GAAN,MAAM,CAAS;QACf,aAAQ,GAAR,QAAQ,CAAU;QAGlC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;IAGrB;IAFlB,YACE,OAAe,EACC,IAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,SAAI,GAAJ,IAAI,CAAS;QAG7B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF"}
@@ -0,0 +1,48 @@
1
+ import type { ChatRequest, ChatResponse, SessionResponse, HistoryResponse, StreamEvent, GenerateStreamOptions, StreamMetadata } from './types.js';
2
+ export declare class AgentHttpClient {
3
+ private baseUrl;
4
+ constructor(baseUrl: string);
5
+ generate(request: ChatRequest): Promise<ChatResponse>;
6
+ /**
7
+ * Stream a generation request using Server-Sent Events.
8
+ * Returns an AsyncGenerator that yields StreamEvents.
9
+ *
10
+ * Supports resumable streams: when the server is a durable agent,
11
+ * the response includes `x-workflow-run-id`. Use `options.workflowRunId`
12
+ * and `options.lastEventId` to reconnect and replay.
13
+ *
14
+ * @param request - Chat request with messages
15
+ * @param options - Streaming options (signal for abort, reconnection)
16
+ * @returns AsyncGenerator yielding stream events with metadata property
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const controller = new AbortController();
21
+ * const gen = client.generateStream(request, { signal: controller.signal });
22
+ *
23
+ * for await (const event of gen) {
24
+ * if (event.type === 'text-delta') {
25
+ * process.stdout.write(event.textDelta);
26
+ * }
27
+ * }
28
+ *
29
+ * // After disconnect, reconnect:
30
+ * const metadata = gen.metadata;
31
+ * const resumed = client.generateStream(request, {
32
+ * workflowRunId: metadata?.workflowRunId,
33
+ * lastEventId: metadata?.lastEventId,
34
+ * });
35
+ * ```
36
+ */
37
+ generateStream(request: ChatRequest, options?: GenerateStreamOptions): AsyncGenerator<StreamEvent> & {
38
+ metadata?: StreamMetadata;
39
+ };
40
+ /**
41
+ * Get metadata from the last stream (workflow run ID, last event ID).
42
+ * Useful for implementing reconnection.
43
+ */
44
+ get lastStreamMetadata(): StreamMetadata | undefined;
45
+ getSession(sessionId: string): Promise<SessionResponse>;
46
+ getHistory(sessionId: string): Promise<HistoryResponse>;
47
+ }
48
+ //# sourceMappingURL=http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EACf,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,cAAc,EACf,MAAM,SAAS,CAAC;AAIjB,qBAAa,eAAe;IACd,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;IAI7B,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAc3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACI,cAAc,CACnB,OAAO,EAAE,WAAW,EACpB,OAAO,GAAE,qBAA0B,GAClC,cAAc,CAAC,WAAW,CAAC,GAAG;QAAE,QAAQ,CAAC,EAAE,cAAc,CAAA;KAAE;IAmG9D;;;OAGG;IACH,IAAI,kBAAkB,IAAI,cAAc,GAAG,SAAS,CAEnD;IAEK,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IASvD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAQ9D"}
@@ -0,0 +1,168 @@
1
+ // HTTP client for agent server
2
+ import { createLogger } from '@agntk/logger';
3
+ import { ApiClientError } from './errors.js';
4
+ const log = createLogger('@agntk/client');
5
+ export class AgentHttpClient {
6
+ baseUrl;
7
+ constructor(baseUrl) {
8
+ this.baseUrl = baseUrl;
9
+ log.debug('Created HTTP client', { baseUrl });
10
+ }
11
+ async generate(request) {
12
+ log.debug('generate', { messageCount: request.messages?.length });
13
+ const response = await fetch(`${this.baseUrl}/generate`, {
14
+ method: 'POST',
15
+ headers: { 'Content-Type': 'application/json' },
16
+ body: JSON.stringify(request),
17
+ });
18
+ if (!response.ok) {
19
+ log.error('generate failed', { status: response.status });
20
+ throw new ApiClientError('Generate failed', response.status);
21
+ }
22
+ return response.json();
23
+ }
24
+ /**
25
+ * Stream a generation request using Server-Sent Events.
26
+ * Returns an AsyncGenerator that yields StreamEvents.
27
+ *
28
+ * Supports resumable streams: when the server is a durable agent,
29
+ * the response includes `x-workflow-run-id`. Use `options.workflowRunId`
30
+ * and `options.lastEventId` to reconnect and replay.
31
+ *
32
+ * @param request - Chat request with messages
33
+ * @param options - Streaming options (signal for abort, reconnection)
34
+ * @returns AsyncGenerator yielding stream events with metadata property
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const controller = new AbortController();
39
+ * const gen = client.generateStream(request, { signal: controller.signal });
40
+ *
41
+ * for await (const event of gen) {
42
+ * if (event.type === 'text-delta') {
43
+ * process.stdout.write(event.textDelta);
44
+ * }
45
+ * }
46
+ *
47
+ * // After disconnect, reconnect:
48
+ * const metadata = gen.metadata;
49
+ * const resumed = client.generateStream(request, {
50
+ * workflowRunId: metadata?.workflowRunId,
51
+ * lastEventId: metadata?.lastEventId,
52
+ * });
53
+ * ```
54
+ */
55
+ async *generateStream(request, options = {}) {
56
+ log.debug('generateStream', {
57
+ messageCount: request.messages?.length,
58
+ workflowRunId: options.workflowRunId,
59
+ lastEventId: options.lastEventId,
60
+ });
61
+ const headers = {
62
+ 'Content-Type': 'application/json',
63
+ 'Accept': 'text/event-stream',
64
+ };
65
+ // Add resumable stream headers
66
+ if (options.workflowRunId) {
67
+ headers['x-workflow-run-id'] = options.workflowRunId;
68
+ }
69
+ if (options.lastEventId) {
70
+ headers['Last-Event-ID'] = options.lastEventId;
71
+ }
72
+ const response = await fetch(`${this.baseUrl}/stream`, {
73
+ method: 'POST',
74
+ headers,
75
+ body: JSON.stringify(request),
76
+ signal: options.signal,
77
+ });
78
+ if (!response.ok) {
79
+ log.error('generateStream failed', { status: response.status });
80
+ throw new ApiClientError('Generate stream failed', response.status);
81
+ }
82
+ if (!response.body) {
83
+ throw new ApiClientError('No response body for stream', 500);
84
+ }
85
+ // Capture workflow run ID from response headers
86
+ const workflowRunId = response.headers.get('x-workflow-run-id') ?? undefined;
87
+ let lastEventId;
88
+ // Attach metadata to the generator (accessible after iteration)
89
+ const metadata = { workflowRunId, lastEventId };
90
+ const generator = this;
91
+ generator._lastStreamMetadata = metadata;
92
+ const reader = response.body.getReader();
93
+ const decoder = new TextDecoder();
94
+ let buffer = '';
95
+ try {
96
+ while (true) {
97
+ const { done, value } = await reader.read();
98
+ if (done)
99
+ break;
100
+ buffer += decoder.decode(value, { stream: true });
101
+ const lines = buffer.split('\n');
102
+ buffer = lines.pop() || '';
103
+ let currentEventId;
104
+ for (const line of lines) {
105
+ // Track SSE event IDs for resumability
106
+ if (line.startsWith('id: ')) {
107
+ currentEventId = line.slice(4).trim();
108
+ lastEventId = currentEventId;
109
+ metadata.lastEventId = lastEventId;
110
+ continue;
111
+ }
112
+ if (!line.startsWith('data: '))
113
+ continue;
114
+ const data = line.slice(6).trim();
115
+ if (!data || data === '[DONE]')
116
+ continue;
117
+ try {
118
+ const event = JSON.parse(data);
119
+ log.trace('Stream event', { type: event.type, eventId: currentEventId });
120
+ yield event;
121
+ }
122
+ catch (e) {
123
+ log.warn('Failed to parse SSE data', { data, error: e });
124
+ }
125
+ }
126
+ }
127
+ // Handle any remaining buffer
128
+ if (buffer.startsWith('data: ')) {
129
+ const data = buffer.slice(6).trim();
130
+ if (data && data !== '[DONE]') {
131
+ try {
132
+ yield JSON.parse(data);
133
+ }
134
+ catch (_e) {
135
+ // Ignore parse errors on final chunk
136
+ }
137
+ }
138
+ }
139
+ }
140
+ finally {
141
+ reader.releaseLock();
142
+ }
143
+ }
144
+ /**
145
+ * Get metadata from the last stream (workflow run ID, last event ID).
146
+ * Useful for implementing reconnection.
147
+ */
148
+ get lastStreamMetadata() {
149
+ return this._lastStreamMetadata;
150
+ }
151
+ async getSession(sessionId) {
152
+ log.debug('getSession', { sessionId });
153
+ const response = await fetch(`${this.baseUrl}/sessions/${sessionId}`);
154
+ if (!response.ok) {
155
+ throw new ApiClientError('Session not found', response.status);
156
+ }
157
+ return response.json();
158
+ }
159
+ async getHistory(sessionId) {
160
+ log.debug('getHistory', { sessionId });
161
+ const response = await fetch(`${this.baseUrl}/sessions/${sessionId}/history`);
162
+ if (!response.ok) {
163
+ throw new ApiClientError('History not found', response.status);
164
+ }
165
+ return response.json();
166
+ }
167
+ }
168
+ //# sourceMappingURL=http-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export { AgentClient, type AgentClientOptions } from './client.js';
2
+ export { AgentHttpClient } from './http-client.js';
3
+ export { ChatClient, type StreamCallbacks, type ChatClientOptions } from './chat-client.js';
4
+ export { SessionManager, type Session } from './session.js';
5
+ export { AgentWebSocketClient, type WebSocketClientConfig, type ConnectionState, type WebSocketCallbacks, } from './websocket-client.js';
6
+ export { BrowserStreamClient, type BrowserStreamClientOptions, type BrowserFrame, type BrowserStreamConfig, type BrowserStreamState, type BrowserStreamCallbacks, } from './browser-stream.js';
7
+ export { ApiClientError, WebSocketError } from './errors.js';
8
+ export type { ChatMessage, ChatRequest, ChatResponse, SessionResponse, HistoryResponse, StreamEvent, StreamEventCallback, GenerateStreamOptions, TokenUsage, ReconnectOptions, StreamMetadata, } from './types.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EACL,oBAAoB,EACpB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1D,YAAY,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,eAAe,EACf,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,qBAAqB,EACrB,UAAU,EACV,gBAAgB,EAChB,cAAc,GACf,MAAM,SAAS,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,10 @@
1
+ // @agntk/client - Main exports
2
+ // Re-exports client functionality for connecting to @agntk/server
3
+ export { AgentClient } from './client.js';
4
+ export { AgentHttpClient } from './http-client.js';
5
+ export { ChatClient } from './chat-client.js';
6
+ export { SessionManager } from './session.js';
7
+ export { AgentWebSocketClient, } from './websocket-client.js';
8
+ export { BrowserStreamClient, } from './browser-stream.js';
9
+ export { ApiClientError, WebSocketError } from './errors.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,kEAAkE;AAElE,OAAO,EAAE,WAAW,EAA2B,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAgD,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,cAAc,EAAgB,MAAM,WAAW,CAAC;AACzD,OAAO,EACL,oBAAoB,GAIrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,GAMpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { ChatMessage } from './types.js';
2
+ export interface Session {
3
+ id: string;
4
+ createdAt: Date;
5
+ updatedAt: Date;
6
+ messages: ChatMessage[];
7
+ metadata?: Record<string, unknown>;
8
+ }
9
+ export declare class SessionManager {
10
+ private sessions;
11
+ /**
12
+ * Create a new session
13
+ */
14
+ create(metadata?: Record<string, unknown>): Session;
15
+ /**
16
+ * Get a session by ID
17
+ */
18
+ get(id: string): Session | undefined;
19
+ /**
20
+ * Add a message to a session
21
+ */
22
+ addMessage(sessionId: string, message: ChatMessage): void;
23
+ /**
24
+ * Get message history for a session
25
+ */
26
+ getHistory(sessionId: string): ChatMessage[];
27
+ /**
28
+ * Clear session history
29
+ */
30
+ clear(sessionId: string): void;
31
+ /**
32
+ * Delete a session
33
+ */
34
+ delete(sessionId: string): boolean;
35
+ }
36
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAmC;IAEnD;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;IAanD;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIpC;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI;IASzD;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE;IAK5C;;OAEG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAQ9B;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAGnC"}
@@ -0,0 +1,60 @@
1
+ import { generateId } from 'ai';
2
+ export class SessionManager {
3
+ sessions = new Map();
4
+ /**
5
+ * Create a new session
6
+ */
7
+ create(metadata) {
8
+ const id = generateId();
9
+ const session = {
10
+ id,
11
+ createdAt: new Date(),
12
+ updatedAt: new Date(),
13
+ messages: [],
14
+ metadata,
15
+ };
16
+ this.sessions.set(id, session);
17
+ return session;
18
+ }
19
+ /**
20
+ * Get a session by ID
21
+ */
22
+ get(id) {
23
+ return this.sessions.get(id);
24
+ }
25
+ /**
26
+ * Add a message to a session
27
+ */
28
+ addMessage(sessionId, message) {
29
+ const session = this.get(sessionId);
30
+ if (!session) {
31
+ throw new Error(`Session not found: ${sessionId}`);
32
+ }
33
+ session.messages.push(message);
34
+ session.updatedAt = new Date();
35
+ }
36
+ /**
37
+ * Get message history for a session
38
+ */
39
+ getHistory(sessionId) {
40
+ const session = this.get(sessionId);
41
+ return session ? [...session.messages] : [];
42
+ }
43
+ /**
44
+ * Clear session history
45
+ */
46
+ clear(sessionId) {
47
+ const session = this.get(sessionId);
48
+ if (session) {
49
+ session.messages = [];
50
+ session.updatedAt = new Date();
51
+ }
52
+ }
53
+ /**
54
+ * Delete a session
55
+ */
56
+ delete(sessionId) {
57
+ return this.sessions.delete(sessionId);
58
+ }
59
+ }
60
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAWhC,MAAM,OAAO,cAAc;IACjB,QAAQ,GAAyB,IAAI,GAAG,EAAE,CAAC;IAEnD;;OAEG;IACH,MAAM,CAAC,QAAkC;QACvC,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;QACxB,MAAM,OAAO,GAAY;YACvB,EAAE;YACF,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,QAAQ,EAAE,EAAE;YACZ,QAAQ;SACT,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,SAAiB,EAAE,OAAoB;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,SAAiB;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAiB;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC;YACtB,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAiB;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,89 @@
1
+ export interface ChatMessage {
2
+ role: 'user' | 'assistant' | 'system';
3
+ content: string;
4
+ }
5
+ export interface ChatRequest {
6
+ messages: ChatMessage[];
7
+ sessionId?: string;
8
+ }
9
+ export interface ChatResponse {
10
+ message: ChatMessage;
11
+ sessionId: string;
12
+ }
13
+ export interface SessionResponse {
14
+ sessionId: string;
15
+ }
16
+ export interface HistoryResponse {
17
+ messages: ChatMessage[];
18
+ }
19
+ export type TokenUsage = {
20
+ promptTokens: number;
21
+ completionTokens: number;
22
+ totalTokens: number;
23
+ };
24
+ export type StreamEvent = {
25
+ type: 'text-delta';
26
+ textDelta: string;
27
+ } | {
28
+ type: 'tool-call';
29
+ toolCallId: string;
30
+ toolName: string;
31
+ args: unknown;
32
+ } | {
33
+ type: 'tool-result';
34
+ toolCallId: string;
35
+ toolName: string;
36
+ result: unknown;
37
+ } | {
38
+ type: 'step-start';
39
+ stepIndex: number;
40
+ } | {
41
+ type: 'step-finish';
42
+ stepIndex: number;
43
+ finishReason: string;
44
+ } | {
45
+ type: 'finish';
46
+ text: string;
47
+ usage?: TokenUsage;
48
+ } | {
49
+ type: 'error';
50
+ error: string;
51
+ };
52
+ export type StreamEventCallback = (event: StreamEvent) => void;
53
+ /**
54
+ * Options for auto-reconnection on resumable streams.
55
+ */
56
+ export interface ReconnectOptions {
57
+ /** Enable auto-reconnect on disconnect. Default: true when workflowRunId is present. */
58
+ enabled?: boolean;
59
+ /** Maximum number of reconnect attempts. Default: 3 */
60
+ maxAttempts?: number;
61
+ /** Base delay between reconnect attempts in ms. Default: 1000. Exponential backoff is applied. */
62
+ baseDelayMs?: number;
63
+ /** Maximum delay between reconnect attempts in ms. Default: 30000 */
64
+ maxDelayMs?: number;
65
+ }
66
+ /**
67
+ * Options for streaming generation.
68
+ */
69
+ export interface GenerateStreamOptions {
70
+ /** AbortSignal for timeout/cancellation */
71
+ signal?: AbortSignal;
72
+ /** Workflow run ID for resumable streams. Set automatically on reconnect. */
73
+ workflowRunId?: string;
74
+ /** Last event ID received. Used for replay on reconnection. */
75
+ lastEventId?: string;
76
+ /** Reconnect configuration for resumable streams. */
77
+ reconnect?: ReconnectOptions;
78
+ }
79
+ /**
80
+ * Result metadata from a streaming generation.
81
+ * Includes the workflow run ID if the server returned one (durable agent).
82
+ */
83
+ export interface StreamMetadata {
84
+ /** Workflow run ID returned by the server. Undefined for non-durable agents. */
85
+ workflowRunId?: string;
86
+ /** The last event ID received from the server. */
87
+ lastEventId?: string;
88
+ }
89
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1E;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAC9E;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,UAAU,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAErC,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wFAAwF;IACxF,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,kGAAkG;IAClG,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,2CAA2C;IAC3C,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,qDAAqD;IACrD,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ // Client types
2
+ export {};
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,eAAe"}
@@ -0,0 +1,38 @@
1
+ import type { ChatMessage, TokenUsage } from './types.js';
2
+ export interface WebSocketClientConfig {
3
+ url: string;
4
+ reconnect?: boolean;
5
+ reconnectInterval?: number;
6
+ maxReconnectAttempts?: number;
7
+ }
8
+ export type ConnectionState = 'disconnected' | 'connecting' | 'connected' | 'reconnecting';
9
+ export type WebSocketCallbacks = {
10
+ onTextDelta?: (text: string) => void;
11
+ onToolCall?: (toolCallId: string, name: string, args: unknown) => void;
12
+ onToolResult?: (toolCallId: string, name: string, result: unknown) => void;
13
+ onStepStart?: (index: number) => void;
14
+ onStepFinish?: (index: number, finishReason: string) => void;
15
+ onComplete?: (result: {
16
+ text: string;
17
+ usage?: TokenUsage;
18
+ }) => void;
19
+ onError?: (error: string) => void;
20
+ };
21
+ export declare class AgentWebSocketClient {
22
+ private ws;
23
+ private config;
24
+ private state;
25
+ private reconnectAttempts;
26
+ private reconnectTimer;
27
+ private onStateChange?;
28
+ constructor(config: WebSocketClientConfig);
29
+ getState(): ConnectionState;
30
+ onConnectionStateChange(handler: (state: ConnectionState) => void): void;
31
+ private setState;
32
+ connect(): Promise<void>;
33
+ private handleReconnect;
34
+ send(message: ChatMessage, callbacks: WebSocketCallbacks): void;
35
+ private dispatch;
36
+ disconnect(): void;
37
+ }
38
+ //# sourceMappingURL=websocket-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-client.d.ts","sourceRoot":"","sources":["../src/websocket-client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAe,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAIpE,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,cAAc,CAAC;AAE3F,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvE,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3E,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,UAAU,CAAA;KAAE,KAAK,IAAI,CAAC;IACpE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,CAAC;AAEF,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,aAAa,CAAC,CAAmC;gBAE7C,MAAM,EAAE,qBAAqB;IAUzC,QAAQ,IAAI,eAAe;IAI3B,uBAAuB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI;IAIjE,OAAO,CAAC,QAAQ;IAQhB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAsCxB,OAAO,CAAC,eAAe;IA4BvB,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,GAAG,IAAI;IAiB/D,OAAO,CAAC,QAAQ;IAgChB,UAAU,IAAI,IAAI;CAUnB"}