@crowdedkingdoms/crowdyjs 13.9.0 → 14.0.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.
Files changed (72) hide show
  1. package/MIGRATION.md +44 -0
  2. package/README.md +68 -33
  3. package/dist/binary-relay.d.ts +1 -1
  4. package/dist/binary-relay.js +1 -1
  5. package/dist/crowdy-client.d.ts +29 -34
  6. package/dist/crowdy-client.d.ts.map +1 -1
  7. package/dist/crowdy-client.js +42 -40
  8. package/dist/domains/appAccess.d.ts +3 -3
  9. package/dist/domains/appAccess.d.ts.map +1 -1
  10. package/dist/domains/appAccess.js +16 -16
  11. package/dist/domains/apps.d.ts +4 -8
  12. package/dist/domains/apps.d.ts.map +1 -1
  13. package/dist/domains/apps.js +19 -23
  14. package/dist/domains/auth.d.ts +1 -1
  15. package/dist/domains/billing.d.ts +3 -3
  16. package/dist/domains/billing.d.ts.map +1 -1
  17. package/dist/domains/billing.js +9 -9
  18. package/dist/domains/controlPlane.d.ts +2 -2
  19. package/dist/domains/controlPlane.d.ts.map +1 -1
  20. package/dist/domains/controlPlane.js +4 -4
  21. package/dist/domains/discovery.d.ts +50 -0
  22. package/dist/domains/discovery.d.ts.map +1 -0
  23. package/dist/domains/discovery.js +35 -0
  24. package/dist/domains/marketplace.d.ts +4 -5
  25. package/dist/domains/marketplace.d.ts.map +1 -1
  26. package/dist/domains/marketplace.js +25 -26
  27. package/dist/domains/organizations.d.ts +3 -3
  28. package/dist/domains/organizations.d.ts.map +1 -1
  29. package/dist/domains/organizations.js +22 -22
  30. package/dist/domains/payments.d.ts +3 -3
  31. package/dist/domains/payments.d.ts.map +1 -1
  32. package/dist/domains/payments.js +11 -11
  33. package/dist/domains/platform.d.ts +5 -6
  34. package/dist/domains/platform.d.ts.map +1 -1
  35. package/dist/domains/platform.js +6 -7
  36. package/dist/domains/portal.d.ts +19 -2
  37. package/dist/domains/portal.d.ts.map +1 -1
  38. package/dist/domains/portal.js +12 -12
  39. package/dist/domains/quotas.d.ts +3 -3
  40. package/dist/domains/quotas.d.ts.map +1 -1
  41. package/dist/domains/quotas.js +8 -8
  42. package/dist/domains/serverStatus.d.ts +1 -2
  43. package/dist/domains/serverStatus.d.ts.map +1 -1
  44. package/dist/domains/serverStatus.js +1 -2
  45. package/dist/domains/sharedEnvironment.d.ts +3 -3
  46. package/dist/domains/sharedEnvironment.d.ts.map +1 -1
  47. package/dist/domains/sharedEnvironment.js +15 -15
  48. package/dist/domains/udp.d.ts +1 -1
  49. package/dist/domains/udp.js +1 -1
  50. package/dist/domains/usage.d.ts +2 -2
  51. package/dist/domains/usage.d.ts.map +1 -1
  52. package/dist/domains/usage.js +5 -5
  53. package/dist/domains/users.d.ts +1 -1
  54. package/dist/domains/users.js +1 -1
  55. package/dist/generated/graphql.d.ts +65 -16
  56. package/dist/generated/graphql.d.ts.map +1 -1
  57. package/dist/generated/graphql.js +1 -0
  58. package/dist/index.d.ts +10 -13
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +12 -16
  61. package/dist/kit/decks.d.ts +1 -1
  62. package/dist/kit/npcs.d.ts +2 -2
  63. package/dist/kit/npcs.d.ts.map +1 -1
  64. package/dist/kit/social.d.ts.map +1 -1
  65. package/dist/kit/worldsim.d.ts +1 -1
  66. package/dist/rediscover.d.ts +7 -3
  67. package/dist/rediscover.d.ts.map +1 -1
  68. package/dist/rediscover.js +7 -3
  69. package/dist/session.d.ts +21 -0
  70. package/dist/session.d.ts.map +1 -1
  71. package/dist/session.js +23 -0
  72. package/package.json +1 -1
