@series-inc/rundot-game-sdk 5.14.3 → 5.14.4

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.
@@ -138,8 +138,12 @@ interface InboundMethodIds {
138
138
  declare class RpcInboundStorageApi implements InboundStorageApi {
139
139
  private readonly rpcClient;
140
140
  private readonly methodIds;
141
- private readonly extraBodyFields;
142
- constructor(rpcClient: RpcClient, methodIds: InboundMethodIds, extraBodyFields: Record<string, string>);
141
+ private readonly scope;
142
+ constructor(rpcClient: RpcClient, methodIds: InboundMethodIds, scope: {
143
+ targetAppId?: string;
144
+ namespace: string;
145
+ });
146
+ private body;
143
147
  listSources(): Promise<string[]>;
144
148
  getAllFromSource(sourceAppId: string): Promise<Record<string, string>>;
145
149
  get(sourceAppId: string, key: string): Promise<string | null>;
@@ -210,12 +214,30 @@ interface ScheduleLocalNotification {
210
214
  payload?: Record<string, any>;
211
215
  trigger?: NotificationTriggerInput;
212
216
  }
217
+ type RCSAvailabilityReason = 'not_subscribed' | 'no_phone' | 'feature_disabled' | 'unknown';
218
+ interface RCSAvailabilityStatus {
219
+ available: boolean;
220
+ reason?: RCSAvailabilityReason;
221
+ }
222
+ interface ScheduleRCSInput {
223
+ title: string;
224
+ body: string;
225
+ ctaUrl?: string;
226
+ image?: string;
227
+ }
228
+ type ScheduleRCSStatus = 'pending' | 'sent' | 'dry_run';
229
+ interface ScheduleRCSResult {
230
+ scheduleId: string;
231
+ status: ScheduleRCSStatus;
232
+ }
213
233
  interface NotificationsApi {
214
234
  scheduleAsync(title: string, body: string, seconds: number, notificationId?: string, options?: ScheduleNotificationOptions): Promise<string | null>;
215
235
  cancelNotification(notificationId: string): Promise<boolean>;
216
236
  getAllScheduledLocalNotifications(): Promise<ScheduleLocalNotification[]>;
217
237
  isLocalNotificationsEnabled(): Promise<boolean>;
218
238
  setLocalNotificationsEnabled(enabled: boolean): Promise<boolean>;
239
+ getRCSAvailableAsync(): Promise<RCSAvailabilityStatus>;
240
+ scheduleRCSAsync(input: ScheduleRCSInput): Promise<ScheduleRCSResult>;
219
241
  }
220
242
 
221
243
  interface ShowToastOptions {
@@ -272,6 +294,19 @@ interface EnvironmentApi {
272
294
  getEnvironment(): EnvironmentInfo;
273
295
  }
274
296
 
297
+ /**
298
+ * Result of a successful or cancelled `addToHomeScreen` call.
299
+ */
300
+ interface AddToHomeScreenResult {
301
+ /**
302
+ * `true` if the user accepted the install prompt and the icon was pinned
303
+ * (or, on platforms that don't surface acceptance back to us, if the
304
+ * prompt flow was successfully launched). `false` if the user cancelled
305
+ * the confirmation modal, the system install prompt, or the platform
306
+ * cannot present a prompt right now.
307
+ */
308
+ added: boolean;
309
+ }
275
310
  /**
276
311
  * System API provides access to device and environment information.
277
312
  * This is a unified namespace for system-level configuration data.
@@ -305,6 +340,39 @@ interface SystemApi {
305
340
  * @returns true if on web platform
306
341
  */
307
342
  isWeb(): boolean;
343
+ /**
344
+ * Check whether the current platform can present an "Add to Home Screen"
345
+ * prompt for the running game right now.
346
+ *
347
+ * Returns `false` when:
348
+ * - the host has not surfaced a deferred install prompt (browser hasn't
349
+ * decided the site is installable, or the user has already installed),
350
+ * - the platform is iOS Safari (no programmatic install API),
351
+ * - the running game has no thumbnail,
352
+ * - a per-session cooldown is active because the user already dismissed
353
+ * the prompt for this game during this app session.
354
+ *
355
+ * Games should call this before showing their own "pin this game" CTA so
356
+ * the CTA isn't displayed when it would no-op.
357
+ */
358
+ canAddToHomeScreen(): Promise<boolean>;
359
+ /**
360
+ * Show the host's "Add to Home Screen" confirmation modal and, on confirm,
361
+ * trigger the platform install prompt.
362
+ *
363
+ * **Browser constraints**: most browsers only honor an install prompt
364
+ * inside a user-initiated event handler. Call this in direct response to
365
+ * a user tap, not from a timer, async callback, or cutscene. If called
366
+ * outside a user gesture the call resolves `{ added: false }`.
367
+ *
368
+ * **iOS**: resolves `{ added: false }` without showing UI — Safari does
369
+ * not expose a programmatic install API.
370
+ *
371
+ * @returns `{ added: true }` if the user accepted the install prompt,
372
+ * `{ added: false }` if they cancelled or the prompt couldn't be
373
+ * shown.
374
+ */
375
+ addToHomeScreen(): Promise<AddToHomeScreenResult>;
308
376
  }
309
377
 
310
378
  type SubPath = string;
@@ -354,13 +422,38 @@ interface TimeApi {
354
422
  getFutureTimeAsync(options?: GetFutureTimeOptions): Promise<number>;
355
423
  }
356
424
 
425
+ type AiTextContent = {
426
+ type: 'text';
427
+ text: string;
428
+ };
429
+ /** Image referenced by URL. OpenAI/DeepSeek accept directly; the proxy fetches and base64-encodes for Anthropic. */
430
+ type AiImageUrlContent = {
431
+ type: 'image_url';
432
+ image_url: {
433
+ /** http(s):// URL or data:image/<type>;base64,<data> URI. */
434
+ url: string;
435
+ /** Optional hint for vision models that support it. */
436
+ detail?: 'low' | 'high' | 'auto';
437
+ };
438
+ };
439
+ /** Image as raw base64 data. */
440
+ type AiImageContent = {
441
+ type: 'image';
442
+ image: {
443
+ format: 'jpeg' | 'png' | 'gif' | 'webp';
444
+ /** Base64-encoded image bytes (no `data:` prefix). */
445
+ data: string;
446
+ };
447
+ };
448
+ type AiContentBlock = AiTextContent | AiImageUrlContent | AiImageContent;
357
449
  interface AiMessage {
358
450
  /**
359
451
  * Depends on the model you are using. Most common is user, system, and assistant.
360
452
  * If you are unsure, look up the specific model you are using.
361
453
  */
362
454
  role: string;
363
- content: string;
455
+ /** Either a plain string or an array of content blocks (text + image) for multimodal messages. */
456
+ content: string | AiContentBlock[];
364
457
  }
365
458
  type AiChatCompletionRequest = {
366
459
  /** Model identifier (e.g., 'gpt-4o', 'claude-3-5-sonnet-20241022') */
@@ -1365,6 +1458,14 @@ interface UgcEntry {
1365
1458
  tags?: string[];
1366
1459
  useCount?: number;
1367
1460
  likeCount?: number;
1461
+ status?: 'active' | 'removed' | 'quarantined';
1462
+ quarantine?: {
1463
+ source: 'auto_moderation' | 'user_reports';
1464
+ reason: string;
1465
+ category?: string;
1466
+ at: number;
1467
+ };
1468
+ reportCount?: number;
1368
1469
  }
1369
1470
  interface UgcCreateParams {
1370
1471
  contentType: string;
@@ -2121,11 +2222,11 @@ interface AttributionApi {
2121
2222
  */
2122
2223
  interface SharedStorageHostApi {
2123
2224
  open(input: {
2124
- appId: string;
2225
+ appId?: string;
2125
2226
  namespace: string;
2126
2227
  }): StorageApi;
2127
2228
  read(input: {
2128
- appId: string;
2229
+ appId?: string;
2129
2230
  namespace: string;
2130
2231
  }): InboundStorageApi;
2131
2232
  }
@@ -2593,11 +2694,11 @@ interface RundotGameAPI {
2593
2694
  */
2594
2695
  sharedStorage: {
2595
2696
  open(input: {
2596
- appId: string;
2697
+ appId?: string;
2597
2698
  namespace: string;
2598
2699
  }): StorageApi;
2599
2700
  read(input: {
2600
- appId: string;
2701
+ appId?: string;
2601
2702
  namespace: string;
2602
2703
  }): InboundStorageApi;
2603
2704
  };
@@ -2710,4 +2811,4 @@ interface AdsApi {
2710
2811
  showInterstitialAd(options?: ShowInterstitialAdOptions): Promise<boolean>;
2711
2812
  }
2712
2813
 
2713
- export { type GetFutureTimeOptions as $, type AnalyticsApi as A, type BatchRecipeRequirementsResult as B, type NotificationsApi as C, type ScheduleLocalNotification as D, type ScheduleNotificationOptions as E, type PopupsApi as F, type ShowToastOptions as G, type Host as H, type ShowInterstitialAdOptions as I, type ShowRewardedAdOptions as J, type ProfileApi as K, type DeviceApi as L, type DeviceInfo as M, type NavigationApi as N, type EnvironmentApi as O, type Profile as P, type QuitOptions as Q, type RundotGameAPI as R, type SimulationRunSummary as S, type EnvironmentInfo as T, type SystemApi as U, type SafeArea as V, type CdnApi as W, type FetchFromCdnOptions as X, type AssetUrlResult as Y, type TimeApi as Z, type ServerTimeData as _, type RecipeRequirementResult as a, type OpenStoreResult as a$, type AiApi as a0, type AiChatCompletionRequest as a1, type AiChatCompletionData as a2, type HapticsApi as a3, HapticFeedbackStyle as a4, type FeaturesApi as a5, type Experiment as a6, type LifecycleApi as a7, type SleepCallback as a8, type Subscription as a9, type GetBatchRecipeRequirements as aA, type TriggerRecipeChainOptions as aB, type RoomDataUpdate as aC, type RoomMessageEvent as aD, type ProposedMoveEvent as aE, RundotGameTransport as aF, type RoomsApi as aG, type CreateRoomOptions as aH, type JoinOrCreateRoomOptions as aI, type JoinOrCreateResult as aJ, type ListRoomsOptions as aK, type UpdateRoomDataOptions as aL, type RoomMessageRequest as aM, type StartRoomGameOptions as aN, type ProposeMoveRequest as aO, type ProposeMoveResult as aP, type ValidateMoveVerdict as aQ, type ValidateMoveResult as aR, type RoomSubscriptionOptions as aS, type LoggingApi as aT, type IapApi as aU, type SpendCurrencyOptions as aV, type SpendCurrencyResult as aW, type SubscriptionTier as aX, type RunSubscriptionsResponse as aY, type SubscriptionInterval as aZ, type PurchaseSubscriptionResponse as a_, type AwakeCallback as aa, type PauseCallback as ab, type ResumeCallback as ac, type QuitCallback as ad, type BackButtonCallback as ae, type SimulationApi as af, type SimulationSlotValidationResult as ag, type SimulationBatchOperation as ah, type SimulationBatchOperationsResult as ai, type SimulationAvailableItem as aj, type SimulationPowerPreview as ak, type SimulationSlotMutationResult as al, type SimulationSlotContainer as am, type SimulationAssignment as an, type SimulationState as ao, type ExecuteRecipeOptions as ap, type ExecuteRecipeResponse as aq, type CollectRecipeResult as ar, type ResetStateOptions as as, type ResetStateResult as at, type GetActiveRunsOptions as au, type ExecuteScopedRecipeOptions as av, type ExecuteScopedRecipeResult as aw, type GetAvailableRecipesOptions as ax, type GetAvailableRecipesResult as ay, type Recipe as az, type RundotGameSimulationStateResponse as b, type ConnectionState as b$, type LoadEmbeddedAssetsResponse as b0, type SharedAssetsApi as b1, type LeaderboardApi as b2, type ScoreToken as b3, type SubmitScoreParams as b4, type SubmitScoreResult as b5, type GetPagedScoresOptions as b6, type PagedScoresResponse as b7, type PlayerRankOptions as b8, type PlayerRankResult as b9, type AppRole as bA, type AdminUgcBrowseParams as bB, type AdminUgcBrowseResponse as bC, type AdminUgcListReportsParams as bD, type AdminUgcListReportsResponse as bE, type AdminUgcResolveAction as bF, type AdminImageGenBrowseParams as bG, type AdminImageGenBrowseResponse as bH, type AdminImageGenListReportsParams as bI, type AdminImageGenListReportsResponse as bJ, type AdminImageGenResolveAction as bK, type Avatar3dApi as bL, type AssetManifest as bM, type Avatar3dConfig as bN, type ShowEditorOptions as bO, type Avatar3dEdits as bP, type AdsApi as bQ, type ImageGenParams as bR, type ImageGenResult as bS, type SharedStorageHostApi as bT, type MultiplayerApi as bU, type AttributionApi as bV, type InitializationContext as bW, type InitializationOptions as bX, type ServerRoom as bY, type ServerPlayer as bZ, type RoomEvents as b_, type GetPodiumScoresOptions as ba, type PodiumScoresResponse as bb, type PreloaderApi as bc, type SocialApi as bd, type ShareMetadata as be, type ShareLinkResult as bf, type SocialQRCodeOptions as bg, type QRCodeResult as bh, type ShareClickData as bi, type EntitlementApi as bj, type Entitlement as bk, type LedgerEntry as bl, type ShopApi as bm, type StorefrontResponse as bn, type StorefrontItem as bo, type ShopPurchaseResponse as bp, type ShopOrderHistoryResponse as bq, type PromptLoginResult as br, type AccessTier as bs, type AccessGateApi as bt, type ImageGenApi as bu, type UgcApi as bv, type VideoApi as bw, type AppApi as bx, type AdminUgcApi as by, type AdminImageGenApi as bz, type SimulationUpdateType as c, type Protocol as c0, type AiMessage as c1, type Asset as c2, type Category as c3, MockAvatarApi as c4, type SubPath as c5, type IsPlayerSubscribedRequest as c6, type RunSubscription as c7, type PurchaseSubscriptionRequest as c8, type GetSubscriptionsForTierRequest as c9, type SimulationRoomActiveRecipe as cA, type SimulationRoomState as cB, type SimulationBatchOperationAssign as cC, type SimulationBatchOperationRemove as cD, type SimulationBatchOperationResult as cE, RpcSharedAssetsApi as cF, type LoadEmbeddedAssetsRequest as cG, type LeaderboardModeConfig as cH, type LeaderboardPeriodType as cI, type LeaderboardPeriodConfig as cJ, type LeaderboardAntiCheatConfig as cK, type LeaderboardDisplaySettings as cL, type LeaderboardConfig as cM, type LeaderboardEntry as cN, type PodiumScoresContext as cO, type StorefrontCollectionItem as cP, type StorefrontCollection as cQ, type ShopOrder as cR, resolveCollectionItemPrice as cS, type HudInsets as cT, createHost as cU, AccessDeniedError as cV, type AdminUgcEntry as cW, type UgcReport as cX, type ImageGenEntry as cY, type ImageGenReport as cZ, type TimeIntervalTriggerInput as ca, type NotificationTriggerInput as cb, type OnRequestCallback as cc, type OnResponseCallback as cd, type OnNotificationCallback as ce, type RpcTransport as cf, type ImageGenModel as cg, type JoinRoomMatchCriteria as ch, type RoomMessageEventType as ci, type RoomMessagePayload as cj, type ProposedMovePayload as ck, ROOM_GAME_PHASES as cl, type RoomGamePhase as cm, type RundotGameRoomRulesGameState as cn, type RundotGameRoomRules as co, type RundotGameRoomCustomMetadata as cp, type RundotGameRoomPayload as cq, type RoomEnvelopeResponse as cr, type RoomsEnvelopeResponse as cs, type JoinOrCreateRoomEnvelopeResponse as ct, type InboundForKeyEntry as cu, type InboundStorageApi as cv, type InboundMethodIds as cw, RpcInboundStorageApi as cx, type RecipeInfo as cy, type SimulationPersonalState as cz, type SimulationEntityUpdate as d, type SimulationActiveRunsUpdate as e, type SimulationSnapshotUpdate as f, type SimulationUpdateData as g, type SimulationSubscribeOptions as h, type RundotGameSimulationEffect as i, type RundotGameSimulationRecipe as j, type RundotGameSimulationConfig as k, type RecipeRequirementQuery as l, type RundotGameExecuteRecipeOptions as m, type RundotGameExecuteScopedRecipeOptions as n, type RundotGameAvailableRecipe as o, type RundotGameCollectRecipeResult as p, type RundotGameExecuteRecipeResult as q, RundotGameRoom as r, type RpcRequest as s, type RpcResponse as t, type RpcNotification as u, RpcClient as v, type StorageApi as w, type NavigationStackInfo as x, type PushAppOptions as y, type NavigateToGameOptions as z };
2814
+ export { type FetchFromCdnOptions as $, type AnalyticsApi as A, type BatchRecipeRequirementsResult as B, type NotificationsApi as C, type ScheduleLocalNotification as D, type ScheduleNotificationOptions as E, type RCSAvailabilityStatus as F, type ScheduleRCSInput as G, type Host as H, type ScheduleRCSResult as I, type PopupsApi as J, type ShowToastOptions as K, type ShowInterstitialAdOptions as L, type ShowRewardedAdOptions as M, type NavigationApi as N, type ProfileApi as O, type Profile as P, type QuitOptions as Q, type RundotGameAPI as R, type SimulationActiveRunsUpdate as S, type DeviceApi as T, type DeviceInfo as U, type EnvironmentApi as V, type EnvironmentInfo as W, type SystemApi as X, type SafeArea as Y, type AddToHomeScreenResult as Z, type CdnApi as _, type RecipeRequirementQuery as a, type SubscriptionTier as a$, type AssetUrlResult as a0, type TimeApi as a1, type ServerTimeData as a2, type GetFutureTimeOptions as a3, type AiApi as a4, type AiChatCompletionRequest as a5, type AiChatCompletionData as a6, type HapticsApi as a7, HapticFeedbackStyle as a8, type FeaturesApi as a9, type ExecuteScopedRecipeResult as aA, type GetAvailableRecipesOptions as aB, type GetAvailableRecipesResult as aC, type Recipe as aD, type GetBatchRecipeRequirements as aE, type TriggerRecipeChainOptions as aF, type RoomDataUpdate as aG, type RoomMessageEvent as aH, type ProposedMoveEvent as aI, RundotGameTransport as aJ, type RoomsApi as aK, type CreateRoomOptions as aL, type JoinOrCreateRoomOptions as aM, type JoinOrCreateResult as aN, type ListRoomsOptions as aO, type UpdateRoomDataOptions as aP, type RoomMessageRequest as aQ, type StartRoomGameOptions as aR, type ProposeMoveRequest as aS, type ProposeMoveResult as aT, type ValidateMoveVerdict as aU, type ValidateMoveResult as aV, type RoomSubscriptionOptions as aW, type LoggingApi as aX, type IapApi as aY, type SpendCurrencyOptions as aZ, type SpendCurrencyResult as a_, type Experiment as aa, type LifecycleApi as ab, type SleepCallback as ac, type Subscription as ad, type AwakeCallback as ae, type PauseCallback as af, type ResumeCallback as ag, type QuitCallback as ah, type BackButtonCallback as ai, type SimulationApi as aj, type SimulationSlotValidationResult as ak, type SimulationBatchOperation as al, type SimulationBatchOperationsResult as am, type SimulationAvailableItem as an, type SimulationPowerPreview as ao, type SimulationSlotMutationResult as ap, type SimulationSlotContainer as aq, type SimulationAssignment as ar, type SimulationState as as, type ExecuteRecipeOptions as at, type ExecuteRecipeResponse as au, type CollectRecipeResult as av, type ResetStateOptions as aw, type ResetStateResult as ax, type GetActiveRunsOptions as ay, type ExecuteScopedRecipeOptions as az, type RecipeRequirementResult as b, type InitializationOptions as b$, type RunSubscriptionsResponse as b0, type SubscriptionInterval as b1, type PurchaseSubscriptionResponse as b2, type OpenStoreResult as b3, type LoadEmbeddedAssetsResponse as b4, type SharedAssetsApi as b5, type LeaderboardApi as b6, type ScoreToken as b7, type SubmitScoreParams as b8, type SubmitScoreResult as b9, type VideoApi as bA, type AppApi as bB, type AdminUgcApi as bC, type AdminImageGenApi as bD, type AppRole as bE, type AdminUgcBrowseParams as bF, type AdminUgcBrowseResponse as bG, type AdminUgcListReportsParams as bH, type AdminUgcListReportsResponse as bI, type AdminUgcResolveAction as bJ, type AdminImageGenBrowseParams as bK, type AdminImageGenBrowseResponse as bL, type AdminImageGenListReportsParams as bM, type AdminImageGenListReportsResponse as bN, type AdminImageGenResolveAction as bO, type Avatar3dApi as bP, type AssetManifest as bQ, type Avatar3dConfig as bR, type ShowEditorOptions as bS, type Avatar3dEdits as bT, type AdsApi as bU, type ImageGenParams as bV, type ImageGenResult as bW, type SharedStorageHostApi as bX, type MultiplayerApi as bY, type AttributionApi as bZ, type InitializationContext as b_, type GetPagedScoresOptions as ba, type PagedScoresResponse as bb, type PlayerRankOptions as bc, type PlayerRankResult as bd, type GetPodiumScoresOptions as be, type PodiumScoresResponse as bf, type PreloaderApi as bg, type SocialApi as bh, type ShareMetadata as bi, type ShareLinkResult as bj, type SocialQRCodeOptions as bk, type QRCodeResult as bl, type ShareClickData as bm, type EntitlementApi as bn, type Entitlement as bo, type LedgerEntry as bp, type ShopApi as bq, type StorefrontResponse as br, type StorefrontItem as bs, type ShopPurchaseResponse as bt, type ShopOrderHistoryResponse as bu, type PromptLoginResult as bv, type AccessTier as bw, type AccessGateApi as bx, type ImageGenApi as by, type UgcApi as bz, type RundotGameAvailableRecipe as c, type SimulationRoomActiveRecipe as c$, AccessDeniedError as c0, type AdminUgcEntry as c1, type AiContentBlock as c2, type AiImageContent as c3, type AiImageUrlContent as c4, type AiMessage as c5, type AiTextContent as c6, type Asset as c7, type Category as c8, type ConnectionState as c9, type Protocol as cA, type PurchaseSubscriptionRequest as cB, type RCSAvailabilityReason as cC, ROOM_GAME_PHASES as cD, type RecipeInfo as cE, type RoomEnvelopeResponse as cF, type RoomEvents as cG, type RoomGamePhase as cH, type RoomMessageEventType as cI, type RoomMessagePayload as cJ, type RoomsEnvelopeResponse as cK, RpcInboundStorageApi as cL, RpcSharedAssetsApi as cM, type RpcTransport as cN, type RunSubscription as cO, type RundotGameRoomCustomMetadata as cP, type RundotGameRoomPayload as cQ, type RundotGameRoomRules as cR, type RundotGameRoomRulesGameState as cS, type ScheduleRCSStatus as cT, type ServerPlayer as cU, type ServerRoom as cV, type ShopOrder as cW, type SimulationBatchOperationAssign as cX, type SimulationBatchOperationRemove as cY, type SimulationBatchOperationResult as cZ, type SimulationPersonalState as c_, type GetSubscriptionsForTierRequest as ca, type HudInsets as cb, type ImageGenEntry as cc, type ImageGenModel as cd, type ImageGenReport as ce, type InboundForKeyEntry as cf, type InboundMethodIds as cg, type InboundStorageApi as ch, type IsPlayerSubscribedRequest as ci, type JoinOrCreateRoomEnvelopeResponse as cj, type JoinRoomMatchCriteria as ck, type LeaderboardAntiCheatConfig as cl, type LeaderboardConfig as cm, type LeaderboardDisplaySettings as cn, type LeaderboardEntry as co, type LeaderboardModeConfig as cp, type LeaderboardPeriodConfig as cq, type LeaderboardPeriodType as cr, type LoadEmbeddedAssetsRequest as cs, MockAvatarApi as ct, type NotificationTriggerInput as cu, type OnNotificationCallback as cv, type OnRequestCallback as cw, type OnResponseCallback as cx, type PodiumScoresContext as cy, type ProposedMovePayload as cz, type RundotGameCollectRecipeResult as d, type SimulationRoomState as d0, type StorefrontCollection as d1, type StorefrontCollectionItem as d2, type SubPath as d3, type TimeIntervalTriggerInput as d4, type UgcReport as d5, createHost as d6, resolveCollectionItemPrice as d7, type RundotGameExecuteRecipeOptions as e, type RundotGameExecuteRecipeResult as f, type RundotGameExecuteScopedRecipeOptions as g, RundotGameRoom as h, type RundotGameSimulationConfig as i, type RundotGameSimulationEffect as j, type RundotGameSimulationRecipe as k, type RundotGameSimulationStateResponse as l, type SimulationEntityUpdate as m, type SimulationRunSummary as n, type SimulationSnapshotUpdate as o, type SimulationSubscribeOptions as p, type SimulationUpdateData as q, type SimulationUpdateType as r, type RpcRequest as s, type RpcResponse as t, type RpcNotification as u, RpcClient as v, type StorageApi as w, type NavigationStackInfo as x, type PushAppOptions as y, type NavigateToGameOptions as z };
@@ -1,4 +1,4 @@
1
- import { generateId, MockAdminUgcApi, MockAdminImageGenApi, RpcAdsApi, RpcAnalyticsApi, RpcStorageApi, RpcInboundStorageApi, DualEmitStorageApi, RpcAvatarApi, RpcNavigationApi, RpcNotificationsApi, RpcPopupsApi, HostProfileApi, HostDeviceApi, HostEnvironmentApi, HostSystemApi, HostCdnApi, HostTimeApi, RpcHapticsApi, RpcFeaturesApi, RpcLifecycleApi, RpcRoomsApi, RpcLoggingApi, RpcIapApi, RpcPreloaderApi, RpcEntitlementApi, RpcShopApi, RpcVideoApi, RpcSharedAssetsApi, initializeRoomsApi, RpcAccessGateApi, applyAccessGates, WsMultiplayerApi, MockAdsApi, MockLifecycleApi, MockAnalyticsApi, createMockStorageApi, MockAvatarApi, MockNavigationApi, MockNotificationsApi, MockPopupsApi, MockProfileApi, MockDeviceApi, MockEnvironmentApi, MockSystemApi, MockCdnApi, MockTimeApi, MockHapticsApi, MockFeaturesApi, MockLoggingApi, MockIapApi, MockEntitlementApi, MockShopApi, MockVideoApi, MockPreloaderApi, MockSharedAssetsApi, MockAccessGateApi, MockMultiplayerApi } from './chunk-BVAGHPCR.js';
1
+ import { generateId, MockAdminUgcApi, MockAdminImageGenApi, RpcAdsApi, RpcAnalyticsApi, RpcStorageApi, RpcInboundStorageApi, DualEmitStorageApi, RpcAvatarApi, RpcNavigationApi, RpcNotificationsApi, RpcPopupsApi, HostProfileApi, HostDeviceApi, HostEnvironmentApi, HostSystemApi, HostCdnApi, HostTimeApi, RpcHapticsApi, RpcFeaturesApi, RpcLifecycleApi, RpcRoomsApi, RpcLoggingApi, RpcIapApi, RpcPreloaderApi, RpcEntitlementApi, RpcShopApi, RpcVideoApi, RpcAttributionApi, RpcSharedAssetsApi, initializeRoomsApi, RpcAccessGateApi, applyAccessGates, WsMultiplayerApi, MockAdsApi, MockLifecycleApi, MockAnalyticsApi, createMockStorageApi, MockAvatarApi, MockNavigationApi, MockNotificationsApi, MockPopupsApi, MockProfileApi, MockDeviceApi, MockEnvironmentApi, MockSystemApi, MockCdnApi, MockTimeApi, MockHapticsApi, MockFeaturesApi, MockLoggingApi, MockIapApi, MockEntitlementApi, MockShopApi, MockVideoApi, MockAttributionApi, MockPreloaderApi, MockSharedAssetsApi, MockAccessGateApi, MockMultiplayerApi } from './chunk-E3Z7DTKN.js';
2
2
 
3
3
  // src/ai/RpcAiApi.ts
4
4
  var RpcAiApi = class {
@@ -32,11 +32,11 @@ var RpcAiApi = class {
32
32
  // src/ai/MockAiApi.ts
33
33
  var MockAiApi = class {
34
34
  async requestChatCompletionAsync(_request) {
35
- console.warn("[RUN.game SDK] AI completion API not available in mock mode");
35
+ console.warn("[RUN] AI completion API not available in mock mode");
36
36
  throw new Error("AI completion API requires backend connection");
37
37
  }
38
38
  async getAvailableCompletionModels() {
39
- console.warn("[RUN.game SDK] AI models API not available in mock mode");
39
+ console.warn("[RUN] AI models API not available in mock mode");
40
40
  throw new Error("AI models API requires backend connection");
41
41
  }
42
42
  };
@@ -212,6 +212,7 @@ var RpcImageGenApi = class {
212
212
  constructor(rpcClient) {
213
213
  this.rpcClient = rpcClient;
214
214
  }
215
+ rpcClient;
215
216
  async generate(params) {
216
217
  return this.rpcClient.call(
217
218
  "H5_IMAGE_GEN_GENERATE" /* H5_IMAGE_GEN_GENERATE */,
@@ -225,7 +226,7 @@ var RpcImageGenApi = class {
225
226
  // src/imageGen/MockImageGenApi.ts
226
227
  var MockImageGenApi = class {
227
228
  async generate(_params) {
228
- console.warn("[RUN.game SDK] Image generation API not available in mock mode");
229
+ console.warn("[RUN] Image generation API not available in mock mode");
229
230
  throw new Error("Image generation API requires backend connection");
230
231
  }
231
232
  };
@@ -486,13 +487,13 @@ var RpcSimulationApi = class {
486
487
  }
487
488
  handleSimulationUpdate(notification) {
488
489
  if (!notification || !notification.subscriptionId) {
489
- console.warn("[RUN.game SDK] Received malformed simulation update");
490
+ console.warn("[RUN] Received malformed simulation update");
490
491
  return;
491
492
  }
492
493
  const callback = this.subscriptionCallbacks.get(notification.subscriptionId);
493
494
  if (!callback) {
494
495
  console.warn(
495
- "[RUN.game SDK] Received update for unknown subscription:",
496
+ "[RUN] Received update for unknown subscription:",
496
497
  notification.subscriptionId
497
498
  );
498
499
  return;
@@ -500,7 +501,7 @@ var RpcSimulationApi = class {
500
501
  try {
501
502
  callback(notification.updates);
502
503
  } catch (error) {
503
- console.error("[RUN.game SDK] Error in simulation subscription callback", error);
504
+ console.error("[RUN] Error in simulation subscription callback", error);
504
505
  }
505
506
  }
506
507
  ensureValidSubscribeOptions(options) {
@@ -602,7 +603,7 @@ function initializeSimulation(rundotGameApi, host) {
602
603
  }
603
604
 
604
605
  // src/version.ts
605
- var SDK_VERSION = "5.14.3";
606
+ var SDK_VERSION = "5.14.4";
606
607
 
607
608
  // src/leaderboard/utils.ts
608
609
  var HASH_ALGORITHM_WEB_CRYPTO = "SHA-256";
@@ -1093,15 +1094,15 @@ var RpcUgcApi = class {
1093
1094
  // src/ugc/MockUgcApi.ts
1094
1095
  var MockUgcApi = class {
1095
1096
  async create(_params) {
1096
- console.warn("[Venus SDK] UGC API not available in mock mode");
1097
+ console.warn("[RUN] UGC API not available in mock mode");
1097
1098
  throw new Error("UGC API requires backend connection");
1098
1099
  }
1099
1100
  async update(_params) {
1100
- console.warn("[Venus SDK] UGC API not available in mock mode");
1101
+ console.warn("[RUN] UGC API not available in mock mode");
1101
1102
  throw new Error("UGC API requires backend connection");
1102
1103
  }
1103
1104
  async delete(_id) {
1104
- console.warn("[Venus SDK] UGC API not available in mock mode");
1105
+ console.warn("[RUN] UGC API not available in mock mode");
1105
1106
  throw new Error("UGC API requires backend connection");
1106
1107
  }
1107
1108
  async get(_id) {
@@ -1118,19 +1119,19 @@ var MockUgcApi = class {
1118
1119
  }
1119
1120
  // Phase 2: Engagement methods
1120
1121
  async like(_id) {
1121
- console.warn("[Venus SDK] UGC API not available in mock mode");
1122
+ console.warn("[RUN] UGC API not available in mock mode");
1122
1123
  throw new Error("UGC API requires backend connection");
1123
1124
  }
1124
1125
  async unlike(_id) {
1125
- console.warn("[Venus SDK] UGC API not available in mock mode");
1126
+ console.warn("[RUN] UGC API not available in mock mode");
1126
1127
  throw new Error("UGC API requires backend connection");
1127
1128
  }
1128
1129
  async recordUse(_id) {
1129
- console.warn("[Venus SDK] UGC API not available in mock mode");
1130
+ console.warn("[RUN] UGC API not available in mock mode");
1130
1131
  throw new Error("UGC API requires backend connection");
1131
1132
  }
1132
1133
  async report(_params) {
1133
- console.warn("[Venus SDK] UGC API not available in mock mode");
1134
+ console.warn("[RUN] UGC API not available in mock mode");
1134
1135
  throw new Error("UGC API requires backend connection");
1135
1136
  }
1136
1137
  async count(_params) {
@@ -1138,11 +1139,11 @@ var MockUgcApi = class {
1138
1139
  }
1139
1140
  // Creator following
1140
1141
  async follow(_targetProfileId) {
1141
- console.warn("[Venus SDK] UGC API not available in mock mode");
1142
+ console.warn("[RUN] UGC API not available in mock mode");
1142
1143
  throw new Error("UGC API requires backend connection");
1143
1144
  }
1144
1145
  async unfollow(_targetProfileId) {
1145
- console.warn("[Venus SDK] UGC API not available in mock mode");
1146
+ console.warn("[RUN] UGC API not available in mock mode");
1146
1147
  throw new Error("UGC API requires backend connection");
1147
1148
  }
1148
1149
  async isFollowing(_targetProfileId) {
@@ -1169,7 +1170,7 @@ var MockSocialApi = class {
1169
1170
  await navigator.clipboard.writeText(shareUrl);
1170
1171
  } catch (error) {
1171
1172
  console.warn(
1172
- "[RUN.game SDK] (mock) Failed to copy share URL to clipboard",
1173
+ "[RUN:mock] Failed to copy share URL to clipboard",
1173
1174
  error
1174
1175
  );
1175
1176
  }
@@ -1193,8 +1194,8 @@ var MockSocialApi = class {
1193
1194
  return null;
1194
1195
  }
1195
1196
  createMockUrl(_shareParams) {
1196
- console.warn("Reminder that share params are stored online and so when mocking the url, the mock url is just a template");
1197
- console.warn("The actual share url will look something like this: https://mock-share-url.com/97dt/mock-share-id");
1197
+ console.warn("[RUN:mock] Share params are stored online \u2014 mock URL is just a template");
1198
+ console.warn("[RUN:mock] Actual share URL looks like: https://mock-share-url.com/97dt/mock-share-id");
1198
1199
  return `https://mock-share-url.com/97dt/mock-share-id`;
1199
1200
  }
1200
1201
  };
@@ -1289,18 +1290,19 @@ var MockAppApi = class {
1289
1290
  this.adminUgc = new MockAdminUgcApi();
1290
1291
  this.adminImageGen = new MockAdminImageGenApi();
1291
1292
  }
1293
+ rundotGameApi;
1292
1294
  adminUgc;
1293
1295
  adminImageGen;
1294
1296
  async getMyRole() {
1295
1297
  const mockRole = this.rundotGameApi._mock?.app?.role;
1296
1298
  if (mockRole === "owner" || mockRole === "editor" || mockRole === "none") {
1297
1299
  console.warn(
1298
- `[RUN.game Mock] app.getMyRole() returning mock role: '${mockRole}'`
1300
+ `[RUN:mock] app.getMyRole() returning mock role: '${mockRole}'`
1299
1301
  );
1300
1302
  return mockRole;
1301
1303
  }
1302
1304
  console.warn(
1303
- "[RUN.game Mock] app.getMyRole() returning 'none'. Set _mock.app.role to 'owner', 'editor', or 'none' to control."
1305
+ "[RUN:mock] app.getMyRole() returning 'none'. Set _mock.app.role to 'owner', 'editor', or 'none' to control."
1304
1306
  );
1305
1307
  return "none";
1306
1308
  }
@@ -1311,44 +1313,12 @@ function initializeApp(rundotGameApiInstance, host) {
1311
1313
  rundotGameApiInstance.app = host.app;
1312
1314
  }
1313
1315
 
1314
- // src/attribution/RpcAttributionApi.ts
1315
- var RpcAttributionApi = class {
1316
- constructor(rpcClient) {
1317
- this.rpcClient = rpcClient;
1318
- }
1319
- async getAttributionParams() {
1320
- return this.rpcClient.call(
1321
- "H5_GET_ATTRIBUTION_PARAMS" /* H5_GET_ATTRIBUTION_PARAMS */,
1322
- {}
1323
- );
1324
- }
1325
- };
1326
-
1327
- // src/attribution/MockAttributionApi.ts
1328
- var MockAttributionApi = class {
1329
- async getAttributionParams() {
1330
- return {
1331
- utm_source: "mock_source",
1332
- utm_medium: "mock_medium",
1333
- utm_campaign: "mock_campaign",
1334
- utm_content: null,
1335
- utm_term: null,
1336
- fbclid: null,
1337
- gclid: null
1338
- };
1339
- }
1340
- };
1341
-
1342
- // src/attribution/index.ts
1343
- function initializeAttribution(rundotGameApiInstance, host) {
1344
- rundotGameApiInstance.attribution = host.attribution;
1345
- }
1346
-
1347
1316
  // src/social/RpcSocialApi.ts
1348
1317
  var RpcSocialApi = class {
1349
1318
  constructor(rpcClient) {
1350
1319
  this.rpcClient = rpcClient;
1351
1320
  }
1321
+ rpcClient;
1352
1322
  async shareLinkAsync(options) {
1353
1323
  const result = await this.rpcClient.call("H5_SHARE_LINK" /* SHARE_LINK */, {
1354
1324
  shareParams: options.shareParams,
@@ -1603,7 +1573,7 @@ var RundotGameTransport = class {
1603
1573
  logInfo(message, ...params) {
1604
1574
  }
1605
1575
  logWarn(message, ...params) {
1606
- console.warn(`[RUN.game Transport] ${message}`, ...params);
1576
+ console.warn(`[RUN:transport] ${message}`, ...params);
1607
1577
  }
1608
1578
  onRundotGameMessage(callback) {
1609
1579
  this.onRundotGameMessageCallbacks.push(callback);
@@ -1707,43 +1677,57 @@ var RemoteHost = class {
1707
1677
  removeMultipleItems: "H5_OWNER_STORAGE_REMOVE_MULTIPLE_ITEMS" /* OWNER_STORAGE_REMOVE_MULTIPLE_ITEMS */
1708
1678
  });
1709
1679
  this.sharedStorage = {
1710
- open: ({ appId, namespace }) => new DualEmitStorageApi(
1711
- rpcClient,
1712
- {
1713
- clear: "H5_SHARED_STORAGE_CLEAR" /* SHARED_STORAGE_CLEAR */,
1714
- getItem: "H5_SHARED_STORAGE_GET_ITEM" /* SHARED_STORAGE_GET_ITEM */,
1715
- getKey: "H5_SHARED_STORAGE_KEY" /* SHARED_STORAGE_KEY */,
1716
- length: "H5_SHARED_STORAGE_LENGTH" /* SHARED_STORAGE_LENGTH */,
1717
- removeItem: "H5_SHARED_STORAGE_REMOVE_ITEM" /* SHARED_STORAGE_REMOVE_ITEM */,
1718
- setItem: "H5_SHARED_STORAGE_SET_ITEM" /* SHARED_STORAGE_SET_ITEM */,
1719
- getAllItems: "H5_SHARED_STORAGE_GET_ALL_ITEMS" /* SHARED_STORAGE_GET_ALL_ITEMS */,
1720
- getAllData: "H5_SHARED_STORAGE_GET_ALL_DATA" /* SHARED_STORAGE_GET_ALL_DATA */,
1721
- setMultipleItems: "H5_SHARED_STORAGE_SET_MULTIPLE_ITEMS" /* SHARED_STORAGE_SET_MULTIPLE_ITEMS */,
1722
- removeMultipleItems: "H5_SHARED_STORAGE_REMOVE_MULTIPLE_ITEMS" /* SHARED_STORAGE_REMOVE_MULTIPLE_ITEMS */
1723
- },
1724
- { targetAppId: appId, namespace },
1725
- {
1726
- clear: "H5_GLOBAL_STORAGE_CLEAR" /* GLOBAL_STORAGE_CLEAR */,
1727
- getItem: "H5_GLOBAL_STORAGE_GET_ITEM" /* GLOBAL_STORAGE_GET_ITEM */,
1728
- getKey: "H5_GLOBAL_STORAGE_KEY" /* GLOBAL_STORAGE_KEY */,
1729
- length: "H5_GLOBAL_STORAGE_LENGTH" /* GLOBAL_STORAGE_LENGTH */,
1730
- removeItem: "H5_GLOBAL_STORAGE_REMOVE_ITEM" /* GLOBAL_STORAGE_REMOVE_ITEM */,
1731
- setItem: "H5_GLOBAL_STORAGE_SET_ITEM" /* GLOBAL_STORAGE_SET_ITEM */,
1732
- getAllItems: "H5_GLOBAL_STORAGE_GET_ALL_ITEMS" /* GLOBAL_STORAGE_GET_ALL_ITEMS */,
1733
- setMultipleItems: "H5_GLOBAL_STORAGE_SET_MULTIPLE_ITEMS" /* GLOBAL_STORAGE_SET_MULTIPLE_ITEMS */,
1734
- removeMultipleItems: "H5_GLOBAL_STORAGE_REMOVE_MULTIPLE_ITEMS" /* GLOBAL_STORAGE_REMOVE_MULTIPLE_ITEMS */
1680
+ open: ({ appId, namespace }) => {
1681
+ if (appId === "") {
1682
+ throw new Error(
1683
+ "sharedStorage.open: appId must be a non-empty string or omitted"
1684
+ );
1685
+ }
1686
+ return new DualEmitStorageApi(
1687
+ rpcClient,
1688
+ {
1689
+ clear: "H5_SHARED_STORAGE_CLEAR" /* SHARED_STORAGE_CLEAR */,
1690
+ getItem: "H5_SHARED_STORAGE_GET_ITEM" /* SHARED_STORAGE_GET_ITEM */,
1691
+ getKey: "H5_SHARED_STORAGE_KEY" /* SHARED_STORAGE_KEY */,
1692
+ length: "H5_SHARED_STORAGE_LENGTH" /* SHARED_STORAGE_LENGTH */,
1693
+ removeItem: "H5_SHARED_STORAGE_REMOVE_ITEM" /* SHARED_STORAGE_REMOVE_ITEM */,
1694
+ setItem: "H5_SHARED_STORAGE_SET_ITEM" /* SHARED_STORAGE_SET_ITEM */,
1695
+ getAllItems: "H5_SHARED_STORAGE_GET_ALL_ITEMS" /* SHARED_STORAGE_GET_ALL_ITEMS */,
1696
+ getAllData: "H5_SHARED_STORAGE_GET_ALL_DATA" /* SHARED_STORAGE_GET_ALL_DATA */,
1697
+ setMultipleItems: "H5_SHARED_STORAGE_SET_MULTIPLE_ITEMS" /* SHARED_STORAGE_SET_MULTIPLE_ITEMS */,
1698
+ removeMultipleItems: "H5_SHARED_STORAGE_REMOVE_MULTIPLE_ITEMS" /* SHARED_STORAGE_REMOVE_MULTIPLE_ITEMS */
1699
+ },
1700
+ { targetAppId: appId, namespace },
1701
+ {
1702
+ clear: "H5_GLOBAL_STORAGE_CLEAR" /* GLOBAL_STORAGE_CLEAR */,
1703
+ getItem: "H5_GLOBAL_STORAGE_GET_ITEM" /* GLOBAL_STORAGE_GET_ITEM */,
1704
+ getKey: "H5_GLOBAL_STORAGE_KEY" /* GLOBAL_STORAGE_KEY */,
1705
+ length: "H5_GLOBAL_STORAGE_LENGTH" /* GLOBAL_STORAGE_LENGTH */,
1706
+ removeItem: "H5_GLOBAL_STORAGE_REMOVE_ITEM" /* GLOBAL_STORAGE_REMOVE_ITEM */,
1707
+ setItem: "H5_GLOBAL_STORAGE_SET_ITEM" /* GLOBAL_STORAGE_SET_ITEM */,
1708
+ getAllItems: "H5_GLOBAL_STORAGE_GET_ALL_ITEMS" /* GLOBAL_STORAGE_GET_ALL_ITEMS */,
1709
+ setMultipleItems: "H5_GLOBAL_STORAGE_SET_MULTIPLE_ITEMS" /* GLOBAL_STORAGE_SET_MULTIPLE_ITEMS */,
1710
+ removeMultipleItems: "H5_GLOBAL_STORAGE_REMOVE_MULTIPLE_ITEMS" /* GLOBAL_STORAGE_REMOVE_MULTIPLE_ITEMS */
1711
+ }
1712
+ );
1713
+ },
1714
+ read: ({ appId, namespace }) => {
1715
+ if (appId === "") {
1716
+ throw new Error(
1717
+ "sharedStorage.read: appId must be a non-empty string or omitted"
1718
+ );
1735
1719
  }
1736
- ),
1737
- read: ({ appId, namespace }) => new RpcInboundStorageApi(
1738
- rpcClient,
1739
- {
1740
- listSources: "H5_SHARED_STORAGE_INBOUND_LIST_SOURCES" /* SHARED_STORAGE_INBOUND_LIST_SOURCES */,
1741
- get: "H5_SHARED_STORAGE_INBOUND_GET" /* SHARED_STORAGE_INBOUND_GET */,
1742
- getAllFromSource: "H5_SHARED_STORAGE_INBOUND_GET_ALL_FROM_SOURCE" /* SHARED_STORAGE_INBOUND_GET_ALL_FROM_SOURCE */,
1743
- getAllForKey: "H5_SHARED_STORAGE_INBOUND_GET_ALL_FOR_KEY" /* SHARED_STORAGE_INBOUND_GET_ALL_FOR_KEY */
1744
- },
1745
- { targetAppId: appId, namespace }
1746
- )
1720
+ return new RpcInboundStorageApi(
1721
+ rpcClient,
1722
+ {
1723
+ listSources: "H5_SHARED_STORAGE_INBOUND_LIST_SOURCES" /* SHARED_STORAGE_INBOUND_LIST_SOURCES */,
1724
+ get: "H5_SHARED_STORAGE_INBOUND_GET" /* SHARED_STORAGE_INBOUND_GET */,
1725
+ getAllFromSource: "H5_SHARED_STORAGE_INBOUND_GET_ALL_FROM_SOURCE" /* SHARED_STORAGE_INBOUND_GET_ALL_FROM_SOURCE */,
1726
+ getAllForKey: "H5_SHARED_STORAGE_INBOUND_GET_ALL_FOR_KEY" /* SHARED_STORAGE_INBOUND_GET_ALL_FOR_KEY */
1727
+ },
1728
+ { targetAppId: appId, namespace }
1729
+ );
1730
+ }
1747
1731
  };
1748
1732
  this.avatar3d = new RpcAvatarApi(rpcClient, rundotGameApi);
1749
1733
  this.navigation = new RpcNavigationApi(rpcClient, rundotGameApi);
@@ -1752,7 +1736,7 @@ var RemoteHost = class {
1752
1736
  this.profile = new HostProfileApi(rundotGameApi);
1753
1737
  const deviceApi = new HostDeviceApi(rundotGameApi);
1754
1738
  const environmentApi = new HostEnvironmentApi(rundotGameApi);
1755
- this.system = new HostSystemApi(deviceApi, environmentApi, rundotGameApi);
1739
+ this.system = new HostSystemApi(deviceApi, environmentApi, rundotGameApi, rpcClient);
1756
1740
  this.cdn = new HostCdnApi(rpcClient);
1757
1741
  this.time = new HostTimeApi(rpcClient, rundotGameApi);
1758
1742
  this.ai = new RpcAiApi(rpcClient);
@@ -1837,7 +1821,7 @@ var RemoteHost = class {
1837
1821
  };
1838
1822
 
1839
1823
  // src/MockHost.ts
1840
- var ROOMS_UNAVAILABLE_MESSAGE = "[RUN.game SDK] Rooms API is only available when running inside the RUN.game host environment.";
1824
+ var ROOMS_UNAVAILABLE_MESSAGE = "[RUN] Rooms API is only available when running inside the RUN.game host environment.";
1841
1825
  function createUnavailableRoomsApi() {
1842
1826
  const roomsUnavailableError = () => new Error(ROOMS_UNAVAILABLE_MESSAGE);
1843
1827
  return {
@@ -1882,7 +1866,7 @@ function createUnavailableRoomsApi() {
1882
1866
  }
1883
1867
  };
1884
1868
  }
1885
- var SIMULATION_UNAVAILABLE_MESSAGE = "[RUN.game SDK] Simulation API is only available when running inside the RUN.game host environment.";
1869
+ var SIMULATION_UNAVAILABLE_MESSAGE = "[RUN] Simulation API is only available when running inside the RUN.game host environment.";
1886
1870
  function createUnavailableSimulationApi() {
1887
1871
  const simulationUnavailableError = () => new Error(SIMULATION_UNAVAILABLE_MESSAGE);
1888
1872
  return {
@@ -2015,13 +1999,31 @@ var MockHost = class {
2015
1999
  this.appStorage = createMockStorageApi("appStorage", appUrl);
2016
2000
  this.ownerStorage = createMockStorageApi("ownerStorage", appUrl);
2017
2001
  this.sharedStorage = {
2018
- open: ({ appId, namespace }) => createMockStorageApi("appStorage", `mock#shared/${appId}/${namespace}`),
2019
- read: () => ({
2020
- listSources: async () => [],
2021
- getAllFromSource: async () => ({}),
2022
- get: async () => null,
2023
- getAllForKey: async () => []
2024
- })
2002
+ open: ({ appId, namespace }) => {
2003
+ if (appId === "") {
2004
+ throw new Error(
2005
+ "sharedStorage.open: appId must be a non-empty string or omitted"
2006
+ );
2007
+ }
2008
+ const resolved = appId ?? "mock-app";
2009
+ return createMockStorageApi(
2010
+ "appStorage",
2011
+ `mock#shared/${resolved}/${namespace}`
2012
+ );
2013
+ },
2014
+ read: ({ appId }) => {
2015
+ if (appId === "") {
2016
+ throw new Error(
2017
+ "sharedStorage.read: appId must be a non-empty string or omitted"
2018
+ );
2019
+ }
2020
+ return {
2021
+ listSources: async () => [],
2022
+ getAllFromSource: async () => ({}),
2023
+ get: async () => null,
2024
+ getAllForKey: async () => []
2025
+ };
2026
+ }
2025
2027
  };
2026
2028
  this.simulation = createUnavailableSimulationApi();
2027
2029
  this.rooms = createUnavailableRoomsApi();
@@ -2450,6 +2452,6 @@ function initializeSocial(rundotGameApi, host) {
2450
2452
  rundotGameApi.social = host.social;
2451
2453
  }
2452
2454
 
2453
- export { HASH_ALGORITHM_NODE, HASH_ALGORITHM_WEB_CRYPTO, MockAiApi, MockAppApi, MockImageGenApi, MockLeaderboardApi, MockSocialApi, RemoteHost, RpcAdminImageGenApi, RpcAdminUgcApi, RpcAiApi, RpcAppApi, RpcClient, RpcImageGenApi, RpcLeaderboardApi, RpcSimulationApi, RpcSocialApi, SDK_VERSION, computeScoreHash, createHost, initializeAi, initializeApp, initializeAttribution, initializeImageGen, initializeLeaderboard, initializeSimulation, initializeSocial, initializeUgc };
2454
- //# sourceMappingURL=chunk-OIS4HE2G.js.map
2455
- //# sourceMappingURL=chunk-OIS4HE2G.js.map
2455
+ export { HASH_ALGORITHM_NODE, HASH_ALGORITHM_WEB_CRYPTO, MockAiApi, MockAppApi, MockImageGenApi, MockLeaderboardApi, MockSocialApi, RemoteHost, RpcAdminImageGenApi, RpcAdminUgcApi, RpcAiApi, RpcAppApi, RpcClient, RpcImageGenApi, RpcLeaderboardApi, RpcSimulationApi, RpcSocialApi, SDK_VERSION, computeScoreHash, createHost, initializeAi, initializeApp, initializeImageGen, initializeLeaderboard, initializeSimulation, initializeSocial, initializeUgc };
2456
+ //# sourceMappingURL=chunk-ADHM22CM.js.map
2457
+ //# sourceMappingURL=chunk-ADHM22CM.js.map