@joai/sdk 7.0.5 → 7.0.6

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
@@ -71,6 +71,8 @@ declare class AddressesResource {
71
71
  type PlaceCheckoutOrderRequest = CheckoutSnapshotRequest & {
72
72
  guest?: GuestBuyer;
73
73
  notes?: string;
74
+ scheduledAt?: string;
75
+ serviceSlug?: string;
74
76
  idempotencyKey?: string;
75
77
  saveAddresses?: boolean;
76
78
  sendConfirmation?: boolean;
@@ -170,7 +172,7 @@ type ShippingRateInput = {
170
172
  };
171
173
  type FulfillmentLocationInput = {
172
174
  name: string;
173
- addressId?: number | null;
175
+ addressId?: string | null;
174
176
  instructions?: string | null;
175
177
  active?: boolean;
176
178
  };
@@ -186,8 +188,8 @@ declare class ShippingResource {
186
188
  deleteRate(team: string, zoneId: number, rateId: number): Promise<_$_joai_core0.IAppResponse<void>>;
187
189
  locations(team: string): Promise<_$_joai_core0.IAppResponse<FulfillmentLocation$1[]>>;
188
190
  createLocation(team: string, data: FulfillmentLocationInput): Promise<_$_joai_core0.IAppResponse<FulfillmentLocation$1>>;
189
- updateLocation(team: string, locationId: number, data: FulfillmentLocationInput): Promise<_$_joai_core0.IAppResponse<FulfillmentLocation$1>>;
190
- deleteLocation(team: string, locationId: number): Promise<_$_joai_core0.IAppResponse<void>>;
191
+ updateLocation(team: string, locationId: string, data: FulfillmentLocationInput): Promise<_$_joai_core0.IAppResponse<FulfillmentLocation$1>>;
192
+ deleteLocation(team: string, locationId: string): Promise<_$_joai_core0.IAppResponse<void>>;
191
193
  }
192
194
  //#endregion
193
195
  //#region src/commerce/guest.d.ts
@@ -199,8 +201,10 @@ type GuestCheckoutDraft<TCart = unknown> = {
199
201
  cart: TCart;
200
202
  fulfillmentMethod: FulfillmentMethod;
201
203
  shippingRateId: number | null;
202
- fulfillmentLocationId: number | null;
203
- couponCode?: string | null;
204
+ fulfillmentLocationId: string | null;
205
+ couponCode?: string | null; /** Pickup appointment start (ISO-8601), required for pickup confirm. */
206
+ scheduledAt?: string | null; /** Bookable service slug when the shop has more than one. */
207
+ serviceSlug?: string | null;
204
208
  };
205
209
  type GuestCommerceStorageOptions = {
206
210
  namespace: string;
@@ -234,7 +238,7 @@ type GuestCheckoutState<TCart = GuestCheckoutCartItem[]> = GuestCheckoutDraft<TC
234
238
  identity: GuestBuyer$1;
235
239
  address: AddressInput;
236
240
  };
237
- type GuestCheckoutErrorCode = 'empty_cart' | 'missing_identity' | 'missing_pickup_phone' | 'incomplete_shipping_address' | 'pickup_unavailable' | 'missing_shipping_rate' | 'rates_failed' | 'snapshot_failed' | 'review_required' | 'terms_required' | 'review_expired' | 'order_failed' | 'payment_failed';
241
+ type GuestCheckoutErrorCode = 'empty_cart' | 'missing_identity' | 'missing_pickup_phone' | 'missing_scheduled_at' | 'incomplete_shipping_address' | 'pickup_unavailable' | 'missing_shipping_rate' | 'rates_failed' | 'snapshot_failed' | 'review_required' | 'terms_required' | 'review_expired' | 'order_failed' | 'payment_failed';
238
242
  declare class GuestCheckoutError extends Error {
239
243
  readonly code: GuestCheckoutErrorCode;
240
244
  constructor(code: GuestCheckoutErrorCode);
@@ -260,6 +264,8 @@ type GuestCheckoutClient = {
260
264
  guest?: GuestBuyer$1;
261
265
  idempotencyKey?: string;
262
266
  notes?: string;
267
+ scheduledAt?: string;
268
+ serviceSlug?: string;
263
269
  sendConfirmation?: boolean;
264
270
  }): Promise<IAppResponse<Order$1>>;
265
271
  pay(id: string, provider?: PaymentProvider, accessToken?: string): Promise<IAppResponse<{
@@ -273,10 +279,11 @@ type CreateEmptyGuestCheckoutOptions = {
273
279
  };
274
280
  declare const createEmptyGuestCheckoutState: <TCart = GuestCheckoutCartItem[]>(options?: CreateEmptyGuestCheckoutOptions) => GuestCheckoutState<TCart>;
275
281
  declare const toGuestCheckoutDraft: <TCart>(state: GuestCheckoutState<TCart>) => GuestCheckoutDraft<TCart>;
276
- declare const assertGuestCheckoutReady: (state: GuestCheckoutState, pickupLocationIds?: number[]) => void;
282
+ declare const assertGuestCheckoutReady: (state: GuestCheckoutState, pickupLocationIds?: string[]) => void;
283
+ declare const assertGuestPickupSlotReady: (state: GuestCheckoutState) => void;
277
284
  declare const buildGuestCheckoutSnapshotRequest: (state: GuestCheckoutState, options?: {
278
285
  shippingRates?: ShippingRate$1[];
279
- pickupLocationIds?: number[];
286
+ pickupLocationIds?: string[];
280
287
  }) => CheckoutSnapshotRequest;
281
288
  type GuestCheckoutSnapshotResult = {
282
289
  snapshot: CheckoutSnapshot$1 & {
@@ -289,7 +296,7 @@ declare function createGuestCheckoutSnapshot(options: {
289
296
  client: GuestCheckoutClient;
290
297
  team: string;
291
298
  state: GuestCheckoutState;
292
- pickupLocationIds?: number[];
299
+ pickupLocationIds?: string[];
293
300
  shippingRates?: ShippingRate$1[];
294
301
  }): Promise<GuestCheckoutSnapshotResult>;
295
302
  type PlaceGuestCheckoutOrderResult = {
@@ -317,6 +324,8 @@ declare function placeGuestCheckoutOrder(options: {
317
324
  guest: GuestBuyer$1;
318
325
  acceptedTerms?: boolean;
319
326
  notes?: string;
327
+ scheduledAt?: string;
328
+ serviceSlug?: string;
320
329
  idempotencyKey?: string;
321
330
  pay?: boolean;
322
331
  }): Promise<PlaceGuestCheckoutOrderResult>;
@@ -391,6 +400,9 @@ declare function revalidateGuestCoupon(options: {
391
400
  items: GuestCheckoutCartItem[];
392
401
  }): Promise<RevalidateGuestCouponResult>;
393
402
  //#endregion
403
+ //#region src/commerce/pickupSlotLabel.d.ts
404
+ declare const formatPickupSlotLabel: (iso: string, locale: string, timeZone: string) => string;
405
+ //#endregion
394
406
  //#region src/commerce/index.d.ts
395
407
  declare class CommerceResource {
396
408
  readonly checkout: CheckoutResource;
@@ -1380,18 +1392,21 @@ declare class OrdersResource {
1380
1392
  fulfillmentMethod?: FulfillmentMethod;
1381
1393
  snapshotId?: string;
1382
1394
  snapshotAccessToken?: string;
1383
- billingAddressId?: number;
1384
- shippingAddressId?: number;
1395
+ billingAddressId?: string;
1396
+ shippingAddressId?: string;
1385
1397
  billingAddress?: AddressInput;
1386
1398
  shippingAddress?: AddressInput;
1387
1399
  shippingRateId?: number;
1388
- fulfillmentLocationId?: number;
1400
+ fulfillmentLocationId?: string;
1389
1401
  idempotencyKey?: string;
1390
1402
  guest?: {
1391
1403
  name: string;
1392
1404
  email: string;
1393
1405
  phone?: string;
1394
1406
  };
1407
+ scheduledAt?: string;
1408
+ serviceSlug?: string;
1409
+ couponCode?: string;
1395
1410
  }): Promise<_$_joai_core0.IAppResponse<Order$1>>;
1396
1411
  update(id: string, data: {
1397
1412
  status?: OrderStatus$1;
@@ -1709,9 +1724,9 @@ declare class SubscriptionsResource {
1709
1724
  resume(id: string, team: string): Promise<_$_joai_core0.IAppResponse<Subscription>>;
1710
1725
  updateDelivery(id: string, data: {
1711
1726
  fulfillmentMethod: 'shipping' | 'pickup';
1712
- shippingAddressId?: number | null;
1727
+ shippingAddressId?: string | null;
1713
1728
  shippingRateId?: number | null;
1714
- fulfillmentLocationId?: number | null;
1729
+ fulfillmentLocationId?: string | null;
1715
1730
  }): Promise<_$_joai_core0.IAppResponse<Subscription>>;
1716
1731
  skip(id: string): Promise<_$_joai_core0.IAppResponse<Subscription>>;
1717
1732
  pause(id: string): Promise<_$_joai_core0.IAppResponse<Subscription>>;
@@ -2344,4 +2359,4 @@ declare class DistributionResource {
2344
2359
  private fetchDistribution;
2345
2360
  }
2346
2361
  //#endregion
2347
- export { AddressesResource, AgentsResource, AlertsResource, ApiTokensResource, AppointmentsResource, type AttachedMedia, type AuthConfirmCodeRequest, type AuthConfirmCodeResponse, type AuthNativeSessionResponse, type AuthPortalSessionResponse, AuthResource, type AuthSendCodeRequest, type AuthUser, AutomationsResource, type BackendWarp, type BackendWarpBrand, BillingResource, BlueprintsResource, type CacheConfig, CachedHttpService, CampaignsResource, CardsResource, type Cart, CartsResource, ChangelogResource, CharactersResource, CheckoutResource, type CheckoutSnapshot, CommerceResource, ContactsResource, ContentResource, ContractsResource, type CreateEmptyGuestCheckoutOptions, type CreateHookPayload, type CreateInboundHookPayload, type CreateInternalHookPayload, type CreateWarpLinkedHookPayload, type CreateWebHookPayload, DeskResource, DistributionResource, DocumentsResource, ElementsResource, EntitiesResource, FlowsResource, type FulfillmentLocation, type FulfillmentLocationInput, FulfillmentsResource, GoalsResource, type GuestBuyer, type GuestCartAmounts, type GuestCheckoutCartItem, type GuestCheckoutClient, type GuestCheckoutDraft, GuestCheckoutError, type GuestCheckoutErrorCode, type GuestCheckoutSnapshotResult, type GuestCheckoutState, type GuestCommerceStorage, type GuestCommerceStorageOptions, type GuestCouponClient, GuestCouponError, type GuestCouponErrorCode, type GuestCouponPreview, type GuestOrderAccess, type Hook, type HookSample, type HookTrigger, type HookTriggerCondition, type HookTriggerInput, HooksResource, IngestionsResource, InquiriesResource, IntegrationsResource, IntentsResource, type ItemListParams, ItemsResource, JoAiClient, type JoAiClientConfig, KvResource, LinksResource, LoyaltyResource, McpResource, type MediaUploadType, MeetingsResource, MemoriesResource, MessagesResource, MetricsResource, MissionsResource, NotificationsResource, OfficeResource, type OpenPortalSessionOptions, type OpeningHoursEntry, type OpeningHoursFormatOptions, type Order, type OrderPriceMode, type OrderStatus, OrdersResource, PersonaResource, type PlaceCheckoutOrderRequest, type PlaceGuestCheckoutOrderResult, type Product, type ProductVariation, ProductsResource, ProjectsResource, RemindersResource, ReturnsResource, type RevalidateGuestCouponResult, SegmentsResource, ServicesResource, type ShippingRate, type ShippingRateInput, ShippingResource, type ShippingZoneInput, ShortcutsResource, SitesResource, SkillsResource, SocialPostsResource, StatsResource, StoreResource, SubscriptionsResource, SwarmsResource, TagsResource, TasksResource, type TeamInviteInfo, TeamsResource, UpdatesResource, UpgradesResource, UsersResource, VoiceResource, WalletsResource, WarpsResource, type WebHookTriggerEvent, WorkspaceResource, assertGuestCheckoutReady, buildGuestCheckoutSnapshotRequest, buildGuestOrderReturnUrl, completePortalSession, createClient, createEmptyGuestCheckoutState, createGuestCheckoutSnapshot, createGuestCommerceStorage, formatOpeningHours, getAuthFragmentToken, guestCartAmounts, guestCouponMessageFromErrors, isAllowedRedirectUrl, isGuestCheckoutError, isGuestCouponError, isPortalCallbackUrl, openPortalSession, placeGuestCheckoutOrder, readGuestOrderReturnAccess, revalidateGuestCoupon, sanitizePortalCallbackUrl, stripGuestOrderReturnToken, toGuestCheckoutDraft, validateGuestCoupon };
2362
+ export { AddressesResource, AgentsResource, AlertsResource, ApiTokensResource, AppointmentsResource, type AttachedMedia, type AuthConfirmCodeRequest, type AuthConfirmCodeResponse, type AuthNativeSessionResponse, type AuthPortalSessionResponse, AuthResource, type AuthSendCodeRequest, type AuthUser, AutomationsResource, type BackendWarp, type BackendWarpBrand, BillingResource, BlueprintsResource, type CacheConfig, CachedHttpService, CampaignsResource, CardsResource, type Cart, CartsResource, ChangelogResource, CharactersResource, CheckoutResource, type CheckoutSnapshot, CommerceResource, ContactsResource, ContentResource, ContractsResource, type CreateEmptyGuestCheckoutOptions, type CreateHookPayload, type CreateInboundHookPayload, type CreateInternalHookPayload, type CreateWarpLinkedHookPayload, type CreateWebHookPayload, DeskResource, DistributionResource, DocumentsResource, ElementsResource, EntitiesResource, FlowsResource, type FulfillmentLocation, type FulfillmentLocationInput, FulfillmentsResource, GoalsResource, type GuestBuyer, type GuestCartAmounts, type GuestCheckoutCartItem, type GuestCheckoutClient, type GuestCheckoutDraft, GuestCheckoutError, type GuestCheckoutErrorCode, type GuestCheckoutSnapshotResult, type GuestCheckoutState, type GuestCommerceStorage, type GuestCommerceStorageOptions, type GuestCouponClient, GuestCouponError, type GuestCouponErrorCode, type GuestCouponPreview, type GuestOrderAccess, type Hook, type HookSample, type HookTrigger, type HookTriggerCondition, type HookTriggerInput, HooksResource, IngestionsResource, InquiriesResource, IntegrationsResource, IntentsResource, type ItemListParams, ItemsResource, JoAiClient, type JoAiClientConfig, KvResource, LinksResource, LoyaltyResource, McpResource, type MediaUploadType, MeetingsResource, MemoriesResource, MessagesResource, MetricsResource, MissionsResource, NotificationsResource, OfficeResource, type OpenPortalSessionOptions, type OpeningHoursEntry, type OpeningHoursFormatOptions, type Order, type OrderPriceMode, type OrderStatus, OrdersResource, PersonaResource, type PlaceCheckoutOrderRequest, type PlaceGuestCheckoutOrderResult, type Product, type ProductVariation, ProductsResource, ProjectsResource, RemindersResource, ReturnsResource, type RevalidateGuestCouponResult, SegmentsResource, ServicesResource, type ShippingRate, type ShippingRateInput, ShippingResource, type ShippingZoneInput, ShortcutsResource, SitesResource, SkillsResource, SocialPostsResource, StatsResource, StoreResource, SubscriptionsResource, SwarmsResource, TagsResource, TasksResource, type TeamInviteInfo, TeamsResource, UpdatesResource, UpgradesResource, UsersResource, VoiceResource, WalletsResource, WarpsResource, type WebHookTriggerEvent, WorkspaceResource, assertGuestCheckoutReady, assertGuestPickupSlotReady, buildGuestCheckoutSnapshotRequest, buildGuestOrderReturnUrl, completePortalSession, createClient, createEmptyGuestCheckoutState, createGuestCheckoutSnapshot, createGuestCommerceStorage, formatOpeningHours, formatPickupSlotLabel, getAuthFragmentToken, guestCartAmounts, guestCouponMessageFromErrors, isAllowedRedirectUrl, isGuestCheckoutError, isGuestCouponError, isPortalCallbackUrl, openPortalSession, placeGuestCheckoutOrder, readGuestOrderReturnAccess, revalidateGuestCoupon, sanitizePortalCallbackUrl, stripGuestOrderReturnToken, toGuestCheckoutDraft, validateGuestCoupon };
package/dist/index.mjs CHANGED
@@ -390,14 +390,18 @@ const createEmptyGuestCheckoutState = (options = {}) => ({
390
390
  },
391
391
  shippingRateId: null,
392
392
  fulfillmentLocationId: null,
393
- couponCode: null
393
+ couponCode: null,
394
+ scheduledAt: null,
395
+ serviceSlug: null
394
396
  });
395
397
  const toGuestCheckoutDraft = (state) => ({
396
398
  cart: state.cart,
397
399
  fulfillmentMethod: state.fulfillmentMethod,
398
400
  shippingRateId: state.shippingRateId,
399
401
  fulfillmentLocationId: state.fulfillmentLocationId,
400
- couponCode: state.couponCode ?? null
402
+ couponCode: state.couponCode ?? null,
403
+ scheduledAt: state.scheduledAt ?? null,
404
+ serviceSlug: state.serviceSlug ?? null
401
405
  });
402
406
  const assertGuestCheckoutReady = (state, pickupLocationIds = []) => {
403
407
  if (!state.cart.length) throw new GuestCheckoutError("empty_cart");
@@ -410,6 +414,9 @@ const assertGuestCheckoutReady = (state, pickupLocationIds = []) => {
410
414
  if (state.fulfillmentMethod === "shipping" && !isCompleteAddressInput(address)) throw new GuestCheckoutError("incomplete_shipping_address");
411
415
  if (state.fulfillmentMethod === "pickup" && !state.fulfillmentLocationId && !pickupLocationIds[0]) throw new GuestCheckoutError("pickup_unavailable");
412
416
  };
417
+ const assertGuestPickupSlotReady = (state) => {
418
+ if (state.fulfillmentMethod === "pickup" && !state.scheduledAt?.trim()) throw new GuestCheckoutError("missing_scheduled_at");
419
+ };
413
420
  const buildGuestCheckoutSnapshotRequest = (state, options = {}) => {
414
421
  assertGuestCheckoutReady(state, options.pickupLocationIds ?? []);
415
422
  const items = state.cart.map(({ id, type, quantity }) => ({
@@ -507,6 +514,8 @@ async function placeGuestCheckoutOrder(options) {
507
514
  guest: options.guest,
508
515
  idempotencyKey: options.idempotencyKey ?? crypto.randomUUID(),
509
516
  notes: options.notes,
517
+ scheduledAt: options.scheduledAt,
518
+ serviceSlug: options.serviceSlug,
510
519
  sendConfirmation: true
511
520
  });
512
521
  if (!order.ok || !order.data?.id) throw new GuestCheckoutError("order_failed");
@@ -618,6 +627,16 @@ async function revalidateGuestCoupon(options) {
618
627
  }
619
628
  }
620
629
  //#endregion
630
+ //#region src/commerce/pickupSlotLabel.ts
631
+ const formatPickupSlotLabel = (iso, locale, timeZone) => new Intl.DateTimeFormat(locale, {
632
+ timeZone,
633
+ weekday: "short",
634
+ day: "numeric",
635
+ month: "short",
636
+ hour: "2-digit",
637
+ minute: "2-digit"
638
+ }).format(new Date(iso));
639
+ //#endregion
621
640
  //#region src/commerce/index.ts
622
641
  var CommerceResource = class {
623
642
  constructor(http) {
@@ -3542,4 +3561,4 @@ var DistributionResource = class {
3542
3561
  }
3543
3562
  };
3544
3563
  //#endregion
3545
- export { AddressesResource, AgentsResource, AlertsResource, ApiTokensResource, AppointmentsResource, AuthResource, AutomationsResource, BillingResource, BlueprintsResource, CachedHttpService, CampaignsResource, CardsResource, CartsResource, ChangelogResource, CharactersResource, CheckoutResource, CommerceResource, ContactsResource, ContentResource, ContractsResource, DeskResource, DistributionResource, DocumentsResource, ElementsResource, EntitiesResource, FlowsResource, FulfillmentsResource, GoalsResource, GuestCheckoutError, GuestCouponError, HooksResource, IngestionsResource, InquiriesResource, IntegrationsResource, IntentsResource, ItemsResource, JoAiClient, KvResource, LinksResource, LoyaltyResource, McpResource, MeetingsResource, MemoriesResource, MessagesResource, MetricsResource, MissionsResource, NotificationsResource, OfficeResource, OrdersResource, PersonaResource, ProductsResource, ProjectsResource, RemindersResource, ReturnsResource, SegmentsResource, ServicesResource, ShippingResource, ShortcutsResource, SitesResource, SkillsResource, SocialPostsResource, StatsResource, StoreResource, SubscriptionsResource, SwarmsResource, TagsResource, TasksResource, TeamsResource, UpdatesResource, UpgradesResource, UsersResource, VoiceResource, WalletsResource, WarpsResource, WorkspaceResource, assertGuestCheckoutReady, buildGuestCheckoutSnapshotRequest, buildGuestOrderReturnUrl, completePortalSession, createClient, createEmptyGuestCheckoutState, createGuestCheckoutSnapshot, createGuestCommerceStorage, formatOpeningHours, getAuthFragmentToken, guestCartAmounts, guestCouponMessageFromErrors, isAllowedRedirectUrl, isGuestCheckoutError, isGuestCouponError, isPortalCallbackUrl, openPortalSession, placeGuestCheckoutOrder, readGuestOrderReturnAccess, revalidateGuestCoupon, sanitizePortalCallbackUrl, stripGuestOrderReturnToken, toGuestCheckoutDraft, validateGuestCoupon };
3564
+ export { AddressesResource, AgentsResource, AlertsResource, ApiTokensResource, AppointmentsResource, AuthResource, AutomationsResource, BillingResource, BlueprintsResource, CachedHttpService, CampaignsResource, CardsResource, CartsResource, ChangelogResource, CharactersResource, CheckoutResource, CommerceResource, ContactsResource, ContentResource, ContractsResource, DeskResource, DistributionResource, DocumentsResource, ElementsResource, EntitiesResource, FlowsResource, FulfillmentsResource, GoalsResource, GuestCheckoutError, GuestCouponError, HooksResource, IngestionsResource, InquiriesResource, IntegrationsResource, IntentsResource, ItemsResource, JoAiClient, KvResource, LinksResource, LoyaltyResource, McpResource, MeetingsResource, MemoriesResource, MessagesResource, MetricsResource, MissionsResource, NotificationsResource, OfficeResource, OrdersResource, PersonaResource, ProductsResource, ProjectsResource, RemindersResource, ReturnsResource, SegmentsResource, ServicesResource, ShippingResource, ShortcutsResource, SitesResource, SkillsResource, SocialPostsResource, StatsResource, StoreResource, SubscriptionsResource, SwarmsResource, TagsResource, TasksResource, TeamsResource, UpdatesResource, UpgradesResource, UsersResource, VoiceResource, WalletsResource, WarpsResource, WorkspaceResource, assertGuestCheckoutReady, assertGuestPickupSlotReady, buildGuestCheckoutSnapshotRequest, buildGuestOrderReturnUrl, completePortalSession, createClient, createEmptyGuestCheckoutState, createGuestCheckoutSnapshot, createGuestCommerceStorage, formatOpeningHours, formatPickupSlotLabel, getAuthFragmentToken, guestCartAmounts, guestCouponMessageFromErrors, isAllowedRedirectUrl, isGuestCheckoutError, isGuestCouponError, isPortalCallbackUrl, openPortalSession, placeGuestCheckoutOrder, readGuestOrderReturnAccess, revalidateGuestCoupon, sanitizePortalCallbackUrl, stripGuestOrderReturnToken, toGuestCheckoutDraft, validateGuestCoupon };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@joai/sdk",
3
- "version": "7.0.5",
3
+ "version": "7.0.6",
4
4
  "description": "JoAi public API SDK — build with your AI agents",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -35,11 +35,11 @@
35
35
  "test": "jest --config jest.config.js"
36
36
  },
37
37
  "dependencies": {
38
- "@joai/core": "^4.15.4",
38
+ "@joai/core": "^4.15.5",
39
39
  "@joai/warps": "*"
40
40
  },
41
41
  "peerDependencies": {
42
- "@joai/core": "^4.15.4"
42
+ "@joai/core": "^4.15.5"
43
43
  },
44
44
  "devDependencies": {
45
45
  "tsdown": "^0.21.0",