@joai/core 4.8.0 → 4.11.0

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
@@ -27,7 +27,7 @@ declare const getMcpServerUrl: (env: AppEnv) => string;
27
27
  declare const getMcpServerAgentUrl: (env: AppEnv, agent: string) => string;
28
28
  declare const getSitesBaseUrl: (env: AppEnv) => "http://sites.joai--api.test:3007" | "https://devnet-sites.joai.ai" | "https://testnet-sites.joai.ai" | "https://sites.joai.ai";
29
29
  declare const getSitesRootDomain: (env: AppEnv) => string;
30
- declare const getSiteUrl: (env: AppEnv, teamSlug: string, brandSlug: string) => string;
30
+ declare const getSiteUrl: (env: AppEnv, teamSlug: string, slug: string) => string;
31
31
  //#endregion
32
32
  //#region src/config/constants.d.ts
33
33
  declare const JoaiUrls: {
@@ -51,6 +51,7 @@ interface IHttpService {
51
51
  onUnauthorized: (response: IAppResponse<any>) => void;
52
52
  onSuccessfulResponse: (response: IAppResponse<any>) => void;
53
53
  onMaintenanceMode: (response: IAppResponse<any>) => void;
54
+ onTooManyRequests: (response: IAppResponse<any>) => void;
54
55
  get: <T>(url: string, options?: IRequestOptions) => Promise<IAppResponse<T>>;
55
56
  post: <T>(url: string, data?: any, options?: IRequestOptions) => Promise<IAppResponse<T>>;
56
57
  put: <T>(url: string, data?: any, options?: IRequestOptions) => Promise<IAppResponse<T>>;
@@ -483,6 +484,37 @@ type ContactCreatePayload = ContactFormData & {
483
484
  name: string;
484
485
  wallets?: WalletList;
485
486
  };
487
+ 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';
488
+ type ContactRelationCategory = 'family' | 'organization' | 'business' | 'referral';
489
+ type ContactRelationDirection = 'outgoing' | 'incoming';
490
+ type ContactRelationContact = {
491
+ id: string;
492
+ name: string;
493
+ avatar: string | null;
494
+ company: string | null;
495
+ title: string | null;
496
+ };
497
+ type ContactRelation = {
498
+ id: string;
499
+ type: ContactRelationType;
500
+ category: ContactRelationCategory;
501
+ direction: ContactRelationDirection;
502
+ contact: ContactRelationContact;
503
+ meta: Record<string, JsonValue> | null;
504
+ notes: string | null;
505
+ createdAt: string;
506
+ };
507
+ type ContactRelationPayload = {
508
+ relatedContactId: string;
509
+ type: ContactRelationType;
510
+ notes?: string;
511
+ meta?: Record<string, JsonValue>;
512
+ };
513
+ type ContactRelationUpdatePayload = {
514
+ type?: ContactRelationType;
515
+ notes?: string;
516
+ meta?: Record<string, JsonValue>;
517
+ };
486
518
  //#endregion
487
519
  //#region src/media/types.d.ts
488
520
  type AppFileType = 'abi' | 'pdf' | 'image' | 'video' | 'json';
@@ -715,6 +747,7 @@ declare const NativeApps: {
715
747
  readonly News: "news";
716
748
  readonly Sites: "sites";
717
749
  readonly Contracts: "contracts";
750
+ readonly Artifacts: "artifacts";
718
751
  };
719
752
  type NativeApp = (typeof NativeApps)[keyof typeof NativeApps];
720
753
  declare const nativeAppSlugs: NativeApp[];
@@ -1159,11 +1192,11 @@ type Product = {
1159
1192
  media?: Media[];
1160
1193
  };
1161
1194
  type OrderItem = {
1162
- id: string;
1195
+ id: string | null;
1163
1196
  name: string;
1164
1197
  quantity: number;
1165
1198
  unitPrice: number;
1166
- type: 'product-variation' | 'service' | 'coupon';
1199
+ type: 'product-variation' | 'service' | 'coupon' | 'custom';
1167
1200
  digital?: boolean | null;
1168
1201
  sellerTeamId?: string | null;
1169
1202
  };
@@ -1187,9 +1220,12 @@ type Order = {
1187
1220
  justCreated?: boolean;
1188
1221
  createdAt: string;
1189
1222
  invoiceDate: string;
1223
+ serviceDate: string;
1190
1224
  meta: Record<string, JsonValue> | null;
1191
1225
  contactId: string | null;
1192
1226
  contact?: Contact | null;
1227
+ invoiceContactId?: string | null;
1228
+ invoiceContact?: Contact | null;
1193
1229
  source: OrderSource | null;
1194
1230
  context: OrderContext | null;
1195
1231
  paymentMode: string | null;
@@ -1205,6 +1241,7 @@ type Order = {
1205
1241
  } | null;
1206
1242
  shippingFee?: number;
1207
1243
  fulfillments?: Fulfillment[];
1244
+ returns?: Return[];
1208
1245
  subscription?: Subscription | null;
1209
1246
  configuration?: OrderConfigurationItem[];
1210
1247
  items: OrderItem[];
@@ -1316,7 +1353,7 @@ type Skill = {
1316
1353
  };
1317
1354
  //#endregion
1318
1355
  //#region src/integration/types.d.ts
1319
- type IntegrationType = 'none' | 'webhook' | 'api-token' | 'telegram' | 'slack' | 'whatsapp' | 'whatsapp-personal' | 'twilio' | 'sms' | 'n8n' | 'apple-health' | 'mcp' | 'x' | 'xchat' | 'instagram' | 'grok' | 'email' | 'calendar' | 'embed' | 'discord' | 'github' | 'push' | 'sentry' | 'readwise';
1356
+ type IntegrationType = 'none' | 'webhook' | 'api-token' | 'telegram' | 'slack' | 'whatsapp' | 'whatsapp-personal' | 'twilio' | 'sms' | 'n8n' | 'apple-health' | 'mcp' | 'x' | 'xchat' | 'instagram' | 'grok' | 'cloudflare' | 'email' | 'calendar' | 'embed' | 'discord' | 'github' | 'push' | 'sentry' | 'readwise';
1320
1357
  type IntegrationDetails = {
1321
1358
  type: IntegrationType;
1322
1359
  name: string;
@@ -1951,6 +1988,83 @@ type PaginatedResponse<T> = {
1951
1988
  last_page: number;
1952
1989
  };
1953
1990
  //#endregion
1991
+ //#region src/artifact/types.d.ts
1992
+ type ArtifactType = 'agreement' | 'offer' | 'concept' | 'update' | 'demo' | 'file' | 'other';
1993
+ type ArtifactStatus = 'draft' | 'ready' | 'sent' | 'archived';
1994
+ type ArtifactDeliverIntegration = 'email' | 'sms' | 'whatsapp';
1995
+ type ArtifactLink = {
1996
+ url: string;
1997
+ label?: string | null;
1998
+ };
1999
+ type ArtifactBlockType = 'heading' | 'richText' | 'metrics' | 'table' | 'callout' | 'actions' | 'media' | 'divider';
2000
+ type ArtifactBlock = {
2001
+ id: string;
2002
+ type: ArtifactBlockType;
2003
+ data: Record<string, unknown>;
2004
+ };
2005
+ type ArtifactContactSummary = {
2006
+ id: string;
2007
+ name: string | null;
2008
+ email: string | null;
2009
+ phone: string | null;
2010
+ };
2011
+ type Artifact = {
2012
+ id: string;
2013
+ type: ArtifactType;
2014
+ status: ArtifactStatus;
2015
+ title: string;
2016
+ summary: string | null;
2017
+ blocks: ArtifactBlock[] | null;
2018
+ url: string | null;
2019
+ password: string | null;
2020
+ links: ArtifactLink[];
2021
+ media: Media[];
2022
+ meta: Record<string, unknown> | null;
2023
+ contactId: string | null;
2024
+ orderId: string | null;
2025
+ contact?: ArtifactContactSummary;
2026
+ deliveredAt: string | null;
2027
+ createdAt: string;
2028
+ updatedAt: string;
2029
+ };
2030
+ type ArtifactCreatePayload = {
2031
+ title: string;
2032
+ type: ArtifactType;
2033
+ status?: ArtifactStatus;
2034
+ summary?: string;
2035
+ blocks?: ArtifactBlock[];
2036
+ url?: string;
2037
+ password?: string;
2038
+ links?: ArtifactLink[];
2039
+ extraLinkUrl?: string;
2040
+ extraLinkLabel?: string;
2041
+ media?: string[];
2042
+ meta?: Record<string, unknown>;
2043
+ contactId?: string;
2044
+ orderId?: string;
2045
+ };
2046
+ type ArtifactUpdatePayload = Omit<Partial<ArtifactCreatePayload>, 'blocks'> & {
2047
+ blocks?: ArtifactBlock[] | null;
2048
+ };
2049
+ type ArtifactDeliverPayload = {
2050
+ artifactIds: string[];
2051
+ message: string;
2052
+ integration: ArtifactDeliverIntegration;
2053
+ subject?: string;
2054
+ contactIds?: string[];
2055
+ agentId?: string;
2056
+ };
2057
+ type ArtifactDelivery = {
2058
+ id: string;
2059
+ contactId: string;
2060
+ integration: ArtifactDeliverIntegration;
2061
+ subject: string | null;
2062
+ message: string;
2063
+ artifactIds?: string[];
2064
+ deliveredAt: string;
2065
+ createdAt: string;
2066
+ };
2067
+ //#endregion
1954
2068
  //#region src/service/types.d.ts
1955
2069
  type Service = {
1956
2070
  id: string;
@@ -2691,6 +2805,21 @@ declare const slugifyMcpSegment: (value: string) => string;
2691
2805
  declare const buildMcpServerName: (slug: string, teamName?: string) => string;
2692
2806
  declare const buildAgentMcpServerName: (agentName: string, teamName?: string) => string;
2693
2807
  //#endregion
2808
+ //#region src/metric/types.d.ts
2809
+ type MetricSource = 'cloudflare';
2810
+ type Metric = {
2811
+ key: string;
2812
+ value: number;
2813
+ unit: string;
2814
+ };
2815
+ type MetricsResult = {
2816
+ source: MetricSource;
2817
+ resource: string;
2818
+ from: string;
2819
+ to: string;
2820
+ metrics: Metric[];
2821
+ };
2822
+ //#endregion
2694
2823
  //#region src/memory/types.d.ts
2695
2824
  type Memory = {
2696
2825
  id: string;
@@ -3080,7 +3209,7 @@ type WarpCloudExecutable = {
3080
3209
  type WarpBatchItem = {
3081
3210
  warpId: string;
3082
3211
  warpRef: string;
3083
- thought: string;
3212
+ thought: string | null;
3084
3213
  inputs: string[];
3085
3214
  };
3086
3215
  type WarpBatchable = {
@@ -3633,9 +3762,14 @@ type SiteAgent = {
3633
3762
  };
3634
3763
  type Site = {
3635
3764
  id: number;
3636
- brandSlug: string;
3765
+ slug: string;
3766
+ brandSlug: string | null;
3637
3767
  customDomain: string | null;
3638
3768
  enabled: boolean;
3769
+ contactId?: string | null;
3770
+ metricsSource?: string | null;
3771
+ metricsResource?: string | null;
3772
+ monthlyReport?: boolean;
3639
3773
  team: SiteTeam | null;
3640
3774
  agent: SiteAgent | null;
3641
3775
  settings: Record<string, JsonValue>;
@@ -3835,7 +3969,7 @@ type LoyaltyMember = {
3835
3969
  };
3836
3970
  //#endregion
3837
3971
  //#region src/segment/types.d.ts
3838
- type SegmentConditionType = 'tag' | 'has_email' | 'has_phone' | 'has_user' | 'last_purchase_after' | 'last_purchase_before' | 'total_order_amount' | 'order_count_at_least' | 'never_purchased' | 'avg_order_value_at_least' | 'last_contact_after' | 'last_contact_before' | 'waiting_on' | 'created_after' | 'created_before' | 'email_contains';
3972
+ type SegmentConditionType = 'tag' | 'has_email' | 'has_phone' | 'has_user' | 'last_purchase_after' | 'last_purchase_before' | 'total_order_amount' | 'order_count_at_least' | 'never_purchased' | 'avg_order_value_at_least' | 'last_contact_after' | 'last_contact_before' | 'waiting_on' | 'created_after' | 'created_before' | 'email_contains' | 'prop' | 'marketing_opt_out';
3839
3973
  type SegmentCondition = {
3840
3974
  type: SegmentConditionType;
3841
3975
  value: string | boolean;
@@ -3868,10 +4002,24 @@ type SegmentCountResult = {
3868
4002
  //#endregion
3869
4003
  //#region src/campaign/types.d.ts
3870
4004
  type CampaignChannel = 'email' | 'whatsapp' | 'sms' | 'push';
3871
- type CampaignStatus = 'draft' | 'pending' | 'approved' | 'rejected' | 'sending' | 'completed' | 'failed';
4005
+ type CampaignStatus = 'draft' | 'pending' | 'approved' | 'rejected' | 'scheduled' | 'sending' | 'completed' | 'failed';
3872
4006
  type CampaignCategory = 'MARKETING' | 'UTILITY' | 'AUTHENTICATION';
3873
4007
  type CampaignSkipReason = 'pending_consent' | 'opted_out' | 'missing_channel' | 'approval_skipped';
3874
4008
  type CampaignSkipReasons = Record<CampaignSkipReason, number>;
4009
+ type CampaignRecipientStatus = 'sent' | 'failed' | 'skipped' | 'pending';
4010
+ type CampaignRecipient = {
4011
+ id: string;
4012
+ name: string | null;
4013
+ email: string | null;
4014
+ phone: string | null;
4015
+ status: CampaignRecipientStatus;
4016
+ error: string | null;
4017
+ skipReason: CampaignSkipReason | null;
4018
+ retryable: boolean;
4019
+ sentAt: string | null;
4020
+ openedAt: string | null;
4021
+ clickedAt: string | null;
4022
+ };
3875
4023
  type CampaignAudiencePreview = {
3876
4024
  total: number;
3877
4025
  sendable: number;
@@ -3893,9 +4041,15 @@ type Campaign = {
3893
4041
  channel: CampaignChannel;
3894
4042
  subject: string | null;
3895
4043
  content: string;
4044
+ contentHtml?: boolean;
4045
+ scheduledAt?: string | null;
4046
+ openedCount?: number;
4047
+ clickedCount?: number;
3896
4048
  approval: CampaignApproval;
3897
4049
  agent: AgentSimple | null;
3898
4050
  tags: string[];
4051
+ segmentId?: string | null;
4052
+ contactIds?: string[];
3899
4053
  status: CampaignStatus;
3900
4054
  totalCount: number;
3901
4055
  remainingCount: number;
@@ -3912,6 +4066,7 @@ type CampaignCreatePayload = {
3912
4066
  channel: CampaignChannel;
3913
4067
  subject?: string;
3914
4068
  content: string;
4069
+ contentHtml?: boolean;
3915
4070
  language?: string;
3916
4071
  category?: CampaignCategory;
3917
4072
  templateParams?: Record<string, string>;
@@ -3925,11 +4080,15 @@ type CampaignUpdatePayload = {
3925
4080
  name: string;
3926
4081
  subject?: string;
3927
4082
  content: string;
4083
+ contentHtml?: boolean;
3928
4084
  language?: string;
3929
4085
  category?: CampaignCategory;
3930
4086
  templateParams?: Record<string, string>;
3931
4087
  aiParams?: Record<string, string>;
3932
4088
  agentId?: string;
4089
+ tags?: string[];
4090
+ contactIds?: string[];
4091
+ segmentId?: string;
3933
4092
  };
3934
4093
  type CampaignAudiencePreviewPayload = {
3935
4094
  campaignId: string;
@@ -3943,10 +4102,12 @@ type CampaignStats = {
3943
4102
  totalCampaigns: number;
3944
4103
  draftCampaigns: number;
3945
4104
  totalSent: number;
4105
+ totalOpened?: number;
4106
+ totalClicked?: number;
3946
4107
  };
3947
4108
  //#endregion
3948
4109
  //#region src/update/types.d.ts
3949
- type UpdateType = 'deal' | 'event' | 'news';
4110
+ type UpdateType = 'deal' | 'event' | 'news' | 'article';
3950
4111
  type UpdateStatus = 'draft' | 'published' | 'archived';
3951
4112
  type UpdateRelation = 'team';
3952
4113
  type Update = {
@@ -3982,6 +4143,7 @@ type UpdateStats = {
3982
4143
  dealsCount: number;
3983
4144
  eventsCount: number;
3984
4145
  newsCount: number;
4146
+ articlesCount: number;
3985
4147
  publishedCount: number;
3986
4148
  draftCount: number;
3987
4149
  archivedCount: number;
@@ -4259,4 +4421,4 @@ type CliSessionStatus = {
4259
4421
  meta: CliSessionMeta | null;
4260
4422
  };
4261
4423
  //#endregion
4262
- export { 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, AgentWalletMode, AggregatedRoute, AiCostEntry, AiCostsResponse, AiCostsSummary, Alert, ApiToken, AppAccessRule, AppEnv, AppFile, AppFileType, AppIngestion, AppSetupTarget, AppendKvEntryResult, AppointmentAvailability, AppointmentAvailabilityService, AppointmentAvailabilitySlot, AppointmentBooking, AppointmentBookingContext, AppointmentPolicy, AppointmentPolicySync, AppointmentRequest, AppointmentSlot, AuthUser, BillingManageAccess, Blueprint, BlueprintOnboardingStep, BlueprintRedirect, BlueprintSettings, BlueprintShortcut, BlueprintTask, BlueprintTeam, BoardSummaryViewable, BookmarkEntry, BrandBackend, BrandIntegration, BrandIntegrationAction, BrandIntegrationProvider, BrandSearchHit, BrandSiteConfig, BrandSourceConfig, Budget, ByokProviderConfig, ByokProviderName, ByokProviders, CalendarProvider, CalendarStatus, Campaign, CampaignApproval, CampaignAudiencePreview, CampaignAudiencePreviewPayload, CampaignCategory, CampaignChannel, CampaignCreatePayload, 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, 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, FileInfo, FileMetadata, Flow, FlowCategory, FlowInputMapping, FlowStatus, FlowStep, Fulfillment, 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, 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, OfficeAgent, OfficeEntity, OfficeEntityKind, OfficeLiveOverrides, OfficeMember, OfficeSnapshot, OfficeStatus, OfficeStatusFilter, OfficeTypeFilter, OgImageColors, OgImageParams, OgImageType, Order, OrderConfigurationItem, OrderContext, OrderItem, OrderSource, OrderStatus, OrderType, PaginatedResponse, Pass, PatchContentInput, PaymentAccount, PaymentAccountOnboarding, PaymentProvider, PayoutEntry, PeriodTypeLabels, PeriodTypeOptions, PermissionConfigType, PermissionPresetName, PermissionPresetNames, PersonaQuestionable, 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, ShippingRate, ShippingZone, Shortcut, Site, SiteAgent, SiteBrand, SiteRoute, SiteTeam, Skill, SkillMediaBindingRole, SkillMediaBindingRoleValue, SkillScope, SkillScopeValue, SkillType, SkillTypeValue, SocialAuthProvider, SocialBot, SocialPlatform, 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, TeamEarning, TeamEarningsBalance, TeamFeature, TeamFeatureAccess, TeamFeatureArea, TeamFeatureUsage, TeamManageAccess, TeamMember, TeamMeta, 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, buildAgentMcpServerName, buildAgentSetupClipboardText, buildAppSetupClipboardText, buildMcpServerName, cartLineTotal, createCursorMcpInstallLink, defaultInviteTeamRole, fulfillmentMethodValues, fulfillmentStatusValues, getAgentSetupPromptUrl, getAgentsBaseUrl, getApiBaseUrl, getAppBaseUrl, getAssetAppLogoUrl, getAssetChainLogoUrl, getAssetPartnerLogoUrl, getAssetTokenLogoUrl, getAssetWalletLogoUrl, getCortexBaseUrl, getDigestBaseUrl, getFormsBaseUrl, getLoginUrl, getMcpServerAgentUrl, getMcpServerUrl, getSiteUrl, getSitesBaseUrl, getSitesRootDomain, getStoreBaseUrl, getWarpScreenshotUrl, hasAllPermissions, hasAllTeamPermissions, hasAnyPermissions, hasPermission, hasTeamPermission, inviteableTeamRoles, isCompleteAddressInput, isFileFormatAudio, isFileFormatImage, isFileFormatVideo, isNativeApp, isNativeAppAccessible, isNativeAppGated, isNativeAppLocked, isTeamFeatureAccessible, isTeamFeatureGated, isTeamFeatureLocked, isUnifiedMcpUrl, isUserRole, localize, nativeAppSlugs, ogImageUrl, permissionPresetRules, resolveAccessCatalog, resolveAgentMcpUrl, resolveConnectMcpUrl, resolveWarpText, returnStatusValues, returnUpdateStatusValues, sanitizeAlphanumeric, sanitizeNumeric, slugifyMcpSegment, teamCategories, toCurrencyDisplay, toHexEncodedNonce, toNameInitials, toNftId, toPreviewText, userPermissionValues, userRoleValues, withRetry };
4424
+ export { 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, 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, BillingManageAccess, Blueprint, BlueprintOnboardingStep, BlueprintRedirect, BlueprintSettings, BlueprintShortcut, BlueprintTask, BlueprintTeam, BoardSummaryViewable, BookmarkEntry, BrandBackend, BrandIntegration, BrandIntegrationAction, BrandIntegrationProvider, BrandSearchHit, BrandSiteConfig, BrandSourceConfig, Budget, ByokProviderConfig, ByokProviderName, ByokProviders, CalendarProvider, CalendarStatus, Campaign, CampaignApproval, CampaignAudiencePreview, CampaignAudiencePreviewPayload, CampaignCategory, CampaignChannel, 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, FileInfo, FileMetadata, Flow, FlowCategory, FlowInputMapping, FlowStatus, FlowStep, Fulfillment, 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, OfficeAgent, OfficeEntity, OfficeEntityKind, OfficeLiveOverrides, OfficeMember, OfficeSnapshot, OfficeStatus, OfficeStatusFilter, OfficeTypeFilter, OgImageColors, OgImageParams, OgImageType, Order, OrderConfigurationItem, OrderContext, OrderItem, OrderSource, OrderStatus, OrderType, PaginatedResponse, Pass, PatchContentInput, PaymentAccount, PaymentAccountOnboarding, PaymentProvider, PayoutEntry, PeriodTypeLabels, PeriodTypeOptions, PermissionConfigType, PermissionPresetName, PermissionPresetNames, PersonaQuestionable, 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, ShippingRate, ShippingZone, Shortcut, Site, SiteAgent, SiteBrand, SiteRoute, SiteTeam, Skill, SkillMediaBindingRole, SkillMediaBindingRoleValue, SkillScope, SkillScopeValue, SkillType, SkillTypeValue, SocialAuthProvider, SocialBot, SocialPlatform, 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, TeamEarning, TeamEarningsBalance, TeamFeature, TeamFeatureAccess, TeamFeatureArea, TeamFeatureUsage, TeamManageAccess, TeamMember, TeamMeta, 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, buildAgentMcpServerName, buildAgentSetupClipboardText, buildAppSetupClipboardText, buildMcpServerName, cartLineTotal, createCursorMcpInstallLink, defaultInviteTeamRole, fulfillmentMethodValues, fulfillmentStatusValues, getAgentSetupPromptUrl, getAgentsBaseUrl, getApiBaseUrl, getAppBaseUrl, getAssetAppLogoUrl, getAssetChainLogoUrl, getAssetPartnerLogoUrl, getAssetTokenLogoUrl, getAssetWalletLogoUrl, getCortexBaseUrl, getDigestBaseUrl, getFormsBaseUrl, getLoginUrl, getMcpServerAgentUrl, getMcpServerUrl, getSiteUrl, getSitesBaseUrl, getSitesRootDomain, getStoreBaseUrl, getWarpScreenshotUrl, hasAllPermissions, hasAllTeamPermissions, hasAnyPermissions, hasPermission, hasTeamPermission, inviteableTeamRoles, isCompleteAddressInput, isFileFormatAudio, isFileFormatImage, isFileFormatVideo, isNativeApp, isNativeAppAccessible, isNativeAppGated, isNativeAppLocked, isTeamFeatureAccessible, isTeamFeatureGated, isTeamFeatureLocked, isUnifiedMcpUrl, isUserRole, localize, nativeAppSlugs, ogImageUrl, permissionPresetRules, resolveAccessCatalog, resolveAgentMcpUrl, resolveConnectMcpUrl, resolveWarpText, returnStatusValues, returnUpdateStatusValues, sanitizeAlphanumeric, sanitizeNumeric, slugifyMcpSegment, teamCategories, toCurrencyDisplay, toHexEncodedNonce, toNameInitials, toNftId, toPreviewText, userPermissionValues, userRoleValues, withRetry };
package/dist/index.mjs CHANGED
@@ -56,7 +56,7 @@ const getSitesRootDomain = (env) => {
56
56
  if (env === "testnet") return "testnet-sites.joai.ai";
57
57
  return "sites.joai.ai";
58
58
  };
59
- const getSiteUrl = (env, teamSlug, brandSlug) => `https://${getSitesRootDomain(env)}/${teamSlug}/${brandSlug}`;
59
+ const getSiteUrl = (env, teamSlug, slug) => `https://${getSitesRootDomain(env)}/${teamSlug}/${slug}`;
60
60
  //#endregion
61
61
  //#region src/auth/token.ts
62
62
  /** One-time native/deep-link handoff fragment key (exchanged for a Bearer via POST). */
@@ -519,7 +519,8 @@ const NativeApps = {
519
519
  Campaigns: "campaigns",
520
520
  News: "news",
521
521
  Sites: "sites",
522
- Contracts: "contracts"
522
+ Contracts: "contracts",
523
+ Artifacts: "artifacts"
523
524
  };
524
525
  const nativeAppSlugs = Object.values(NativeApps);
525
526
  const isNativeApp = (value) => typeof value === "string" && nativeAppSlugs.includes(value);
@@ -80,6 +80,7 @@ interface IHttpService {
80
80
  onUnauthorized: (response: IAppResponse<any>) => void;
81
81
  onSuccessfulResponse: (response: IAppResponse<any>) => void;
82
82
  onMaintenanceMode: (response: IAppResponse<any>) => void;
83
+ onTooManyRequests: (response: IAppResponse<any>) => void;
83
84
  get: <T>(url: string, options?: IRequestOptions) => Promise<IAppResponse<T>>;
84
85
  post: <T>(url: string, data?: any, options?: IRequestOptions) => Promise<IAppResponse<T>>;
85
86
  put: <T>(url: string, data?: any, options?: IRequestOptions) => Promise<IAppResponse<T>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@joai/core",
3
- "version": "4.8.0",
3
+ "version": "4.11.0",
4
4
  "description": "JoAi shared types, HTTP service, and config",
5
5
  "license": "MIT",
6
6
  "type": "module",