@axiom-lattice/client-sdk 1.0.22 → 1.0.24

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 CHANGED
@@ -14,6 +14,7 @@ The Client SDK provides a simple interface for interacting with the Axiom Lattic
14
14
  - Register client-side tools
15
15
  - Handle tool calls and responses
16
16
  - Process streaming message chunks with ChunkMessageMerger
17
+ - Standardized HTTP client using axios for all API calls
17
18
 
18
19
  ## Installation
19
20
 
@@ -32,6 +33,7 @@ const client = new Client({
32
33
  apiKey: "your-api-key",
33
34
  assistantId: "your-assistant-id",
34
35
  transport: "sse",
36
+ environment: "web", // Optional: "web" (default) or "wechat-miniprogram"
35
37
  });
36
38
 
37
39
  // Create a thread
@@ -121,6 +123,35 @@ const messages = merger.getMessages();
121
123
 
122
124
  ## Migration Notes
123
125
 
126
+ ### Runtime Environment Support
127
+
128
+ As of version 1.0.13, the client SDK now supports different runtime environments through the `environment` configuration option. Currently supported environments are:
129
+
130
+ - `"web"` (default): Uses axios for all HTTP requests, including streaming responses
131
+ - `"wechat-miniprogram"`: Uses a custom WeChat Mini Program HTTP client implementation for compatibility with WeChat Mini Programs
132
+
133
+ To specify the environment:
134
+
135
+ ```typescript
136
+ const client = new Client({
137
+ // ... other options
138
+ environment: "wechat-miniprogram", // For WeChat Mini Program environments
139
+ });
140
+ ```
141
+
142
+ The WeChat Mini Program environment uses a different approach for streaming responses since true streaming is not supported in that environment. It uses a polling mechanism instead.
143
+
144
+ ### HTTP Client Standardization
145
+
146
+ As of version 1.0.12, the client SDK now uses axios exclusively for all HTTP requests, including streaming responses. Previously, the SDK used a combination of axios for regular requests and the native fetch API for streaming. This change standardizes the HTTP client implementation across the SDK.
147
+
148
+ Benefits:
149
+
150
+ - Consistent error handling
151
+ - Unified request/response interceptors
152
+ - Simplified maintenance and debugging
153
+ - Better compatibility with different JavaScript environments
154
+
124
155
  ### ChunkMessageMerger
125
156
 
126
157
  The `ChunkMessageMerger` module has been moved from the web project to the client-sdk package. It provides functionality for processing streaming message chunks and merging them into complete messages.
@@ -151,6 +182,39 @@ Steps for future migration:
151
182
 
152
183
  The main client class for interacting with the Axiom Lattice Agent Service API.
153
184
 
185
+ ### WeChatClient
186
+
187
+ A specialized client implementation for WeChat Mini Programs that uses the native `wx` API for network requests.
188
+
189
+ ```typescript
190
+ import { WeChatClient } from "@axiom-lattice/client-sdk";
191
+
192
+ // Create a WeChat client
193
+ const client = new WeChatClient({
194
+ baseURL: "https://api.example.com",
195
+ apiKey: "your-api-key",
196
+ assistantId: "your-assistant-id",
197
+ transport: "sse",
198
+ });
199
+
200
+ // Use the same API methods as the standard Client
201
+ const threadId = await client.createThread({
202
+ metadata: { user: "user123" },
203
+ });
204
+
205
+ // Send a message
206
+ const response = await client.chat.send({
207
+ threadId,
208
+ messages: [
209
+ {
210
+ role: "user",
211
+ content: "Hello, how can you help me?",
212
+ id: "msg-1",
213
+ },
214
+ ],
215
+ });
216
+ ```
217
+
154
218
  ### ChunkMessageMerger
155
219
 
156
220
  A utility for processing streaming message chunks and merging them into complete messages.
package/dist/index.d.ts CHANGED
@@ -110,6 +110,10 @@ interface ChatStreamOptions extends ChatSendOptions {
110
110
  * Whether to run in background (optional)
111
111
  */
112
112
  background?: boolean;
113
+ /**
114
+ * Whether to return agent state when stream completes (optional)
115
+ */
116
+ enableReturnStateWhenSteamCompleted?: boolean;
113
117
  }
