@joai/core 4.15.4 → 4.15.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
@@ -20,6 +20,8 @@ declare const getApiBaseUrl: (env: AppEnv) => string;
20
20
  declare const getCortexBaseUrl: (env: AppEnv) => "http://localhost:3010" | "https://devnet-cortex.joai.ai" | "https://testnet-cortex.joai.ai" | "https://cortex.joai.ai";
21
21
  declare const getAppBaseUrl: (env: AppEnv) => "http://app.joai--api.test:3004" | "https://devnet.joai.ai" | "https://testnet.joai.ai" | "https://joai.ai";
22
22
  declare const getFormsBaseUrl: (env: AppEnv) => "http://forms.joai--api.test:3008" | "https://devnet-forms.joai.ai" | "https://testnet-forms.joai.ai" | "https://forms.joai.ai";
23
+ declare const getDocumentsBaseUrl: (env: AppEnv) => "http://documents.joai--api.test:3012" | "https://devnet-documents.joai.ai" | "https://testnet-documents.joai.ai" | "https://documents.joai.ai";
24
+ declare const documentShareUrl: (env: AppEnv, locale: string, slug: string, password?: string | null) => string;
23
25
  declare const getDigestBaseUrl: (env: AppEnv) => "http://localhost:3005" | "https://devnet-digests.joai.ai" | "https://testnet-digests.joai.ai" | "https://digests.joai.ai";
24
26
  declare const getStoreBaseUrl: (env: AppEnv) => "http://localhost:3005" | "https://devnet-store.joai.ai" | "https://testnet-store.joai.ai" | "https://store.joai.ai";
25
27
  declare const getAgentsBaseUrl: (env: AppEnv) => "http://localhost:3007" | "https://devnet-agents.joai.ai" | "https://testnet-agents.joai.ai" | "https://agents.joai.ai";
@@ -43,6 +45,11 @@ declare const JoaiUrls: {
43
45
  readonly AppStore: "https://apps.apple.com/app/joai/id6741204807";
44
46
  readonly PlayStore: "https://play.google.com/store/apps/details?id=ai.joai.app";
45
47
  };
48
+ /** App UI locales — keep in sync with API `config('app.languages.supported')`. */
49
+ declare const SupportedAppLocales: readonly ["en", "de", "fr", "es", "ro", "it"];
50
+ type SupportedAppLocale = (typeof SupportedAppLocales)[number];
51
+ declare const DefaultAppLocale: SupportedAppLocale;
52
+ declare const isSupportedAppLocale: (value: string | null | undefined) => value is SupportedAppLocale;
46
53
  //#endregion
47
54
  //#region src/http/types.d.ts
