@elizaos/api-client 1.0.12 → 1.0.13

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/dist/index.d.ts CHANGED
@@ -42,6 +42,11 @@ declare abstract class BaseApiClient {
42
42
  protected timeout: number;
43
43
  protected defaultHeaders: Record<string, string>;
44
44
  constructor(config: ApiClientConfig);
45
+ /**
46
+ * Creates a safe response for no-content scenarios (204 responses)
47
+ * Returns a sensible default based on common API patterns
48
+ */
49
+ private createNoContentResponse;
45
50
  protected request<T>(method: string, path: string, options?: {
46
51
  body?: any;
47
52
  params?: Record<string, any>;
@@ -168,15 +173,46 @@ declare class AgentsService extends BaseApiClient {
168
173
  /**
169
174
  * Get agent logs
170
175
  */
171
- getAgentLogs(agentId: UUID, params?: AgentLogsParams): Promise<{
172
- logs: AgentLog[];
173
- }>;
176
+ getAgentLogs(agentId: UUID, params?: AgentLogsParams): Promise<AgentLog[]>;
174
177
  /**
175
178
  * Delete a specific log entry
176
179
  */
177
180
  deleteAgentLog(agentId: UUID, logId: UUID): Promise<{
178
181
  success: boolean;
179
182
  }>;
183
+ /**
184
+ * Get agents associated with a server
185
+ */
186
+ getAgentsForServer(serverId: UUID): Promise<{
187
+ success: boolean;
188
+ data: {
189
+ serverId: UUID;
190
+ agents: UUID[];
191
+ };
192
+ }>;
193
+ addAgentToServer(serverId: UUID, agentId: UUID): Promise<{
194
+ success: boolean;
195
+ data: {
196
+ serverId: UUID;
197
+ agentId: UUID;
198
+ message: string;
199
+ };
200
+ }>;
201
+ removeAgentFromServer(serverId: UUID, agentId: UUID): Promise<{
202
+ success: boolean;
203
+ data: {
204
+ serverId: UUID;
205
+ agentId: UUID;
206
+ message: string;
207
+ };
208
+ }>;
209
+ getServersForAgent(agentId: UUID): Promise<{
210
+ success: boolean;
211
+ data: {
212
+ agentId: UUID;
213
+ servers: UUID[];
214
+ };
215
+ }>;
180
216
  }
181
217
 
182
218
  interface MessageServer {
@@ -277,6 +313,11 @@ interface ServerSyncParams {
277
313
  sourceId: string;
278
314
  }>;
279
315
  }
316
+ interface ChannelUpdateParams {
317
+ name?: string;
318
+ participantCentralUserIds?: UUID[];
319
+ metadata?: Record<string, any>;
320
+ }
280
321
 
281
322
  declare class MessagingService extends BaseApiClient {
282
323
  /**
@@ -359,9 +400,9 @@ declare class MessagingService extends BaseApiClient {
359
400
  */
360
401
  getMessage(messageId: UUID): Promise<Message>;
361
402
  /**
362
- * Delete a message
403
+ * Delete a message from a channel
363
404
  */
364
- deleteMessage(messageId: UUID): Promise<{
405
+ deleteMessage(channelId: UUID, messageId: UUID): Promise<{
365
406
  success: boolean;
366
407
  }>;
367
408
  /**
@@ -402,6 +443,40 @@ declare class MessagingService extends BaseApiClient {
402
443
  deleteServer(serverId: UUID): Promise<{
403
444
  success: boolean;
404
445
  }>;
446
+ /**
447
+ * Update a channel
448
+ */
449
+ updateChannel(channelId: UUID, params: ChannelUpdateParams): Promise<{
450
+ success: boolean;
451
+ data: MessageChannel;
452
+ }>;
453
+ /**
454
+ * Generate channel title
455
+ */
456
+ generateChannelTitle(channelId: UUID, agentId: UUID): Promise<{
457
+ title: string;
458
+ }>;
459
+ /**
460
+ * Add user to channel participants (implemented via updateChannel)
461
+ */
462
+ addUserToChannel(channelId: UUID, userId: UUID): Promise<{
463
+ success: boolean;
464
+ data: MessageChannel;
465
+ }>;
466
+ /**
467
+ * Add multiple users to channel participants (implemented via updateChannel)
468
+ */
469
+ addUsersToChannel(channelId: UUID, userIds: UUID[]): Promise<{
470
+ success: boolean;
471
+ data: MessageChannel;
472
+ }>;
473
+ /**
474
+ * Remove user from channel participants (implemented via updateChannel)
475
+ */
476
+ removeUserFromChannel(channelId: UUID, userId: UUID): Promise<{
477
+ success: boolean;
478
+ data: MessageChannel;
479
+ }>;
405
480
  }
406
481
 
407
482
  interface Memory {
@@ -506,6 +581,47 @@ declare class MemoryService extends BaseApiClient {
506
581
  clearWorldMemories(serverId: UUID): Promise<{
507
582
  deleted: number;
508
583
  }>;
584
+ /**
585
+ * Delete a specific memory
586
+ */
587
+ deleteMemory(agentId: UUID, memoryId: UUID): Promise<{
588
+ success: boolean;
589
+ }>;
590
+ /**
591
+ * Get agent internal memories
592
+ */
593
+ getAgentInternalMemories(agentId: UUID, agentPerspectiveRoomId: UUID, includeEmbedding?: boolean): Promise<{
594
+ success: boolean;
595
+ data: any[];
596
+ }>;
597
+ /**
598
+ * Delete agent internal memory
599
+ */
600
+ deleteAgentInternalMemory(agentId: UUID, memoryId: UUID): Promise<{
601
+ success: boolean;
602
+ }>;
603
+ /**
604
+ * Delete all agent internal memories
605
+ */
606
+ deleteAllAgentInternalMemories(agentId: UUID, agentPerspectiveRoomId: UUID): Promise<{
607
+ success: boolean;
608
+ }>;
609
+ /**
610
+ * Update agent internal memory
611
+ */
612
+ updateAgentInternalMemory(agentId: UUID, memoryId: UUID, memoryData: any): Promise<any>;
613
+ /**
614
+ * Delete group memory (implemented via messaging channel message deletion)
615
+ */
616
+ deleteGroupMemory(serverId: UUID, memoryId: UUID): Promise<{
617
+ success: boolean;
618
+ }>;
619
+ /**
620
+ * Clear group chat (implemented via messaging channel history clearing)
621
+ */
622
+ clearGroupChat(serverId: UUID): Promise<{
623
+ success: boolean;
624
+ }>;
509
625
  }
510
626
 
511
627
  interface SpeechConversationParams {
@@ -550,6 +666,10 @@ interface TranscriptionResponse {
550
666
  }
551
667
 
552
668
  declare class AudioService extends BaseApiClient {
669
+ /**
670
+ * Make a binary request using BaseApiClient infrastructure
671
+ */
672
+ private requestBinary;
553
673
  /**
554
674
  * Convert audio input to appropriate FormData value
555
675
  */
@@ -597,22 +717,18 @@ interface MediaUploadParams {
597
717
  metadata?: Record<string, any>;
598
718
  }
599
719
  interface MediaUploadResponse {
600
- id: UUID;
601
- filename: string;
602
720
  url: string;
721
+ type: string;
722
+ filename: string;
723
+ originalName: string;
603
724
  size: number;
604
- contentType: string;
605
- uploadedAt: Date;
606
- metadata?: Record<string, any>;
607
- }
608
- interface ChannelUploadParams {
609
- files: Array<File | Blob>;
610
- messageId?: UUID;
611
- metadata?: Record<string, any>;
612
725
  }
613
726
  interface ChannelUploadResponse {
614
- uploads: MediaUploadResponse[];
615
- totalSize: number;
727
+ url: string;
728
+ type: string;
729
+ filename: string;
730
+ originalName: string;
731
+ size: number;
616
732
  }
617
733
 
618
734
  declare class MediaService extends BaseApiClient {
@@ -621,9 +737,9 @@ declare class MediaService extends BaseApiClient {
621
737
  */
622
738
  uploadAgentMedia(agentId: UUID, params: MediaUploadParams): Promise<MediaUploadResponse>;
623
739
  /**
624
- * Upload files to a channel
740
+ * Upload file to a channel
625
741
  */
626
- uploadChannelFiles(channelId: UUID, params: ChannelUploadParams): Promise<ChannelUploadResponse>;
742
+ uploadChannelMedia(channelId: UUID, file: File): Promise<ChannelUploadResponse>;
627
743
  }
628
744
 
629
745
  interface ServerHealth {
@@ -756,6 +872,32 @@ declare class SystemService extends BaseApiClient {
756
872
  success: boolean;
757
873
  message: string;
758
874
  }>;
875
+ /**
876
+ * Global logs functionality - implementing via system endpoints
877
+ */
878
+ getGlobalLogs(params?: {
879
+ level?: string;
880
+ agentName?: string;
881
+ agentId?: string;
882
+ }): Promise<{
883
+ logs: Array<{
884
+ level: number;
885
+ time: number;
886
+ msg: string;
887
+ [key: string]: string | number | boolean | null | undefined;
888
+ }>;
889
+ count: number;
890
+ total: number;
891
+ level: string;
892
+ levels: string[];
893
+ }>;
894
+ private buildUrl;
895
+ private getHeaders;
896
+ deleteGlobalLogs(): Promise<{
897
+ status: string;
898
+ message: string;
899
+ }>;
900
+ deleteLog(logId: string): Promise<void>;
759
901
  }
760
902
 
761
903
  declare class ElizaClient {
@@ -773,4 +915,4 @@ declare class ElizaClient {
773
915
  static create(config: ApiClientConfig): ElizaClient;
774
916
  }
775
917
 
776
- export { type Agent, type AgentCreateParams, type AgentLog, type AgentLogsParams, type AgentPanel, type AgentUpdateParams, type AgentWorld, type AgentWorldSettings, AgentsService, type ApiClientConfig, ApiError, type ApiErrorResponse, type ApiResponse, type ApiSuccessResponse, AudioService, type AudioSynthesizeParams, BaseApiClient, type ChannelCreateParams, type ChannelParticipant, type ChannelUploadParams, type ChannelUploadResponse, type DmChannelParams, ElizaClient, type ExternalMessageParams, type GroupChannelCreateParams, type LocalEnvironmentUpdateParams, type LogSubmitParams, MediaService, type MediaUploadParams, type MediaUploadResponse, type Memory, type MemoryParams, MemoryService, type MemoryUpdateParams, type Message, type MessageChannel, type MessageCompleteParams, type MessageSearchParams, type MessageServer, type MessageSubmitParams, MessagingService, type PaginationParams, type RequestConfig, type Room, type RoomCreateParams, type ServerCreateParams, type ServerDebugInfo, type ServerHealth, ServerService, type ServerStatus, type ServerSyncParams, type SpeechConversationParams, type SpeechGenerateParams, type SpeechResponse, type SystemEnvironment, SystemService, type TranscribeParams, type TranscriptionResponse, type WorldCreateParams };
918
+ export { type Agent, type AgentCreateParams, type AgentLog, type AgentLogsParams, type AgentPanel, type AgentUpdateParams, type AgentWorld, type AgentWorldSettings, AgentsService, type ApiClientConfig, ApiError, type ApiErrorResponse, type ApiResponse, type ApiSuccessResponse, AudioService, type AudioSynthesizeParams, BaseApiClient, type ChannelCreateParams, type ChannelParticipant, type ChannelUpdateParams, type ChannelUploadResponse, type DmChannelParams, ElizaClient, type ExternalMessageParams, type GroupChannelCreateParams, type LocalEnvironmentUpdateParams, type LogSubmitParams, MediaService, type MediaUploadParams, type MediaUploadResponse, type Memory, type MemoryParams, MemoryService, type MemoryUpdateParams, type Message, type MessageChannel, type MessageCompleteParams, type MessageSearchParams, type MessageServer, type MessageSubmitParams, MessagingService, type PaginationParams, type RequestConfig, type Room, type RoomCreateParams, type ServerCreateParams, type ServerDebugInfo, type ServerHealth, ServerService, type ServerStatus, type ServerSyncParams, type SpeechConversationParams, type SpeechGenerateParams, type SpeechResponse, type SystemEnvironment, SystemService, type TranscribeParams, type TranscriptionResponse, type WorldCreateParams };
package/dist/index.js CHANGED
@@ -27,6 +27,13 @@ var BaseApiClient = class {
27
27
  this.defaultHeaders["X-API-KEY"] = this.apiKey;
28
28
  }
29
29
  }
30
+ /**
31
+ * Creates a safe response for no-content scenarios (204 responses)
32
+ * Returns a sensible default based on common API patterns
33
+ */
34
+ createNoContentResponse() {
35
+ return { success: true };
36
+ }
30
37
  async request(method, path, options) {
31
38
  let url;
32
39
  if (this.baseUrl) {
@@ -61,7 +68,25 @@ var BaseApiClient = class {
61
68
  signal: controller.signal
62
69
  });
63
70
  clearTimeout(timeoutId);
64
- const data = await response.json();
71
+ let data;
72
+ if (response.status === 204 || response.headers.get("content-length") === "0") {
73
+ data = { success: true, data: this.createNoContentResponse() };
74
+ } else {
75
+ try {
76
+ data = await response.json();
77
+ } catch (error) {
78
+ if (response.ok) {
79
+ data = { success: true, data: this.createNoContentResponse() };
80
+ } else {
81
+ throw new ApiError(
82
+ "PARSE_ERROR",
83
+ "Failed to parse response as JSON",
84
+ void 0,
85
+ response.status
86
+ );
87
+ }
88
+ }
89
+ }
65
90
  if (!response.ok || !data.success) {
66
91
  const error = "error" in data ? data.error : {
67
92
  code: "UNKNOWN_ERROR",
@@ -167,7 +192,17 @@ var AgentsService = class extends BaseApiClient {
167
192
  * Get agent's plugin panels
168
193
  */
169
194
  async getAgentPanels(agentId) {
170
- return this.get(`/api/agents/${agentId}/panels`);
195
+ const response = await this.get(
196
+ `/api/agents/${agentId}/panels`
197
+ );
198
+ const panels = (Array.isArray(response) ? response : []).map((panel, index) => ({
199
+ id: `${panel.name}-${index}`,
200
+ // Generate an ID since server doesn't send one
201
+ name: panel.name,
202
+ url: panel.path,
203
+ type: "plugin"
204
+ }));
205
+ return { panels };
171
206
  }
172
207
  /**
173
208
  * Get agent logs
@@ -181,6 +216,25 @@ var AgentsService = class extends BaseApiClient {
181
216
  async deleteAgentLog(agentId, logId) {
182
217
  return this.delete(`/api/agents/${agentId}/logs/${logId}`);
183
218
  }
219
+ /**
220
+ * Get agents associated with a server
221
+ */
222
+ async getAgentsForServer(serverId) {
223
+ return this.get(
224
+ `/api/messaging/servers/${serverId}/agents`
225
+ );
226
+ }
227
+ async addAgentToServer(serverId, agentId) {
228
+ return this.post(`/api/messaging/servers/${serverId}/agents`, { agentId });
229
+ }
230
+ async removeAgentFromServer(serverId, agentId) {
231
+ return this.delete(`/api/messaging/servers/${serverId}/agents/${agentId}`);
232
+ }
233
+ async getServersForAgent(agentId) {
234
+ return this.get(
235
+ `/api/messaging/agents/${agentId}/servers`
236
+ );
237
+ }
184
238
  };
185
239
 
186
240
  // src/services/messaging.ts
@@ -207,7 +261,7 @@ var MessagingService = class extends BaseApiClient {
207
261
  * Create a new channel
208
262
  */
209
263
  async createChannel(params) {
210
- return this.post("/api/messaging/channels", params);
264
+ return this.post("/api/messaging/central-channels", params);
211
265
  }
212
266
  /**
213
267
  * Create a group channel
@@ -255,13 +309,15 @@ var MessagingService = class extends BaseApiClient {
255
309
  * Delete a channel
256
310
  */
257
311
  async deleteChannel(channelId) {
258
- return this.delete(`/api/messaging/channels/${channelId}`);
312
+ return this.delete(`/api/messaging/central-channels/${channelId}`);
259
313
  }
260
314
  /**
261
315
  * Clear channel history
262
316
  */
263
317
  async clearChannelHistory(channelId) {
264
- return this.post(`/api/messaging/channels/${channelId}/clear`);
318
+ return this.delete(
319
+ `/api/messaging/central-channels/${channelId}/messages`
320
+ );
265
321
  }
266
322
  /**
267
323
  * Post a new message to a channel
@@ -288,10 +344,12 @@ var MessagingService = class extends BaseApiClient {
288
344
  return this.get(`/api/messaging/messages/${messageId}`);
289
345
  }
290
346
  /**
291
- * Delete a message
347
+ * Delete a message from a channel
292
348
  */
293
- async deleteMessage(messageId) {
294
- return this.delete(`/api/messaging/messages/${messageId}`);
349
+ async deleteMessage(channelId, messageId) {
350
+ return this.delete(
351
+ `/api/messaging/central-channels/${channelId}/messages/${messageId}`
352
+ );
295
353
  }
296
354
  /**
297
355
  * Update a message
@@ -340,6 +398,65 @@ var MessagingService = class extends BaseApiClient {
340
398
  async deleteServer(serverId) {
341
399
  return this.delete(`/api/messaging/servers/${serverId}`);
342
400
  }
401
+ /**
402
+ * Update a channel
403
+ */
404
+ async updateChannel(channelId, params) {
405
+ return this.patch(
406
+ `/api/messaging/central-channels/${channelId}`,
407
+ params
408
+ );
409
+ }
410
+ /**
411
+ * Generate channel title
412
+ */
413
+ async generateChannelTitle(channelId, agentId) {
414
+ return this.post(
415
+ `/api/messaging/central-channels/${channelId}/generate-title`,
416
+ { agentId }
417
+ );
418
+ }
419
+ /**
420
+ * Add user to channel participants (implemented via updateChannel)
421
+ */
422
+ async addUserToChannel(channelId, userId) {
423
+ const channel = await this.getChannelDetails(channelId);
424
+ const currentParticipants = channel.metadata?.participantCentralUserIds || [];
425
+ if (!currentParticipants.includes(userId)) {
426
+ const updatedParticipants = [...currentParticipants, userId];
427
+ return this.updateChannel(channelId, {
428
+ participantCentralUserIds: updatedParticipants
429
+ });
430
+ }
431
+ return { success: true, data: channel };
432
+ }
433
+ /**
434
+ * Add multiple users to channel participants (implemented via updateChannel)
435
+ */
436
+ async addUsersToChannel(channelId, userIds) {
437
+ const channel = await this.getChannelDetails(channelId);
438
+ const currentParticipants = channel.metadata?.participantCentralUserIds || [];
439
+ const newParticipants = [...currentParticipants];
440
+ for (const userId of userIds) {
441
+ if (!newParticipants.includes(userId)) {
442
+ newParticipants.push(userId);
443
+ }
444
+ }
445
+ return this.updateChannel(channelId, {
446
+ participantCentralUserIds: newParticipants
447
+ });
448
+ }
449
+ /**
450
+ * Remove user from channel participants (implemented via updateChannel)
451
+ */
452
+ async removeUserFromChannel(channelId, userId) {
453
+ const channel = await this.getChannelDetails(channelId);
454
+ const currentParticipants = channel.metadata?.participantCentralUserIds || [];
455
+ const updatedParticipants = currentParticipants.filter((id) => id !== userId);
456
+ return this.updateChannel(channelId, {
457
+ participantCentralUserIds: updatedParticipants
458
+ });
459
+ }
343
460
  };
344
461
 
345
462
  // src/services/memory.ts
@@ -412,10 +529,112 @@ var MemoryService = class extends BaseApiClient {
412
529
  async clearWorldMemories(serverId) {
413
530
  return this.delete(`/api/memory/groups/${serverId}/memories`);
414
531
  }
532
+ /**
533
+ * Delete a specific memory
534
+ */
535
+ async deleteMemory(agentId, memoryId) {
536
+ return this.delete(`/api/memory/${agentId}/memories/${memoryId}`);
537
+ }
538
+ /**
539
+ * Get agent internal memories
540
+ */
541
+ async getAgentInternalMemories(agentId, agentPerspectiveRoomId, includeEmbedding) {
542
+ return this.get(
543
+ `/api/memory/${agentId}/rooms/${agentPerspectiveRoomId}/memories`,
544
+ { params: { includeEmbedding } }
545
+ );
546
+ }
547
+ /**
548
+ * Delete agent internal memory
549
+ */
550
+ async deleteAgentInternalMemory(agentId, memoryId) {
551
+ return this.delete(`/api/memory/${agentId}/memories/${memoryId}`);
552
+ }
553
+ /**
554
+ * Delete all agent internal memories
555
+ */
556
+ async deleteAllAgentInternalMemories(agentId, agentPerspectiveRoomId) {
557
+ return this.delete(
558
+ `/api/memory/${agentId}/memories/all/${agentPerspectiveRoomId}`
559
+ );
560
+ }
561
+ /**
562
+ * Update agent internal memory
563
+ */
564
+ async updateAgentInternalMemory(agentId, memoryId, memoryData) {
565
+ return this.patch(`/api/memory/${agentId}/memories/${memoryId}`, memoryData);
566
+ }
567
+ /**
568
+ * Delete group memory (implemented via messaging channel message deletion)
569
+ */
570
+ async deleteGroupMemory(serverId, memoryId) {
571
+ return this.delete(
572
+ `/api/messaging/central-channels/${serverId}/messages/${memoryId}`
573
+ );
574
+ }
575
+ /**
576
+ * Clear group chat (implemented via messaging channel history clearing)
577
+ */
578
+ async clearGroupChat(serverId) {
579
+ return this.delete(
580
+ `/api/messaging/central-channels/${serverId}/messages`
581
+ );
582
+ }
415
583
  };
416
584
 
417
585
  // src/services/audio.ts
418
586
  var AudioService = class extends BaseApiClient {
587
+ /**
588
+ * Make a binary request using BaseApiClient infrastructure
589
+ */
590
+ async requestBinary(method, path, options) {
591
+ let url;
592
+ if (this.baseUrl) {
593
+ url = new URL(`${this.baseUrl}${path}`);
594
+ } else if (typeof window !== "undefined" && window.location) {
595
+ url = new URL(path, window.location.origin);
596
+ } else {
597
+ url = new URL(path, "http://localhost:3000");
598
+ }
599
+ if (options?.params) {
600
+ Object.entries(options.params).forEach(([key, value]) => {
601
+ if (value !== void 0 && value !== null) {
602
+ url.searchParams.append(key, String(value));
603
+ }
604
+ });
605
+ }
606
+ const controller = new AbortController();
607
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
608
+ try {
609
+ const headers = {
610
+ ...this.defaultHeaders,
611
+ ...options?.headers
612
+ };
613
+ if (options?.body instanceof FormData) {
614
+ delete headers["Content-Type"];
615
+ }
616
+ const response = await fetch(url.toString(), {
617
+ method,
618
+ headers,
619
+ body: options?.body instanceof FormData ? options.body : options?.body ? JSON.stringify(options.body) : void 0,
620
+ signal: controller.signal
621
+ });
622
+ clearTimeout(timeoutId);
623
+ if (!response.ok) {
624
+ throw new Error(`HTTP error! status: ${response.status}`);
625
+ }
626
+ return await response.arrayBuffer();
627
+ } catch (error) {
628
+ clearTimeout(timeoutId);
629
+ if (error instanceof Error) {
630
+ if (error.name === "AbortError") {
631
+ throw new Error("Request timed out");
632
+ }
633
+ throw error;
634
+ }
635
+ throw new Error("An unknown error occurred");
636
+ }
637
+ }
419
638
  /**
420
639
  * Convert audio input to appropriate FormData value
421
640
  */
@@ -492,9 +711,9 @@ var AudioService = class extends BaseApiClient {
492
711
  const formData = new FormData();
493
712
  const processedAudio = this.processAudioInput(params.audio);
494
713
  if (processedAudio instanceof Blob) {
495
- formData.append("audio", processedAudio);
714
+ formData.append("file", processedAudio);
496
715
  } else {
497
- formData.append("audio", processedAudio);
716
+ formData.append("file", processedAudio);
498
717
  }
499
718
  if (params.format) formData.append("format", params.format);
500
719
  if (params.language) formData.append("language", params.language);
@@ -507,10 +726,20 @@ var AudioService = class extends BaseApiClient {
507
726
  * Generate speech from text
508
727
  */
509
728
  async generateSpeech(agentId, params) {
510
- return this.post(
511
- `/api/audio/${agentId}/speech/generate`,
512
- params
513
- );
729
+ const audioBuffer = await this.requestBinary("POST", `/api/audio/${agentId}/speech/generate`, {
730
+ body: params
731
+ });
732
+ const bytes = new Uint8Array(audioBuffer);
733
+ let binary = "";
734
+ for (let i = 0; i < bytes.byteLength; i++) {
735
+ binary += String.fromCharCode(bytes[i]);
736
+ }
737
+ const base64Audio = btoa(binary);
738
+ const format = "mpeg";
739
+ return {
740
+ audio: base64Audio,
741
+ format
742
+ };
514
743
  }
515
744
  /**
516
745
  * Synthesize audio message
@@ -528,13 +757,13 @@ var AudioService = class extends BaseApiClient {
528
757
  const formData = new FormData();
529
758
  const processedAudio = this.processAudioInput(params.audio);
530
759
  if (processedAudio instanceof Blob) {
531
- formData.append("audio", processedAudio);
760
+ formData.append("file", processedAudio);
532
761
  } else {
533
- formData.append("audio", processedAudio);
762
+ formData.append("file", processedAudio);
534
763
  }
535
764
  if (params.format) formData.append("format", params.format);
536
765
  if (params.language) formData.append("language", params.language);
537
- return this.request("POST", `/api/audio/${agentId}/transcribe`, {
766
+ return this.request("POST", `/api/audio/${agentId}/transcriptions`, {
538
767
  body: formData
539
768
  });
540
769
  }
@@ -545,9 +774,9 @@ var AudioService = class extends BaseApiClient {
545
774
  const formData = new FormData();
546
775
  const processedAudio = this.processAudioInput(audio);
547
776
  if (processedAudio instanceof Blob) {
548
- formData.append("audio", processedAudio);
777
+ formData.append("file", processedAudio);
549
778
  } else {
550
- formData.append("audio", processedAudio);
779
+ formData.append("file", processedAudio);
551
780
  }
552
781
  if (metadata) formData.append("metadata", JSON.stringify(metadata));
553
782
  return this.request("POST", `/api/audio/${agentId}/speech`, {
@@ -566,23 +795,19 @@ var MediaService = class extends BaseApiClient {
566
795
  formData.append("file", params.file, params.filename);
567
796
  if (params.contentType) formData.append("contentType", params.contentType);
568
797
  if (params.metadata) formData.append("metadata", JSON.stringify(params.metadata));
569
- return this.request("POST", `/api/media/${agentId}/upload-media`, {
798
+ return this.request("POST", `/api/media/agents/${agentId}/upload-media`, {
570
799
  body: formData
571
800
  });
572
801
  }
573
802
  /**
574
- * Upload files to a channel
803
+ * Upload file to a channel
575
804
  */
576
- async uploadChannelFiles(channelId, params) {
805
+ async uploadChannelMedia(channelId, file) {
577
806
  const formData = new FormData();
578
- params.files.forEach((file, index) => {
579
- formData.append(`files[${index}]`, file);
580
- });
581
- if (params.messageId) formData.append("messageId", params.messageId);
582
- if (params.metadata) formData.append("metadata", JSON.stringify(params.metadata));
807
+ formData.append("file", file);
583
808
  return this.request(
584
809
  "POST",
585
- `/api/media/central-channels/${channelId}/upload`,
810
+ `/api/messaging/central-channels/${channelId}/upload-media`,
586
811
  {
587
812
  body: formData
588
813
  }
@@ -626,7 +851,7 @@ var ServerService = class extends BaseApiClient {
626
851
  * Get runtime debug info
627
852
  */
628
853
  async getDebugInfo() {
629
- return this.get("/api/server/servers");
854
+ return this.get("/api/server/debug/servers");
630
855
  }
631
856
  /**
632
857
  * Submit logs
@@ -679,6 +904,50 @@ var SystemService = class extends BaseApiClient {
679
904
  }
680
905
  return this.post("/api/system/env/local", body);
681
906
  }
907
+ /**
908
+ * Global logs functionality - implementing via system endpoints
909
+ */
910
+ async getGlobalLogs(params) {
911
+ const response = await fetch(this.buildUrl("/api/server/logs", { params }), {
912
+ method: "GET",
913
+ headers: this.getHeaders()
914
+ });
915
+ if (!response.ok) {
916
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
917
+ }
918
+ const data = await response.json();
919
+ return {
920
+ logs: data.logs || [],
921
+ count: data.count || 0,
922
+ total: data.total || 0,
923
+ level: data.requestedLevel || data.level || "all",
924
+ levels: data.levels || []
925
+ };
926
+ }
927
+ buildUrl(path, options) {
928
+ const url = new URL(`${this.baseUrl}${path}`);
929
+ if (options?.params) {
930
+ Object.entries(options.params).forEach(([key, value]) => {
931
+ if (value !== void 0 && value !== null) {
932
+ url.searchParams.append(key, String(value));
933
+ }
934
+ });
935
+ }
936
+ return url.toString();
937
+ }
938
+ getHeaders() {
939
+ return {
940
+ ...this.defaultHeaders
941
+ };
942
+ }
943
+ async deleteGlobalLogs() {
944
+ return this.delete("/api/server/logs");
945
+ }
946
+ async deleteLog(logId) {
947
+ throw new Error(
948
+ "Individual log deletion is not supported. Use deleteGlobalLogs() to clear all logs."
949
+ );
950
+ }
682
951
  };
683
952
 
684
953
  // src/client.ts
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/base-client.ts","../src/services/agents.ts","../src/services/messaging.ts","../src/services/memory.ts","../src/services/audio.ts","../src/services/media.ts","../src/services/server.ts","../src/services/system.ts","../src/client.ts"],"sourcesContent":["import { ApiResponse, ApiClientConfig, RequestConfig } from '../types/base';\n\ndeclare const window: any;\n\nexport class ApiError extends Error {\n constructor(\n public code: string,\n message: string,\n public details?: string,\n public status?: number\n ) {\n super(message);\n this.name = 'ApiError';\n }\n}\n\nexport abstract class BaseApiClient {\n protected baseUrl: string;\n protected apiKey?: string;\n protected timeout: number;\n protected defaultHeaders: Record<string, string>;\n\n constructor(config: ApiClientConfig) {\n this.baseUrl = config.baseUrl.replace(/\\/$/, ''); // Remove trailing slash\n this.apiKey = config.apiKey;\n this.timeout = config.timeout || 30000; // 30 seconds default\n this.defaultHeaders = {\n 'Content-Type': 'application/json',\n ...config.headers,\n };\n\n if (this.apiKey) {\n this.defaultHeaders['X-API-KEY'] = this.apiKey;\n }\n }\n\n protected async request<T>(\n method: string,\n path: string,\n options?: {\n body?: any;\n params?: Record<string, any>;\n headers?: Record<string, string>;\n config?: RequestConfig;\n }\n ): Promise<T> {\n // Handle empty baseUrl for relative URLs\n let url: URL;\n if (this.baseUrl) {\n url = new URL(`${this.baseUrl}${path}`);\n } else if (typeof window !== 'undefined' && window.location) {\n url = new URL(path, window.location.origin);\n } else {\n // Fallback for non-browser environments\n url = new URL(path, 'http://localhost:3000');\n }\n\n // Add query parameters\n if (options?.params) {\n Object.entries(options.params).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n url.searchParams.append(key, String(value));\n }\n });\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.timeout);\n\n try {\n const headers = {\n ...this.defaultHeaders,\n ...options?.config?.headers,\n ...options?.headers,\n };\n\n // Remove Content-Type header if body is FormData\n if (options?.body instanceof FormData) {\n delete headers['Content-Type'];\n }\n\n const response = await fetch(url.toString(), {\n method,\n headers,\n body:\n options?.body instanceof FormData\n ? options.body\n : options?.body\n ? JSON.stringify(options.body)\n : undefined,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n const data = (await response.json()) as ApiResponse<T>;\n\n if (!response.ok || !data.success) {\n const error =\n 'error' in data\n ? data.error\n : {\n code: 'UNKNOWN_ERROR',\n message: 'An unknown error occurred',\n };\n throw new ApiError(error.code, error.message, error.details, response.status);\n }\n\n return data.data;\n } catch (error) {\n clearTimeout(timeoutId);\n\n if (error instanceof ApiError) {\n throw error;\n }\n\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n throw new ApiError('TIMEOUT', 'Request timed out');\n }\n throw new ApiError('NETWORK_ERROR', error.message);\n }\n\n throw new ApiError('UNKNOWN_ERROR', 'An unknown error occurred');\n }\n }\n\n protected async get<T>(\n path: string,\n options?: Omit<Parameters<typeof this.request>[2], 'body'>\n ): Promise<T> {\n return this.request<T>('GET', path, options);\n }\n\n protected async post<T>(\n path: string,\n body?: any,\n options?: Parameters<typeof this.request>[2]\n ): Promise<T> {\n return this.request<T>('POST', path, { ...options, body });\n }\n\n protected async put<T>(\n path: string,\n body?: any,\n options?: Parameters<typeof this.request>[2]\n ): Promise<T> {\n return this.request<T>('PUT', path, { ...options, body });\n }\n\n protected async patch<T>(\n path: string,\n body?: any,\n options?: Parameters<typeof this.request>[2]\n ): Promise<T> {\n return this.request<T>('PATCH', path, { ...options, body });\n }\n\n protected async delete<T>(\n path: string,\n options?: Omit<Parameters<typeof this.request>[2], 'body'>\n ): Promise<T> {\n return this.request<T>('DELETE', path, options);\n }\n}\n","import { UUID } from '@elizaos/core';\nimport { BaseApiClient } from '../lib/base-client';\nimport {\n Agent,\n AgentCreateParams,\n AgentUpdateParams,\n AgentWorld,\n AgentWorldSettings,\n AgentPanel,\n AgentLog,\n AgentLogsParams,\n} from '../types/agents';\n\nexport class AgentsService extends BaseApiClient {\n /**\n * List all agents with minimal details\n */\n async listAgents(): Promise<{ agents: Agent[] }> {\n return this.get<{ agents: Agent[] }>('/api/agents');\n }\n\n /**\n * Get specific agent details\n */\n async getAgent(agentId: UUID): Promise<Agent> {\n return this.get<Agent>(`/api/agents/${agentId}`);\n }\n\n /**\n * Create a new agent\n */\n async createAgent(params: AgentCreateParams): Promise<Agent> {\n return this.post<Agent>('/api/agents', params);\n }\n\n /**\n * Update an existing agent\n */\n async updateAgent(agentId: UUID, params: AgentUpdateParams): Promise<Agent> {\n return this.patch<Agent>(`/api/agents/${agentId}`, params);\n }\n\n /**\n * Delete an agent\n */\n async deleteAgent(agentId: UUID): Promise<{ success: boolean }> {\n return this.delete<{ success: boolean }>(`/api/agents/${agentId}`);\n }\n\n /**\n * Start an existing agent\n */\n async startAgent(agentId: UUID): Promise<{ status: string }> {\n return this.post<{ status: string }>(`/api/agents/${agentId}/start`);\n }\n\n /**\n * Stop a running agent\n */\n async stopAgent(agentId: UUID): Promise<{ status: string }> {\n return this.post<{ status: string }>(`/api/agents/${agentId}/stop`);\n }\n\n /**\n * Get all available worlds\n */\n async getWorlds(): Promise<{ worlds: AgentWorld[] }> {\n return this.get<{ worlds: AgentWorld[] }>('/api/agents/worlds');\n }\n\n /**\n * Add agent to a world\n */\n async addAgentToWorld(agentId: UUID, worldId: UUID): Promise<{ success: boolean }> {\n return this.post<{ success: boolean }>(`/api/agents/${agentId}/worlds`, { worldId });\n }\n\n /**\n * Update agent's world settings\n */\n async updateAgentWorldSettings(\n agentId: UUID,\n worldId: UUID,\n settings: Record<string, any>\n ): Promise<AgentWorldSettings> {\n return this.patch<AgentWorldSettings>(`/api/agents/${agentId}/worlds/${worldId}`, { settings });\n }\n\n /**\n * Get agent's plugin panels\n */\n async getAgentPanels(agentId: UUID): Promise<{ panels: AgentPanel[] }> {\n return this.get<{ panels: AgentPanel[] }>(`/api/agents/${agentId}/panels`);\n }\n\n /**\n * Get agent logs\n */\n async getAgentLogs(agentId: UUID, params?: AgentLogsParams): Promise<{ logs: AgentLog[] }> {\n return this.get<{ logs: AgentLog[] }>(`/api/agents/${agentId}/logs`, { params });\n }\n\n /**\n * Delete a specific log entry\n */\n async deleteAgentLog(agentId: UUID, logId: UUID): Promise<{ success: boolean }> {\n return this.delete<{ success: boolean }>(`/api/agents/${agentId}/logs/${logId}`);\n }\n}\n","import { UUID } from '@elizaos/core';\nimport { BaseApiClient } from '../lib/base-client';\nimport {\n Message,\n MessageServer,\n MessageChannel,\n MessageSubmitParams,\n MessageCompleteParams,\n ExternalMessageParams,\n ChannelCreateParams,\n GroupChannelCreateParams,\n DmChannelParams,\n ChannelParticipant,\n MessageSearchParams,\n ServerCreateParams,\n ServerSyncParams,\n} from '../types/messaging';\nimport { PaginationParams } from '../types/base';\n\nexport class MessagingService extends BaseApiClient {\n /**\n * Submit agent replies or system messages\n */\n async submitMessage(params: MessageSubmitParams): Promise<Message> {\n return this.post<Message>('/api/messaging/submit', params);\n }\n\n /**\n * Notify message completion\n */\n async completeMessage(params: MessageCompleteParams): Promise<{ success: boolean }> {\n return this.post<{ success: boolean }>('/api/messaging/complete', params);\n }\n\n /**\n * Ingest messages from external platforms\n */\n async ingestExternalMessages(params: ExternalMessageParams): Promise<{ processed: number }> {\n return this.post<{ processed: number }>('/api/messaging/ingest-external', params);\n }\n\n /**\n * Create a new channel\n */\n async createChannel(params: ChannelCreateParams): Promise<MessageChannel> {\n return this.post<MessageChannel>('/api/messaging/channels', params);\n }\n\n /**\n * Create a group channel\n */\n async createGroupChannel(params: GroupChannelCreateParams): Promise<MessageChannel> {\n return this.post<MessageChannel>('/api/messaging/central-channels', params);\n }\n\n /**\n * Find or create a DM channel\n */\n async getOrCreateDmChannel(params: DmChannelParams): Promise<MessageChannel> {\n return this.get<MessageChannel>('/api/messaging/dm-channel', { params });\n }\n\n /**\n * Get channel details\n */\n async getChannelDetails(channelId: UUID): Promise<MessageChannel> {\n return this.get<MessageChannel>(`/api/messaging/central-channels/${channelId}/details`);\n }\n\n /**\n * Get channel participants\n */\n async getChannelParticipants(channelId: UUID): Promise<{ participants: ChannelParticipant[] }> {\n return this.get<{ participants: ChannelParticipant[] }>(\n `/api/messaging/central-channels/${channelId}/participants`\n );\n }\n\n /**\n * Add agent to channel\n */\n async addAgentToChannel(channelId: UUID, agentId: UUID): Promise<{ success: boolean }> {\n return this.post<{ success: boolean }>(`/api/messaging/central-channels/${channelId}/agents`, {\n agentId,\n });\n }\n\n /**\n * Remove agent from channel\n */\n async removeAgentFromChannel(channelId: UUID, agentId: UUID): Promise<{ success: boolean }> {\n return this.delete<{ success: boolean }>(\n `/api/messaging/central-channels/${channelId}/agents/${agentId}`\n );\n }\n\n /**\n * Delete a channel\n */\n async deleteChannel(channelId: UUID): Promise<{ success: boolean }> {\n return this.delete<{ success: boolean }>(`/api/messaging/channels/${channelId}`);\n }\n\n /**\n * Clear channel history\n */\n async clearChannelHistory(channelId: UUID): Promise<{ deleted: number }> {\n return this.post<{ deleted: number }>(`/api/messaging/channels/${channelId}/clear`);\n }\n\n /**\n * Post a new message to a channel\n */\n async postMessage(\n channelId: UUID,\n content: string,\n metadata?: Record<string, any>\n ): Promise<Message> {\n return this.post<Message>(`/api/messaging/central-channels/${channelId}/messages`, {\n content,\n metadata,\n });\n }\n\n /**\n * Get channel messages\n */\n async getChannelMessages(\n channelId: UUID,\n params?: PaginationParams & { before?: Date | string; after?: Date | string }\n ): Promise<{ messages: Message[] }> {\n return this.get<{ messages: Message[] }>(\n `/api/messaging/central-channels/${channelId}/messages`,\n { params }\n );\n }\n\n /**\n * Get a specific message\n */\n async getMessage(messageId: UUID): Promise<Message> {\n return this.get<Message>(`/api/messaging/messages/${messageId}`);\n }\n\n /**\n * Delete a message\n */\n async deleteMessage(messageId: UUID): Promise<{ success: boolean }> {\n return this.delete<{ success: boolean }>(`/api/messaging/messages/${messageId}`);\n }\n\n /**\n * Update a message\n */\n async updateMessage(messageId: UUID, content: string): Promise<Message> {\n return this.patch<Message>(`/api/messaging/messages/${messageId}`, { content });\n }\n\n /**\n * Search messages\n */\n async searchMessages(params: MessageSearchParams): Promise<{ messages: Message[] }> {\n return this.post<{ messages: Message[] }>('/api/messaging/messages/search', params);\n }\n\n /**\n * List all message servers\n */\n async listServers(): Promise<{ servers: MessageServer[] }> {\n return this.get<{ servers: MessageServer[] }>('/api/messaging/central-servers');\n }\n\n /**\n * Get server channels\n */\n async getServerChannels(serverId: UUID): Promise<{ channels: MessageChannel[] }> {\n return this.get<{ channels: MessageChannel[] }>(\n `/api/messaging/central-servers/${serverId}/channels`\n );\n }\n\n /**\n * Create a new server\n */\n async createServer(params: ServerCreateParams): Promise<MessageServer> {\n return this.post<MessageServer>('/api/messaging/servers', params);\n }\n\n /**\n * Sync server channels\n */\n async syncServerChannels(serverId: UUID, params: ServerSyncParams): Promise<{ synced: number }> {\n return this.post<{ synced: number }>(\n `/api/messaging/servers/${serverId}/sync-channels`,\n params\n );\n }\n\n /**\n * Delete a server\n */\n async deleteServer(serverId: UUID): Promise<{ success: boolean }> {\n return this.delete<{ success: boolean }>(`/api/messaging/servers/${serverId}`);\n }\n}\n","import { UUID } from '@elizaos/core';\nimport { BaseApiClient } from '../lib/base-client';\nimport {\n Memory,\n Room,\n MemoryParams,\n MemoryUpdateParams,\n RoomCreateParams,\n WorldCreateParams,\n} from '../types/memory';\n\nexport class MemoryService extends BaseApiClient {\n /**\n * Get agent memories\n */\n async getAgentMemories(agentId: UUID, params?: MemoryParams): Promise<{ memories: Memory[] }> {\n return this.get<{ memories: Memory[] }>(`/api/memory/${agentId}/memories`, { params });\n }\n\n /**\n * Get room-specific memories\n */\n async getRoomMemories(\n agentId: UUID,\n roomId: UUID,\n params?: MemoryParams\n ): Promise<{ memories: Memory[] }> {\n return this.get<{ memories: Memory[] }>(`/api/memory/${agentId}/rooms/${roomId}/memories`, {\n params,\n });\n }\n\n /**\n * Update a memory\n */\n async updateMemory(agentId: UUID, memoryId: UUID, params: MemoryUpdateParams): Promise<Memory> {\n return this.patch<Memory>(`/api/memory/${agentId}/memories/${memoryId}`, params);\n }\n\n /**\n * Clear all agent memories\n */\n async clearAgentMemories(agentId: UUID): Promise<{ deleted: number }> {\n return this.delete<{ deleted: number }>(`/api/memory/${agentId}/memories`);\n }\n\n /**\n * Clear room memories\n */\n async clearRoomMemories(agentId: UUID, roomId: UUID): Promise<{ deleted: number }> {\n return this.delete<{ deleted: number }>(`/api/memory/${agentId}/memories/all/${roomId}`);\n }\n\n /**\n * List agent's rooms\n */\n async listAgentRooms(agentId: UUID): Promise<{ rooms: Room[] }> {\n return this.get<{ rooms: Room[] }>(`/api/memory/${agentId}/rooms`);\n }\n\n /**\n * Get room details\n */\n async getRoom(agentId: UUID, roomId: UUID): Promise<Room> {\n return this.get<Room>(`/api/memory/${agentId}/rooms/${roomId}`);\n }\n\n /**\n * Create a room\n */\n async createRoom(agentId: UUID, params: RoomCreateParams): Promise<Room> {\n return this.post<Room>(`/api/memory/${agentId}/rooms`, params);\n }\n\n /**\n * Create world from server\n */\n async createWorldFromServer(\n serverId: UUID,\n params: WorldCreateParams\n ): Promise<{ worldId: UUID }> {\n return this.post<{ worldId: UUID }>(`/api/memory/groups/${serverId}`, params);\n }\n\n /**\n * Delete a world\n */\n async deleteWorld(serverId: UUID): Promise<{ success: boolean }> {\n return this.delete<{ success: boolean }>(`/api/memory/groups/${serverId}`);\n }\n\n /**\n * Clear world memories\n */\n async clearWorldMemories(serverId: UUID): Promise<{ deleted: number }> {\n return this.delete<{ deleted: number }>(`/api/memory/groups/${serverId}/memories`);\n }\n}\n","import { UUID } from '@elizaos/core';\nimport { BaseApiClient } from '../lib/base-client';\nimport {\n SpeechConversationParams,\n SpeechGenerateParams,\n AudioSynthesizeParams,\n TranscribeParams,\n SpeechResponse,\n TranscriptionResponse,\n} from '../types/audio';\n\nexport class AudioService extends BaseApiClient {\n /**\n * Convert audio input to appropriate FormData value\n */\n private processAudioInput(audio: Blob | Buffer | string): Blob | string {\n if (audio instanceof Blob) {\n return audio;\n }\n\n if (typeof audio === 'string') {\n // Handle base64 data URLs (e.g., \"data:audio/mp3;base64,...\")\n if (audio.startsWith('data:')) {\n try {\n const [header, base64Data] = audio.split(',');\n const mimeMatch = header.match(/data:([^;]+)/);\n const mimeType = mimeMatch ? mimeMatch[1] : 'audio/wav';\n\n const binaryString = atob(base64Data);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return new Blob([bytes], { type: mimeType });\n } catch (error) {\n throw new Error(\n `Invalid base64 data URL: ${error instanceof Error ? error.message : 'Unknown error'}`\n );\n }\n }\n\n // Handle plain base64 strings (try to decode)\n if (this.isBase64String(audio)) {\n try {\n const binaryString = atob(audio);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return new Blob([bytes], { type: 'audio/wav' });\n } catch (error) {\n // If base64 decoding fails, treat as file path or other string\n return audio;\n }\n }\n\n // For file paths or other strings, return as-is (server will handle file reading)\n return audio;\n }\n\n // Handle Buffer and ArrayBuffer types\n if (this.isBuffer(audio)) {\n return new Blob([audio], { type: 'audio/wav' });\n }\n\n // Cast to any for runtime type checking since TypeScript can't narrow the union type properly\n const audioAsAny = audio as any;\n\n if (audioAsAny instanceof ArrayBuffer) {\n return new Blob([audioAsAny], { type: 'audio/wav' });\n }\n\n if (\n audioAsAny &&\n typeof audioAsAny === 'object' &&\n 'buffer' in audioAsAny &&\n audioAsAny.buffer instanceof ArrayBuffer\n ) {\n // Handle typed arrays like Uint8Array\n return new Blob([audioAsAny.buffer], { type: 'audio/wav' });\n }\n\n throw new Error(\n `Unsupported audio input type: ${typeof audio}. Expected Blob, Buffer, ArrayBuffer, or string.`\n );\n }\n\n /**\n * Check if a string appears to be base64 encoded\n */\n private isBase64String(str: string): boolean {\n // Basic base64 pattern check (allows padding)\n const base64Pattern = /^[A-Za-z0-9+/]*={0,2}$/;\n\n // Must be at least 4 characters and divisible by 4 (with padding)\n if (str.length < 4 || str.length % 4 !== 0) {\n return false;\n }\n\n return base64Pattern.test(str);\n }\n\n /**\n * Safe check for Buffer type (works in both Node.js and browser environments)\n */\n private isBuffer(obj: any): obj is Buffer {\n return (\n obj != null &&\n typeof obj === 'object' &&\n typeof obj.constructor === 'function' &&\n obj.constructor.name === 'Buffer' &&\n typeof obj.readUInt8 === 'function'\n );\n }\n\n /**\n * Handle speech conversation\n */\n async speechConversation(\n agentId: UUID,\n params: SpeechConversationParams\n ): Promise<SpeechResponse> {\n const formData = new FormData();\n\n const processedAudio = this.processAudioInput(params.audio);\n if (processedAudio instanceof Blob) {\n formData.append('audio', processedAudio);\n } else {\n // String (file path or other string identifier)\n formData.append('audio', processedAudio);\n }\n\n if (params.format) formData.append('format', params.format);\n if (params.language) formData.append('language', params.language);\n if (params.metadata) formData.append('metadata', JSON.stringify(params.metadata));\n\n return this.request<SpeechResponse>('POST', `/api/audio/${agentId}/speech/conversation`, {\n body: formData,\n });\n }\n\n /**\n * Generate speech from text\n */\n async generateSpeech(\n agentId: UUID,\n params: SpeechGenerateParams\n ): Promise<{ audio: string; format: string }> {\n return this.post<{ audio: string; format: string }>(\n `/api/audio/${agentId}/speech/generate`,\n params\n );\n }\n\n /**\n * Synthesize audio message\n */\n async synthesizeAudioMessage(\n agentId: UUID,\n params: AudioSynthesizeParams\n ): Promise<{ audio: string; format: string }> {\n return this.post<{ audio: string; format: string }>(\n `/api/audio/${agentId}/audio-messages/synthesize`,\n params\n );\n }\n\n /**\n * Transcribe audio to text\n */\n async transcribe(agentId: UUID, params: TranscribeParams): Promise<TranscriptionResponse> {\n const formData = new FormData();\n\n const processedAudio = this.processAudioInput(params.audio);\n if (processedAudio instanceof Blob) {\n formData.append('audio', processedAudio);\n } else {\n // String (file path or other string identifier)\n formData.append('audio', processedAudio);\n }\n\n if (params.format) formData.append('format', params.format);\n if (params.language) formData.append('language', params.language);\n\n return this.request<TranscriptionResponse>('POST', `/api/audio/${agentId}/transcribe`, {\n body: formData,\n });\n }\n\n /**\n * Process speech input\n */\n async processSpeech(\n agentId: UUID,\n audio: Blob | Buffer | string,\n metadata?: Record<string, any>\n ): Promise<SpeechResponse> {\n const formData = new FormData();\n\n const processedAudio = this.processAudioInput(audio);\n if (processedAudio instanceof Blob) {\n formData.append('audio', processedAudio);\n } else {\n // String (file path or other string identifier)\n formData.append('audio', processedAudio);\n }\n\n if (metadata) formData.append('metadata', JSON.stringify(metadata));\n\n return this.request<SpeechResponse>('POST', `/api/audio/${agentId}/speech`, {\n body: formData,\n });\n }\n}\n","import { UUID } from '@elizaos/core';\nimport { BaseApiClient } from '../lib/base-client';\nimport {\n MediaUploadParams,\n MediaUploadResponse,\n ChannelUploadParams,\n ChannelUploadResponse,\n} from '../types/media';\n\nexport class MediaService extends BaseApiClient {\n /**\n * Upload media for an agent\n */\n async uploadAgentMedia(agentId: UUID, params: MediaUploadParams): Promise<MediaUploadResponse> {\n const formData = new FormData();\n\n formData.append('file', params.file, params.filename);\n\n if (params.contentType) formData.append('contentType', params.contentType);\n if (params.metadata) formData.append('metadata', JSON.stringify(params.metadata));\n\n return this.request<MediaUploadResponse>('POST', `/api/media/${agentId}/upload-media`, {\n body: formData,\n });\n }\n\n /**\n * Upload files to a channel\n */\n async uploadChannelFiles(\n channelId: UUID,\n params: ChannelUploadParams\n ): Promise<ChannelUploadResponse> {\n const formData = new FormData();\n\n params.files.forEach((file, index) => {\n formData.append(`files[${index}]`, file);\n });\n\n if (params.messageId) formData.append('messageId', params.messageId);\n if (params.metadata) formData.append('metadata', JSON.stringify(params.metadata));\n\n return this.request<ChannelUploadResponse>(\n 'POST',\n `/api/media/central-channels/${channelId}/upload`,\n {\n body: formData,\n }\n );\n }\n}\n","import { BaseApiClient } from '../lib/base-client';\nimport { ServerHealth, ServerStatus, ServerDebugInfo, LogSubmitParams } from '../types/server';\n\nexport class ServerService extends BaseApiClient {\n /**\n * Health check\n */\n async checkHealth(): Promise<ServerHealth> {\n return this.get<ServerHealth>('/api/server/health');\n }\n\n /**\n * Simple ping\n */\n async ping(): Promise<{ pong: boolean }> {\n return this.get<{ pong: boolean }>('/api/server/ping');\n }\n\n /**\n * Hello endpoint\n */\n async hello(): Promise<{ message: string }> {\n return this.get<{ message: string }>('/api/server/hello');\n }\n\n /**\n * Get server status\n */\n async getStatus(): Promise<ServerStatus> {\n return this.get<ServerStatus>('/api/server/status');\n }\n\n /**\n * Stop the server\n */\n async stopServer(): Promise<{ success: boolean }> {\n return this.post<{ success: boolean }>('/api/server/stop');\n }\n\n /**\n * Get runtime debug info\n */\n async getDebugInfo(): Promise<ServerDebugInfo> {\n return this.get<ServerDebugInfo>('/api/server/servers');\n }\n\n /**\n * Submit logs\n */\n async submitLogs(logs: LogSubmitParams[]): Promise<{ received: number }> {\n return this.post<{ received: number }>('/api/server/logs', { logs });\n }\n\n /**\n * Clear logs\n */\n async clearLogs(): Promise<{ cleared: number }> {\n return this.delete<{ cleared: number }>('/api/server/logs');\n }\n}\n","import { BaseApiClient } from '../lib/base-client';\nimport { LocalEnvironmentUpdateParams } from '../types/system';\n\nexport class SystemService extends BaseApiClient {\n /**\n * Retrieve the local environment variables from the ElizaOS server.\n *\n * Server route (packages/server/src/api/system):\n * GET /api/system/env/local -> { success: true, data: Record<string,string> }\n */\n async getEnvironment(): Promise<Record<string, string>> {\n return this.get<Record<string, string>>('/api/system/env/local');\n }\n\n /**\n * Update (overwrite or merge) the local .env file on the ElizaOS server.\n *\n * Server route (packages/server/src/api/system):\n * POST /api/system/env/local -> { success: true, message: string }\n * Body: { content: Record<string,string> }\n *\n * For developer-ergonomics we accept several shapes:\n * 1. { variables: Record<string,string>; merge?: boolean }\n * 2. { content: Record<string,string> } (server-native)\n * 3. Record<string,string> (shorthand)\n */\n async updateLocalEnvironment(\n params:\n | LocalEnvironmentUpdateParams\n | { content: Record<string, string> }\n | Record<string, string>\n ): Promise<{ success: boolean; message: string }> {\n if (!params || typeof params !== 'object') {\n throw new Error('updateLocalEnvironment requires a configuration object');\n }\n\n let body: { content: Record<string, string> };\n\n if ('variables' in params) {\n body = { content: (params as LocalEnvironmentUpdateParams).variables };\n } else if ('content' in params) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n body = { content: (params as { content: Record<string, string> }).content };\n } else {\n // Treat params itself as record of env vars\n body = { content: params as unknown as Record<string, string> };\n }\n\n return this.post<{ success: boolean; message: string }>('/api/system/env/local', body);\n }\n}\n","import { ApiClientConfig } from './types/base';\nimport { AgentsService } from './services/agents';\nimport { MessagingService } from './services/messaging';\nimport { MemoryService } from './services/memory';\nimport { AudioService } from './services/audio';\nimport { MediaService } from './services/media';\nimport { ServerService } from './services/server';\nimport { SystemService } from './services/system';\n\nexport class ElizaClient {\n public readonly agents: AgentsService;\n public readonly messaging: MessagingService;\n public readonly memory: MemoryService;\n public readonly audio: AudioService;\n public readonly media: MediaService;\n public readonly server: ServerService;\n public readonly system: SystemService;\n\n constructor(config: ApiClientConfig) {\n // Initialize all services with the same config\n this.agents = new AgentsService(config);\n this.messaging = new MessagingService(config);\n this.memory = new MemoryService(config);\n this.audio = new AudioService(config);\n this.media = new MediaService(config);\n this.server = new ServerService(config);\n this.system = new SystemService(config);\n }\n\n /**\n * Create a new ElizaClient instance\n */\n static create(config: ApiClientConfig): ElizaClient {\n return new ElizaClient(config);\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/lib/base-client.ts","../src/services/agents.ts","../src/services/messaging.ts","../src/services/memory.ts","../src/services/audio.ts","../src/services/media.ts","../src/services/server.ts","../src/services/system.ts","../src/client.ts"],"sourcesContent":["import { ApiResponse, ApiClientConfig, RequestConfig } from '../types/base';\n\ndeclare const window: any;\n\nexport class ApiError extends Error {\n constructor(\n public code: string,\n message: string,\n public details?: string,\n public status?: number\n ) {\n super(message);\n this.name = 'ApiError';\n }\n}\n\nexport abstract class BaseApiClient {\n protected baseUrl: string;\n protected apiKey?: string;\n protected timeout: number;\n protected defaultHeaders: Record<string, string>;\n\n constructor(config: ApiClientConfig) {\n this.baseUrl = config.baseUrl.replace(/\\/$/, ''); // Remove trailing slash\n this.apiKey = config.apiKey;\n this.timeout = config.timeout || 30000; // 30 seconds default\n this.defaultHeaders = {\n 'Content-Type': 'application/json',\n ...config.headers,\n };\n\n if (this.apiKey) {\n this.defaultHeaders['X-API-KEY'] = this.apiKey;\n }\n }\n\n /**\n * Creates a safe response for no-content scenarios (204 responses)\n * Returns a sensible default based on common API patterns\n */\n private createNoContentResponse<T>(): T {\n // For most delete/update operations, return a success indicator\n // This handles the common case of { success: boolean } return types\n return { success: true } as T;\n }\n\n protected async request<T>(\n method: string,\n path: string,\n options?: {\n body?: any;\n params?: Record<string, any>;\n headers?: Record<string, string>;\n config?: RequestConfig;\n }\n ): Promise<T> {\n // Handle empty baseUrl for relative URLs\n let url: URL;\n if (this.baseUrl) {\n url = new URL(`${this.baseUrl}${path}`);\n } else if (typeof window !== 'undefined' && window.location) {\n url = new URL(path, window.location.origin);\n } else {\n // Fallback for non-browser environments\n url = new URL(path, 'http://localhost:3000');\n }\n\n // Add query parameters\n if (options?.params) {\n Object.entries(options.params).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n url.searchParams.append(key, String(value));\n }\n });\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.timeout);\n\n try {\n const headers = {\n ...this.defaultHeaders,\n ...options?.config?.headers,\n ...options?.headers,\n };\n\n // Remove Content-Type header if body is FormData\n if (options?.body instanceof FormData) {\n delete headers['Content-Type'];\n }\n\n const response = await fetch(url.toString(), {\n method,\n headers,\n body:\n options?.body instanceof FormData\n ? options.body\n : options?.body\n ? JSON.stringify(options.body)\n : undefined,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n // Handle empty responses (204 No Content)\n let data: ApiResponse<T>;\n if (response.status === 204 || response.headers.get('content-length') === '0') {\n // For 204 No Content, create a synthetic success response\n data = { success: true, data: this.createNoContentResponse<T>() };\n } else {\n try {\n data = (await response.json()) as ApiResponse<T>;\n } catch (error) {\n // If JSON parsing fails, treat as success for 2xx responses\n if (response.ok) {\n data = { success: true, data: this.createNoContentResponse<T>() };\n } else {\n throw new ApiError(\n 'PARSE_ERROR',\n 'Failed to parse response as JSON',\n undefined,\n response.status\n );\n }\n }\n }\n\n if (!response.ok || !data.success) {\n const error =\n 'error' in data\n ? data.error\n : {\n code: 'UNKNOWN_ERROR',\n message: 'An unknown error occurred',\n };\n throw new ApiError(error.code, error.message, error.details, response.status);\n }\n\n return data.data;\n } catch (error) {\n clearTimeout(timeoutId);\n\n if (error instanceof ApiError) {\n throw error;\n }\n\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n throw new ApiError('TIMEOUT', 'Request timed out');\n }\n throw new ApiError('NETWORK_ERROR', error.message);\n }\n\n throw new ApiError('UNKNOWN_ERROR', 'An unknown error occurred');\n }\n }\n\n protected async get<T>(\n path: string,\n options?: Omit<Parameters<typeof this.request>[2], 'body'>\n ): Promise<T> {\n return this.request<T>('GET', path, options);\n }\n\n protected async post<T>(\n path: string,\n body?: any,\n options?: Parameters<typeof this.request>[2]\n ): Promise<T> {\n return this.request<T>('POST', path, { ...options, body });\n }\n\n protected async put<T>(\n path: string,\n body?: any,\n options?: Parameters<typeof this.request>[2]\n ): Promise<T> {\n return this.request<T>('PUT', path, { ...options, body });\n }\n\n protected async patch<T>(\n path: string,\n body?: any,\n options?: Parameters<typeof this.request>[2]\n ): Promise<T> {\n return this.request<T>('PATCH', path, { ...options, body });\n }\n\n protected async delete<T>(\n path: string,\n options?: Omit<Parameters<typeof this.request>[2], 'body'>\n ): Promise<T> {\n return this.request<T>('DELETE', path, options);\n }\n}\n","import { UUID } from '@elizaos/core';\nimport { BaseApiClient } from '../lib/base-client';\nimport {\n Agent,\n AgentCreateParams,\n AgentLog,\n AgentLogsParams,\n AgentPanel,\n AgentUpdateParams,\n AgentWorld,\n AgentWorldSettings,\n} from '../types/agents';\n\nexport class AgentsService extends BaseApiClient {\n /**\n * List all agents with minimal details\n */\n async listAgents(): Promise<{ agents: Agent[] }> {\n return this.get<{ agents: Agent[] }>('/api/agents');\n }\n\n /**\n * Get specific agent details\n */\n async getAgent(agentId: UUID): Promise<Agent> {\n return this.get<Agent>(`/api/agents/${agentId}`);\n }\n\n /**\n * Create a new agent\n */\n async createAgent(params: AgentCreateParams): Promise<Agent> {\n return this.post<Agent>('/api/agents', params);\n }\n\n /**\n * Update an existing agent\n */\n async updateAgent(agentId: UUID, params: AgentUpdateParams): Promise<Agent> {\n return this.patch<Agent>(`/api/agents/${agentId}`, params);\n }\n\n /**\n * Delete an agent\n */\n async deleteAgent(agentId: UUID): Promise<{ success: boolean }> {\n return this.delete<{ success: boolean }>(`/api/agents/${agentId}`);\n }\n\n /**\n * Start an existing agent\n */\n async startAgent(agentId: UUID): Promise<{ status: string }> {\n return this.post<{ status: string }>(`/api/agents/${agentId}/start`);\n }\n\n /**\n * Stop a running agent\n */\n async stopAgent(agentId: UUID): Promise<{ status: string }> {\n return this.post<{ status: string }>(`/api/agents/${agentId}/stop`);\n }\n\n /**\n * Get all available worlds\n */\n async getWorlds(): Promise<{ worlds: AgentWorld[] }> {\n return this.get<{ worlds: AgentWorld[] }>('/api/agents/worlds');\n }\n\n /**\n * Add agent to a world\n */\n async addAgentToWorld(agentId: UUID, worldId: UUID): Promise<{ success: boolean }> {\n return this.post<{ success: boolean }>(`/api/agents/${agentId}/worlds`, { worldId });\n }\n\n /**\n * Update agent's world settings\n */\n async updateAgentWorldSettings(\n agentId: UUID,\n worldId: UUID,\n settings: Record<string, any>\n ): Promise<AgentWorldSettings> {\n return this.patch<AgentWorldSettings>(`/api/agents/${agentId}/worlds/${worldId}`, { settings });\n }\n\n /**\n * Get agent's plugin panels\n */\n async getAgentPanels(agentId: UUID): Promise<{ panels: AgentPanel[] }> {\n const response = await this.get<Array<{ name: string; path: string }>>(\n `/api/agents/${agentId}/panels`\n );\n\n const panels: AgentPanel[] = (Array.isArray(response) ? response : []).map((panel, index) => ({\n id: `${panel.name}-${index}`, // Generate an ID since server doesn't send one\n name: panel.name,\n url: panel.path,\n type: 'plugin',\n }));\n\n return { panels };\n }\n\n /**\n * Get agent logs\n */\n async getAgentLogs(agentId: UUID, params?: AgentLogsParams): Promise<AgentLog[]> {\n return this.get<AgentLog[]>(`/api/agents/${agentId}/logs`, { params });\n }\n\n /**\n * Delete a specific log entry\n */\n async deleteAgentLog(agentId: UUID, logId: UUID): Promise<{ success: boolean }> {\n return this.delete<{ success: boolean }>(`/api/agents/${agentId}/logs/${logId}`);\n }\n\n /**\n * Get agents associated with a server\n */\n async getAgentsForServer(\n serverId: UUID\n ): Promise<{ success: boolean; data: { serverId: UUID; agents: UUID[] } }> {\n return this.get<{ success: boolean; data: { serverId: UUID; agents: UUID[] } }>(\n `/api/messaging/servers/${serverId}/agents`\n );\n }\n\n async addAgentToServer(\n serverId: UUID,\n agentId: UUID\n ): Promise<{ success: boolean; data: { serverId: UUID; agentId: UUID; message: string } }> {\n return this.post<{\n success: boolean;\n data: { serverId: UUID; agentId: UUID; message: string };\n }>(`/api/messaging/servers/${serverId}/agents`, { agentId });\n }\n\n async removeAgentFromServer(\n serverId: UUID,\n agentId: UUID\n ): Promise<{ success: boolean; data: { serverId: UUID; agentId: UUID; message: string } }> {\n return this.delete<{\n success: boolean;\n data: { serverId: UUID; agentId: UUID; message: string };\n }>(`/api/messaging/servers/${serverId}/agents/${agentId}`);\n }\n\n async getServersForAgent(\n agentId: UUID\n ): Promise<{ success: boolean; data: { agentId: UUID; servers: UUID[] } }> {\n return this.get<{ success: boolean; data: { agentId: UUID; servers: UUID[] } }>(\n `/api/messaging/agents/${agentId}/servers`\n );\n }\n}\n","import { UUID } from '@elizaos/core';\nimport { BaseApiClient } from '../lib/base-client';\nimport {\n Message,\n MessageServer,\n MessageChannel,\n MessageSubmitParams,\n MessageCompleteParams,\n ExternalMessageParams,\n ChannelCreateParams,\n GroupChannelCreateParams,\n DmChannelParams,\n ChannelParticipant,\n MessageSearchParams,\n ServerCreateParams,\n ServerSyncParams,\n ChannelUpdateParams,\n} from '../types/messaging';\nimport { PaginationParams } from '../types/base';\n\nexport class MessagingService extends BaseApiClient {\n /**\n * Submit agent replies or system messages\n */\n async submitMessage(params: MessageSubmitParams): Promise<Message> {\n return this.post<Message>('/api/messaging/submit', params);\n }\n\n /**\n * Notify message completion\n */\n async completeMessage(params: MessageCompleteParams): Promise<{ success: boolean }> {\n return this.post<{ success: boolean }>('/api/messaging/complete', params);\n }\n\n /**\n * Ingest messages from external platforms\n */\n async ingestExternalMessages(params: ExternalMessageParams): Promise<{ processed: number }> {\n return this.post<{ processed: number }>('/api/messaging/ingest-external', params);\n }\n\n /**\n * Create a new channel\n */\n async createChannel(params: ChannelCreateParams): Promise<MessageChannel> {\n return this.post<MessageChannel>('/api/messaging/central-channels', params);\n }\n\n /**\n * Create a group channel\n */\n async createGroupChannel(params: GroupChannelCreateParams): Promise<MessageChannel> {\n return this.post<MessageChannel>('/api/messaging/central-channels', params);\n }\n\n /**\n * Find or create a DM channel\n */\n async getOrCreateDmChannel(params: DmChannelParams): Promise<MessageChannel> {\n return this.get<MessageChannel>('/api/messaging/dm-channel', { params });\n }\n\n /**\n * Get channel details\n */\n async getChannelDetails(channelId: UUID): Promise<MessageChannel> {\n return this.get<MessageChannel>(`/api/messaging/central-channels/${channelId}/details`);\n }\n\n /**\n * Get channel participants\n */\n async getChannelParticipants(channelId: UUID): Promise<{ participants: ChannelParticipant[] }> {\n return this.get<{ participants: ChannelParticipant[] }>(\n `/api/messaging/central-channels/${channelId}/participants`\n );\n }\n\n /**\n * Add agent to channel\n */\n async addAgentToChannel(channelId: UUID, agentId: UUID): Promise<{ success: boolean }> {\n return this.post<{ success: boolean }>(`/api/messaging/central-channels/${channelId}/agents`, {\n agentId,\n });\n }\n\n /**\n * Remove agent from channel\n */\n async removeAgentFromChannel(channelId: UUID, agentId: UUID): Promise<{ success: boolean }> {\n return this.delete<{ success: boolean }>(\n `/api/messaging/central-channels/${channelId}/agents/${agentId}`\n );\n }\n\n /**\n * Delete a channel\n */\n async deleteChannel(channelId: UUID): Promise<{ success: boolean }> {\n return this.delete<{ success: boolean }>(`/api/messaging/central-channels/${channelId}`);\n }\n\n /**\n * Clear channel history\n */\n async clearChannelHistory(channelId: UUID): Promise<{ deleted: number }> {\n return this.delete<{ deleted: number }>(\n `/api/messaging/central-channels/${channelId}/messages`\n );\n }\n\n /**\n * Post a new message to a channel\n */\n async postMessage(\n channelId: UUID,\n content: string,\n metadata?: Record<string, any>\n ): Promise<Message> {\n return this.post<Message>(`/api/messaging/central-channels/${channelId}/messages`, {\n content,\n metadata,\n });\n }\n\n /**\n * Get channel messages\n */\n async getChannelMessages(\n channelId: UUID,\n params?: PaginationParams & { before?: Date | string; after?: Date | string }\n ): Promise<{ messages: Message[] }> {\n return this.get<{ messages: Message[] }>(\n `/api/messaging/central-channels/${channelId}/messages`,\n { params }\n );\n }\n\n /**\n * Get a specific message\n */\n async getMessage(messageId: UUID): Promise<Message> {\n return this.get<Message>(`/api/messaging/messages/${messageId}`);\n }\n\n /**\n * Delete a message from a channel\n */\n async deleteMessage(channelId: UUID, messageId: UUID): Promise<{ success: boolean }> {\n return this.delete<{ success: boolean }>(\n `/api/messaging/central-channels/${channelId}/messages/${messageId}`\n );\n }\n\n /**\n * Update a message\n */\n async updateMessage(messageId: UUID, content: string): Promise<Message> {\n return this.patch<Message>(`/api/messaging/messages/${messageId}`, { content });\n }\n\n /**\n * Search messages\n */\n async searchMessages(params: MessageSearchParams): Promise<{ messages: Message[] }> {\n return this.post<{ messages: Message[] }>('/api/messaging/messages/search', params);\n }\n\n /**\n * List all message servers\n */\n async listServers(): Promise<{ servers: MessageServer[] }> {\n return this.get<{ servers: MessageServer[] }>('/api/messaging/central-servers');\n }\n\n /**\n * Get server channels\n */\n async getServerChannels(serverId: UUID): Promise<{ channels: MessageChannel[] }> {\n return this.get<{ channels: MessageChannel[] }>(\n `/api/messaging/central-servers/${serverId}/channels`\n );\n }\n\n /**\n * Create a new server\n */\n async createServer(params: ServerCreateParams): Promise<MessageServer> {\n return this.post<MessageServer>('/api/messaging/servers', params);\n }\n\n /**\n * Sync server channels\n */\n async syncServerChannels(serverId: UUID, params: ServerSyncParams): Promise<{ synced: number }> {\n return this.post<{ synced: number }>(\n `/api/messaging/servers/${serverId}/sync-channels`,\n params\n );\n }\n\n /**\n * Delete a server\n */\n async deleteServer(serverId: UUID): Promise<{ success: boolean }> {\n return this.delete<{ success: boolean }>(`/api/messaging/servers/${serverId}`);\n }\n\n /**\n * Update a channel\n */\n async updateChannel(\n channelId: UUID,\n params: ChannelUpdateParams\n ): Promise<{ success: boolean; data: MessageChannel }> {\n return this.patch<{ success: boolean; data: MessageChannel }>(\n `/api/messaging/central-channels/${channelId}`,\n params\n );\n }\n\n /**\n * Generate channel title\n */\n async generateChannelTitle(channelId: UUID, agentId: UUID): Promise<{ title: string }> {\n return this.post<{ title: string }>(\n `/api/messaging/central-channels/${channelId}/generate-title`,\n { agentId }\n );\n }\n\n /**\n * Add user to channel participants (implemented via updateChannel)\n */\n async addUserToChannel(\n channelId: UUID,\n userId: UUID\n ): Promise<{ success: boolean; data: MessageChannel }> {\n // First get current participants\n const channel = await this.getChannelDetails(channelId);\n const currentParticipants = channel.metadata?.participantCentralUserIds || [];\n\n // Add new user if not already present\n if (!currentParticipants.includes(userId)) {\n const updatedParticipants = [...currentParticipants, userId];\n return this.updateChannel(channelId, {\n participantCentralUserIds: updatedParticipants,\n });\n }\n\n return { success: true, data: channel };\n }\n\n /**\n * Add multiple users to channel participants (implemented via updateChannel)\n */\n async addUsersToChannel(\n channelId: UUID,\n userIds: UUID[]\n ): Promise<{ success: boolean; data: MessageChannel }> {\n // First get current participants\n const channel = await this.getChannelDetails(channelId);\n const currentParticipants = channel.metadata?.participantCentralUserIds || [];\n\n // Add new users that aren't already present\n const newParticipants = [...currentParticipants];\n for (const userId of userIds) {\n if (!newParticipants.includes(userId)) {\n newParticipants.push(userId);\n }\n }\n\n return this.updateChannel(channelId, {\n participantCentralUserIds: newParticipants,\n });\n }\n\n /**\n * Remove user from channel participants (implemented via updateChannel)\n */\n async removeUserFromChannel(\n channelId: UUID,\n userId: UUID\n ): Promise<{ success: boolean; data: MessageChannel }> {\n // First get current participants\n const channel = await this.getChannelDetails(channelId);\n const currentParticipants = channel.metadata?.participantCentralUserIds || [];\n\n // Remove user from participants\n const updatedParticipants = currentParticipants.filter((id) => id !== userId);\n\n return this.updateChannel(channelId, {\n participantCentralUserIds: updatedParticipants,\n });\n }\n}\n","import { UUID } from '@elizaos/core';\nimport { BaseApiClient } from '../lib/base-client';\nimport {\n Memory,\n Room,\n MemoryParams,\n MemoryUpdateParams,\n RoomCreateParams,\n WorldCreateParams,\n} from '../types/memory';\n\nexport class MemoryService extends BaseApiClient {\n /**\n * Get agent memories\n */\n async getAgentMemories(agentId: UUID, params?: MemoryParams): Promise<{ memories: Memory[] }> {\n return this.get<{ memories: Memory[] }>(`/api/memory/${agentId}/memories`, { params });\n }\n\n /**\n * Get room-specific memories\n */\n async getRoomMemories(\n agentId: UUID,\n roomId: UUID,\n params?: MemoryParams\n ): Promise<{ memories: Memory[] }> {\n return this.get<{ memories: Memory[] }>(`/api/memory/${agentId}/rooms/${roomId}/memories`, {\n params,\n });\n }\n\n /**\n * Update a memory\n */\n async updateMemory(agentId: UUID, memoryId: UUID, params: MemoryUpdateParams): Promise<Memory> {\n return this.patch<Memory>(`/api/memory/${agentId}/memories/${memoryId}`, params);\n }\n\n /**\n * Clear all agent memories\n */\n async clearAgentMemories(agentId: UUID): Promise<{ deleted: number }> {\n return this.delete<{ deleted: number }>(`/api/memory/${agentId}/memories`);\n }\n\n /**\n * Clear room memories\n */\n async clearRoomMemories(agentId: UUID, roomId: UUID): Promise<{ deleted: number }> {\n return this.delete<{ deleted: number }>(`/api/memory/${agentId}/memories/all/${roomId}`);\n }\n\n /**\n * List agent's rooms\n */\n async listAgentRooms(agentId: UUID): Promise<{ rooms: Room[] }> {\n return this.get<{ rooms: Room[] }>(`/api/memory/${agentId}/rooms`);\n }\n\n /**\n * Get room details\n */\n async getRoom(agentId: UUID, roomId: UUID): Promise<Room> {\n return this.get<Room>(`/api/memory/${agentId}/rooms/${roomId}`);\n }\n\n /**\n * Create a room\n */\n async createRoom(agentId: UUID, params: RoomCreateParams): Promise<Room> {\n return this.post<Room>(`/api/memory/${agentId}/rooms`, params);\n }\n\n /**\n * Create world from server\n */\n async createWorldFromServer(\n serverId: UUID,\n params: WorldCreateParams\n ): Promise<{ worldId: UUID }> {\n return this.post<{ worldId: UUID }>(`/api/memory/groups/${serverId}`, params);\n }\n\n /**\n * Delete a world\n */\n async deleteWorld(serverId: UUID): Promise<{ success: boolean }> {\n return this.delete<{ success: boolean }>(`/api/memory/groups/${serverId}`);\n }\n\n /**\n * Clear world memories\n */\n async clearWorldMemories(serverId: UUID): Promise<{ deleted: number }> {\n return this.delete<{ deleted: number }>(`/api/memory/groups/${serverId}/memories`);\n }\n\n /**\n * Delete a specific memory\n */\n async deleteMemory(agentId: UUID, memoryId: UUID): Promise<{ success: boolean }> {\n return this.delete<{ success: boolean }>(`/api/memory/${agentId}/memories/${memoryId}`);\n }\n\n /**\n * Get agent internal memories\n */\n async getAgentInternalMemories(\n agentId: UUID,\n agentPerspectiveRoomId: UUID,\n includeEmbedding?: boolean\n ): Promise<{ success: boolean; data: any[] }> {\n return this.get<{ success: boolean; data: any[] }>(\n `/api/memory/${agentId}/rooms/${agentPerspectiveRoomId}/memories`,\n { params: { includeEmbedding } }\n );\n }\n\n /**\n * Delete agent internal memory\n */\n async deleteAgentInternalMemory(agentId: UUID, memoryId: UUID): Promise<{ success: boolean }> {\n return this.delete<{ success: boolean }>(`/api/memory/${agentId}/memories/${memoryId}`);\n }\n\n /**\n * Delete all agent internal memories\n */\n async deleteAllAgentInternalMemories(\n agentId: UUID,\n agentPerspectiveRoomId: UUID\n ): Promise<{ success: boolean }> {\n return this.delete<{ success: boolean }>(\n `/api/memory/${agentId}/memories/all/${agentPerspectiveRoomId}`\n );\n }\n\n /**\n * Update agent internal memory\n */\n async updateAgentInternalMemory(agentId: UUID, memoryId: UUID, memoryData: any): Promise<any> {\n return this.patch<any>(`/api/memory/${agentId}/memories/${memoryId}`, memoryData);\n }\n\n /**\n * Delete group memory (implemented via messaging channel message deletion)\n */\n async deleteGroupMemory(serverId: UUID, memoryId: UUID): Promise<{ success: boolean }> {\n return this.delete<{ success: boolean }>(\n `/api/messaging/central-channels/${serverId}/messages/${memoryId}`\n );\n }\n\n /**\n * Clear group chat (implemented via messaging channel history clearing)\n */\n async clearGroupChat(serverId: UUID): Promise<{ success: boolean }> {\n return this.delete<{ success: boolean }>(\n `/api/messaging/central-channels/${serverId}/messages`\n );\n }\n}\n","import { UUID } from '@elizaos/core';\nimport { BaseApiClient } from '../lib/base-client';\nimport {\n AudioSynthesizeParams,\n SpeechConversationParams,\n SpeechGenerateParams,\n SpeechResponse,\n TranscribeParams,\n TranscriptionResponse,\n} from '../types/audio';\n\ndeclare const window: any;\n\nexport class AudioService extends BaseApiClient {\n /**\n * Make a binary request using BaseApiClient infrastructure\n */\n private async requestBinary(\n method: string,\n path: string,\n options?: {\n body?: any;\n params?: Record<string, any>;\n headers?: Record<string, string>;\n }\n ): Promise<ArrayBuffer> {\n // Handle empty baseUrl for relative URLs\n let url: URL;\n if (this.baseUrl) {\n url = new URL(`${this.baseUrl}${path}`);\n } else if (typeof window !== 'undefined' && window.location) {\n url = new URL(path, window.location.origin);\n } else {\n // Fallback for non-browser environments\n url = new URL(path, 'http://localhost:3000');\n }\n\n // Add query parameters\n if (options?.params) {\n Object.entries(options.params).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n url.searchParams.append(key, String(value));\n }\n });\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.timeout);\n\n try {\n const headers = {\n ...this.defaultHeaders,\n ...options?.headers,\n };\n\n // Remove Content-Type header if body is FormData\n if (options?.body instanceof FormData) {\n delete headers['Content-Type'];\n }\n\n const response = await fetch(url.toString(), {\n method,\n headers,\n body:\n options?.body instanceof FormData\n ? options.body\n : options?.body\n ? JSON.stringify(options.body)\n : undefined,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n return await response.arrayBuffer();\n } catch (error) {\n clearTimeout(timeoutId);\n\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n throw new Error('Request timed out');\n }\n throw error;\n }\n\n throw new Error('An unknown error occurred');\n }\n }\n\n /**\n * Convert audio input to appropriate FormData value\n */\n private processAudioInput(audio: Blob | Buffer | string): Blob | string {\n if (audio instanceof Blob) {\n return audio;\n }\n\n if (typeof audio === 'string') {\n // Handle base64 data URLs (e.g., \"data:audio/mp3;base64,...\")\n if (audio.startsWith('data:')) {\n try {\n const [header, base64Data] = audio.split(',');\n const mimeMatch = header.match(/data:([^;]+)/);\n const mimeType = mimeMatch ? mimeMatch[1] : 'audio/wav';\n\n const binaryString = atob(base64Data);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return new Blob([bytes], { type: mimeType });\n } catch (error) {\n throw new Error(\n `Invalid base64 data URL: ${error instanceof Error ? error.message : 'Unknown error'}`\n );\n }\n }\n\n // Handle plain base64 strings (try to decode)\n if (this.isBase64String(audio)) {\n try {\n const binaryString = atob(audio);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return new Blob([bytes], { type: 'audio/wav' });\n } catch (error) {\n // If base64 decoding fails, treat as file path or other string\n return audio;\n }\n }\n\n // For file paths or other strings, return as-is (server will handle file reading)\n return audio;\n }\n\n // Handle Buffer and ArrayBuffer types\n if (this.isBuffer(audio)) {\n return new Blob([audio], { type: 'audio/wav' });\n }\n\n // Cast to any for runtime type checking since TypeScript can't narrow the union type properly\n const audioAsAny = audio as any;\n\n if (audioAsAny instanceof ArrayBuffer) {\n return new Blob([audioAsAny], { type: 'audio/wav' });\n }\n\n if (\n audioAsAny &&\n typeof audioAsAny === 'object' &&\n 'buffer' in audioAsAny &&\n audioAsAny.buffer instanceof ArrayBuffer\n ) {\n // Handle typed arrays like Uint8Array\n return new Blob([audioAsAny.buffer], { type: 'audio/wav' });\n }\n\n throw new Error(\n `Unsupported audio input type: ${typeof audio}. Expected Blob, Buffer, ArrayBuffer, or string.`\n );\n }\n\n /**\n * Check if a string appears to be base64 encoded\n */\n private isBase64String(str: string): boolean {\n // Basic base64 pattern check (allows padding)\n const base64Pattern = /^[A-Za-z0-9+/]*={0,2}$/;\n\n // Must be at least 4 characters and divisible by 4 (with padding)\n if (str.length < 4 || str.length % 4 !== 0) {\n return false;\n }\n\n return base64Pattern.test(str);\n }\n\n /**\n * Safe check for Buffer type (works in both Node.js and browser environments)\n */\n private isBuffer(obj: any): obj is Buffer {\n return (\n obj != null &&\n typeof obj === 'object' &&\n typeof obj.constructor === 'function' &&\n obj.constructor.name === 'Buffer' &&\n typeof obj.readUInt8 === 'function'\n );\n }\n\n /**\n * Handle speech conversation\n */\n async speechConversation(\n agentId: UUID,\n params: SpeechConversationParams\n ): Promise<SpeechResponse> {\n const formData = new FormData();\n\n const processedAudio = this.processAudioInput(params.audio);\n if (processedAudio instanceof Blob) {\n formData.append('file', processedAudio);\n } else {\n // String (file path or other string identifier)\n formData.append('file', processedAudio);\n }\n\n if (params.format) formData.append('format', params.format);\n if (params.language) formData.append('language', params.language);\n if (params.metadata) formData.append('metadata', JSON.stringify(params.metadata));\n\n return this.request<SpeechResponse>('POST', `/api/audio/${agentId}/speech/conversation`, {\n body: formData,\n });\n }\n\n /**\n * Generate speech from text\n */\n async generateSpeech(\n agentId: UUID,\n params: SpeechGenerateParams\n ): Promise<{ audio: string; format: string }> {\n // Get the binary audio data using BaseApiClient infrastructure\n const audioBuffer = await this.requestBinary('POST', `/api/audio/${agentId}/speech/generate`, {\n body: params,\n });\n\n // Convert to base64\n const bytes = new Uint8Array(audioBuffer);\n let binary = '';\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n const base64Audio = btoa(binary);\n\n // Default format (server should ideally return this in a header)\n const format = 'mpeg';\n\n return {\n audio: base64Audio,\n format: format,\n };\n }\n\n /**\n * Synthesize audio message\n */\n async synthesizeAudioMessage(\n agentId: UUID,\n params: AudioSynthesizeParams\n ): Promise<{ audio: string; format: string }> {\n return this.post<{ audio: string; format: string }>(\n `/api/audio/${agentId}/audio-messages/synthesize`,\n params\n );\n }\n\n /**\n * Transcribe audio to text\n */\n async transcribe(agentId: UUID, params: TranscribeParams): Promise<TranscriptionResponse> {\n const formData = new FormData();\n\n const processedAudio = this.processAudioInput(params.audio);\n if (processedAudio instanceof Blob) {\n formData.append('file', processedAudio);\n } else {\n // String (file path or other string identifier)\n formData.append('file', processedAudio);\n }\n\n if (params.format) formData.append('format', params.format);\n if (params.language) formData.append('language', params.language);\n\n return this.request<TranscriptionResponse>('POST', `/api/audio/${agentId}/transcriptions`, {\n body: formData,\n });\n }\n\n /**\n * Process speech input\n */\n async processSpeech(\n agentId: UUID,\n audio: Blob | Buffer | string,\n metadata?: Record<string, any>\n ): Promise<SpeechResponse> {\n const formData = new FormData();\n\n const processedAudio = this.processAudioInput(audio);\n if (processedAudio instanceof Blob) {\n formData.append('file', processedAudio);\n } else {\n // String (file path or other string identifier)\n formData.append('file', processedAudio);\n }\n\n if (metadata) formData.append('metadata', JSON.stringify(metadata));\n\n return this.request<SpeechResponse>('POST', `/api/audio/${agentId}/speech`, {\n body: formData,\n });\n }\n}\n","import { UUID } from '@elizaos/core';\nimport { BaseApiClient } from '../lib/base-client';\nimport { MediaUploadParams, MediaUploadResponse, ChannelUploadResponse } from '../types/media';\n\nexport class MediaService extends BaseApiClient {\n /**\n * Upload media for an agent\n */\n async uploadAgentMedia(agentId: UUID, params: MediaUploadParams): Promise<MediaUploadResponse> {\n const formData = new FormData();\n\n formData.append('file', params.file, params.filename);\n\n if (params.contentType) formData.append('contentType', params.contentType);\n if (params.metadata) formData.append('metadata', JSON.stringify(params.metadata));\n\n return this.request<MediaUploadResponse>('POST', `/api/media/agents/${agentId}/upload-media`, {\n body: formData,\n });\n }\n\n /**\n * Upload file to a channel\n */\n async uploadChannelMedia(channelId: UUID, file: File): Promise<ChannelUploadResponse> {\n const formData = new FormData();\n\n formData.append('file', file);\n\n return this.request<ChannelUploadResponse>(\n 'POST',\n `/api/messaging/central-channels/${channelId}/upload-media`,\n {\n body: formData,\n }\n );\n }\n}\n","import { BaseApiClient } from '../lib/base-client';\nimport { ServerHealth, ServerStatus, ServerDebugInfo, LogSubmitParams } from '../types/server';\n\nexport class ServerService extends BaseApiClient {\n /**\n * Health check\n */\n async checkHealth(): Promise<ServerHealth> {\n return this.get<ServerHealth>('/api/server/health');\n }\n\n /**\n * Simple ping\n */\n async ping(): Promise<{ pong: boolean }> {\n return this.get<{ pong: boolean }>('/api/server/ping');\n }\n\n /**\n * Hello endpoint\n */\n async hello(): Promise<{ message: string }> {\n return this.get<{ message: string }>('/api/server/hello');\n }\n\n /**\n * Get server status\n */\n async getStatus(): Promise<ServerStatus> {\n return this.get<ServerStatus>('/api/server/status');\n }\n\n /**\n * Stop the server\n */\n async stopServer(): Promise<{ success: boolean }> {\n return this.post<{ success: boolean }>('/api/server/stop');\n }\n\n /**\n * Get runtime debug info\n */\n async getDebugInfo(): Promise<ServerDebugInfo> {\n return this.get<ServerDebugInfo>('/api/server/debug/servers');\n }\n\n /**\n * Submit logs\n */\n async submitLogs(logs: LogSubmitParams[]): Promise<{ received: number }> {\n return this.post<{ received: number }>('/api/server/logs', { logs });\n }\n\n /**\n * Clear logs\n */\n async clearLogs(): Promise<{ cleared: number }> {\n return this.delete<{ cleared: number }>('/api/server/logs');\n }\n}\n","import { BaseApiClient } from '../lib/base-client';\nimport { LocalEnvironmentUpdateParams } from '../types/system';\n\nexport class SystemService extends BaseApiClient {\n /**\n * Retrieve the local environment variables from the ElizaOS server.\n *\n * Server route (packages/server/src/api/system):\n * GET /api/system/env/local -> { success: true, data: Record<string,string> }\n */\n async getEnvironment(): Promise<Record<string, string>> {\n return this.get<Record<string, string>>('/api/system/env/local');\n }\n\n /**\n * Update (overwrite or merge) the local .env file on the ElizaOS server.\n *\n * Server route (packages/server/src/api/system):\n * POST /api/system/env/local -> { success: true, message: string }\n * Body: { content: Record<string,string> }\n *\n * For developer-ergonomics we accept several shapes:\n * 1. { variables: Record<string,string>; merge?: boolean }\n * 2. { content: Record<string,string> } (server-native)\n * 3. Record<string,string> (shorthand)\n */\n async updateLocalEnvironment(\n params:\n | LocalEnvironmentUpdateParams\n | { content: Record<string, string> }\n | Record<string, string>\n ): Promise<{ success: boolean; message: string }> {\n if (!params || typeof params !== 'object') {\n throw new Error('updateLocalEnvironment requires a configuration object');\n }\n\n let body: { content: Record<string, string> };\n\n if ('variables' in params) {\n body = { content: (params as LocalEnvironmentUpdateParams).variables };\n } else if ('content' in params) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n body = { content: (params as { content: Record<string, string> }).content };\n } else {\n // Treat params itself as record of env vars\n body = { content: params as unknown as Record<string, string> };\n }\n\n return this.post<{ success: boolean; message: string }>('/api/system/env/local', body);\n }\n\n /**\n * Global logs functionality - implementing via system endpoints\n */\n async getGlobalLogs(params?: { level?: string; agentName?: string; agentId?: string }): Promise<{\n logs: Array<{\n level: number;\n time: number;\n msg: string;\n [key: string]: string | number | boolean | null | undefined;\n }>;\n count: number;\n total: number;\n level: string;\n levels: string[];\n }> {\n // Special handling for logs endpoint that returns data directly without wrapper\n const response = await fetch(this.buildUrl('/api/server/logs', { params }), {\n method: 'GET',\n headers: this.getHeaders(),\n });\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n\n const data = (await response.json()) as {\n logs?: Array<{\n level: number;\n time: number;\n msg: string;\n [key: string]: string | number | boolean | null | undefined;\n }>;\n count?: number;\n total?: number;\n requestedLevel?: string;\n level?: string;\n levels?: string[];\n };\n\n // The logs endpoint returns data directly, not wrapped in { success, data }\n // Map the response to expected format\n return {\n logs: data.logs || [],\n count: data.count || 0,\n total: data.total || 0,\n level: data.requestedLevel || data.level || 'all',\n levels: data.levels || [],\n };\n }\n\n private buildUrl(path: string, options?: { params?: Record<string, any> }): string {\n const url = new URL(`${this.baseUrl}${path}`);\n if (options?.params) {\n Object.entries(options.params).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n url.searchParams.append(key, String(value));\n }\n });\n }\n return url.toString();\n }\n\n private getHeaders(): Record<string, string> {\n return {\n ...this.defaultHeaders,\n };\n }\n\n async deleteGlobalLogs(): Promise<{ status: string; message: string }> {\n return this.delete<{ status: string; message: string }>('/api/server/logs');\n }\n\n async deleteLog(logId: string): Promise<void> {\n // Note: Individual log deletion is not supported by the server\n // The server only supports bulk deletion via deleteGlobalLogs()\n throw new Error(\n 'Individual log deletion is not supported. Use deleteGlobalLogs() to clear all logs.'\n );\n }\n}\n","import { ApiClientConfig } from './types/base';\nimport { AgentsService } from './services/agents';\nimport { MessagingService } from './services/messaging';\nimport { MemoryService } from './services/memory';\nimport { AudioService } from './services/audio';\nimport { MediaService } from './services/media';\nimport { ServerService } from './services/server';\nimport { SystemService } from './services/system';\n\nexport class ElizaClient {\n public readonly agents: AgentsService;\n public readonly messaging: MessagingService;\n public readonly memory: MemoryService;\n public readonly audio: AudioService;\n public readonly media: MediaService;\n public readonly server: ServerService;\n public readonly system: SystemService;\n\n constructor(config: ApiClientConfig) {\n // Initialize all services with the same config\n this.agents = new AgentsService(config);\n this.messaging = new MessagingService(config);\n this.memory = new MemoryService(config);\n this.audio = new AudioService(config);\n this.media = new MediaService(config);\n this.server = new ServerService(config);\n this.system = new SystemService(config);\n }\n\n /**\n * Create a new ElizaClient instance\n */\n static create(config: ApiClientConfig): ElizaClient {\n return new ElizaClient(config);\n }\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elizaos/api-client",
3
- "version": "1.0.12",
3
+ "version": "1.0.13",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "module": "dist/index.js",
@@ -15,7 +15,7 @@
15
15
  "typecheck": "tsc --noEmit"
16
16
  },
17
17
  "dependencies": {
18
- "@elizaos/core": "1.0.12"
18
+ "@elizaos/core": "1.0.13"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@types/bun": "latest",
@@ -30,5 +30,5 @@
30
30
  "publishConfig": {
31
31
  "access": "public"
32
32
  },
33
- "gitHead": "ff90fc76c3fddb1009cabbe7c84e3789658dbbae"
33
+ "gitHead": "7a3c8a32f1088d00a9c9df59383b02aa532be948"
34
34
  }