@@ -111,7 +111,7 @@ export type ActorType = {
111
111
  email: Maybe<Scalars['String']['output']>;
112
112
  /** Legacy bigint public user id (Buddy / CK wire), as a string. */
113
113
  userId: Scalars['String']['output'];
114
- /** User identity (galaxy row uuid). */
114
+ /** User identity: the users.galaxy_row_uuid value. The column keeps its historical name; the datastore is PostgreSQL/Citus. */
115
115
  userUuid: Scalars['String']['output'];
116
116
  username: Maybe<Scalars['String']['output']>;
117
117
  };
@@ -1123,6 +1123,18 @@ export declare enum AppDeploymentTarget {
1123
1123
  /** Runs on the multi-tenant shared game-api (publishAppToShared). */
1124
1124
  Shared = "SHARED"
1125
1125
  }
1126
+ /** Where one app lives, and therefore which origin a client should talk to before it does anything else. Public: this is the same information the published DNS names already expose. */
1127
+ export type AppDiscovery = {
1128
+ __typename?: 'AppDiscovery';
1129
+ /** The app this entry describes, echoed back so a batched result can be matched to its request. */
1130
+ appId: Scalars['BigInt']['output'];
1131
+ /** Datacenter code the app is placed in (for example `or`, `va`), or null if the app has no placement yet. */
1132
+ datacenterCode: Maybe<Scalars['String']['output']>;
1133
+ /** HTTPS GraphQL origin for this app's OWN datacenter. Move here BEFORE authenticating: logging in through the shared origin writes the session on whichever datacenter DNS happened to pick, and the app token then has to be minted across a WAN. Null when the app has no placement, in which case keep using the shared origin. */
1134
+ gameApiUrl: Maybe<Scalars['String']['output']>;
1135
+ /** The wss:// form of gameApiUrl, for the subscription socket and the binary relay. */
1136
+ gameApiWsUrl: Maybe<Scalars['String']['output']>;
1137
+ };
1126
1138
  /** An edge in a App connection. */