114
118
  /**
115
119
  * Stream callbacks interface
@@ -120,9 +124,9 @@ interface StreamCallbacks {
120
124
  */
121
125
  onEvent: (event: MessageChunk) => void;
122
126
  /**
123
- * Called when the stream completes
127
+ * Called when the stream completes, with optional agent state
124
128
  */
125
- onComplete?: () => void;
129
+ onComplete?: (state?: AgentState) => void;
126
130
  /**
127
131
  * Called when an error occurs
128
132
  */
@@ -220,6 +224,10 @@ interface RunOptions {
220
224
  * Whether to run in background (optional)
221
225
  */
222
226
  background?: boolean;
227
+ /**
228
+ * Whether to return agent state when stream completes (optional)
229
+ */
230
+ enableReturnStateWhenSteamCompleted?: boolean;
223
231
  }
224
232
  /**
225
233
  * Agent state
@@ -254,21 +262,26 @@ declare class AuthenticationError extends Error {
254
262
  * Main client class for interacting with the Axiom Lattice Agent Service API
255
263
  */
256
264
  declare class Client {
257
- private client;
258
265
  private config;
259
266
  private assistantId;
260
267
  private tenantId;
261
268
  private registeredTools;
269
+ private headers;
262
270
  /**
263
271
  * Creates a new Client instance
264
272
  * @param config - Configuration options for the client
265
273
  */
266
274
  constructor(config: ClientConfig);
267
275
  /**
268
- * Sets up axios interceptors for error handling
276
+ * Helper method to handle fetch responses and errors
269
277
  * @private
270
278
  */
271
- private setupInterceptors;
279
+ private handleResponse;
280
+ /**
281
+ * Helper method to make fetch requests
282
+ * @private
283
+ */
284
+ private fetchWithTimeout;
272
285
  /**
273
286
  * Set tenant ID for multi-tenant environments
274
287
  * @param tenantId - Tenant identifier
@@ -318,7 +331,7 @@ declare class Client {
318
331
  /**
319
332
  * Run agent with options
320
333
  * @param options - Options for running the agent
321
- * @returns A promise that resolves to the run result or a stream
334
+ * @returns A promise that resolves to the run result
322
335
  */
323
336
  run(options: RunOptions): Promise<any>;
324
337
  /**
@@ -348,7 +361,123 @@ declare class Client {
348
361
  * @param onError - Optional callback function called when an error occurs
349
362
  * @returns A function that can be called to stop the stream
350
363
  */
351
- stream: (options: ChatStreamOptions, onEvent: (event: MessageChunk) => void, onComplete?: () => void, onError?: (error: Error) => void) => (() => void);
364
+ stream: (options: ChatStreamOptions, onEvent: (event: MessageChunk) => void, onComplete?: (state?: AgentState) => void, onError?: (error: Error) => void) => (() => void);
365
+ };
366
+ /**
367
+ * Tools namespace for registering and unregistering client-side tools
368
+ */
369
+ tools: {
370
+ /**
371
+ * Registers a client-side tool
372
+ * @param options - Options for registering a tool
373
+ */
374
+ register: (options: RegisterToolOptions) => void;
375
+ /**
376
+ * Unregisters a client-side tool
377
+ * @param name - Tool name
378
+ */
379
+ unregister: (name: string) => void;
380
+ };
381
+ }
382
+
383
+ /**
384
+ * WeChat Mini Program client for interacting with the Axiom Lattice Agent Service API
385
+ */
386
+ declare class WeChatClient {
387
+ private config;
388
+ private assistantId;
389
+ private tenantId;
390
+ private registeredTools;
391
+ /**
392
+ * Creates a new WeChatClient instance
393
+ * @param config - Configuration options for the client
394
+ */
395
+ constructor(config: ClientConfig);
396
+ /**
397
+ * Set tenant ID for multi-tenant environments
398
+ * @param tenantId - Tenant identifier
399
+ */
400
+ setTenantId(tenantId: string): void;
401
+ /**
402
+ * Helper method to make WeChat HTTP requests
403
+ * @private
404
+ */
405
+ private request;
406
+ /**
407
+ * Creates a new thread
408
+ * @param options - Options for creating a thread
409
+ * @returns A promise that resolves to the thread ID
410
+ */
411
+ createThread(options: CreateThreadOptions): Promise<string>;
412
+ /**
413
+ * Retrieves thread information
414
+ * @param threadId - Thread identifier
415
+ * @returns A promise that resolves to the thread information
416
+ */
417
+ getThread(threadId: string): Promise<Thread>;
418
+ /**
419
+ * Lists all threads
420
+ * @param options - Options for listing threads
421
+ * @returns A promise that resolves to an array of threads
422
+ */
423
+ listThreads(options?: ListThreadsOptions): Promise<Thread[]>;
424
+ /**
425
+ * Deletes a thread
426
+ * @param threadId - Thread identifier
427
+ * @returns A promise that resolves when the thread is deleted
428
+ */
429
+ deleteThread(threadId: string): Promise<void>;
430
+ /**
431
+ * Retrieves messages from a thread
432
+ * @param options - Options for retrieving messages
433
+ * @returns A promise that resolves to an array of messages
434
+ */
435
+ getMessages(options: GetMessagesOptions): Promise<Message[]>;
436
+ /**
437
+ * Retrieves agent state
438
+ * @param threadId - Thread identifier
439
+ * @returns A promise that resolves to the agent state
440
+ */
441
+ getAgentState(threadId: string): Promise<AgentState>;
442
+ /**
443
+ * Gets agent graph visualization
444
+ * @returns A promise that resolves to the graph visualization data
445
+ */
446
+ getAgentGraph(): Promise<string>;
447
+ /**
448
+ * Run agent with options
449
+ * @param options - Options for running the agent
450
+ * @returns A promise that resolves to the run result
451
+ */
452
+ run(options: RunOptions): Promise<any>;
453
+ /**
454
+ * Stream run results using WeChat's downloadFile API
455
+ * @param options - Options for streaming run results
456
+ * @param onEvent - Callback function that receives stream events
457
+ * @param onComplete - Optional callback function called when streaming completes
458
+ * @param onError - Optional callback function called when an error occurs
459
+ * @returns A function that can be called to stop the stream
460
+ */
461
+ private streamRun;
462
+ /**
463
+ * Chat namespace for sending messages and streaming responses
464
+ */
465
+ chat: {
466
+ /**
467
+ * Sends a message to a thread and receives a response
468
+ * @param options - Options for sending a message
469
+ * @returns A promise that resolves to the chat response
470
+ */
471
+ send: (options: ChatSendOptions) => Promise<ChatResponse>;
472
+ /**
473
+ * Sends a message to a thread and streams the response
474
+ * @param options - Options for streaming a message
475
+ * @param onEvent - Callback function that receives stream events
476
+ * @param onComplete - Optional callback function called when streaming completes
477
+ * @param onError - Optional callback function called when an error occurs
478
+ * @returns A function that can be called to stop the stream
479
+ */
480
+ stream: (options: ChatStreamOptions, onEvent: (event: MessageChunk) => void, onComplete?: (state?: AgentState) => void, onError?: (error: Error) => void) => (() => void);
352
481
  };
353
482
  /**
354
483
  * Tools namespace for registering and unregistering client-side tools
@@ -385,4 +514,4 @@ declare function createSimpleMessageMerger(): {
385
514
  reset: () => void;
386
515
  };
387
516
 
388
- export { AgentState, ApiError, AuthenticationError, ChatResponse, ChatSendOptions, ChatStreamOptions, Client, ClientConfig, CreateThreadOptions, GetMessagesOptions, ListThreadsOptions, NetworkError, RegisterToolOptions, RetryConfig, RunOptions, StreamCallbacks, Thread, Transport, createSimpleMessageMerger };
517
+ export { AgentState, ApiError, AuthenticationError, ChatResponse, ChatSendOptions, ChatStreamOptions, Client, ClientConfig, CreateThreadOptions, GetMessagesOptions, ListThreadsOptions, NetworkError, RegisterToolOptions, RetryConfig, RunOptions, StreamCallbacks, Thread, Transport, WeChatClient, createSimpleMessageMerger };