@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.
- package/README.md +46 -0
- package/dist/browser-stream.d.ts +127 -0
- package/dist/browser-stream.d.ts.map +1 -0
- package/dist/browser-stream.js +264 -0
- package/dist/browser-stream.js.map +1 -0
- package/dist/chat-client.d.ts +38 -0
- package/dist/chat-client.d.ts.map +1 -0
- package/dist/chat-client.js +142 -0
- package/dist/chat-client.js.map +1 -0
- package/dist/client.d.ts +18 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +34 -0
- package/dist/client.js.map +1 -0
- package/dist/errors.d.ts +10 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +20 -0
- package/dist/errors.js.map +1 -0
- package/dist/http-client.d.ts +48 -0
- package/dist/http-client.d.ts.map +1 -0
- package/dist/http-client.js +168 -0
- package/dist/http-client.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/session.d.ts +36 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +60 -0
- package/dist/session.js.map +1 -0
- package/dist/types.d.ts +89 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/websocket-client.d.ts +38 -0
- package/dist/websocket-client.d.ts.map +1 -0
- package/dist/websocket-client.js +140 -0
- package/dist/websocket-client.js.map +1 -0
- package/package.json +58 -0
|
@@ -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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -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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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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"}
|
package/dist/session.js
ADDED
|
@@ -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"}
|
package/dist/types.d.ts
ADDED
|
@@ -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 @@
|
|
|
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"}
|