1127
1139
  export type AppEdge = {
1128
1140
  __typename?: 'AppEdge';
@@ -1241,9 +1253,11 @@ export type AppTokenResponse = {
1241
1253
  __typename?: 'AppTokenResponse';
1242
1254
  /** The app this token is confined to, as a String. */
1243
1255
  appId: Scalars['String']['output'];
1256
+ /** Stable entry origin, resolving to every datacenter, that always reaches SOME healthy instance. Use it to re-discover endpoints when `gameApiUrl` stops answering: a token-holding client cannot re-mint, because that needs the identity session it does not have. Never a per-datacenter or per-instance address. */
1257
+ discoveryUrl: Maybe<Scalars['String']['output']>;
1244
1258
  /** ISO-8601 UTC expiry. Call `refreshAppToken` (same app) before this, or re-portal through the Overworld for a different app. */
1245
1259
  expiresAt: Scalars['String']['output'];
1246
- /** Base HTTPS URL of the Game API that serves this app (null if the app has no dedicated/shared game-api route yet). */
1260
+ /** Base HTTPS URL of the Game API that serves this app its OWN datacenter's endpoint when a placement exists, because that is where the app's shards are. Null if the app has no dedicated/shared game-api route yet. Use this for gameplay; use `discoveryUrl` to recover if it stops answering. */
1247
1261
  gameApiUrl: Maybe<Scalars['String']['output']>;
1248
1262
  /** WebSocket URL of the Game API that serves this app (wss://), for realtime subscriptions. */
1249
1263
  gameApiWsUrl: Maybe<Scalars['String']['output']>;
@@ -3339,6 +3353,12 @@ export type GameClientBootstrap = {
3339
3353
  binaryRelayPath: Scalars['String']['output'];
3340
3354
  /** Required WebSocket subprotocol for the binary realtime relay. The client must offer it during the upgrade; the server selects it. Currently "crowdy-relay-v1". */
3341
3355
  binaryRelayProtocol: Scalars['String']['output'];
3356
+ /** Stable entry point that always resolves to SOME healthy API instance — the environment’s shared load balancer. Use this to RE-DISCOVER an endpoint when the instance you are connected to stops answering: call gameClientBootstrap (or mintAppToken) against it and use the gameApiUrl it returns. This is the recovery path for direct connect, where gameApiUrl is a single instance that can die; discoveryUrl is chosen so that it cannot die with it. Null only if the server has no public URL configured. */
3357
+ discoveryUrl: Maybe<Scalars['String']['output']>;
3358
+ /** HTTPS origin the client should use for GraphQL right now: the app's OWN datacenter, because that is where its shards live and a query answered elsewhere crosses a WAN silently. Under direct connect it is one specific instance in that datacenter, which is NOT interchangeable with other instances for an open realtime session. Not to be confused with discoveryUrl, which is the shared origin resolving to every datacenter — fall back to that if requests here start failing. */
3359
+ gameApiUrl: Maybe<Scalars['String']['output']>;
3360
+ /** The wss:// form of gameApiUrl, for the graphql-transport-ws subscription socket and the binary relay. Same origin, same caveat: under direct connect it is one instance. */
3361
+ gameApiWsUrl: Maybe<Scalars['String']['output']>;
3342
3362
  /** Maximum allowed value for the `decayRate` (named attenuation algorithm id) field on spatial sends. Currently 5; the server clamps send `decayRate` to 0..this. decayRate selects how the message attenuates with distance (0 = none). */
3343
3363
  maxDecayRate: Scalars['Int']['output'];
3344
3364
  /** Maximum allowed value for the `distance` (chunk fan-out radius) field on spatial sends. Currently 8; the server clamps send `distance` to 0..this. distance is the number of chunks outward the message is replicated. */
@@ -3609,7 +3629,7 @@ export type GmAutomationRun = {
3609
3629
  /** The app (tenant). */
3610
3630
  appId: Scalars['BigInt']['output'];
3611
3631
  /** The automation that ran, or null for a timer fire (which has no owning automation). */
3612
- automationId: Scalars['String']['output'];
3632
+ automationId: Maybe<Scalars['String']['output']>;
3613
3633
  /** The automation name at run time, or the invoked function name for a timer fire. */
3614
3634
  automationName: Scalars['String']['output'];
3615
3635
  /** Cascade depth (0 = top-level). */
@@ -4214,7 +4234,7 @@ export type GrantTierFeatureInput = {
4214
4234
  /** The access tier id. */
4215
4235
  tierId: Scalars['BigInt']['input'];
4216
4236
  };
4217
- /** A registered GraphQL API server instance in the fleet (either a management-api or a game-api, see `kind`), with reachability addresses and basic host telemetry. Returned by graphqlServers (all) and activeGraphQLServers (only ReadyForClients). Use this for service discovery; realtime/UDP play still goes through the game-api UDP proxy. */
4237
+ /** A registered GraphQL API server instance in the fleet, with reachability addresses and basic host telemetry. Returned by graphqlServers (all) and activeGraphQLServers (only ReadyForClients). Use this for service discovery; realtime/UDP play still goes through the game-api UDP proxy. */
4218
4238
  export type GraphQlServer = {
4219
4239
  __typename?: 'GraphQLServer';
4220
4240
  /** TCP port the GraphQL/HTTP API listens on (default 4000). */
@@ -4229,7 +4249,7 @@ export type GraphQlServer = {
4229
4249
  ip4: Maybe<Scalars['String']['output']>;
4230
4250
  /** Internal/private IPv6 address of this server. Use publicIp6 for external reachability. */
4231
4251
  ip6: Maybe<Scalars['String']['output']>;
4232
- /** Logical kind of GraphQL service: 'management-api' or 'game-api'. */
4252
+ /** Logical kind of GraphQL service. Every current server is 'game-api', which serves both the management and game surfaces; 'management-api' appears only on rows predating their unification. */
4233
4253
  kind: Maybe<Scalars['String']['output']>;
4234
4254
  /** 1-minute load average of the host, if reported. */
4235
4255
  loadAverage1m: Maybe<Scalars['Float']['output']>;
@@ -4237,6 +4257,8 @@ export type GraphQlServer = {
4237
4257
  memoryUsagePct: Maybe<Scalars['Float']['output']>;
4238
4258
  /** Cloud provider instance id of the underlying host, if known. */
4239
4259
  providerInstanceId: Maybe<Scalars['String']['output']>;
4260
+ /** Public hostname clients can reach this instance on directly over TLS, e.g. `ck-api-2.gxca.prod.cp.cks-env.com`. Null when the instance has no public DNS name or certificate yet, in which case it is reachable only through the shared load balancer and must not be connected to directly. Prefer the `gameApiUrl` returned by mintAppToken over building a URL from this field: that call already picks a low-load instance for you. */
4261
+ publicHostname: Maybe<Scalars['String']['output']>;
4240
4262
  /** Public IPv4 address clients use to reach this server, if assigned. */
4241
4263
  publicIp4: Maybe<Scalars['String']['output']>;
4242
4264
  /** Public IPv6 address clients use to reach this server, if assigned. */
@@ -4729,6 +4751,8 @@ export type Mutation = {
4729
4751
  createTeam: Group;
4730
4752
  /** Create a custom (non-system) team role granting the given team permission keys. Requires the 'manage_roles' team permission (app admins bypass). Permission keys must be valid team permission keys (group_permission_defs). */
4731
4753
  createTeamRole: GroupRole;
4754
+ /** OPERATOR ONLY. Credits an organization wallet without a payment provider, for seeding a test environment or making an operator adjustment, and records it in the wallet ledger as an "admin_credit" transaction. Use this instead of writing to org_wallets by hand: it creates the wallet if absent, repairs a missing wallet id, and moves the balance and the ledger row together in one transaction. Pass a referenceId to make retries idempotent. SIDE EFFECT: re-evaluates the runtime gate for every shared app in the org, so a credit that clears an insufficient_funds denial lifts it immediately instead of leaving the app refusing clients. */
4755
+ creditOrgWallet: WalletTransaction;
4732
4756
  /** Monotonically persist one attached epoch’s highest contiguous applied event sequence. Requires the app-scoped owner, exact current epoch, and idempotency key; stale epochs and gaps fail with stable errors. */
4733
4757
  crowdyStudioAgentAcknowledgeEvents: AgentEventAcknowledgement;
4734
4758
  /** Human-grant one unexpired pending tool call by exact argument hash. The server revalidates epoch, context, policy, lease, descriptor, permissions, and project revision before single-use consumption. Requires the app-scoped owner, use_studio_agent, and idempotency key; approval never creates missing authority. */
@@ -4931,7 +4955,7 @@ export type Mutation = {
4931
4955
  playerModelSetProperty: PlayerModelContainer;
4932
4956
  /** Publishes an app to the shared game-api environment. Free under the org's app-slot quota (result.free = true); beyond the quota, publish still succeeds and hourly usage is debited from the org wallet. Requires the 'manage_apps' permission on the app's org. Blocked when SHARED_GAME_API_URL is not configured. */
4933
4957
  publishAppToShared: PublishAppResult;
4934
- /** Create a marketplace listing (free mode) for code the caller authors — personally, or org-owned via ownerOrgId (DN-9; requires manage_compute in that org). SIDE EFFECTS: the catalog row is written on cks-management-api with an ownership audit entry and replica-synced back. Publishing never uploads source; versions snapshot artifact hashes only. */
4958
+ /** Create a marketplace listing (free mode) for code the caller authors — personally, or org-owned via ownerOrgId (DN-9; requires manage_compute in that org). SIDE EFFECTS: writes the catalog row with an ownership audit entry. Publishing never uploads source; versions snapshot artifact hashes only. */
4935
4959
  publishPlayerCode: PlayerCodeListing;
4936
4960
  /** Publish an immutable version under a listing from the caller's successfully compiled module versions. Snapshots artifact hashes, explicit SERVER-to-required-CLIENT edges, and the derived aggregate capability summary; publishing fails if a required client version is absent from the bundle. Source never leaves the author's rows. */
4937
4961
  publishPlayerCodeVersion: PlayerCodeListingVersion;
@@ -5294,6 +5318,12 @@ export type MutationCreateTeamArgs = {
5294
5318
  export type MutationCreateTeamRoleArgs = {
5295
5319
  input: CreateGroupRoleInput;
5296
5320
  };
5321
+ export type MutationCreditOrgWalletArgs = {
5322
+ amountCents: Scalars['BigInt']['input'];
5323
+ orgId: Scalars['BigInt']['input'];
5324
+ reason: Scalars['String']['input'];
5325
+ referenceId?: InputMaybe<Scalars['String']['input']>;
5326
+ };
5297
5327
  export type MutationCrowdyStudioAgentAcknowledgeEventsArgs = {
5298
5328
  input: AcknowledgeAgentEventsInput;
5299
5329
  };
@@ -7020,6 +7050,8 @@ export type Query = {
7020
7050
  appCodeAdmissionQueue: Array<PlayerCodeAdmissionQueueEntry>;
7021
7051
  /** List an app's player-code admission entries, newest first. Requires 'view_compute_diagnostics'. By default returns active entries only; includeRevoked adds audit-visible revoked rows. Admission controls execution, never source visibility. */
7022
7052
  appCodeAdmissions: Array<AppCodeAdmission>;
7053
+ /** Resolve where one or more apps are placed, WITHOUT authenticating. Call this before login and connect to the returned gameApiUrl, so the session and app token are both written in the app's own datacenter instead of across a WAN. Pass every app a launcher might switch to and cache the result; placement changes rarely and only an operator can change it. An app with no placement comes back with nulls, which means 'keep using the shared origin'. */
7054
+ appDiscovery: Array<AppDiscovery>;
7023
7055
  /** Lists org members eligible for a manual app access grant (active members of the app's owning org). Requires the 'manage_access_tiers' permission on the app; super admins bypass. Use the returned user ids with grantAppAccess. */
7024
7056
  appGrantMemberCandidates: Array<AppGrantMemberCandidate>;
7025
7057
  /** Top GraphQL operations for an app ranked by bytes over the time range. Read-only reporting; the app must be linked to an environment in the org. Requires the 'view_usage' org permission. */
@@ -7196,7 +7228,7 @@ export type Query = {
7196
7228
  getChunksByDistance: ChunksByDistanceResponse;
7197
7229
  /** Returns all recorded voxel edits (the voxel_updates log) for a single chunk, newest first, as a ChunkVoxelResponse. Use getChunk instead when you want the packed voxel grid rather than the individual edit log. Requires a valid bearer token; app-scoped tokens are limited to their own app. Read-only. */
7198
7230
  getVoxelList: ChunkVoxelResponse;
7199
- /** List every registered GraphQL API server (both management-api and game-api kinds), regardless of health/state. No authentication required. For service discovery; to route clients, prefer activeGraphQLServers (filters to healthy servers). */
7231
+ /** List every registered GraphQL API server regardless of health/state. No authentication required. For service discovery; to route clients, prefer activeGraphQLServers (filters to healthy servers). */
7200
7232
  graphqlServers: Array<GraphQlServer>;
7201
7233
  /** The app's grid claim policy (D4): how a player claim confers grid ownership. */
7202
7234
  gridClaimPolicy: GridClaimPolicy;
@@ -7340,7 +7372,7 @@ export type Query = {
7340
7372
  quotasForOrg: Array<ServiceQuota>;
7341
7373
  /** Lists all valid runtime permission keys (e.g. "access", "teleport", "update_voxel_data", "use_voice_chat") that may be assigned to an access tier permissionKeys. PUBLIC: no authentication required. Ordered by the permission bit index. */
7342
7374
  runtimePermissions: Array<Scalars['String']['output']>;
7343
- /** Pick a low-load game server for a native (direct-UDP) client to connect to: returns a random server from the least-loaded ~20% (by client count) of ReadyForClients servers to spread load. Requires a bearer game token; as a side effect it authorizes that token’s P2P session with the chosen Buddy so the native client’s spatial datagrams are accepted. Connect the native client to the returned ip4 and clientPort. Browser clients should instead use the UDP proxy (connectUdpProxy / udpNotifications) and do not need this. */
7375
+ /** Pick a low-load game server for a native (direct-UDP) client to connect to: returns a random server from the least-loaded ~20% (by client count) of ReadyForClients servers to spread load, preferring one co-located with the datacenter that holds the data for this app (all rows for one app live in a single datacenter) and falling back to any healthy server if none is. Requires a bearer game token; as a side effect it authorizes that token’s P2P session with the chosen Buddy so the native client’s spatial datagrams are accepted. Connect the native client to the returned ip4 and clientPort. Browser clients should instead use the UDP proxy (connectUdpProxy / udpNotifications) and do not need this. */
7344
7376
  serverWithLeastClients: ServerStatus;
7345
7377
  /** @deprecated Legacy monthly app-slot subscription catalog. New shared publishes use wallet usage billing only. */
7346
7378
  sharedEnvPlans: Array<SharedEnvPlan>;
@@ -7422,6 +7454,9 @@ export type QueryAppCodeAdmissionsArgs = {
7422
7454
  appId: Scalars['BigInt']['input'];
7423
7455
  includeRevoked?: InputMaybe<Scalars['Boolean']['input']>;
7424
7456
  };
7457
+ export type QueryAppDiscoveryArgs = {
7458
+ appIds: Array<Scalars['BigInt']['input']>;
7459
+ };
7425
7460
  export type QueryAppGrantMemberCandidatesArgs = {
7426
7461
  appId: Scalars['BigInt']['input'];
7427
7462
  };
@@ -8025,16 +8060,16 @@ export type QueryWalletTransactionsConnectionArgs = {
8025
8060
  first?: InputMaybe<Scalars['Int']['input']>;
8026
8061
  orgId: Scalars['BigInt']['input'];
8027
8062
  };
8028
- /** Realtime lifecycle/error event delivered on the udpNotifications subscription when a session cannot be opened or correctly scoped. It is a control frame — it carries no appId, so it is never dropped by the per-app fan-out filter and it is terminal: the subscription completes immediately after emitting it, so the client must fix the cause and resubscribe. Branch on `code`; use `retryable` to decide whether retrying can succeed. A healthy subscription never emits this type; it yields game-server notifications/responses instead. */
8063
+ /** Realtime lifecycle event delivered on the udpNotifications subscription. It is a control frame — it carries no appId, so it is never dropped by the per-app fan-out filter. Branch on `code`; use `retryable` to decide whether retrying can succeed. Most codes report that a session could not be opened or correctly scoped and are TERMINAL: the subscription completes immediately after emitting one, so the client must fix the cause and resubscribe. The exception is SERVER_DRAINING, which arrives mid-stream on a healthy subscription and does NOT end it see that code below. */
8029
8064
  export type RealtimeConnectionEvent = {
8030
8065
  __typename?: 'RealtimeConnectionEvent';
8031
- /** Machine-readable failure reason. Branch on this (not on `message`). Known values: AUTH_REQUIRED — no valid bearer game token was presented on the WS connection_init / request; authenticate via the Management API and resubscribe (not retryable as-is). APP_ID_REQUIRED — the subscription was opened without an appId scope; udpNotifications must be app-scoped (game tokens are app-agnostic and one socket is shared across apps), so pass the app you are playing and resubscribe (not retryable as-is). UDP_PROXY_CONNECTION_FAILED — the proxy could not open or keep a UDP socket to the selected game server (transient/infrastructure); back off and resubscribe (retryable). `message` carries the specific underlying detail for this case. */
8066
+ /** Machine-readable failure reason. Branch on this (not on `message`). Known values: AUTH_REQUIRED — no valid bearer game token was presented on the WS connection_init / request; authenticate via the Management API and resubscribe (not retryable as-is). APP_ID_REQUIRED — the subscription was opened without an appId scope; udpNotifications must be app-scoped (game tokens are app-agnostic and one socket is shared across apps), so pass the app you are playing and resubscribe (not retryable as-is). UDP_PROXY_CONNECTION_FAILED — the proxy could not open or keep a UDP socket to the selected game server (transient/infrastructure); back off and resubscribe (retryable). `message` carries the specific underlying detail for this case. SERVER_DRAINING — this API instance is being taken out of service; the stream KEEPS WORKING, but you should re-run discovery (mintAppToken) and reconnect to the instance it returns before this one stops. Only reaches clients connected directly to an instance; clients behind the load balancer are moved for them. */
8032
8067
  code: Scalars['String']['output'];
8033
8068
  /** Human-readable explanation of the failure, suitable for logs and developer-facing surfaces. Do not parse or branch on this text — branch on `code` instead. */
8034
8069
  message: Scalars['String']['output'];
8035
8070
  /** Whether resubscribing without changing anything may succeed. true for transient failures (e.g. UDP_PROXY_CONNECTION_FAILED) — back off and retry. false for caller errors that must be fixed first (AUTH_REQUIRED needs a fresh/valid game token; APP_ID_REQUIRED needs an appId-scoped subscription). */
8036
8071
  retryable: Scalars['Boolean']['output'];
8037
- /** Lifecycle status of the session attempt. Currently always "failed" this event is only emitted when udpNotifications could not establish (or had to tear down) the underlying UDP proxy session. */
8072
+ /** Lifecycle status: "failed" when the session could not be established or had to be torn down, or "draining" for the one advisory case (SERVER_DRAINING) where the stream stays open. */
8038
8073
  status: Scalars['String']['output'];
8039
8074
  };
8040
8075
  export type RegisterUserInput = {
@@ -9852,7 +9887,7 @@ export type WalletTransaction = {
9852
9887
  referenceId: Maybe<Scalars['String']['output']>;
9853
9888
  /** Unique transaction id (BigInt as a decimal string). */
9854
9889
  transactionId: Scalars['BigInt']['output'];
9855
- /** What produced this transaction. Known values: "topup" (wallet credit from a checkout/top-up), "usage" (per-app usage charge, negative), "shared_usage" (shared-environment usage charge, negative), "reserved_throughput" (monthly/prorated reserved egress capacity, negative), "environment_usage" (hourly environment cost, negative), "auto_recharge" (automatic wallet recharge). Other caller-supplied deposit types are possible. */
9890
+ /** What produced this transaction. Known values: "topup" (wallet credit from a checkout/top-up), "usage" (per-app usage charge, negative), "shared_usage" (shared-environment usage charge, negative), "reserved_throughput" (monthly/prorated reserved egress capacity, negative), "environment_usage" (hourly environment cost, negative), "auto_recharge" (automatic wallet recharge), "agent_usage" (Crowdy Studio agent run charged at provider cost, negative), "admin_credit" (operator credit applied without a payment provider). Other caller-supplied deposit types are possible. */
9856
9891
  transactionType: Scalars['String']['output'];
9857
9892
  /** Wallet this transaction belongs to (BigInt as a decimal string). */
9858
9893
  walletId: Scalars['BigInt']['output'];
@@ -10624,6 +10659,19 @@ export type AppBySlugQuery = {
10624
10659
  } | null;
10625
10660
  } | null;
10626
10661
  };
10662
+ export type AppDiscoveryQueryVariables = Exact<{
10663
+ appIds: Array<Scalars['BigInt']['input']> | Scalars['BigInt']['input'];
10664
+ }>;
10665
+ export type AppDiscoveryQuery = {
10666
+ __typename?: 'Query';
10667
+ appDiscovery: Array<{
10668
+ __typename?: 'AppDiscovery';
10669
+ appId: string;
10670
+ datacenterCode: string | null;
10671
+ gameApiUrl: string | null;
10672
+ gameApiWsUrl: string | null;
10673
+ }>;
10674
+ };
10627
10675
  export type AppsForOrgQueryVariables = Exact<{
10628
10676
  orgSlug: Scalars['String']['input'];
10629
10677
  }>;
@@ -14893,7 +14941,7 @@ export type GmAutomationRunFieldsFragment = {
14893
14941
  runId: string;
14894
14942
  appId: string;
14895
14943
  flowId: string | null;
14896
- automationId: string;
14944
+ automationId: string | null;
14897
14945
  automationName: string;
14898
14946
  triggerSource: string;
14899
14947
  triggerId: string | null;
@@ -15064,7 +15112,7 @@ export type GameModelRunAutomationMutation = {
15064
15112
  runId: string;
15065
15113
  appId: string;
15066
15114
  flowId: string | null;
15067
- automationId: string;
15115
+ automationId: string | null;
15068
15116
  automationName: string;
15069
15117
  triggerSource: string;
15070
15118
  triggerId: string | null;
@@ -15223,7 +15271,7 @@ export type GameModelAutomationRunsQuery = {
15223
15271
  runId: string;
15224
15272
  appId: string;
15225
15273
  flowId: string | null;
15226
- automationId: string;
15274
+ automationId: string | null;
15227
15275
  automationName: string;
15228
15276
  triggerSource: string;
15229
15277
  triggerId: string | null;
@@ -15811,7 +15859,7 @@ export type GameModelFlowQuery = {
15811
15859
  runId: string;
15812
15860
  appId: string;
15813
15861
  flowId: string | null;
15814
- automationId: string;
15862
+ automationId: string | null;
15815
15863
  automationName: string;
15816
15864
  triggerSource: string;
15817
15865
  triggerId: string | null;
@@ -20136,6 +20184,7 @@ export declare const RuntimePermissionsDocument: DocumentNode<RuntimePermissions
20136
20184
  export declare const UpdateAccessTierDocument: DocumentNode<UpdateAccessTierMutation, UpdateAccessTierMutationVariables>;
20137
20185
  export declare const AppDocument: DocumentNode<AppQuery, AppQueryVariables>;
20138
20186
  export declare const AppBySlugDocument: DocumentNode<AppBySlugQuery, AppBySlugQueryVariables>;
20187
+ export declare const AppDiscoveryDocument: DocumentNode<AppDiscoveryQuery, AppDiscoveryQueryVariables>;
20139
20188
  export declare const AppsForOrgDocument: DocumentNode<AppsForOrgQuery, AppsForOrgQueryVariables>;
20140
20189
  export declare const ArchiveAppDocument: DocumentNode<ArchiveAppMutation, ArchiveAppMutationVariables>;
20141
20190
  export declare const AppCodeAdmissionModeDocument: DocumentNode<AppCodeAdmissionModeQuery, AppCodeAdmissionModeQueryVariables>;