48
55
  interface IHttpService {
@@ -106,6 +113,12 @@ declare class HttpService implements IHttpService {
106
113
  private getRequestInfo;
107
114
  }
108
115
  //#endregion
116
+ //#region src/http/errors.d.ts
117
+ /** First localized string from a Laravel-style `errors` map (`field → string | string[]`). */
118
+ declare const firstValidationMessage: (errors: unknown) => string | undefined;
119
+ /** Localized validation message for a specific field, when present. */
120
+ declare const validationMessageFor: (errors: unknown, field: string) => string | undefined;
121
+ //#endregion
109
122
  //#region src/voice/types.d.ts
110
123
  type TranscriptionCorrection = {
111
124
  wrong: string;
@@ -317,12 +330,12 @@ type CheckoutSnapshotRequest = {
317
330
  type: 'product' | 'service' | 'coupon';
318
331
  quantity: number;
319
332
  }[];
320
- billingAddressId?: number | null;
321
- shippingAddressId?: number | null;
333
+ billingAddressId?: string | null;
334
+ shippingAddressId?: string | null;
322
335
  billingAddress?: AddressInput;
323
336
  shippingAddress?: AddressInput;
324
337
  shippingRateId?: number | null;
325
- fulfillmentLocationId?: number | null;
338
+ fulfillmentLocationId?: string | null;
326
339
  couponCode?: string | null;
327
340
  };
328
341
  type ShippingZone = {
@@ -334,14 +347,31 @@ type ShippingZone = {
334
347
  position: number;
335
348
  rates: ShippingRate[];
336
349
  };
350
+ type TaxClass = {
351
+ id: string;
352
+ name: string; /** Integer percent, e.g. 20 for 20%. */
353
+ rate: number;
354
+ isDefault: boolean;
355
+ position: number;
356
+ };
357
+ type TaxBreakdownRow = {
358
+ /** Integer percent, e.g. 20 for 20%. */rate: number;
359
+ name?: string | null;
360
+ net?: number;
361
+ tax: number;
362
+ };
337
363
  type FulfillmentLocation = {
338
- id: number;
364
+ id: string;
339
365
  name: string;
340
- addressId: number | null;
366
+ addressId: string | null;
341
367
  address: Address | null;
342
368
  instructions: string | null;
343
369
  active: boolean;
344
370
  };
371
+ type ShippingCarrierOption = {
372
+ id: string;
373
+ label: string;
374
+ };
345
375
  type Fulfillment = {
346
376
  id: string;
347
377
  orderId: number;
@@ -490,8 +520,8 @@ type ContactCreatePayload = ContactFormData & {
490
520
  name: string;
491
521
  wallets?: WalletList;
492
522
  };
493
- type ContactRelationType = 'parent_of' | 'child_of' | 'spouse_of' | 'sibling_of' | 'aunt_of' | 'nibling_of' | 'manages' | 'reports_to' | 'colleague_of' | 'partner_of' | 'client_of' | 'supplier_of' | 'referred_by' | 'referred';
494
- type ContactRelationCategory = 'family' | 'organization' | 'business' | 'referral';
523
+ type ContactRelationType = 'parent_of' | 'child_of' | 'spouse_of' | 'sibling_of' | 'aunt_of' | 'nibling_of' | 'friend_of' | 'manages' | 'reports_to' | 'colleague_of' | 'partner_of' | 'client_of' | 'supplier_of' | 'referred_by' | 'referred';
524
+ type ContactRelationCategory = 'family' | 'social' | 'organization' | 'business' | 'referral';
495
525
  type ContactRelationDirection = 'outgoing' | 'incoming';
496
526
  type ContactRelationContact = {
497
527
  id: string;
@@ -553,6 +583,290 @@ type Media = {
553
583
  aiGenerated?: boolean;
554
584
  };
555
585
  //#endregion
586
+ //#region src/integration/types.d.ts
587
+ type IntegrationType = 'none' | 'webhook' | 'api-token' | 'telegram' | 'slack' | 'whatsapp' | 'whatsapp-personal' | 'twilio' | 'sms' | 'n8n' | 'apple-health' | 'mcp' | 'x' | 'xchat' | 'instagram' | 'facebook' | 'linkedin' | 'grok' | 'cloudflare' | 'email' | 'calendar' | 'embed' | 'discord' | 'github' | 'push' | 'sentry' | 'readwise';
588
+ type IntegrationDetails = {
589
+ type: IntegrationType;
590
+ name: string;
591
+ description?: string;
592
+ logoUrl?: string;
593
+ logoUrlDark?: string;
594
+ slug?: string;
595
+ category?: string;
596
+ [key: string]: unknown;
597
+ };
598
+ type IntegrationMeta = {
599
+ handle?: string;
600
+ provider?: EmailProvider | null;
601
+ hookSource?: string;
602
+ [key: string]: unknown;
603
+ };
604
+ type IntegrationConnectionDetails = IntegrationDetails & {
605
+ phoneNumberId?: string;
606
+ phoneNumber?: string;
607
+ webhookUrl?: string;
608
+ webhookSecret?: string;
609
+ webhookSecretKey?: string;
610
+ };
611
+ type Integration = {
612
+ id: string;
613
+ type: IntegrationType;
614
+ name: string;
615
+ active: boolean;
616
+ configured: boolean;
617
+ createdAt: string;
618
+ meta?: IntegrationMeta;
619
+ details?: IntegrationConnectionDetails;
620
+ };
621
+ type SocialPlatform = 'telegram' | 'slack' | 'whatsapp' | 'sms' | 'discord' | 'github' | 'xchat' | 'instagram';
622
+ type SocialBot = {
623
+ name: string;
624
+ createdAt: string;
625
+ phoneNumberId?: string;
626
+ phoneNumber?: string;
627
+ applicationId?: string;
628
+ appId?: string;
629
+ installationId?: string;
630
+ username?: string;
631
+ };
632
+ type XIntegrationStatus = {
633
+ enabled: boolean;
634
+ integrationId: string | null;
635
+ xAccountLinked: boolean;
636
+ currentAgentName: string | null;
637
+ };
638
+ type EmbedStatus = {
639
+ integrationId: string;
640
+ agentName: string;
641
+ agentAvatar: string | null;
642
+ active: boolean;
643
+ allowedDomains: string[];
644
+ };
645
+ type EmailProvider = 'resend' | 'mailgun' | 'sendgrid';
646
+ type CalendarProvider = 'google' | 'apple' | 'microsoft';
647
+ type CalendarStatus = {
648
+ connected: boolean;
649
+ provider?: CalendarProvider;
650
+ providerDisplayName?: string;
651
+ accountEmail?: string;
652
+ lastSynced?: string;
653
+ tokenHealthy?: boolean;
654
+ upcomingEvents?: {
655
+ title: string;
656
+ startAt: string;
657
+ endAt: string;
658
+ allDay: boolean;
659
+ }[];
660
+ };
661
+ //#endregion
662
+ //#region src/agent/types.d.ts
663
+ type AgentCharacter = {
664
+ name: string | null;
665
+ system: string | null;
666
+ bio: string | null;
667
+ };
668
+ type Agent = {
669
+ uuid: string;
670
+ name: string;
671
+ description: string;
672
+ avatar: string;
673
+ wallets: Wallet[];
674
+ settings: AgentSettings;
675
+ store: StoreInfo;
676
+ character?: AgentCharacter | null;
677
+ room: Room;
678
+ role: string | null;
679
+ blueprint: Blueprint | null;
680
+ team: string;
681
+ };
682
+ type AgentPrivate = {
683
+ uuid: string;
684
+ name: string;
685
+ description: string;
686
+ avatar: string;
687
+ wallets: Wallet[];
688
+ settings: AgentSettings;
689
+ store: StoreInfo;
690
+ password: string | null;
691
+ authKey: string | null;
692
+ secKey: string;
693
+ phoneNumber: string | null;
694
+ room: Room;
695
+ role: string | null;
696
+ blueprint: Blueprint | null;
697
+ justCreated?: boolean;
698
+ team: string;
699
+ };
700
+ type AgentActionHistoryEntry = {
701
+ id: string;
702
+ action: string | null;
703
+ outcome: 'succeeded' | 'failed';
704
+ outcomeDetail: string | null;
705
+ warpIdentifier: string | null;
706
+ meta: Record<string, unknown> | null;
707
+ createdAt: string | null;
708
+ };
709
+ type AgentSimple = {
710
+ uuid: string;
711
+ name: string;
712
+ avatar?: string | null;
713
+ authKey?: string | null;
714
+ team?: {
715
+ slug: string;
716
+ } | null;
717
+ settings?: Pick<AgentSettings, 'auto'>;
718
+ };
719
+ type AgentWalletMode = 'local' | 'cloud' | 'external';
720
+ type AgentEngine = 'cortex' | 'openclaw';
721
+ type AgentGender = 'male' | 'female' | 'neutral';
722
+ type AgentTrustedActionRule = {
723
+ id: string;
724
+ hash: string;
725
+ match?: Record<string, string>;
726
+ identifier?: string;
727
+ title?: string;
728
+ };
729
+ type AgentSettings = {
730
+ auto: boolean;
731
+ 'model.url': string;
732
+ 'voice.output': boolean;
733
+ 'voice.id': string | null;
734
+ 'agent.gender'?: AgentGender;
735
+ 'proactivity.enabled': boolean;
736
+ 'proactivity.quietHoursStart'?: number;
737
+ 'proactivity.quietHoursEnd'?: number;
738
+ 'proactivity.maxMessagesPerDay'?: number;
739
+ 'proactivity.timezone'?: string;
740
+ 'proactivity.blockedBehaviors'?: string[];
741
+ engine: AgentEngine;
742
+ 'training.url'?: string | null;
743
+ 'training.status'?: 'idle' | 'training' | 'completed' | 'failed' | null;
744
+ 'training.recrawlInterval'?: number | null;
745
+ 'email_provider'?: EmailProvider | null;
746
+ };
747
+ type LocalAgentWallet = {
748
+ provider: WarpWalletProvider;
749
+ address: string;
750
+ mnemonic?: string | null;
751
+ privateKey?: string | null;
752
+ };
753
+ type AgentExecuteHandler = (prompt: string, options?: AgentExecuteOptions) => void;
754
+ type AgentExecuteOptions = {
755
+ audio?: File;
756
+ sender?: string;
757
+ media?: Media[];
758
+ ghost?: boolean;
759
+ context?: Record<string, unknown>;
760
+ };
761
+ //#endregion
762
+ //#region src/room/types.d.ts
763
+ type RoomId = string;
764
+ type RoomKind = 'default' | 'phone' | 'meeting';
765
+ type Room = {
766
+ id: string;
767
+ name: string;
768
+ description: string | null;
769
+ public: boolean;
770
+ default: boolean;
771
+ active: boolean;
772
+ kind?: RoomKind | null;
773
+ archivedAt?: string | null;
774
+ secKey: string | null;
775
+ createdAt: string | null;
776
+ contactId?: string | null;
777
+ agent: AgentSimple;
778
+ integration: Integration | null;
779
+ };
780
+ //#endregion
781
+ //#region src/meeting/types.d.ts
782
+ type MeetingSessionState = 'idle' | 'listening' | 'ended';
783
+ type TranscriptEntry = {
784
+ id: string;
785
+ text: string;
786
+ isFinal: boolean;
787
+ timestamp: number;
788
+ speakerId?: number;
789
+ speakerName?: string;
790
+ };
791
+ type BookmarkEntry = {
792
+ id: string;
793
+ timestamp: number;
794
+ transcriptEntryId: string;
795
+ };
796
+ type MeetingParticipant = {
797
+ name: string | null;
798
+ profileImageUrl: string | null;
799
+ };
800
+ type MeetingSpeakerAssignment = {
801
+ speakerId: number;
802
+ name: string;
803
+ contactId: string | null;
804
+ };
805
+ type Meeting = {
806
+ id: string;
807
+ code: string;
808
+ name: string | null;
809
+ room: Room | null;
810
+ inviteUrl: string;
811
+ status: MeetingStatus;
812
+ conferenceProvider: MeetingConferenceProvider | null;
813
+ conferenceUrl: string | null;
814
+ conferenceExternalId: string | null;
815
+ configuration?: Configuration;
816
+ captureMode: 'desktop_local' | null;
817
+ transcriptUrl: string | null;
818
+ summaryUrl: string | null;
819
+ participants?: MeetingParticipant[]; /** CRM contacts linked to an appointment booking, when available. */
820
+ contacts?: Contact[];
821
+ speakerAssignments?: MeetingSpeakerAssignment[] | null;
822
+ scheduledAt: string | null;
823
+ scheduledEndAt?: string | null;
824
+ timezone?: string | null;
825
+ calendarEventId: number | null;
826
+ startedAt: string | null;
827
+ endedAt: string | null;
828
+ createdAt: string;
829
+ };
830
+ type MeetingStatus = 'active' | 'completed' | 'analyzed' | 'scheduled' | 'cancelled';
831
+ type MeetingConferenceProvider = 'google_meet' | 'teams' | 'zoom';
832
+ type MeetingFeature = 'transcription' | 'summary' | 'insights' | 'actions';
833
+ type MeetingJoinTeam = {
834
+ name: string;
835
+ logo: string | null;
836
+ };
837
+ type MeetingJoinInfo = {
838
+ id: string;
839
+ code: string;
840
+ name: string | null;
841
+ inviteUrl: string;
842
+ agentName: string;
843
+ team: MeetingJoinTeam;
844
+ status: MeetingStatus;
845
+ isPhysical: boolean;
846
+ scheduledAt: string | null;
847
+ scheduledEndAt: string | null;
848
+ timezone: string;
849
+ conferenceUrl: string | null;
850
+ conferenceProvider: MeetingConferenceProvider | null;
851
+ endedAt: string | null;
852
+ canCancel: boolean;
853
+ features: Record<MeetingFeature, boolean>;
854
+ };
855
+ type MeetingTranscriptEntry = {
856
+ speaker: 'user' | 'agent';
857
+ text: string;
858
+ timestamp: string;
859
+ };
860
+ type MeetingUsage = {
861
+ current: number;
862
+ limit: number;
863
+ reached: boolean;
864
+ remainingWords: number | null;
865
+ };
866
+ type MeetingSummary = {
867
+ content: string;
868
+ };
869
+ //#endregion
556
870
  //#region src/site/types.d.ts
557
871
  type SiteType = 'undefined' | 'shop';
558
872
  type SiteTeam = {
@@ -1111,7 +1425,7 @@ type MollieTerminalPaymentResult = {
1111
1425
  failureReason?: string | null;
1112
1426
  signature?: string | null;
1113
1427
  };
1114
- type PlanFeature = 'general' | 'messages' | 'team-members' | 'teams' | 'support' | 'agent' | 'auto-mode' | 'cloud-sync' | 'wallet-cloud' | 'wallet-cloud-premium' | 'wallet-multi' | 'cards' | 'alerts' | 'advanced-commands' | 'tasks' | 'integrations' | 'message-history' | 'memory' | 'documents' | 'voice-input' | 'voice-live' | 'image-gen' | 'video-gen' | 'openclaw' | 'skills' | 'items' | 'context-length' | 'workspace-storage' | 'ingestions' | 'agent-email' | 'streak-freezes' | 'byok' | 'phone-call' | 'phone-number' | 'custom-domain' | 'contacts' | 'links' | 'store-fee-rate' | 'store-fee-rate-physical' | 'tap-to-pay';
1428
+ type PlanFeature = 'general' | 'messages' | 'team-members' | 'teams' | 'support' | 'agent' | 'auto-mode' | 'cloud-sync' | 'wallet-cloud' | 'wallet-cloud-premium' | 'wallet-multi' | 'cards' | 'alerts' | 'advanced-commands' | 'tasks' | 'integrations' | 'message-history' | 'memory' | 'documents' | 'voice-input' | 'voice-live' | 'image-gen' | 'video-gen' | 'openclaw' | 'skills' | 'items' | 'context-length' | 'workspace-storage' | 'ingestions' | 'agent-email' | 'streak-freezes' | 'byok' | 'phone-call' | 'phone-number' | 'meeting-bot' | 'custom-domain' | 'contacts' | 'links' | 'store-fee-rate' | 'store-fee-rate-physical' | 'tap-to-pay' | 'campaigns' | 'social-posts' | 'automations';
1115
1429
  type PlanBenefit = {
1116
1430
  label: Partial<Record<WarpLocale, string>>;
1117
1431
  tip?: Partial<Record<WarpLocale, string>>;
@@ -1250,6 +1564,7 @@ type Product = {
1250
1564
  meta?: ProductMeta;
1251
1565
  virtual?: boolean;
1252
1566
  tags?: string[] | null;
1567
+ taxClassId?: string | null;
1253
1568
  createdAt?: string;
1254
1569
  updatedAt?: string;
1255
1570
  variations: ProductVariation[];
@@ -1265,6 +1580,10 @@ type OrderItem = {
1265
1580
  name: string;
1266
1581
  quantity: number;
1267
1582
  unitPrice: number;
1583
+ taxClassId?: string | null;
1584
+ taxClassName?: string | null;
1585
+ taxRate?: number | null;
1586
+ taxAmount?: number | null;
1268
1587
  type: 'product-variation' | 'service' | 'coupon' | 'custom';
1269
1588
  digital?: boolean | null;
1270
1589
  sellerTeamId?: string | null;
@@ -1301,325 +1620,135 @@ type Order = {
1301
1620
  context: OrderContext | null;
1302
1621
  paymentMode: string | null;
1303
1622
  priceMode?: OrderPriceMode | null;
1623
+ taxRate?: number | null;
1624
+ taxValue?: number | null;
1625
+ netPrice?: number | null;
1626
+ taxBreakdown?: TaxBreakdownRow[];
1304
1627
  linkVariationId: string | null;
1305
- notes: string | null;
1628
+ notes: string | null; /** Linked pickup appointment when booked (canonical Meeting resource). */
1629
+ meeting?: Meeting | null;
1306
1630
  site?: Site | null;
1307
1631
  fulfillmentMethod?: FulfillmentMethod | null;
1308
1632
  billingAddress?: AddressSnapshot | null;
1309
1633
  shippingAddress?: AddressSnapshot | null;
1310
- shippingRate?: Pick<ShippingRate, 'name' | 'price' | 'estimatedMinDays' | 'estimatedMaxDays'> | null;
1311
- fulfillmentLocation?: {
1312
- name: string;
1313
- instructions?: string | null;
1314
- address?: AddressSnapshot | null;
1315
- } | null;
1316
- shippingFee?: number;
1317
- fulfillments?: Fulfillment[];
1318
- returns?: Return[];
1319
- subscription?: Subscription | null;
1320
- configuration?: OrderConfigurationItem[];
1321
- items: OrderItem[];
1322
- coupon?: Coupon | null;
1323
- plan: Plan | null;
1324
- user: UserPrivate | null;
1325
- team: Team | TeamPrivate | null;
1326
- isSubscription: boolean;
1327
- };
1328
- type CartItem = {
1329
- id: string;
1330
- name: TranslatableValue;
1331
- price: number;
1332
- quantity: number;
1333
- type: 'service' | 'product' | 'coupon';
1334
- sku: string | null;
1335
- badge: string | null;
1336
- configuration?: Configuration;
1337
- media: Media[];
1338
- product?: Product | null;
1339
- };
1340
- type Cart = {
1341
- subtotal: number;
1342
- taxes: {
1343
- amount: number;
1344
- percent: number;
1345
- };
1346
- total: number;
1347
- items: CartItem[];
1348
- coupon: Coupon | null;
1349
- couponDiscount: number;
1350
- };
1351
- type CouponCondition = 'none' | 'onetime-use' | 'previous-purchase';
1352
- type CouponRestrictedItemType = 'product' | 'service';
1353
- type CouponRestrictedItem = {
1354
- type: CouponRestrictedItemType;
1355
- ref: string;
1356
- };
1357
- type Coupon = {
1358
- id: string;
1359
- code: string;
1360
- name: TranslatableValue;
1361
- amount: number | null;
1362
- percent: number | null;
1363
- price: number | null;
1364
- discount?: number;
1365
- condition: CouponCondition;
1366
- restrictedItems: CouponRestrictedItem[];
1367
- usesLeft: number | null;
1368
- expiresAt: string | null;
1369
- active: boolean;
1370
- public: boolean;
1371
- sellable: boolean;
1372
- redemptionCount?: number;
1373
- media: Media[];
1374
- };
1375
- type PurchaseResult = {
1376
- order_id?: string;
1377
- message?: string;
1378
- subscription_active?: boolean;
1379
- };
1380
- type PurchaseOptions = {
1381
- forceProvider?: PaymentProvider;
1382
- billingAddress?: AddressSnapshot | null;
1383
- meta?: Record<string, string>;
1384
- };
1385
- //#endregion
1386
- //#region src/skill/types.d.ts
1387
- declare const SkillType: {
1388
- readonly Knowledge: "knowledge";
1389
- readonly ContentTemplate: "content-template";
1390
- readonly PersonalityClone: "personality-clone";
1391
- readonly BrandKit: "brand-kit";
1392
- readonly VideoTemplate: "video-template";
1393
- readonly VisualKit: "visual-kit";
1394
- };
1395
- type SkillTypeValue = (typeof SkillType)[keyof typeof SkillType];
1396
- declare const SkillMediaBindingRole: {
1397
- readonly Subject: "subject";
1398
- readonly Style: "style";
1399
- readonly Logo: "logo";
1400
- readonly Product: "product";
1401
- readonly Motion: "motion";
1402
- readonly FirstFrame: "first_frame";
1403
- readonly LastFrame: "last_frame";
1404
- };
1405
- type SkillMediaBindingRoleValue = (typeof SkillMediaBindingRole)[keyof typeof SkillMediaBindingRole];
1406
- declare const SkillScope: {
1407
- readonly Agent: "agent";
1408
- readonly Team: "team";
1409
- };
1410
- type SkillScopeValue = (typeof SkillScope)[keyof typeof SkillScope];
1411
- type Skill = {
1412
- id: string;
1413
- name: string;
1414
- description: string;
1415
- content: string;
1416
- meta: Record<string, unknown> | null;
1417
- license: string | null;
1418
- compatibility: string | null;
1419
- allowedTools: string | null;
1420
- source: string;
1421
- sourcePath: string | null;
1422
- scope?: SkillScopeValue;
1423
- active: boolean;
1424
- store: StoreInfo;
1425
- createdAt: string;
1426
- media?: Media[];
1427
- screenshots: string[];
1428
- };
1429
- //#endregion
1430
- //#region src/integration/types.d.ts
1431
- type IntegrationType = 'none' | 'webhook' | 'api-token' | 'telegram' | 'slack' | 'whatsapp' | 'whatsapp-personal' | 'twilio' | 'sms' | 'n8n' | 'apple-health' | 'mcp' | 'x' | 'xchat' | 'instagram' | 'facebook' | 'linkedin' | 'grok' | 'cloudflare' | 'email' | 'calendar' | 'embed' | 'discord' | 'github' | 'push' | 'sentry' | 'readwise';
1432
- type IntegrationDetails = {
1433
- type: IntegrationType;
1434
- name: string;
1435
- description?: string;
1436
- logoUrl?: string;
1437
- logoUrlDark?: string;
1438
- slug?: string;
1439
- category?: string;
1440
- [key: string]: unknown;
1441
- };
1442
- type IntegrationMeta = {
1443
- handle?: string;
1444
- provider?: EmailProvider | null;
1445
- hookSource?: string;
1446
- [key: string]: unknown;
1447
- };
1448
- type IntegrationConnectionDetails = IntegrationDetails & {
1449
- phoneNumberId?: string;
1450
- phoneNumber?: string;
1451
- webhookUrl?: string;
1452
- webhookSecret?: string;
1453
- webhookSecretKey?: string;
1454
- };
1455
- type Integration = {
1456
- id: string;
1457
- type: IntegrationType;
1458
- name: string;
1459
- active: boolean;
1460
- configured: boolean;
1461
- createdAt: string;
1462
- meta?: IntegrationMeta;
1463
- details?: IntegrationConnectionDetails;
1464
- };
1465
- type SocialPlatform = 'telegram' | 'slack' | 'whatsapp' | 'sms' | 'discord' | 'github' | 'xchat' | 'instagram';
1466
- type SocialBot = {
1467
- name: string;
1468
- createdAt: string;
1469
- phoneNumberId?: string;
1470
- phoneNumber?: string;
1471
- applicationId?: string;
1472
- appId?: string;
1473
- installationId?: string;
1474
- username?: string;
1475
- };
1476
- type XIntegrationStatus = {
1477
- enabled: boolean;
1478
- integrationId: string | null;
1479
- xAccountLinked: boolean;
1480
- currentAgentName: string | null;
1481
- };
1482
- type EmbedStatus = {
1483
- integrationId: string;
1484
- agentName: string;
1485
- agentAvatar: string | null;
1486
- active: boolean;
1487
- allowedDomains: string[];
1488
- };
1489
- type EmailProvider = 'resend' | 'mailgun' | 'sendgrid';
1490
- type CalendarProvider = 'google' | 'apple' | 'microsoft';
1491
- type CalendarStatus = {
1492
- connected: boolean;
1493
- provider?: CalendarProvider;
1494
- providerDisplayName?: string;
1495
- accountEmail?: string;
1496
- lastSynced?: string;
1497
- tokenHealthy?: boolean;
1498
- upcomingEvents?: {
1499
- title: string;
1500
- startAt: string;
1501
- endAt: string;
1502
- allDay: boolean;
1503
- }[];
1504
- };
1505
- //#endregion
1506
- //#region src/room/types.d.ts
1507
- type RoomId = string;
1508
- type RoomKind = 'default' | 'phone' | 'meeting';
1509
- type Room = {
1510
- id: string;
1511
- name: string;
1512
- description: string | null;
1513
- public: boolean;
1514
- default: boolean;
1515
- active: boolean;
1516
- kind?: RoomKind | null;
1517
- archivedAt?: string | null;
1518
- secKey: string | null;
1519
- createdAt: string | null;
1520
- contactId?: string | null;
1521
- agent: AgentSimple;
1522
- integration: Integration | null;
1523
- };
1524
- //#endregion
1525
- //#region src/agent/types.d.ts
1526
- type AgentCharacter = {
1527
- name: string | null;
1528
- system: string | null;
1529
- bio: string | null;
1530
- };
1531
- type Agent = {
1532
- uuid: string;
1533
- name: string;
1534
- description: string;
1535
- avatar: string;
1536
- wallets: Wallet[];
1537
- settings: AgentSettings;
1538
- store: StoreInfo;
1539
- character?: AgentCharacter | null;
1540
- room: Room;
1541
- role: string | null;
1542
- blueprint: Blueprint | null;
1543
- team: string;
1544
- };
1545
- type AgentPrivate = {
1546
- uuid: string;
1547
- name: string;
1548
- description: string;
1549
- avatar: string;
1550
- wallets: Wallet[];
1551
- settings: AgentSettings;
1552
- store: StoreInfo;
1553
- password: string | null;
1554
- authKey: string | null;
1555
- secKey: string;
1556
- phoneNumber: string | null;
1557
- room: Room;
1558
- role: string | null;
1559
- blueprint: Blueprint | null;
1560
- justCreated?: boolean;
1561
- team: string;
1634
+ shippingRate?: Pick<ShippingRate, 'name' | 'price' | 'estimatedMinDays' | 'estimatedMaxDays'> | null;
1635
+ fulfillmentLocation?: {
1636
+ name: string;
1637
+ instructions?: string | null;
1638
+ address?: AddressSnapshot | null;
1639
+ } | null;
1640
+ shippingFee?: number;
1641
+ fulfillments?: Fulfillment[];
1642
+ returns?: Return[];
1643
+ subscription?: Subscription | null;
1644
+ configuration?: OrderConfigurationItem[];
1645
+ items: OrderItem[];
1646
+ coupon?: Coupon | null;
1647
+ plan: Plan | null;
1648
+ user: UserPrivate | null;
1649
+ team: Team | TeamPrivate | null;
1650
+ isSubscription: boolean;
1562
1651
  };
1563
- type AgentActionHistoryEntry = {
1652
+ type CartItem = {
1564
1653
  id: string;
1565
- action: string | null;
1566
- outcome: 'succeeded' | 'failed';
1567
- outcomeDetail: string | null;
1568
- warpIdentifier: string | null;
1569
- meta: Record<string, unknown> | null;
1570
- createdAt: string | null;
1654
+ name: TranslatableValue;
1655
+ price: number;
1656
+ quantity: number;
1657
+ type: 'service' | 'product' | 'coupon';
1658
+ sku: string | null;
1659
+ badge: string | null;
1660
+ configuration?: Configuration;
1661
+ media: Media[];
1662
+ product?: Product | null;
1571
1663
  };
1572
- type AgentSimple = {
1573
- uuid: string;
1574
- name: string;
1575
- avatar?: string | null;
1576
- authKey?: string | null;
1577
- team?: {
1578
- slug: string;
1579
- } | null;
1580
- settings?: Pick<AgentSettings, 'auto'>;
1664
+ type Cart = {
1665
+ subtotal: number;
1666
+ taxes: {
1667
+ amount: number;
1668
+ percent: number;
1669
+ };
1670
+ total: number;
1671
+ items: CartItem[];
1672
+ coupon: Coupon | null;
1673
+ couponDiscount: number;
1581
1674
  };
1582
- type AgentWalletMode = 'local' | 'cloud' | 'external';
1583
- type AgentEngine = 'cortex' | 'openclaw';
1584
- type AgentGender = 'male' | 'female' | 'neutral';
1585
- type AgentTrustedActionRule = {
1675
+ type CouponCondition = 'none' | 'onetime-use' | 'previous-purchase';
1676
+ type CouponRestrictedItemType = 'product' | 'service';
1677
+ type CouponRestrictedItem = {
1678
+ type: CouponRestrictedItemType;
1679
+ ref: string;
1680
+ };
1681
+ type Coupon = {
1586
1682
  id: string;
1587
- hash: string;
1588
- match?: Record<string, string>;
1589
- identifier?: string;
1590
- title?: string;
1683
+ code: string;
1684
+ name: TranslatableValue;
1685
+ amount: number | null;
1686
+ percent: number | null;
1687
+ price: number | null;
1688
+ discount?: number;
1689
+ condition: CouponCondition;
1690
+ restrictedItems: CouponRestrictedItem[];
1691
+ usesLeft: number | null;
1692
+ expiresAt: string | null;
1693
+ active: boolean;
1694
+ public: boolean;
1695
+ sellable: boolean;
1696
+ redemptionCount?: number;
1697
+ media: Media[];
1591
1698
  };
1592
- type AgentSettings = {
1593
- auto: boolean;
1594
- 'model.url': string;
1595
- 'voice.output': boolean;
1596
- 'voice.id': string | null;
1597
- 'agent.gender'?: AgentGender;
1598
- 'proactivity.enabled': boolean;
1599
- 'proactivity.quietHoursStart'?: number;
1600
- 'proactivity.quietHoursEnd'?: number;
1601
- 'proactivity.maxMessagesPerDay'?: number;
1602
- 'proactivity.timezone'?: string;
1603
- 'proactivity.blockedBehaviors'?: string[];
1604
- engine: AgentEngine;
1605
- 'training.url'?: string | null;
1606
- 'training.status'?: 'idle' | 'training' | 'completed' | 'failed' | null;
1607
- 'training.recrawlInterval'?: number | null;
1608
- 'email_provider'?: EmailProvider | null;
1699
+ type PurchaseResult = {
1700
+ order_id?: string;
1701
+ message?: string;
1702
+ subscription_active?: boolean;
1609
1703
  };
1610
- type LocalAgentWallet = {
1611
- provider: WarpWalletProvider;
1612
- address: string;
1613
- mnemonic?: string | null;
1614
- privateKey?: string | null;
1704
+ type PurchaseOptions = {
1705
+ forceProvider?: PaymentProvider;
1706
+ billingAddress?: AddressSnapshot | null;
1707
+ meta?: Record<string, string>;
1615
1708
  };
1616
- type AgentExecuteHandler = (prompt: string, options?: AgentExecuteOptions) => void;
1617
- type AgentExecuteOptions = {
1618
- audio?: File;
1619
- sender?: string;
1709
+ //#endregion
1710
+ //#region src/skill/types.d.ts
1711
+ declare const SkillType: {
1712
+ readonly Knowledge: "knowledge";
1713
+ readonly ContentTemplate: "content-template";
1714
+ readonly PersonalityClone: "personality-clone";
1715
+ readonly BrandKit: "brand-kit";
1716
+ readonly VideoTemplate: "video-template";
1717
+ readonly VisualKit: "visual-kit";
1718
+ };
1719
+ type SkillTypeValue = (typeof SkillType)[keyof typeof SkillType];
1720
+ declare const SkillMediaBindingRole: {
1721
+ readonly Subject: "subject";
1722
+ readonly Style: "style";
1723
+ readonly Logo: "logo";
1724
+ readonly Product: "product";
1725
+ readonly Motion: "motion";
1726
+ readonly FirstFrame: "first_frame";
1727
+ readonly LastFrame: "last_frame";
1728
+ };
1729
+ type SkillMediaBindingRoleValue = (typeof SkillMediaBindingRole)[keyof typeof SkillMediaBindingRole];
1730
+ declare const SkillScope: {
1731
+ readonly Agent: "agent";
1732
+ readonly Team: "team";
1733
+ };
1734
+ type SkillScopeValue = (typeof SkillScope)[keyof typeof SkillScope];
1735
+ type Skill = {
1736
+ id: string;
1737
+ name: string;
1738
+ description: string;
1739
+ content: string;
1740
+ meta: Record<string, unknown> | null;
1741
+ license: string | null;
1742
+ compatibility: string | null;
1743
+ allowedTools: string | null;
1744
+ source: string;
1745
+ sourcePath: string | null;
1746
+ scope?: SkillScopeValue;
1747
+ active: boolean;
1748
+ store: StoreInfo;
1749
+ createdAt: string;
1620
1750
  media?: Media[];
1621
- ghost?: boolean;
1622
- context?: Record<string, unknown>;
1751
+ screenshots: string[];
1623
1752
  };
1624
1753
  //#endregion
1625
1754
  //#region src/link/types.d.ts
@@ -2011,7 +2140,7 @@ type BlueprintShortcut = {
2011
2140
  //#region src/helpers/string.d.ts
2012
2141
  declare const sanitizeAlphanumeric: (val: string) => string;
2013
2142
  declare const sanitizeNumeric: (val: string) => string;
2014
- declare const toNameInitials: (name?: string) => string;
2143
+ declare const toNameInitials: (name?: string | null) => string;
2015
2144
  declare const toPreviewText: (text: string, maxChars?: number) => string;
2016
2145
  declare const localize: (value: Partial<Record<string, string>> | string | null | undefined, locale?: string) => string;
2017
2146
  //#endregion
@@ -2181,100 +2310,12 @@ type Service = {
2181
2310
  digital: boolean;
2182
2311
  public: boolean;
2183
2312
  bookable: boolean;
2313
+ taxClassId?: string | null;
2184
2314
  settings?: Record<string, unknown> | null;
2185
2315
  createdAt: string;
2186
2316
  updatedAt: string;
2187
2317
  };
2188
2318
  //#endregion
2189
- //#region src/meeting/types.d.ts
2190
- type MeetingSessionState = 'idle' | 'listening' | 'ended';
2191
- type TranscriptEntry = {
2192
- id: string;
2193
- text: string;
2194
- isFinal: boolean;
2195
- timestamp: number;
2196
- speakerId?: number;
2197
- speakerName?: string;
2198
- };
2199
- type BookmarkEntry = {
2200
- id: string;
2201
- timestamp: number;
2202
- transcriptEntryId: string;
2203
- };
2204
- type MeetingParticipant = {
2205
- name: string | null;
2206
- profileImageUrl: string | null;
2207
- };
2208
- type MeetingSpeakerAssignment = {
2209
- speakerId: number;
2210
- name: string;
2211
- contactId: string | null;
2212
- };
2213
- type Meeting = {
2214
- id: string;
2215
- code: string;
2216
- name: string | null;
2217
- room: Room | null;
2218
- inviteUrl: string;
2219
- status: MeetingStatus;
2220
- conferenceProvider: MeetingConferenceProvider | null;
2221
- conferenceUrl: string | null;
2222
- conferenceExternalId: string | null;
2223
- configuration?: Configuration;
2224
- captureMode: 'desktop_local' | null;
2225
- transcriptUrl: string | null;
2226
- summaryUrl: string | null;
2227
- participants?: MeetingParticipant[]; /** CRM contacts linked to an appointment booking, when available. */
2228
- contacts?: Contact[];
2229
- speakerAssignments?: MeetingSpeakerAssignment[] | null;
2230
- scheduledAt: string | null;
2231
- scheduledEndAt?: string | null;
2232
- timezone?: string | null;
2233
- calendarEventId: number | null;
2234
- startedAt: string | null;
2235
- endedAt: string | null;
2236
- createdAt: string;
2237
- };
2238
- type MeetingStatus = 'active' | 'completed' | 'analyzed' | 'scheduled' | 'cancelled';
2239
- type MeetingConferenceProvider = 'google_meet' | 'teams' | 'zoom';
2240
- type MeetingFeature = 'transcription' | 'summary' | 'insights' | 'actions';
2241
- type MeetingJoinTeam = {
2242
- name: string;
2243
- logo: string | null;
2244
- };
2245
- type MeetingJoinInfo = {
2246
- id: string;
2247
- code: string;
2248
- name: string | null;
2249
- inviteUrl: string;
2250
- agentName: string;
2251
- team: MeetingJoinTeam;
2252
- status: MeetingStatus;
2253
- isPhysical: boolean;
2254
- scheduledAt: string | null;
2255
- scheduledEndAt: string | null;
2256
- timezone: string;
2257
- conferenceUrl: string | null;
2258
- conferenceProvider: MeetingConferenceProvider | null;
2259
- endedAt: string | null;
2260
- canCancel: boolean;
2261
- features: Record<MeetingFeature, boolean>;
2262
- };
2263
- type MeetingTranscriptEntry = {
2264
- speaker: 'user' | 'agent';
2265
- text: string;
2266
- timestamp: string;
2267
- };
2268
- type MeetingUsage = {
2269
- current: number;
2270
- limit: number;
2271
- reached: boolean;
2272
- remainingWords: number | null;
2273
- };
2274
- type MeetingSummary = {
2275
- content: string;
2276
- };
2277
- //#endregion
2278
2319
  //#region src/appointment/types.d.ts
2279
2320
  type AppointmentSlot = {
2280
2321
  start: string;
@@ -2305,11 +2346,8 @@ type AppointmentPolicySync = {
2305
2346
  };
2306
2347
  type AppointmentPolicy = {
2307
2348
  active: boolean;
2308
- timezone: string | null;
2309
- availability: Record<string, {
2310
- start: string;
2311
- end: string;
2312
- }[]> | null;
2349
+ timezone: string | null; /** Weekday → `"HH:mm-HH:mm"` ranges, e.g. `monday: ['09:00-17:00']`. */
2350
+ availability: Record<string, string[]> | null;
2313
2351
  minNoticeMinutes: number | null;
2314
2352
  bufferMinutes: number | null;
2315
2353
  maxDaysAhead: number | null;
@@ -2323,8 +2361,11 @@ type AppointmentPolicy = {
2323
2361
  bookingCapacityUnit?: 'booking' | 'person' | null;
2324
2362
  requireApproval?: boolean | null;
2325
2363
  notificationEmail?: string | null;
2326
- sync?: AppointmentPolicySync | null;
2364
+ sync?: AppointmentPolicySync | null; /** Assigned booking agent (required for shop slot loading). */
2327
2365
  agent?: Agent | null;
2366
+ };
2367
+ /** Writable policy fields. `agentUuid` assigns the booking agent (read back as `agent`). */
2368
+ type AppointmentPolicyUpsert = Partial<Omit<AppointmentPolicy, 'agent'>> & {
2328
2369
  agentUuid?: string | null;
2329
2370
  };
2330
2371
  type AppointmentBookingContext = {
@@ -2874,9 +2915,12 @@ type Document = {
2874
2915
  meta?: Record<string, unknown> | null;
2875
2916
  slug?: string | null;
2876
2917
  isPublic?: boolean;
2918
+ password?: string | null;
2877
2919
  url?: string | null;
2878
2920
  archivedAt?: string | null;
2921
+ team?: Team | null;
2879
2922
  createdAt: string;
2923
+ updatedAt?: string | null;
2880
2924
  };
2881
2925
  //#endregion
2882
2926
  //#region src/experience/types.d.ts
@@ -4795,4 +4839,4 @@ type CliSessionStatus = {
4795
4839
  meta: CliSessionMeta | null;
4796
4840
  };
4797
4841
  //#endregion
4798
- export { AUTOMATION_SEND_CHANNELS, Achievement, Address, AddressCreatePayload, AddressInput, AddressSnapshot, type AddressType, AddressTypes, AddressUpdatePayload, Affiliate, AffiliateStatus, AffiliateTier, AffiliateTierName, Agent, AgentActionHistoryEntry, AgentCharacter, AgentDelegatable, AgentEngine, AgentExecuteHandler, AgentExecuteOptions, AgentGender, AgentMessageMeta, AgentMessageOptions, AgentPrivate, AgentSettings, AgentSetupTarget, AgentSimple, AgentToolingAccess, AgentTrustedActionRule, AgentWalletMode, AggregatedRoute, AiCostEntry, AiCostsResponse, AiCostsSummary, Alert, ApiToken, AppAccessRule, AppEnv, AppFile, AppFileType, AppIngestion, AppSetupTarget, AppendKvEntryResult, AppointmentAvailability, AppointmentAvailabilityService, AppointmentAvailabilitySlot, AppointmentBooking, AppointmentBookingContext, AppointmentPolicy, AppointmentPolicySync, AppointmentRequest, AppointmentSlot, Artifact, ArtifactBlock, ArtifactBlockType, ArtifactContactSummary, ArtifactCreatePayload, ArtifactDeliverIntegration, ArtifactDeliverPayload, ArtifactDelivery, ArtifactLink, ArtifactStatus, ArtifactType, ArtifactUpdatePayload, AuthUser, Automation, AutomationAction, AutomationActionConfig, AutomationActionInput, AutomationActionType, AutomationAudiencePreview, AutomationCreatePayload, AutomationEnrollment, AutomationEnrollmentChange, AutomationEnrollmentStatus, AutomationEnrollmentUpdatedPayload, AutomationSendChannel, AutomationSendChannelId, AutomationSkipReason, AutomationStats, AutomationTriggerConfig, AutomationTriggerType, AutomationUpdatePayload, BillingManageAccess, Blueprint, BlueprintOnboardingStep, BlueprintRedirect, BlueprintSettings, BlueprintShortcut, BlueprintTask, BlueprintTeam, BoardSummaryViewable, BookmarkEntry, BrandBackend, BrandIntegration, BrandIntegrationAction, BrandIntegrationProvider, BrandSearchHit, BrandSiteConfig, BrandSourceConfig, Budget, ByokProviderConfig, ByokProviderName, ByokProviders, CAMPAIGN_CHANNELS, CONTACT_MESSAGE_SEND_WARP, CalendarProvider, CalendarStatus, Campaign, CampaignApproval, CampaignAudiencePreview, CampaignAudiencePreviewPayload, CampaignCategory, CampaignChannel, CampaignChannelId, CampaignCreatePayload, CampaignRecipient, CampaignRecipientStatus, CampaignSkipReason, CampaignSkipReasons, CampaignStats, CampaignStatus, CampaignUpdatePayload, Card, Cart, CartItem, CartLine, Challenge, Challenges, ChangelogEntry, Character, ChatClientAction, ChatClientThought, ChatStreamData, ChatStreamEventType, CheckoutSnapshot, CheckoutSnapshotRequest, CliSessionMeta, CliSessionStatus, CommissionAgreement, Configuration, Contact, ContactActivity, ContactActivityAuthor, ContactActivityType, ContactConsent, ContactConsentStatus, ContactCreatePayload, ContactFormData, ContactHealth, ContactRelation, ContactRelationCategory, ContactRelationContact, ContactRelationDirection, ContactRelationPayload, ContactRelationType, ContactRelationUpdatePayload, ContactViewable, Content, ContentDefinition, ContentEntry, ContentField, ContentFieldType, ContentPatch, ContentStatus, ContentValue, ContentVersion, Contract, ContractCategoryDisplayNames, ContractCategoryName, ContractCodeMetadata, ContractEntity, ContractOnNetwork, ContractVersion, ContractsAddressConfig, CortexExecuteOptions, Coupon, CouponCondition, CouponRestrictedItem, CouponRestrictedItemType, CreateContentInput, CreateHookPayload, CreateInboundHookPayload, CreateInternalHookPayload, CreateKvFieldPayload, CreateWarpLinkedHookPayload, CreateWebHookPayload, DefaultCodeMetadata, DefaultInviteTeamRole, DemoFlow, DemoMessage, Desk, DeskItem, DeskItemRole, Document, EarnResponse, Earning, Element, ElementSpec, ElementType, ElementVariation, EmailProvider, EmbedStatus, EncryptionStatus, Entity, EntityDirectExecuteRequest, EntityProposable, EntitySignable, EntityTemplate, Experience, FeatureSetupTarget, FileInfo, FileMetadata, Flow, FlowCategory, FlowInputMapping, FlowStatus, FlowStep, Fulfillment, FulfillmentFlowAction, FulfillmentFlowStep, FulfillmentLocation, type FulfillmentMethod, FulfillmentMethods, type FulfillmentStatus, FulfillmentStatuses, GamificationData, GamificationEventType, Goal, GoalCreatePayload, GoalPriority, GoalProgressViewable, GoalStatus, GuestBuyer, HintOptions, HintPosition, Hook, HookSample, HookTrigger, HookTriggerCondition, HookTriggerInput, HttpService, IAppResponse, IHttpService, IRequestOptions, IngestionSourceType, IngestionStatus, Inquiry, InquiryStatus, InquiryType, Integration, IntegrationConnectionDetails, IntegrationDetails, IntegrationMeta, IntegrationType, Intent, InviteableTeamRoles, Item, ItemCreatePayload, ItemExecutionStatus, ItemPriority, ItemStatus, ItemUpdatePayload, ItemViewable, JoaiUrls, JsonValue, KvEntry, KvEntryPayload, KvField, KvFieldWithEntries, KvValue, Kyc, KycStatus, Link, LinkCreatePayload, LinkScanHistory, LinkStats, LinkUpdatePayload, LinkVariation, LinkVariationBatchCreatePayload, LinkVariationCreatePayload, LocalAgentWallet, LoyaltyAccount, LoyaltyMember, LoyaltyNextTier, LoyaltyProgram, LoyaltyPromotion, LoyaltyReward, LoyaltyStatus, LoyaltyTier, LoyaltyTierInfo, LoyaltyTransaction, McpToolCall, McpToolCallBroadcast, McpToolCallStatus, Media, MediaAspectRatio, MediaAttributes, MediaItems, MediaLibraryAttributes, MediaMime, Meeting, MeetingConferenceProvider, MeetingFeature, MeetingJoinInfo, MeetingJoinTeam, MeetingParticipant, MeetingSessionState, MeetingSpeakerAssignment, MeetingStatus, MeetingSummary, MeetingTranscriptEntry, MeetingUsage, Memory, Message, MessageId, MessageRole, Metric, MetricSource, MetricsResult, Milestone, MilestoneType, Mission, MissionBudget, MissionCreatePayload, MissionPlan, MissionPriority, MissionSchedule, MissionStatus, MissionViewable, MollieTerminalPaymentResult, MultimodalContent, MultimodalFile, NATIVE_AUTH_TOKEN_PARAM, NativeApp, NativeApps, Notification, NotificationAction, NotificationAgent, NotificationChannel, NotificationSetting, OG_IMAGE_CONFIG, OG_IMAGE_HEIGHT, OG_IMAGE_WIDTH, ORDER_FULFILLMENT_STATUSES, ORDER_POST_CHECKOUT_STATUSES, OUTBOUND_CHANNELS, OfficeAgent, OfficeEntity, OfficeEntityKind, OfficeLiveOverrides, OfficeMember, OfficeSnapshot, OfficeStatus, OfficeStatusFilter, OfficeTypeFilter, OgImageColors, Order, OrderConfigurationItem, OrderContext, OrderItem, OrderPriceMode, OrderSource, OrderStatus, OrderStatusDisplay, OrderType, OutboundChannel, OutboundChannelId, PLATFORM_CURRENCY, PaginatedResponse, Pass, PatchContentInput, PaymentAccount, PaymentAccountOnboarding, PaymentProvider, PayoutEntry, PeriodTypeLabels, PeriodTypeOptions, PermissionConfigType, PermissionPresetName, PermissionPresetNames, PersonaQuestionable, PickupNextAction, Plan, PlanBenefit, PlanExtra, PlanFeature, PlanInterval, PolicyMethod, PolicySetting, PricingModel, Product, ProductDiscount, ProductMeta, ProductPieces, ProductRating, ProductRelation, ProductRelationType, ProductVariation, ProductVariationMeta, ProductVariationType, ProgramSettings, Project, ProjectAspectRatio, ProjectAssembly, ProjectCaptionStyle, ProjectClipCandidate, ProjectClips, ProjectExport, ProjectExportAsset, ProjectExportResponse, ProjectImages, ProjectInputAssistIntent, ProjectInputAssistResponse, ProjectMutation, ProjectOutputPreset, ProjectOutputType, ProjectPlan, ProjectRender, ProjectRenderMode, ProjectSelectedClip, ProjectShot, ProjectSoundtrack, ProjectSourceMedia, ProjectStatus, ProjectStudioHistoryEntry, ProjectStudioQuestion, ProjectStudioResponse, ProjectStudioStage, ProjectStudioState, ProjectStudioSummary, ProjectStyleDirection, ProjectTranscript, ProjectTranscriptSegment, Proposal, ProposalAction, ProposalActionPayment, ProposalActionPaymentSerializable, ProposalActionSerializable, ProposalPollOption, ProposalStatus, PublicFormResults, PurchaseOptions, PurchaseResult, RampProvider, RampProviderInfo, Reactions, RecentExperience, RedeemResponse, Reminder, Return, type ReturnStatus, ReturnStatuses, ReturnUpdateStatus, ReturnUpdateStatuses, Room, RoomId, RoomKind, ScInfo, SchedulePreset, SecretAuthorizable, SecretSettable, Segment, SegmentCondition, SegmentConditionType, SegmentCountPayload, SegmentCountResult, SegmentCreatePayload, SegmentGroup, SendableActivityUpdate, SendableAgentAction, SendableAgentMessage, SendableAgentThought, SendableMedia, SendableUserMessage, Service, SetKvEntryResult, SharedSocialPost, ShippingRate, ShippingZone, Shortcut, Site, SiteAgent, SiteBrand, SiteRoute, SiteTeam, SiteType, Skill, SkillMediaBindingRole, SkillMediaBindingRoleValue, SkillScope, SkillScopeValue, SkillType, SkillTypeValue, SocialAuthProvider, SocialBot, SocialPlatform, SocialPost, SocialPostConnection, SocialPostCreatePayload, SocialPostGenerateCaptionPayload, SocialPostGeneratedCaption, SocialPostPlatform, SocialPostStatus, SocialPostUpdatePayload, StampResponse, StoreAgent, StoreCheckoutItem, StoreData, StoreEntityType, StoreInfo, StoreItem, StoreListing, StorePriceTier, StorePricing, StorePurchasable, StorePurchaseResult, Streak, Subscription, SubscriptionDelivery, SubscriptionInterval, SubscriptionPlan, SubscriptionStatus, Swarm, Tag, TagType, Task, Team, TeamAccessCatalog, TeamAccessConfig, TeamBrand, TeamCategory, TeamCurrencySource, TeamEarning, TeamEarningsBalance, TeamFeature, TeamFeatureAccess, TeamFeatureArea, TeamFeatureUsage, TeamManageAccess, TeamMember, TeamMeta, TeamOrderStats, TeamPayout, TeamPayoutAddress, TeamPlace, TeamPrivate, TeamSettings, TeamUsage, TeamViewAccess, TerminalConnectionToken, TerminalPaymentIntent, Tier, TierFeature, TierName, ToggleKvFieldResult, TranscriptEntry, TranscriptionCorrection, TranscriptionResponse, TranslatableValue, UNIFIED_MCP_SERVER_NAME, Update, UpdateCreatePayload, UpdateRelation, UpdateStats, UpdateStatus, UpdateType, UpdateUpdatePayload, Upgrade, UpgradeSourceType, UpgradeStatus, User, UserInterest, UserMode, type UserPermission, UserPermissions, UserPrivate, type UserRole, UserRoles, UserSettings, UserSocialAccount, UserStats, VolumePrice, Wallet, WalletList, WarpApprovable, WarpBackend, WarpBackendStatus, WarpBatchItem, WarpBatchable, WarpCloudExecutable, WarpCreateable, WarpExecutable, WarpExecutionBackend, WarpExtras, WarpExtrasFaq, WarpInputable, WarpScreenshotVariant, WarpSearchHit, WarpSelectable, WarpSelectableDetails, WarpSuggestion, WarpTestable, WarpViewable, WebHookTriggerEvent, WorkspaceCloudFile, WorkspaceContext, WorkspaceInfo, WorkspaceSettings, XIntegrationStatus, abbreviateNumber, addressTypeValues, automationSendChannel, buildAgentMcpServerName, buildAgentSetupClipboardText, buildAppSetupClipboardText, buildFeatureSetupClipboardText, buildMcpServerName, canOpenFulfillmentFlow, canTransitionOrderStatus, cartLineTotal, cartPayableTotal, createCursorMcpInstallLink, defaultInviteTeamRole, formatAddressSnapshotLines, fulfillmentMethodValues, fulfillmentStatusValues, getAgentSetupPromptUrl, getAgentsBaseUrl, getApiBaseUrl, getAppBaseUrl, getAssetAppLogoUrl, getAssetChainLogoUrl, getAssetPartnerLogoUrl, getAssetTokenLogoUrl, getAssetWalletLogoUrl, getCortexBaseUrl, getDigestBaseUrl, getEditableOrderStatuses, getFormsBaseUrl, getFulfillmentFlowAction, getFulfillmentFlowStepperIndex, getGenBaseUrl, getInvoiceEditableStatuses, getLoginUrl, getMcpServerAgentUrl, getMcpServerUrl, getPickupEditableStatuses, getPickupNextAction, getShippingEditableStatuses, getSiteUrl, getSitesBaseUrl, getSitesRootDomain, getStoreBaseUrl, getWarpScreenshotUrl, hasAllPermissions, hasAllTeamPermissions, hasAnyPermissions, hasPermission, hasTeamPermission, integrationSlugForChannel, inviteableTeamRoles, isAutomationSendChannelId, isCampaignChannelId, isCompleteAddressInput, isContactMessageAction, isContactMessageWarpId, isFileFormatAudio, isFileFormatImage, isFileFormatVideo, isNativeApp, isNativeAppAccessible, isNativeAppGated, isNativeAppLocked, isOrderCanceled, isOrderInFulfillment, isOrderPending, isOrderPostCheckout, isPickupOrderReady, isPickupReady, isTeamFeatureAccessible, isTeamFeatureGated, isTeamFeatureLocked, isUnifiedMcpUrl, isUserRole, localize, nativeAppSlugs, normalizeAutomationActionType, ogImageUrl, outboundChannel, permissionPresetRules, resolveAccessCatalog, resolveAgentMcpUrl, resolveConnectMcpUrl, resolveFulfillmentFlowStep, resolveOrderStatusDisplay, resolveTeamCurrency, resolveWarpText, returnStatusValues, returnUpdateStatusValues, sanitizeAlphanumeric, sanitizeNumeric, slugifyMcpSegment, teamCategories, toCurrencyDisplay, toHexEncodedNonce, toNameInitials, toNftId, toPreviewText, userPermissionValues, userRoleValues, withRetry };
4842
+ export { AUTOMATION_SEND_CHANNELS, Achievement, Address, AddressCreatePayload, AddressInput, AddressSnapshot, type AddressType, AddressTypes, AddressUpdatePayload, Affiliate, AffiliateStatus, AffiliateTier, AffiliateTierName, Agent, AgentActionHistoryEntry, AgentCharacter, AgentDelegatable, AgentEngine, AgentExecuteHandler, AgentExecuteOptions, AgentGender, AgentMessageMeta, AgentMessageOptions, AgentPrivate, AgentSettings, AgentSetupTarget, AgentSimple, AgentToolingAccess, AgentTrustedActionRule, AgentWalletMode, AggregatedRoute, AiCostEntry, AiCostsResponse, AiCostsSummary, Alert, ApiToken, AppAccessRule, AppEnv, AppFile, AppFileType, AppIngestion, AppSetupTarget, AppendKvEntryResult, AppointmentAvailability, AppointmentAvailabilityService, AppointmentAvailabilitySlot, AppointmentBooking, AppointmentBookingContext, AppointmentPolicy, AppointmentPolicySync, AppointmentPolicyUpsert, AppointmentRequest, AppointmentSlot, Artifact, ArtifactBlock, ArtifactBlockType, ArtifactContactSummary, ArtifactCreatePayload, ArtifactDeliverIntegration, ArtifactDeliverPayload, ArtifactDelivery, ArtifactLink, ArtifactStatus, ArtifactType, ArtifactUpdatePayload, AuthUser, Automation, AutomationAction, AutomationActionConfig, AutomationActionInput, AutomationActionType, AutomationAudiencePreview, AutomationCreatePayload, AutomationEnrollment, AutomationEnrollmentChange, AutomationEnrollmentStatus, AutomationEnrollmentUpdatedPayload, AutomationSendChannel, AutomationSendChannelId, AutomationSkipReason, AutomationStats, AutomationTriggerConfig, AutomationTriggerType, AutomationUpdatePayload, BillingManageAccess, Blueprint, BlueprintOnboardingStep, BlueprintRedirect, BlueprintSettings, BlueprintShortcut, BlueprintTask, BlueprintTeam, BoardSummaryViewable, BookmarkEntry, BrandBackend, BrandIntegration, BrandIntegrationAction, BrandIntegrationProvider, BrandSearchHit, BrandSiteConfig, BrandSourceConfig, Budget, ByokProviderConfig, ByokProviderName, ByokProviders, CAMPAIGN_CHANNELS, CONTACT_MESSAGE_SEND_WARP, CalendarProvider, CalendarStatus, Campaign, CampaignApproval, CampaignAudiencePreview, CampaignAudiencePreviewPayload, CampaignCategory, CampaignChannel, CampaignChannelId, CampaignCreatePayload, CampaignRecipient, CampaignRecipientStatus, CampaignSkipReason, CampaignSkipReasons, CampaignStats, CampaignStatus, CampaignUpdatePayload, Card, Cart, CartItem, CartLine, Challenge, Challenges, ChangelogEntry, Character, ChatClientAction, ChatClientThought, ChatStreamData, ChatStreamEventType, CheckoutSnapshot, CheckoutSnapshotRequest, CliSessionMeta, CliSessionStatus, CommissionAgreement, Configuration, Contact, ContactActivity, ContactActivityAuthor, ContactActivityType, ContactConsent, ContactConsentStatus, ContactCreatePayload, ContactFormData, ContactHealth, ContactRelation, ContactRelationCategory, ContactRelationContact, ContactRelationDirection, ContactRelationPayload, ContactRelationType, ContactRelationUpdatePayload, ContactViewable, Content, ContentDefinition, ContentEntry, ContentField, ContentFieldType, ContentPatch, ContentStatus, ContentValue, ContentVersion, Contract, ContractCategoryDisplayNames, ContractCategoryName, ContractCodeMetadata, ContractEntity, ContractOnNetwork, ContractVersion, ContractsAddressConfig, CortexExecuteOptions, Coupon, CouponCondition, CouponRestrictedItem, CouponRestrictedItemType, CreateContentInput, CreateHookPayload, CreateInboundHookPayload, CreateInternalHookPayload, CreateKvFieldPayload, CreateWarpLinkedHookPayload, CreateWebHookPayload, DefaultAppLocale, DefaultCodeMetadata, DefaultInviteTeamRole, DemoFlow, DemoMessage, Desk, DeskItem, DeskItemRole, Document, EarnResponse, Earning, Element, ElementSpec, ElementType, ElementVariation, EmailProvider, EmbedStatus, EncryptionStatus, Entity, EntityDirectExecuteRequest, EntityProposable, EntitySignable, EntityTemplate, Experience, FeatureSetupTarget, FileInfo, FileMetadata, Flow, FlowCategory, FlowInputMapping, FlowStatus, FlowStep, Fulfillment, FulfillmentFlowAction, FulfillmentFlowStep, FulfillmentLocation, type FulfillmentMethod, FulfillmentMethods, type FulfillmentStatus, FulfillmentStatuses, GamificationData, GamificationEventType, Goal, GoalCreatePayload, GoalPriority, GoalProgressViewable, GoalStatus, GuestBuyer, HintOptions, HintPosition, Hook, HookSample, HookTrigger, HookTriggerCondition, HookTriggerInput, HttpService, IAppResponse, IHttpService, IRequestOptions, IngestionSourceType, IngestionStatus, Inquiry, InquiryStatus, InquiryType, Integration, IntegrationConnectionDetails, IntegrationDetails, IntegrationMeta, IntegrationType, Intent, InviteableTeamRoles, Item, ItemCreatePayload, ItemExecutionStatus, ItemPriority, ItemStatus, ItemUpdatePayload, ItemViewable, JoaiUrls, JsonValue, KvEntry, KvEntryPayload, KvField, KvFieldWithEntries, KvValue, Kyc, KycStatus, Link, LinkCreatePayload, LinkScanHistory, LinkStats, LinkUpdatePayload, LinkVariation, LinkVariationBatchCreatePayload, LinkVariationCreatePayload, LocalAgentWallet, LoyaltyAccount, LoyaltyMember, LoyaltyNextTier, LoyaltyProgram, LoyaltyPromotion, LoyaltyReward, LoyaltyStatus, LoyaltyTier, LoyaltyTierInfo, LoyaltyTransaction, McpToolCall, McpToolCallBroadcast, McpToolCallStatus, Media, MediaAspectRatio, MediaAttributes, MediaItems, MediaLibraryAttributes, MediaMime, Meeting, MeetingConferenceProvider, MeetingFeature, MeetingJoinInfo, MeetingJoinTeam, MeetingParticipant, MeetingSessionState, MeetingSpeakerAssignment, MeetingStatus, MeetingSummary, MeetingTranscriptEntry, MeetingUsage, Memory, Message, MessageId, MessageRole, Metric, MetricSource, MetricsResult, Milestone, MilestoneType, Mission, MissionBudget, MissionCreatePayload, MissionPlan, MissionPriority, MissionSchedule, MissionStatus, MissionViewable, MollieTerminalPaymentResult, MultimodalContent, MultimodalFile, NATIVE_AUTH_TOKEN_PARAM, NativeApp, NativeApps, Notification, NotificationAction, NotificationAgent, NotificationChannel, NotificationSetting, OG_IMAGE_CONFIG, OG_IMAGE_HEIGHT, OG_IMAGE_WIDTH, ORDER_FULFILLMENT_STATUSES, ORDER_POST_CHECKOUT_STATUSES, OUTBOUND_CHANNELS, OfficeAgent, OfficeEntity, OfficeEntityKind, OfficeLiveOverrides, OfficeMember, OfficeSnapshot, OfficeStatus, OfficeStatusFilter, OfficeTypeFilter, OgImageColors, Order, OrderConfigurationItem, OrderContext, OrderItem, OrderPriceMode, OrderSource, OrderStatus, OrderStatusDisplay, OrderType, OutboundChannel, OutboundChannelId, PLATFORM_CURRENCY, PaginatedResponse, Pass, PatchContentInput, PaymentAccount, PaymentAccountOnboarding, PaymentProvider, PayoutEntry, PeriodTypeLabels, PeriodTypeOptions, PermissionConfigType, PermissionPresetName, PermissionPresetNames, PersonaQuestionable, PickupNextAction, Plan, PlanBenefit, PlanExtra, PlanFeature, PlanInterval, PolicyMethod, PolicySetting, PricingModel, Product, ProductDiscount, ProductMeta, ProductPieces, ProductRating, ProductRelation, ProductRelationType, ProductVariation, ProductVariationMeta, ProductVariationType, ProgramSettings, Project, ProjectAspectRatio, ProjectAssembly, ProjectCaptionStyle, ProjectClipCandidate, ProjectClips, ProjectExport, ProjectExportAsset, ProjectExportResponse, ProjectImages, ProjectInputAssistIntent, ProjectInputAssistResponse, ProjectMutation, ProjectOutputPreset, ProjectOutputType, ProjectPlan, ProjectRender, ProjectRenderMode, ProjectSelectedClip, ProjectShot, ProjectSoundtrack, ProjectSourceMedia, ProjectStatus, ProjectStudioHistoryEntry, ProjectStudioQuestion, ProjectStudioResponse, ProjectStudioStage, ProjectStudioState, ProjectStudioSummary, ProjectStyleDirection, ProjectTranscript, ProjectTranscriptSegment, Proposal, ProposalAction, ProposalActionPayment, ProposalActionPaymentSerializable, ProposalActionSerializable, ProposalPollOption, ProposalStatus, PublicFormResults, PurchaseOptions, PurchaseResult, RampProvider, RampProviderInfo, Reactions, RecentExperience, RedeemResponse, Reminder, Return, type ReturnStatus, ReturnStatuses, ReturnUpdateStatus, ReturnUpdateStatuses, Room, RoomId, RoomKind, ScInfo, SchedulePreset, SecretAuthorizable, SecretSettable, Segment, SegmentCondition, SegmentConditionType, SegmentCountPayload, SegmentCountResult, SegmentCreatePayload, SegmentGroup, SendableActivityUpdate, SendableAgentAction, SendableAgentMessage, SendableAgentThought, SendableMedia, SendableUserMessage, Service, SetKvEntryResult, SharedSocialPost, ShippingCarrierOption, ShippingRate, ShippingZone, Shortcut, Site, SiteAgent, SiteBrand, SiteRoute, SiteTeam, SiteType, Skill, SkillMediaBindingRole, SkillMediaBindingRoleValue, SkillScope, SkillScopeValue, SkillType, SkillTypeValue, SocialAuthProvider, SocialBot, SocialPlatform, SocialPost, SocialPostConnection, SocialPostCreatePayload, SocialPostGenerateCaptionPayload, SocialPostGeneratedCaption, SocialPostPlatform, SocialPostStatus, SocialPostUpdatePayload, StampResponse, StoreAgent, StoreCheckoutItem, StoreData, StoreEntityType, StoreInfo, StoreItem, StoreListing, StorePriceTier, StorePricing, StorePurchasable, StorePurchaseResult, Streak, Subscription, SubscriptionDelivery, SubscriptionInterval, SubscriptionPlan, SubscriptionStatus, SupportedAppLocale, SupportedAppLocales, Swarm, Tag, TagType, Task, TaxBreakdownRow, TaxClass, Team, TeamAccessCatalog, TeamAccessConfig, TeamBrand, TeamCategory, TeamCurrencySource, TeamEarning, TeamEarningsBalance, TeamFeature, TeamFeatureAccess, TeamFeatureArea, TeamFeatureUsage, TeamManageAccess, TeamMember, TeamMeta, TeamOrderStats, TeamPayout, TeamPayoutAddress, TeamPlace, TeamPrivate, TeamSettings, TeamUsage, TeamViewAccess, TerminalConnectionToken, TerminalPaymentIntent, Tier, TierFeature, TierName, ToggleKvFieldResult, TranscriptEntry, TranscriptionCorrection, TranscriptionResponse, TranslatableValue, UNIFIED_MCP_SERVER_NAME, Update, UpdateCreatePayload, UpdateRelation, UpdateStats, UpdateStatus, UpdateType, UpdateUpdatePayload, Upgrade, UpgradeSourceType, UpgradeStatus, User, UserInterest, UserMode, type UserPermission, UserPermissions, UserPrivate, type UserRole, UserRoles, UserSettings, UserSocialAccount, UserStats, VolumePrice, Wallet, WalletList, WarpApprovable, WarpBackend, WarpBackendStatus, WarpBatchItem, WarpBatchable, WarpCloudExecutable, WarpCreateable, WarpExecutable, WarpExecutionBackend, WarpExtras, WarpExtrasFaq, WarpInputable, WarpScreenshotVariant, WarpSearchHit, WarpSelectable, WarpSelectableDetails, WarpSuggestion, WarpTestable, WarpViewable, WebHookTriggerEvent, WorkspaceCloudFile, WorkspaceContext, WorkspaceInfo, WorkspaceSettings, XIntegrationStatus, abbreviateNumber, addressTypeValues, automationSendChannel, buildAgentMcpServerName, buildAgentSetupClipboardText, buildAppSetupClipboardText, buildFeatureSetupClipboardText, buildMcpServerName, canOpenFulfillmentFlow, canTransitionOrderStatus, cartLineTotal, cartPayableTotal, createCursorMcpInstallLink, defaultInviteTeamRole, documentShareUrl, firstValidationMessage, formatAddressSnapshotLines, fulfillmentMethodValues, fulfillmentStatusValues, getAgentSetupPromptUrl, getAgentsBaseUrl, getApiBaseUrl, getAppBaseUrl, getAssetAppLogoUrl, getAssetChainLogoUrl, getAssetPartnerLogoUrl, getAssetTokenLogoUrl, getAssetWalletLogoUrl, getCortexBaseUrl, getDigestBaseUrl, getDocumentsBaseUrl, getEditableOrderStatuses, getFormsBaseUrl, getFulfillmentFlowAction, getFulfillmentFlowStepperIndex, getGenBaseUrl, getInvoiceEditableStatuses, getLoginUrl, getMcpServerAgentUrl, getMcpServerUrl, getPickupEditableStatuses, getPickupNextAction, getShippingEditableStatuses, getSiteUrl, getSitesBaseUrl, getSitesRootDomain, getStoreBaseUrl, getWarpScreenshotUrl, hasAllPermissions, hasAllTeamPermissions, hasAnyPermissions, hasPermission, hasTeamPermission, integrationSlugForChannel, inviteableTeamRoles, isAutomationSendChannelId, isCampaignChannelId, isCompleteAddressInput, isContactMessageAction, isContactMessageWarpId, isFileFormatAudio, isFileFormatImage, isFileFormatVideo, isNativeApp, isNativeAppAccessible, isNativeAppGated, isNativeAppLocked, isOrderCanceled, isOrderInFulfillment, isOrderPending, isOrderPostCheckout, isPickupOrderReady, isPickupReady, isSupportedAppLocale, isTeamFeatureAccessible, isTeamFeatureGated, isTeamFeatureLocked, isUnifiedMcpUrl, isUserRole, localize, nativeAppSlugs, normalizeAutomationActionType, ogImageUrl, outboundChannel, permissionPresetRules, resolveAccessCatalog, resolveAgentMcpUrl, resolveConnectMcpUrl, resolveFulfillmentFlowStep, resolveOrderStatusDisplay, resolveTeamCurrency, resolveWarpText, returnStatusValues, returnUpdateStatusValues, sanitizeAlphanumeric, sanitizeNumeric, slugifyMcpSegment, teamCategories, toCurrencyDisplay, toHexEncodedNonce, toNameInitials, toNftId, toPreviewText, userPermissionValues, userRoleValues, validationMessageFor, withRetry };
package/dist/index.mjs CHANGED
@@ -1,3 +1,28 @@
1
+ //#region src/config/constants.ts
2
+ const JoaiUrls = {
3
+ TelegramGroup: "https://telegram.joai.ai",
4
+ Twitter: "https://x.com/JoAiAgents",
5
+ Reddit: "https://www.reddit.com/r/JoAi/",
6
+ GitHub: "https://github.com/JoAiHQ",
7
+ LinkedIn: "https://www.linkedin.com/company/joai",
8
+ Docs: "https://docs.joai.ai",
9
+ DocsApi: "https://docs.joai.ai/api",
10
+ DocsWebhooks: "https://docs.joai.ai/webhooks",
11
+ AppStore: "https://apps.apple.com/app/joai/id6741204807",
12
+ PlayStore: "https://play.google.com/store/apps/details?id=ai.joai.app"
13
+ };
14
+ /** App UI locales — keep in sync with API `config('app.languages.supported')`. */
15
+ const SupportedAppLocales = [
16
+ "en",
17
+ "de",
18
+ "fr",
19
+ "es",
20
+ "ro",
21
+ "it"
22
+ ];
23
+ const DefaultAppLocale = "en";
24
+ const isSupportedAppLocale = (value) => !!value && SupportedAppLocales.includes(value);
25
+ //#endregion
1
26
  //#region src/config/urls.ts
2
27
  const toSubdomainBaseUrl = (env, subdomain) => {
3
28
  if (env === "local") return `http://${subdomain}.joai--api.test`;
@@ -24,6 +49,18 @@ const getFormsBaseUrl = (env) => {
24
49
  if (env === "testnet") return "https://testnet-forms.joai.ai";
25
50
  return "https://forms.joai.ai";
26
51
  };
52
+ const getDocumentsBaseUrl = (env) => {
53
+ if (env === "local") return "http://documents.joai--api.test:3012";
54
+ if (env === "devnet") return "https://devnet-documents.joai.ai";
55
+ if (env === "testnet") return "https://testnet-documents.joai.ai";
56
+ return "https://documents.joai.ai";
57
+ };
58
+ const documentShareUrl = (env, locale, slug, password) => {
59
+ const lang = isSupportedAppLocale(locale) ? locale : "en";
60
+ const url = `${getDocumentsBaseUrl(env)}/${lang}/${encodeURIComponent(slug)}`;
61
+ if (password) return `${url}?password=${encodeURIComponent(password)}`;
62
+ return url;
63
+ };
27
64
  const getDigestBaseUrl = (env) => {
28
65
  if (env === "local") return "http://localhost:3005";
29
66
  if (env === "devnet") return "https://devnet-digests.joai.ai";
@@ -77,20 +114,6 @@ const getLoginUrl = (env, returnTo, branding) => {
77
114
  return `${getAppBaseUrl(env)}/login?${params}`;
78
115
  };
79
116
  //#endregion
80
- //#region src/config/constants.ts
81
- const JoaiUrls = {
82
- TelegramGroup: "https://telegram.joai.ai",
83
- Twitter: "https://x.com/JoAiAgents",
84
- Reddit: "https://www.reddit.com/r/JoAi/",
85
- GitHub: "https://github.com/JoAiHQ",
86
- LinkedIn: "https://www.linkedin.com/company/joai",
87
- Docs: "https://docs.joai.ai",
88
- DocsApi: "https://docs.joai.ai/api",
89
- DocsWebhooks: "https://docs.joai.ai/webhooks",
90
- AppStore: "https://apps.apple.com/app/joai/id6741204807",
91
- PlayStore: "https://play.google.com/store/apps/details?id=ai.joai.app"
92
- };
93
- //#endregion
94
117
  //#region src/http/service.ts
95
118
  var HttpService = class {
96
119
  constructor(baseUrl, cookies, authToken, options) {
@@ -196,12 +219,35 @@ var HttpService = class {
196
219
  }
197
220
  };
198
221
  //#endregion
222
+ //#region src/http/errors.ts
223
+ /** First localized string from a Laravel-style `errors` map (`field → string | string[]`). */
224
+ const firstValidationMessage = (errors) => {
225
+ if (!errors || typeof errors !== "object" || Array.isArray(errors)) return void 0;
226
+ for (const value of Object.values(errors)) {
227
+ const message = validationMessageValue(value);
228
+ if (message) return message;
229
+ }
230
+ };
231
+ /** Localized validation message for a specific field, when present. */
232
+ const validationMessageFor = (errors, field) => {
233
+ if (!errors || typeof errors !== "object" || Array.isArray(errors)) return void 0;
234
+ return validationMessageValue(errors[field]);
235
+ };
236
+ const validationMessageValue = (value) => {
237
+ if (typeof value === "string" && value.trim()) return value.trim();
238
+ if (Array.isArray(value) && typeof value[0] === "string" && value[0].trim()) return value[0].trim();
239
+ };
240
+ //#endregion
199
241
  //#region src/helpers/string.ts
200
242
  const sanitizeAlphanumeric = (val) => val.replace(/[^a-z0-9]/gi, "");
201
243
  const sanitizeNumeric = (val) => {
202
244
  return (val.split(".").length > 2 && val.endsWith(".") ? val.slice(0, -1) : val).replace(/[^0-9\.]+/g, "");
203
245
  };
204
- const toNameInitials = (name) => name ? name.split(" ").map((word) => word[0]).join("").toUpperCase().slice(0, 2) : "?";
246
+ const toNameInitials = (name) => {
247
+ const parts = name?.trim().split(/\s+/).filter(Boolean) ?? [];
248
+ if (parts.length === 0) return "?";
249
+ return parts.map((word) => word[0]).join("").toUpperCase().slice(0, 2);
250
+ };
205
251
  const toPreviewText = (text, maxChars = 100) => {
206
252
  if (!text) return "";
207
253
  let sanitized = text.replace(/<\/?(h[1-6])[^>]*>/gi, " - ").replace(/<\/?(p|div|ul|ol|li|br|hr)[^>]*>/gi, " ").replace(/<[^>]+>/g, "").replace(/\s+/g, " ").trim();
@@ -930,4 +976,4 @@ const DefaultInviteTeamRole = UserRoles.Member;
930
976
  const inviteableTeamRoles = () => [...InviteableTeamRoles];
931
977
  const defaultInviteTeamRole = () => DefaultInviteTeamRole;
932
978
  //#endregion
933
- export { AUTOMATION_SEND_CHANNELS, AddressTypes, AgentToolingAccess, BillingManageAccess, CAMPAIGN_CHANNELS, CONTACT_MESSAGE_SEND_WARP, ContractCategoryDisplayNames, DefaultCodeMetadata, DefaultInviteTeamRole, FulfillmentMethods, FulfillmentStatuses, HttpService, InviteableTeamRoles, JoaiUrls, NATIVE_AUTH_TOKEN_PARAM, NativeApps, OG_IMAGE_CONFIG, OG_IMAGE_HEIGHT, OG_IMAGE_WIDTH, ORDER_FULFILLMENT_STATUSES, ORDER_POST_CHECKOUT_STATUSES, OUTBOUND_CHANNELS, OgImageColors, PLATFORM_CURRENCY, PeriodTypeLabels, PeriodTypeOptions, PermissionPresetNames, ReturnStatuses, ReturnUpdateStatuses, SkillMediaBindingRole, SkillScope, SkillType, TeamManageAccess, TeamViewAccess, UNIFIED_MCP_SERVER_NAME, UserPermissions, UserRoles, abbreviateNumber, addressTypeValues, automationSendChannel, buildAgentMcpServerName, buildAgentSetupClipboardText, buildAppSetupClipboardText, buildFeatureSetupClipboardText, buildMcpServerName, canOpenFulfillmentFlow, canTransitionOrderStatus, cartLineTotal, cartPayableTotal, createCursorMcpInstallLink, defaultInviteTeamRole, formatAddressSnapshotLines, fulfillmentMethodValues, fulfillmentStatusValues, getAgentSetupPromptUrl, getAgentsBaseUrl, getApiBaseUrl, getAppBaseUrl, getAssetAppLogoUrl, getAssetChainLogoUrl, getAssetPartnerLogoUrl, getAssetTokenLogoUrl, getAssetWalletLogoUrl, getCortexBaseUrl, getDigestBaseUrl, getEditableOrderStatuses, getFormsBaseUrl, getFulfillmentFlowAction, getFulfillmentFlowStepperIndex, getGenBaseUrl, getInvoiceEditableStatuses, getLoginUrl, getMcpServerAgentUrl, getMcpServerUrl, getPickupEditableStatuses, getPickupNextAction, getShippingEditableStatuses, getSiteUrl, getSitesBaseUrl, getSitesRootDomain, getStoreBaseUrl, getWarpScreenshotUrl, hasAllPermissions, hasAllTeamPermissions, hasAnyPermissions, hasPermission, hasTeamPermission, integrationSlugForChannel, inviteableTeamRoles, isAutomationSendChannelId, isCampaignChannelId, isCompleteAddressInput, isContactMessageAction, isContactMessageWarpId, isFileFormatAudio, isFileFormatImage, isFileFormatVideo, isNativeApp, isNativeAppAccessible, isNativeAppGated, isNativeAppLocked, isOrderCanceled, isOrderInFulfillment, isOrderPending, isOrderPostCheckout, isPickupOrderReady, isPickupReady, isTeamFeatureAccessible, isTeamFeatureGated, isTeamFeatureLocked, isUnifiedMcpUrl, isUserRole, localize, nativeAppSlugs, normalizeAutomationActionType, ogImageUrl, outboundChannel, permissionPresetRules, resolveAccessCatalog, resolveAgentMcpUrl, resolveConnectMcpUrl, resolveFulfillmentFlowStep, resolveOrderStatusDisplay, resolveTeamCurrency, resolveWarpText, returnStatusValues, returnUpdateStatusValues, sanitizeAlphanumeric, sanitizeNumeric, slugifyMcpSegment, teamCategories, toCurrencyDisplay, toHexEncodedNonce, toNameInitials, toNftId, toPreviewText, userPermissionValues, userRoleValues, withRetry };
979
+ export { AUTOMATION_SEND_CHANNELS, AddressTypes, AgentToolingAccess, BillingManageAccess, CAMPAIGN_CHANNELS, CONTACT_MESSAGE_SEND_WARP, ContractCategoryDisplayNames, DefaultAppLocale, DefaultCodeMetadata, DefaultInviteTeamRole, FulfillmentMethods, FulfillmentStatuses, HttpService, InviteableTeamRoles, JoaiUrls, NATIVE_AUTH_TOKEN_PARAM, NativeApps, OG_IMAGE_CONFIG, OG_IMAGE_HEIGHT, OG_IMAGE_WIDTH, ORDER_FULFILLMENT_STATUSES, ORDER_POST_CHECKOUT_STATUSES, OUTBOUND_CHANNELS, OgImageColors, PLATFORM_CURRENCY, PeriodTypeLabels, PeriodTypeOptions, PermissionPresetNames, ReturnStatuses, ReturnUpdateStatuses, SkillMediaBindingRole, SkillScope, SkillType, SupportedAppLocales, TeamManageAccess, TeamViewAccess, UNIFIED_MCP_SERVER_NAME, UserPermissions, UserRoles, abbreviateNumber, addressTypeValues, automationSendChannel, buildAgentMcpServerName, buildAgentSetupClipboardText, buildAppSetupClipboardText, buildFeatureSetupClipboardText, buildMcpServerName, canOpenFulfillmentFlow, canTransitionOrderStatus, cartLineTotal, cartPayableTotal, createCursorMcpInstallLink, defaultInviteTeamRole, documentShareUrl, firstValidationMessage, formatAddressSnapshotLines, fulfillmentMethodValues, fulfillmentStatusValues, getAgentSetupPromptUrl, getAgentsBaseUrl, getApiBaseUrl, getAppBaseUrl, getAssetAppLogoUrl, getAssetChainLogoUrl, getAssetPartnerLogoUrl, getAssetTokenLogoUrl, getAssetWalletLogoUrl, getCortexBaseUrl, getDigestBaseUrl, getDocumentsBaseUrl, getEditableOrderStatuses, getFormsBaseUrl, getFulfillmentFlowAction, getFulfillmentFlowStepperIndex, getGenBaseUrl, getInvoiceEditableStatuses, getLoginUrl, getMcpServerAgentUrl, getMcpServerUrl, getPickupEditableStatuses, getPickupNextAction, getShippingEditableStatuses, getSiteUrl, getSitesBaseUrl, getSitesRootDomain, getStoreBaseUrl, getWarpScreenshotUrl, hasAllPermissions, hasAllTeamPermissions, hasAnyPermissions, hasPermission, hasTeamPermission, integrationSlugForChannel, inviteableTeamRoles, isAutomationSendChannelId, isCampaignChannelId, isCompleteAddressInput, isContactMessageAction, isContactMessageWarpId, isFileFormatAudio, isFileFormatImage, isFileFormatVideo, isNativeApp, isNativeAppAccessible, isNativeAppGated, isNativeAppLocked, isOrderCanceled, isOrderInFulfillment, isOrderPending, isOrderPostCheckout, isPickupOrderReady, isPickupReady, isSupportedAppLocale, isTeamFeatureAccessible, isTeamFeatureGated, isTeamFeatureLocked, isUnifiedMcpUrl, isUserRole, localize, nativeAppSlugs, normalizeAutomationActionType, ogImageUrl, outboundChannel, permissionPresetRules, resolveAccessCatalog, resolveAgentMcpUrl, resolveConnectMcpUrl, resolveFulfillmentFlowStep, resolveOrderStatusDisplay, resolveTeamCurrency, resolveWarpText, returnStatusValues, returnUpdateStatusValues, sanitizeAlphanumeric, sanitizeNumeric, slugifyMcpSegment, teamCategories, toCurrencyDisplay, toHexEncodedNonce, toNameInitials, toNftId, toPreviewText, userPermissionValues, userRoleValues, validationMessageFor, withRetry };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@joai/core",
3
- "version": "4.15.4",
3
+ "version": "4.15.6",
4
4
  "description": "JoAi shared types, HTTP service, and config",
5
5
  "license": "MIT",
6
6
  "type": "module",