@joai/sdk 0.14.0 → 0.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -118,6 +118,9 @@ type MediaLibraryAttributes = {
118
118
  extension?: string;
119
119
  size?: number;
120
120
  };
121
+ type MediaLibraryItems = {
122
+ [uuid: string]: MediaLibraryAttributes;
123
+ };
121
124
  type MediaMime = 'image/png' | 'image/jpeg' | 'image/gif' | 'image/webp' | 'video/mp4' | 'video/webm' | 'video/quicktime' | 'video/x-msvideo' | 'audio/mpeg' | 'audio/mp3' | 'audio/ogg' | 'audio/wav' | 'audio/webm' | 'audio/aac' | 'audio/m4a' | 'audio/m4b' | 'audio/m4p' | 'audio/m4v' | 'application/pdf' | 'application/json';
122
125
  type Media = {
123
126
  id: string;
@@ -285,6 +288,24 @@ type Coupon = {
285
288
  percent: number;
286
289
  expiresAt: string | null;
287
290
  };
291
+ type TeamFeature = 'shop' | 'appointments';
292
+ type TeamMeta = {
293
+ 'extra.messages'?: number;
294
+ 'limit.spending'?: number | null;
295
+ 'currency'?: string;
296
+ 'extra.usage.enabled'?: boolean;
297
+ 'auto.reload.enabled'?: boolean;
298
+ 'auto.reload.threshold_cents'?: number | null;
299
+ 'auto.reload.amount_cents'?: number | null;
300
+ 'llm.provider'?: 'openai' | 'anthropic' | 'google' | 'xai' | null;
301
+ 'byok.providers'?: ByokProviders | null;
302
+ 'board.auto.enabled'?: boolean;
303
+ 'payments.online'?: boolean;
304
+ 'payments.coupons'?: boolean;
305
+ 'stock.enabled'?: boolean;
306
+ 'branding'?: TeamBrand | null;
307
+ settings: Record<string, unknown>;
308
+ };
288
309
  type Team = {
289
310
  slug: string;
290
311
  name: string;
@@ -292,7 +313,9 @@ type Team = {
292
313
  description: TranslatableValue | null;
293
314
  locale: WarpLocale;
294
315
  timezone: string;
295
- settings?: TeamSettings;
316
+ meta?: TeamMeta;
317
+ features?: TeamFeature[];
318
+ cover?: string | null;
296
319
  logo: string | null;
297
320
  tagline?: TranslatableValue | null;
298
321
  public: boolean;
@@ -326,21 +349,6 @@ type ByokProviders = {
326
349
  xai?: ByokProviderConfig;
327
350
  klingai?: ByokProviderConfig;
328
351
  };
329
- type TeamSettings = {
330
- 'extra.messages': number;
331
- 'limit.spending': number | null;
332
- 'currency': string;
333
- 'extra.usage.enabled'?: boolean;
334
- 'auto.reload.enabled'?: boolean;
335
- 'auto.reload.threshold_cents'?: number | null;
336
- 'auto.reload.amount_cents'?: number | null;
337
- 'llm.provider'?: 'openai' | 'anthropic' | 'google' | 'xai' | null;
338
- 'byok.providers'?: ByokProviders | null;
339
- 'board.auto.enabled'?: boolean;
340
- 'payments.online'?: boolean;
341
- 'payments.coupons'?: boolean;
342
- 'branding'?: TeamBrand | null;
343
- };
344
352
  //#endregion
345
353
  //#region src/flow/types.d.ts
346
354
  type FlowCategory = 'none' | 'defi' | 'nft' | 'social' | 'devtools' | 'productivity' | 'trading' | 'portfolio';
@@ -401,7 +409,7 @@ type Skill = {
401
409
  screenshots: string[];
402
410
  }; //#endregion
403
411
  //#region src/integration/types.d.ts
404
- type IntegrationType = 'none' | 'webhook' | 'api-token' | 'telegram' | 'slack' | 'whatsapp' | 'twilio' | 'n8n' | 'ai-nexus' | 'apple-health' | 'mcp' | 'x' | 'email' | 'calendar' | 'embed' | 'discord' | 'github' | 'sentry' | 'readwise';
412
+ type IntegrationType = 'none' | 'webhook' | 'api-token' | 'telegram' | 'slack' | 'whatsapp' | 'twilio' | 'n8n' | 'apple-health' | 'mcp' | 'x' | 'email' | 'calendar' | 'embed' | 'discord' | 'github' | 'sentry' | 'readwise';
405
413
  type IntegrationDetails = {
406
414
  type: IntegrationType;
407
415
  name: string;
@@ -438,6 +446,25 @@ type Room = {
438
446
  integration: Integration | null;
439
447
  }; //#endregion
440
448
  //#region src/agent/types.d.ts
449
+ type AgentCharacter = {
450
+ name: string | null;
451
+ system: string | null;
452
+ bio: string | null;
453
+ };
454
+ type Agent = {
455
+ uuid: string;
456
+ name: string;
457
+ description: string;
458
+ avatar: string;
459
+ wallets: Wallet[];
460
+ settings: AgentSettings;
461
+ marketplace: MarketplaceInfo;
462
+ character?: AgentCharacter | null;
463
+ room: Room;
464
+ role: string | null;
465
+ blueprint: Blueprint | null;
466
+ team: string;
467
+ };
441
468
  type AgentPrivate = {
442
469
  uuid: string;
443
470
  name: string;
@@ -670,7 +697,13 @@ type BlueprintShortcut = {
670
697
  chat: boolean;
671
698
  }; //#endregion
672
699
  //#region src/helpers/string.d.ts
673
- //#endregion
700
+ type PaginatedResponse<T> = {
701
+ data: T[];
702
+ current_page: number;
703
+ per_page: number;
704
+ total: number;
705
+ last_page: number;
706
+ }; //#endregion
674
707
  //#region src/service/types.d.ts
675
708
  type Service = {
676
709
  id: string;
@@ -679,15 +712,71 @@ type Service = {
679
712
  price: number;
680
713
  durationMinutes: number;
681
714
  tags?: string[] | null;
682
- category: string | null;
683
715
  description: TranslatableValue | null;
684
716
  active: boolean;
685
717
  digital: boolean;
686
718
  public: boolean;
719
+ settings?: Record<string, unknown> | null;
687
720
  createdAt: string;
688
721
  updatedAt: string;
689
722
  }; //#endregion
690
- //#region src/appointment/types.d.ts
723
+ //#region src/meeting/types.d.ts
724
+ type MeetingParticipant = {
725
+ name: string | null;
726
+ profileImageUrl: string | null;
727
+ };
728
+ type MeetingSpeakerAssignment = {
729
+ speakerId: number;
730
+ name: string;
731
+ contactId: string | null;
732
+ };
733
+ type Meeting = {
734
+ id: string;
735
+ code: string;
736
+ name: string | null;
737
+ room: Room | null;
738
+ inviteUrl: string;
739
+ status: MeetingStatus;
740
+ conferenceProvider: MeetingConferenceProvider | null;
741
+ conferenceUrl: string | null;
742
+ conferenceExternalId: string | null;
743
+ captureMode: 'desktop_local' | null;
744
+ transcriptUrl: string | null;
745
+ summaryUrl: string | null;
746
+ participants?: MeetingParticipant[];
747
+ speakerAssignments?: MeetingSpeakerAssignment[] | null;
748
+ configuration?: Record<string, WarpNativeValue>;
749
+ scheduledAt: string | null;
750
+ calendarEventId: number | null;
751
+ startedAt: string | null;
752
+ endedAt: string | null;
753
+ createdAt: string;
754
+ };
755
+ type MeetingStatus = 'active' | 'completed' | 'analyzed' | 'scheduled' | 'cancelled';
756
+ type MeetingConferenceProvider = 'google_meet' | 'teams' | 'zoom';
757
+ type MeetingFeature = 'transcription' | 'summary' | 'insights' | 'actions';
758
+ type MeetingJoinTeam = {
759
+ name: string;
760
+ logo: string | null;
761
+ };
762
+ type MeetingJoinInfo = {
763
+ id: string;
764
+ code: string;
765
+ name: string | null;
766
+ inviteUrl: string;
767
+ agentName: string;
768
+ team: MeetingJoinTeam;
769
+ status: MeetingStatus;
770
+ isPhysical: boolean;
771
+ scheduledAt: string | null;
772
+ scheduledEndAt: string | null;
773
+ timezone: string;
774
+ conferenceUrl: string | null;
775
+ conferenceProvider: MeetingConferenceProvider | null;
776
+ endedAt: string | null;
777
+ canCancel: boolean;
778
+ features: Record<MeetingFeature, boolean>;
779
+ };
691
780
  type AppointmentAvailabilityService = {
692
781
  slug: string;
693
782
  name: string | null;
@@ -701,7 +790,6 @@ type AppointmentAvailabilitySlot = {
701
790
  serviceSlug: string | null;
702
791
  };
703
792
  type AppointmentAvailability = {
704
- connected: boolean;
705
793
  timezone: string;
706
794
  service: AppointmentAvailabilityService | null;
707
795
  slots: AppointmentAvailabilitySlot[];
@@ -720,17 +808,9 @@ type AppointmentPolicy = {
720
808
  holidays: string[] | null;
721
809
  conferenceEnabled: boolean | null;
722
810
  serviceSelectionEnabled?: boolean | null;
723
- marketplacePaymentEnabled?: boolean | null;
724
- };
725
- type AppointmentBookingContext = {
726
- resolved: AppointmentPolicy | null;
727
- policy: AppointmentPolicy | null;
728
- services: Service[];
729
- availableStaff: {
730
- uuid: string;
731
- name: string;
732
- }[];
733
- requestStatuses: string[];
811
+ paymentEnabled?: boolean | null;
812
+ requireApproval?: boolean | null;
813
+ agent?: Agent | null;
734
814
  };
735
815
  type AppointmentBooking = {
736
816
  id: string;
@@ -744,6 +824,7 @@ type AppointmentBooking = {
744
824
  status: string;
745
825
  attendeeEmail: string | null;
746
826
  attendeeName: string | null;
827
+ configuration?: Record<string, WarpNativeValue>;
747
828
  };
748
829
  type AppointmentRequest = {
749
830
  id: string;
@@ -759,6 +840,10 @@ type AppointmentRequest = {
759
840
  start: string;
760
841
  end: string;
761
842
  }[] | null;
843
+ configuration?: Record<string, WarpNativeValue>;
844
+ service?: Service | null;
845
+ meeting?: Meeting | null;
846
+ agent?: Agent | null;
762
847
  createdAt: string;
763
848
  }; //#endregion
764
849
  //#region src/budget/types.d.ts
@@ -876,31 +961,6 @@ type ItemCreatePayload = {
876
961
  contactIds?: string[];
877
962
  assignedToIds?: string[];
878
963
  };
879
- type MeetingStatus = 'active' | 'completed' | 'analyzed' | 'scheduled' | 'cancelled';
880
- type MeetingConferenceProvider = 'google_meet' | 'teams' | 'zoom';
881
- type MeetingFeature = 'transcription' | 'summary' | 'insights' | 'actions';
882
- type MeetingJoinTeam = {
883
- name: string;
884
- logo: string | null;
885
- };
886
- type MeetingJoinInfo = {
887
- id: string;
888
- code: string;
889
- name: string | null;
890
- inviteUrl: string;
891
- agentName: string;
892
- team: MeetingJoinTeam;
893
- status: MeetingStatus;
894
- isPhysical: boolean;
895
- scheduledAt: string | null;
896
- scheduledEndAt: string | null;
897
- timezone: string;
898
- conferenceUrl: string | null;
899
- conferenceProvider: MeetingConferenceProvider | null;
900
- endedAt: string | null;
901
- canCancel: boolean;
902
- features: Record<MeetingFeature, boolean>;
903
- };
904
964
  //#endregion
905
965
  //#region src/memory/types.d.ts
906
966
  type Memory = {
@@ -1056,6 +1116,7 @@ type Update = {
1056
1116
  title: string;
1057
1117
  body: string | null;
1058
1118
  imageUrl: string | null;
1119
+ media: Media[];
1059
1120
  linkUrl: string | null;
1060
1121
  startsAt: string | null;
1061
1122
  endsAt: string | null;
@@ -1067,20 +1128,33 @@ type UpdateCreatePayload = {
1067
1128
  type: UpdateType;
1068
1129
  body?: string;
1069
1130
  imageUrl?: string;
1131
+ media?: MediaLibraryItems;
1070
1132
  linkUrl?: string;
1071
1133
  startsAt?: string;
1072
1134
  endsAt?: string;
1073
1135
  status?: UpdateStatus;
1074
1136
  };
1075
- type UpdateUpdatePayload = Partial<UpdateCreatePayload>; //#endregion
1137
+ type UpdateUpdatePayload = Partial<UpdateCreatePayload>;
1138
+ type UpdateStats = {
1139
+ totalUpdates: number;
1140
+ activeUpdates: number;
1141
+ dealsCount: number;
1142
+ eventsCount: number;
1143
+ newsCount: number;
1144
+ publishedCount: number;
1145
+ draftCount: number;
1146
+ archivedCount: number;
1147
+ creationHistory: number[];
1148
+ }; //#endregion
1076
1149
  //#region src/swarm/types.d.ts
1077
1150
  //#endregion
1078
1151
  //#region src/resources/appointments.d.ts
1079
1152
  declare class AppointmentsResource {
1080
1153
  private readonly http;
1081
- constructor(http: IHttpService);
1082
- getBookingPolicy(agentUuid: string): Promise<IAppResponse<AppointmentBookingContext>>;
1083
- upsertPolicy(agentUuid: string, data: Partial<AppointmentPolicy>): Promise<IAppResponse<AppointmentPolicy>>;
1154
+ private readonly config;
1155
+ constructor(http: IHttpService, config: JoAiClientConfig);
1156
+ getPolicy(): Promise<IAppResponse<AppointmentPolicy>>;
1157
+ upsertPolicy(data: Partial<AppointmentPolicy>): Promise<IAppResponse<AppointmentPolicy>>;
1084
1158
  checkAvailability(agentUuid: string, params: {
1085
1159
  windowStart: string;
1086
1160
  windowEnd: string;
@@ -1103,6 +1177,7 @@ declare class AppointmentsResource {
1103
1177
  }[];
1104
1178
  serviceSlug?: string;
1105
1179
  appointmentRequestId?: string;
1180
+ configuration?: Record<string, WarpNativeValue>;
1106
1181
  }): Promise<IAppResponse<AppointmentBooking>>;
1107
1182
  reschedule(agentUuid: string, meetingId: string, data: {
1108
1183
  scheduledAt: string;
@@ -1111,7 +1186,7 @@ declare class AppointmentsResource {
1111
1186
  cancel(agentUuid: string, meetingId: string, data?: {
1112
1187
  reason?: string;
1113
1188
  }): Promise<IAppResponse<AppointmentBooking>>;
1114
- listRequests(agentUuid: string): Promise<IAppResponse<AppointmentRequest[]>>;
1189
+ listRequests(agentUuid?: string): Promise<IAppResponse<AppointmentRequest[]>>;
1115
1190
  createRequest(agentUuid: string, data: {
1116
1191
  title: string;
1117
1192
  requesterName?: string;
@@ -1126,6 +1201,7 @@ declare class AppointmentsResource {
1126
1201
  end: string;
1127
1202
  }[];
1128
1203
  serviceSlug?: string;
1204
+ configuration?: Record<string, WarpNativeValue>;
1129
1205
  }): Promise<IAppResponse<AppointmentRequest>>;
1130
1206
  updateRequest(agentUuid: string, requestId: string, data: {
1131
1207
  status?: string;
@@ -1207,6 +1283,9 @@ declare class CartsResource {
1207
1283
  remove(type: 'product' | 'service', id: string): Promise<IAppResponse<Cart>>;
1208
1284
  updateQuantity(type: 'product' | 'service', id: string, quantity: number): Promise<IAppResponse<Cart>>;
1209
1285
  clear(): Promise<IAppResponse<Cart>>;
1286
+ applyCoupon(code: string): Promise<IAppResponse<{
1287
+ ok: boolean;
1288
+ }>>;
1210
1289
  }
1211
1290
  //#endregion
1212
1291
  //#region src/resources/flows.d.ts
@@ -1276,10 +1355,18 @@ declare class ContactsResource {
1276
1355
  update(id: string, data: ContactFormData): Promise<IAppResponse<Contact>>;
1277
1356
  delete(id: string): Promise<IAppResponse<unknown>>;
1278
1357
  listActivities(id: string): Promise<IAppResponse<ContactActivity[]>>;
1358
+ getTimeline<T = Record<string, unknown>>(id: string, page?: number): Promise<IAppResponse<PaginatedResponse<T>>>;
1279
1359
  addActivity(id: string, data: {
1280
1360
  type: ContactActivity['type'];
1281
1361
  description?: string;
1362
+ meta?: Record<string, unknown>;
1282
1363
  }): Promise<IAppResponse<ContactActivity>>;
1364
+ updateActivity(id: string, activityId: string, data: {
1365
+ type?: ContactActivity['type'];
1366
+ description?: string | null;
1367
+ meta?: Record<string, unknown> | null;
1368
+ }): Promise<IAppResponse<ContactActivity>>;
1369
+ deleteActivity(id: string, activityId: string): Promise<IAppResponse<unknown>>;
1283
1370
  }
1284
1371
  //#endregion
1285
1372
  //#region src/resources/documents.d.ts
@@ -1316,8 +1403,21 @@ declare class GoalsResource {
1316
1403
  //#region src/resources/meetings.d.ts
1317
1404
  declare class MeetingsResource {
1318
1405
  private readonly http;
1319
- constructor(http: IHttpService);
1406
+ private readonly config;
1407
+ constructor(http: IHttpService, config: JoAiClientConfig);
1408
+ listUpcoming(): Promise<IAppResponse<Meeting[]>>;
1409
+ get(id: string): Promise<IAppResponse<Meeting>>;
1410
+ getSummary(id: string): Promise<IAppResponse<{
1411
+ content: string;
1412
+ }>>;
1320
1413
  join(code: string): Promise<IAppResponse<MeetingJoinInfo>>;
1414
+ cancel(code: string): Promise<IAppResponse<Meeting>>;
1415
+ share(id: string, recipients: {
1416
+ name: string;
1417
+ email: string;
1418
+ }[]): Promise<IAppResponse<unknown>>;
1419
+ update(id: string, name: string | null, notify?: boolean, speakers?: MeetingSpeakerAssignment[]): Promise<IAppResponse<Meeting>>;
1420
+ finalize(id: string, notify: boolean): Promise<IAppResponse<unknown>>;
1321
1421
  }
1322
1422
  //#endregion
1323
1423
  //#region src/resources/media.d.ts
@@ -1503,6 +1603,12 @@ declare class StoresResource {
1503
1603
  declare class UpdatesResource {
1504
1604
  private readonly http;
1505
1605
  constructor(http: IHttpService);
1606
+ listPublic(params?: {
1607
+ type?: string;
1608
+ tags?: string;
1609
+ }): Promise<IAppResponse<{
1610
+ data: Update[];
1611
+ }>>;
1506
1612
  list(params?: {
1507
1613
  type?: UpdateType;
1508
1614
  active?: boolean;
@@ -1512,6 +1618,7 @@ declare class UpdatesResource {
1512
1618
  create(payload: UpdateCreatePayload): Promise<IAppResponse<Update>>;
1513
1619
  update(id: string, payload: UpdateUpdatePayload): Promise<IAppResponse<Update>>;
1514
1620
  delete(id: string): Promise<IAppResponse<unknown>>;
1621
+ stats(): Promise<IAppResponse<UpdateStats>>;
1515
1622
  }
1516
1623
  //#endregion
1517
1624
  //#region src/resources/links.d.ts
@@ -1531,6 +1638,7 @@ declare class LinksResource {
1531
1638
  //#endregion
1532
1639
  //#region src/resources/warps.d.ts
1533
1640
  type BackendWarpBrand = {
1641
+ slug: string;
1534
1642
  name: string;
1535
1643
  description?: WarpText | null;
1536
1644
  logo?: string | null;
@@ -1665,4 +1773,4 @@ declare class DistributionResource {
1665
1773
  private fetchDistribution;
1666
1774
  }
1667
1775
  //#endregion
1668
- export { AppointmentsResource, AuthResource, type AuthSendCodeRequest, type AuthVerifyResponse, type BackendWarp, type BackendWarpBrand, BlueprintsResource, type CacheConfig, CachedHttpService, CartsResource, DistributionResource, FlowsResource, IngestionsResource, JoAiClient, type JoAiClientConfig, MarketplaceResource, MeetingsResource, type Order, OrdersResource, type Product, type ProductVariation, ProductsResource, ServicesResource, SitesResource, SkillsResource, StoresResource, SubscriptionsResource, WarpsResource, createClient };
1776
+ export { AppointmentsResource, AuthResource, type AuthSendCodeRequest, type AuthVerifyResponse, type BackendWarp, type BackendWarpBrand, BlueprintsResource, type CacheConfig, CachedHttpService, CartsResource, ContactsResource, DistributionResource, FlowsResource, IngestionsResource, JoAiClient, type JoAiClientConfig, MarketplaceResource, MeetingsResource, type Order, OrdersResource, type Product, type ProductVariation, ProductsResource, ServicesResource, SitesResource, SkillsResource, StoresResource, SubscriptionsResource, WarpsResource, createClient };
package/dist/index.mjs CHANGED
@@ -112,14 +112,15 @@ var HttpService = class {
112
112
  //#endregion
113
113
  //#region src/resources/appointments.ts
114
114
  var AppointmentsResource = class {
115
- constructor(http) {
115
+ constructor(http, config) {
116
116
  this.http = http;
117
+ this.config = config;
117
118
  }
118
- getBookingPolicy(agentUuid) {
119
- return this.http.get(`agents/${agentUuid}/appointments/policy`);
119
+ getPolicy() {
120
+ return this.http.get(`teams/${this.config.team}/appointments/policy`);
120
121
  }
121
- upsertPolicy(agentUuid, data) {
122
- return this.http.put(`agents/${agentUuid}/appointments/policy`, data);
122
+ upsertPolicy(data) {
123
+ return this.http.put(`teams/${this.config.team}/appointments/policy`, data);
123
124
  }
124
125
  checkAvailability(agentUuid, params) {
125
126
  return this.http.post(`agents/${agentUuid}/appointments/availability`, params);
@@ -134,7 +135,8 @@ var AppointmentsResource = class {
134
135
  return this.http.post(`agents/${agentUuid}/appointments/${meetingId}/cancel`, data ?? {});
135
136
  }
136
137
  listRequests(agentUuid) {
137
- return this.http.get(`agents/${agentUuid}/appointment-requests`);
138
+ const params = agentUuid ? `?agent=${encodeURIComponent(agentUuid)}` : "";
139
+ return this.http.get(`teams/${this.config.team}/appointment-requests${params}`);
138
140
  }
139
141
  createRequest(agentUuid, data) {
140
142
  return this.http.post(`agents/${agentUuid}/appointment-requests`, data);
@@ -229,6 +231,9 @@ var CartsResource = class {
229
231
  clear() {
230
232
  return this.http.post("cart/clear");
231
233
  }
234
+ applyCoupon(code) {
235
+ return this.http.post("cart/coupon", { code });
236
+ }
232
237
  };
233
238
  //#endregion
234
239
  //#region src/resources/flows.ts
@@ -367,9 +372,18 @@ var ContactsResource = class {
367
372
  listActivities(id) {
368
373
  return this.http.get(`contacts/${id}/activities`);
369
374
  }
375
+ getTimeline(id, page = 1) {
376
+ return this.http.get(`contacts/${id}/timeline?page=${page}`);
377
+ }
370
378
  addActivity(id, data) {
371
379
  return this.http.post(`contacts/${id}/activities`, data);
372
380
  }
381
+ updateActivity(id, activityId, data) {
382
+ return this.http.put(`contacts/${id}/activities/${activityId}`, data);
383
+ }
384
+ deleteActivity(id, activityId) {
385
+ return this.http.delete(`contacts/${id}/activities/${activityId}`);
386
+ }
373
387
  };
374
388
  //#endregion
375
389
  //#region src/resources/documents.ts
@@ -414,12 +428,38 @@ var GoalsResource = class {
414
428
  //#endregion
415
429
  //#region src/resources/meetings.ts
416
430
  var MeetingsResource = class {
417
- constructor(http) {
431
+ constructor(http, config) {
418
432
  this.http = http;
433
+ this.config = config;
434
+ }
435
+ listUpcoming() {
436
+ return this.http.get(`teams/${this.config.team}/meetings/upcoming`);
437
+ }
438
+ get(id) {
439
+ return this.http.get(`meetings/${id}`);
440
+ }
441
+ getSummary(id) {
442
+ return this.http.get(`meetings/${id}/summary`);
419
443
  }
420
444
  join(code) {
421
445
  return this.http.get(`meetings/join/${code}`);
422
446
  }
447
+ cancel(code) {
448
+ return this.http.post(`meetings/cancel/${code}`, {});
449
+ }
450
+ share(id, recipients) {
451
+ return this.http.post(`meetings/${id}/share`, { recipients });
452
+ }
453
+ update(id, name, notify, speakers) {
454
+ return this.http.put(`meetings/${id}`, {
455
+ name,
456
+ ...notify !== void 0 && { notify },
457
+ ...speakers !== void 0 && { speakers }
458
+ });
459
+ }
460
+ finalize(id, notify) {
461
+ return this.http.post(`meetings/${id}/finalize`, { notify });
462
+ }
423
463
  };
424
464
  //#endregion
425
465
  //#region src/resources/media.ts
@@ -646,6 +686,13 @@ var UpdatesResource = class {
646
686
  constructor(http) {
647
687
  this.http = http;
648
688
  }
689
+ listPublic(params) {
690
+ const query = new URLSearchParams();
691
+ if (params?.type) query.set("type", params.type);
692
+ if (params?.tags) query.set("tags", params.tags);
693
+ const qs = query.toString();
694
+ return this.http.get(`updates/public${qs ? "?" + qs : ""}`);
695
+ }
649
696
  list(params) {
650
697
  const query = new URLSearchParams();
651
698
  if (params?.type) query.set("type", params.type);
@@ -662,6 +709,9 @@ var UpdatesResource = class {
662
709
  delete(id) {
663
710
  return this.http.delete(`updates/${id}`);
664
711
  }
712
+ stats() {
713
+ return this.http.get("updates/stats");
714
+ }
665
715
  };
666
716
  //#endregion
667
717
  //#region src/resources/links.ts
@@ -856,7 +906,7 @@ var JoAiClient = class {
856
906
  const http = new HttpService(`${getApiBaseUrl(config.env ?? "mainnet")}/v1`, void 0, config.apiToken, { headers });
857
907
  const cache = config.cache;
858
908
  this.http = cache?.enabled !== false ? new CachedHttpService(http, cache?.overrides, cache?.defaultTtl) : http;
859
- this.appointments = new AppointmentsResource(this.http);
909
+ this.appointments = new AppointmentsResource(this.http, config);
860
910
  this.hub = new HubResource(this.http);
861
911
  this.teams = new TeamsResource(this.http);
862
912
  this.agents = new AgentsResource(this.http);
@@ -874,7 +924,7 @@ var JoAiClient = class {
874
924
  this.reminders = new RemindersResource(this.http);
875
925
  this.sites = new SitesResource(this.http);
876
926
  this.documents = new DocumentsResource(this.http);
877
- this.meetings = new MeetingsResource(this.http);
927
+ this.meetings = new MeetingsResource(this.http, config);
878
928
  this.media = new MediaResource(this.http);
879
929
  this.stores = new StoresResource(this.http);
880
930
  this.products = new ProductsResource(this.http);
@@ -929,4 +979,4 @@ var DistributionResource = class {
929
979
  }
930
980
  };
931
981
  //#endregion
932
- export { AppointmentsResource, AuthResource, BlueprintsResource, CachedHttpService, CartsResource, DistributionResource, FlowsResource, IngestionsResource, JoAiClient, MarketplaceResource, MeetingsResource, OrdersResource, ProductsResource, ServicesResource, SitesResource, SkillsResource, StoresResource, SubscriptionsResource, WarpsResource, createClient };
982
+ export { AppointmentsResource, AuthResource, BlueprintsResource, CachedHttpService, CartsResource, ContactsResource, DistributionResource, FlowsResource, IngestionsResource, JoAiClient, MarketplaceResource, MeetingsResource, OrdersResource, ProductsResource, ServicesResource, SitesResource, SkillsResource, StoresResource, SubscriptionsResource, WarpsResource, createClient };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@joai/sdk",
3
- "version": "0.14.0",
3
+ "version": "0.15.1",
4
4
  "description": "JoAi public API SDK — build with your AI agents",
5
5
  "license": "MIT",
6
6
  "type": "module",