@crowdedkingdoms/crowdyjs 12.1.0 → 13.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.
@@ -103,6 +103,18 @@ export type ActorFilterInput = {
103
103
  /** Restrict to a single actor by its 32-character ASCII actor id (the UDP-wire id, not a hyphenated UUID). */
104
104
  uuid?: InputMaybe<Scalars['String']['input']>;
105
105
  };
106
+ /** The signed-in identity behind a bearer token. */
107
+ export type ActorType = {
108
+ __typename?: 'ActorType';
109
+ /** Contributor uuid — the votes/content actor. */
110
+ contributorUuid: Scalars['String']['output'];
111
+ email: Maybe<Scalars['String']['output']>;
112
+ /** Legacy bigint public user id (Buddy / CK wire), as a string. */
113
+ userId: Scalars['String']['output'];
114
+ /** User identity (galaxy row uuid). */
115
+ userUuid: Scalars['String']['output'];
116
+ username: Maybe<Scalars['String']['output']>;
117
+ };
106
118
  /** Notification received when an actor (player or NPC) state is updated by another client or the server. Received via the udpNotifications subscription. */
107
119
  export type ActorUpdateNotification = {
108
120
  __typename?: 'ActorUpdateNotification';
@@ -1262,24 +1274,6 @@ export type AppUsageProjection = {
1262
1274
  /** True when at least 3 days have elapsed in the month (projection is meaningful). */
1263
1275
  sufficientData: Scalars['Boolean']['output'];
1264
1276
  };
1265
- /** Aggregate byte totals for one app over the requested window. All *Bytes fields are string counters (may exceed Int range). */
1266
- export type AppUsageRollupRow = {
1267
- __typename?: 'AppUsageRollupRow';
1268
- /** App id (as a string). */
1269
- appId: Scalars['String']['output'];
1270
- /** App display name. */
1271
- appName: Scalars['String']['output'];
1272
- /** App slug. */
1273
- appSlug: Scalars['String']['output'];
1274
- /** Total GraphQL bytes received (string counter). */
1275
- graphqlRecvBytes: Scalars['String']['output'];
1276
- /** Total GraphQL bytes sent (string counter). */
1277
- graphqlSendBytes: Scalars['String']['output'];
1278
- /** Total replication bytes received (string counter). */
1279
- replicationRecvBytes: Scalars['String']['output'];
1280
- /** Total replication bytes sent (string counter). */
1281
- replicationSendBytes: Scalars['String']['output'];
1282
- };
1283
1277
  /** Aggregate byte totals plus the top GraphQL operations for one app over the window. */
1284
1278
  export type AppUsageSummary = {
1285
1279
  __typename?: 'AppUsageSummary';
@@ -1472,23 +1466,6 @@ export type BatchActorLookupInput = {
1472
1466
  /** Actor ids to look up. Each is exactly 32 ASCII characters (the UDP-wire actor id), NOT a hyphenated RFC-4122 UUID. Must be non-empty; unknown ids are silently omitted from the result. */
1473
1467
  uuids: Array<Scalars['String']['input']>;
1474
1468
  };
1475
- /** Buddy (UDP replication) billing tier: message rate + bandwidth allotments and capacity charge. */
1476
- export type BuddyBillingTier = {
1477
- __typename?: 'BuddyBillingTier';
1478
- /** Maximum bandwidth allotment in megabits per second. */
1479
- bandwidthMbitPerSecond: Scalars['Float']['output'];
1480
- /** Capacity charge for this tier, in cents (placeholder until load tests). */
1481
- chargeCents: Scalars['BigInt']['output'];
1482
- /** ISO-4217 currency for chargeCents, e.g. 'usd'. */
1483
- currency: Scalars['String']['output'];
1484
- description: Maybe<Scalars['String']['output']>;
1485
- /** Customer-facing tier label. */
1486
- label: Scalars['String']['output'];
1487
- /** Maximum messages per second allotment. */
1488
- messagesPerSecond: Scalars['Int']['output'];
1489
- /** Tier level (1 = lowest offered tier). */
1490
- tierLevel: Scalars['Int']['output'];
1491
- };
1492
1469
  /** Live (most recent heartbeat) Buddy UDP throughput rates. */
1493
1470
  export type BuddyLiveRates = {
1494
1471
  __typename?: 'BuddyLiveRates';
@@ -1774,311 +1751,6 @@ export type ChunksByDistanceResponse = {
1774
1751
  /** Echo of the `skip` applied to this page, or null if none was supplied. */
1775
1752
  skip: Maybe<Scalars['Int']['output']>;
1776
1753
  };
1777
- export type CksBuddyHealth = {
1778
- __typename?: 'CksBuddyHealth';
1779
- /** UDP port clients connect to on the Buddy server. */
1780
- clientPort: Maybe<Scalars['Int']['output']>;
1781
- /** Currently connected client count reported by Buddy. */
1782
- clients: Maybe<Scalars['Int']['output']>;
1783
- /** Seconds since server_status.updated_at (game DB heartbeat). */
1784
- heartbeatAgeSec: Maybe<Scalars['Float']['output']>;
1785
- /** Public IPv4 of the Buddy UDP runtime VM, if registered. */
1786
- ip4: Maybe<Scalars['String']['output']>;
1787
- /** True when heartbeat is missing or older than the staleness threshold (~30s). Game-api rejects assignment when age > ~11s. */
1788
- isStale: Scalars['Boolean']['output'];
1789
- /** False when no server_status row exists for this environment. */
1790
- registered: Scalars['Boolean']['output'];
1791
- /** Buddy-reported server state from server_status (e.g. 'ReadyForClients'). */
1792
- status: Maybe<Scalars['String']['output']>;
1793
- /** Operator-facing hint when multiplayer assignment may fail. */
1794
- troubleshootingHint: Scalars['String']['output'];
1795
- /** Timestamp of the last server_status heartbeat (game DB). */
1796
- updatedAt: Maybe<Scalars['DateTime']['output']>;
1797
- };
1798
- /** Progress for the active or most recent deploy/destroy change order, with per-task counts and a retry hint. Durable change orders may expose read-only projected tasks and steps; planned work remains pending until an outcome is observed or inferred. */
1799
- export type CksDeployProgress = {
1800
- __typename?: 'CksDeployProgress';
1801
- /** Redeploy is allowed (failed deploy or stuck order cleared) */
1802
- canRetry: Scalars['Boolean']['output'];
1803
- changeOrderId: Scalars['String']['output'];
1804
- /** Change order kind (deploy or destroy pipeline identifier) */
1805
- changeOrderKind: Scalars['String']['output'];
1806
- changeOrderStatus: Scalars['String']['output'];
1807
- currentStepKind: Maybe<Scalars['String']['output']>;
1808
- currentTaskKind: Maybe<Scalars['String']['output']>;
1809
- error: Maybe<Scalars['String']['output']>;
1810
- /** True when the deploy failed but the change order was left in_progress */
1811
- isStuck: Scalars['Boolean']['output'];
1812
- targetVersion: Maybe<Scalars['String']['output']>;
1813
- tasks: Array<CksDeployProgressTask>;
1814
- tasksFailed: Scalars['Int']['output'];
1815
- tasksInProgress: Scalars['Int']['output'];
1816
- tasksPending: Scalars['Int']['output'];
1817
- tasksSucceeded: Scalars['Int']['output'];
1818
- tasksTotal: Scalars['Int']['output'];
1819
- };
1820
- /** A single step within a deploy/destroy task. Progress may be recorded directly or exposed as a read-only projection for a durable change order. Planned steps remain pending until an outcome is observed or inferred. */
1821
- export type CksDeployProgressStep = {
1822
- __typename?: 'CksDeployProgressStep';
1823
- /** Attempt count. For projected progress, 0 means no attempt or outcome has been observed or inferred; 1 means an attempt or outcome has been observed or inferred. */
1824
- attempt: Scalars['Int']['output'];
1825
- error: Maybe<Scalars['String']['output']>;
1826
- id: Scalars['String']['output'];
1827
- kind: Scalars['String']['output'];
1828
- /** Human-readable step label for the org UI */
1829
- label: Scalars['String']['output'];
1830
- /** Execution status. For projected progress, pending means the step is planned and no terminal outcome is available yet. */
1831
- status: Scalars['String']['output'];
1832
- };
1833
- /** A task in a deploy/destroy pipeline, containing ordered steps. Durable change orders may expose task progress as a read-only projection. */
1834
- export type CksDeployProgressTask = {
1835
- __typename?: 'CksDeployProgressTask';
1836
- error: Maybe<Scalars['String']['output']>;
1837
- id: Scalars['String']['output'];
1838
- kind: Scalars['String']['output'];
1839
- label: Scalars['String']['output'];
1840
- /** Execution status derived from available step outcomes. Active projected tasks may contain pending steps when exact live state is unavailable. */
1841
- status: Scalars['String']['output'];
1842
- steps: Array<CksDeployProgressStep>;
1843
- };
1844
- /** A provisioned (or provisioning/destroyed) tenant environment. status tracks provisioning lifecycle; billingStatus tracks payment lifecycle — they are independent. */
1845
- export type CksEnvironment = {
1846
- __typename?: 'CksEnvironment';
1847
- /** When billingStatus = grace, the deadline to add funds before suspension (~24h after the failed charge). Null otherwise. */
1848
- billingGraceDeadline: Maybe<Scalars['DateTime']['output']>;
1849
- /** Payment lifecycle (NOT provisioning): active; grace (a charge failed — funds must be added before billingGraceDeadline); suspension_queued -> suspended (runtime stopped for non-payment); resume_queued -> active after payment (resume_failed on error). Recover with resumeEnvironment. */
1850
- billingStatus: Scalars['String']['output'];
1851
- /** Selected Buddy billing tier level, if any. */
1852
- buddyBillingTier: Maybe<Scalars['Int']['output']>;
1853
- caddyFlavor: Maybe<Scalars['String']['output']>;
1854
- createdAt: Scalars['DateTime']['output'];
1855
- databaseFlavor: Maybe<Scalars['String']['output']>;
1856
- /** Environment release version the platform is driving toward (target/desired state). */
1857
- desiredEnvironmentVersion: Maybe<Scalars['String']['output']>;
1858
- displayName: Scalars['String']['output'];
1859
- /** 'dedicated' (multi-VM) or 'dev_single' (one dev-only VM). */
1860
- environmentClass: Scalars['String']['output'];
1861
- gameApiFlavor: Maybe<Scalars['String']['output']>;
1862
- gameApiMaxServers: Scalars['Int']['output'];
1863
- gameApiMinServers: Scalars['Int']['output'];
1864
- /** Selected GraphQL billing tier level, if any. */
1865
- graphqlBillingTier: Maybe<Scalars['Int']['output']>;
1866
- /** Opaque environment UUID (cks_environments.id). */
1867
- id: Scalars['String']['output'];
1868
- /** True for the single platform-owned shared environment (slug 'shared') that hosts the shared game-api serving apps with deploymentTarget='shared'. Customer environments are always false. */
1869
- isShared: Scalars['Boolean']['output'];
1870
- loadBalancerCount: Scalars['Int']['output'];
1871
- /** Release version actually observed running. Lags desiredEnvironmentVersion while a deploy is in progress. */
1872
- observedEnvironmentVersion: Maybe<Scalars['String']['output']>;
1873
- /** Owning organization id (BigInt). */
1874
- orgId: Scalars['BigInt']['output'];
1875
- /** Selected Postgres billing tier level, if any. */
1876
- postgresBillingTier: Maybe<Scalars['Int']['output']>;
1877
- /** Cloud provider, e.g. 'ovh'. */
1878
- primaryCloud: Scalars['String']['output'];
1879
- /** Primary datacenter/region code, e.g. 'GRA11'. */
1880
- primaryRegion: Scalars['String']['output'];
1881
- /** Single VM flavor when environmentClass = 'dev_single'. */
1882
- singleBoxFlavor: Maybe<Scalars['String']['output']>;
1883
- /** URL-safe environment identifier, stable for the environment's lifetime. Auto-generated as 'e-<12 chars>' unless a custom slug was supplied at creation. */
1884
- slug: Scalars['String']['output'];
1885
- /** Provisioning lifecycle (NOT billing): deploy_requested -> provisioning -> active; deploy_failed on error; destroy_requested -> destroyed (destroy_failed on error). See billingStatus for payment state. */
1886
- status: Scalars['String']['output'];
1887
- /** Subdomain handle used to build the environment public URLs. Null until assigned. */
1888
- subdomainHandle: Maybe<Scalars['String']['output']>;
1889
- /** When the environment was suspended for non-payment. Null unless suspended. */
1890
- suspendedAt: Maybe<Scalars['DateTime']['output']>;
1891
- udpBuddyFlavor: Maybe<Scalars['String']['output']>;
1892
- udpBuddyMaxServers: Scalars['Int']['output'];
1893
- udpBuddyMinServers: Scalars['Int']['output'];
1894
- updatedAt: Scalars['DateTime']['output'];
1895
- };
1896
- /** Audit-log entry recording an environment lifecycle action. */
1897
- export type CksEnvironmentAudit = {
1898
- __typename?: 'CksEnvironmentAudit';
1899
- action: Scalars['String']['output'];
1900
- createdAt: Scalars['DateTime']['output'];
1901
- environmentId: Scalars['String']['output'];
1902
- id: Scalars['String']['output'];
1903
- payloadJson: Maybe<Scalars['String']['output']>;
1904
- };
1905
- /** A billable cloud resource attributed to the environment, with its customer hourly price. */
1906
- export type CksEnvironmentBillingResource = {
1907
- __typename?: 'CksEnvironmentBillingResource';
1908
- componentKind: Scalars['String']['output'];
1909
- currency: Scalars['String']['output'];
1910
- /** Customer hourly price billed for this resource, in cents. */
1911
- customerHourlyPriceCents: Maybe<Scalars['BigInt']['output']>;
1912
- environmentId: Scalars['String']['output'];
1913
- flavorName: Maybe<Scalars['String']['output']>;
1914
- id: Scalars['String']['output'];
1915
- observedAt: Scalars['DateTime']['output'];
1916
- provider: Scalars['String']['output'];
1917
- region: Scalars['String']['output'];
1918
- resourceId: Scalars['String']['output'];
1919
- resourceName: Maybe<Scalars['String']['output']>;
1920
- status: Scalars['String']['output'];
1921
- };
1922
- /** An asynchronous change order tracking a deploy / destroy / scaling pipeline for an environment. Returned by mutations so callers can poll completion. */
1923
- export type CksEnvironmentChangeOrder = {
1924
- __typename?: 'CksEnvironmentChangeOrder';
1925
- claimedAt: Maybe<Scalars['DateTime']['output']>;
1926
- claimedBy: Maybe<Scalars['String']['output']>;
1927
- createdAt: Scalars['DateTime']['output'];
1928
- environmentId: Scalars['String']['output'];
1929
- error: Maybe<Scalars['String']['output']>;
1930
- finishedAt: Maybe<Scalars['DateTime']['output']>;
1931
- /** Change order UUID. */
1932
- id: Scalars['String']['output'];
1933
- /** Pipeline kind, e.g. 'deploy_environment_version', 'game_api_environment_destroy', or 'postgres_citus_destroy'. */
1934
- kind: Scalars['String']['output'];
1935
- /** JSON-encoded change order payload. */
1936
- payloadJson: Scalars['String']['output'];
1937
- /** User id (BigInt) that requested the change order. */
1938
- requestedBy: Maybe<Scalars['BigInt']['output']>;
1939
- /** Execution status: pending, claimed/in_progress, succeeded, failed, or cancelled. */
1940
- status: Scalars['String']['output'];
1941
- updatedAt: Scalars['DateTime']['output'];
1942
- };
1943
- /** One provisioned component of an environment (DNS, database VM, game-api, Buddy, load balancer, etc.) with its desired vs. observed version and spec. */
1944
- export type CksEnvironmentComponent = {
1945
- __typename?: 'CksEnvironmentComponent';
1946
- desiredSpecJson: Maybe<Scalars['String']['output']>;
1947
- desiredVersion: Maybe<Scalars['String']['output']>;
1948
- environmentId: Scalars['String']['output'];
1949
- id: Scalars['String']['output'];
1950
- kind: Scalars['String']['output'];
1951
- lastObservedAt: Maybe<Scalars['DateTime']['output']>;
1952
- observedSpecJson: Maybe<Scalars['String']['output']>;
1953
- observedVersion: Maybe<Scalars['String']['output']>;
1954
- status: Maybe<Scalars['String']['output']>;
1955
- };
1956
- /** Full environment detail returned by orgEnvironment: the environment plus its components, change orders, audit, secrets, outputs, billing resources, live deploy/destroy progress, and Buddy health. */
1957
- export type CksEnvironmentDetail = {
1958
- __typename?: 'CksEnvironmentDetail';
1959
- audit: Array<CksEnvironmentAudit>;
1960
- billingResources: Array<CksEnvironmentBillingResource>;
1961
- /** Buddy UDP server heartbeat from mirrored server_status. Null when env is destroyed or management DB has no row. */
1962
- buddyHealth: Maybe<CksBuddyHealth>;
1963
- changeOrders: Array<CksEnvironmentChangeOrder>;
1964
- components: Array<CksEnvironmentComponent>;
1965
- /** Deploy task/step progress for the active or most recent deploy. Durable change orders may expose read-only projected progress, with planned work pending until an outcome is observed or inferred. */
1966
- deployProgress: Maybe<CksDeployProgress>;
1967
- /** Destroy tear-down progress for game-api and platform change orders. Durable change orders may expose read-only projected progress and show planned work as pending. */
1968
- destroyProgress: Array<CksDeployProgress>;
1969
- environment: CksEnvironment;
1970
- outputs: Array<CksEnvironmentOutput>;
1971
- secrets: Array<CksEnvironmentSecretValue>;
1972
- };
1973
- /** A published output value from a provisioned component (e.g. URLs, handles, connection details). */
1974
- export type CksEnvironmentOutput = {
1975
- __typename?: 'CksEnvironmentOutput';
1976
- componentKind: Scalars['String']['output'];
1977
- environmentId: Scalars['String']['output'];
1978
- id: Scalars['String']['output'];
1979
- label: Scalars['String']['output'];
1980
- name: Scalars['String']['output'];
1981
- value: Scalars['String']['output'];
1982
- valueKind: Scalars['String']['output'];
1983
- };
1984
- /** Pricing quote for a proposed environment selection plus the org wallet balance, used to gate createEnvironment. All *Cents fields are in minor currency units (cents). */
1985
- export type CksEnvironmentQuote = {
1986
- __typename?: 'CksEnvironmentQuote';
1987
- /** Wallet balance still available after existing reservations, in cents. Compared against firstDayReserveCents. */
1988
- availableBalanceCents: Scalars['BigInt']['output'];
1989
- caddyFlavor: Scalars['String']['output'];
1990
- /** True when availableBalanceCents ≥ firstDayReserveCents, or when AUTO_BILLING_PAID_PROVISIONING_ENABLED is true and auto-billing is enabled with a saved payment method and enough period headroom to cover the shortfall. createEnvironment may auto-recharge before provisioning when the wallet is short but billing-ready. */
1991
- canCreate: Scalars['Boolean']['output'];
1992
- /** ISO-4217 currency of the *Cents fields, e.g. 'USD'. */
1993
- currency: Scalars['String']['output'];
1994
- databaseFlavor: Scalars['String']['output'];
1995
- datacenter: Scalars['String']['output'];
1996
- /** 'dedicated' (multi-VM) or 'dev_single' (one dev-only VM). */
1997
- environmentClass: Scalars['String']['output'];
1998
- /** Up-front wallet reserve required to create (≈ first day of runtime), in cents. */
1999
- firstDayReserveCents: Scalars['BigInt']['output'];
2000
- gameApiFlavor: Scalars['String']['output'];
2001
- gameApiMaxServers: Scalars['Int']['output'];
2002
- gameApiMinServers: Scalars['Int']['output'];
2003
- /** Total hourly price of the full selection, in cents. */
2004
- hourlyCostCents: Scalars['BigInt']['output'];
2005
- loadBalancerCount: Scalars['Int']['output'];
2006
- /** Single VM flavor when environmentClass = 'dev_single'. */
2007
- singleBoxFlavor: Maybe<Scalars['String']['output']>;
2008
- udpBuddyFlavor: Scalars['String']['output'];
2009
- udpBuddyMaxServers: Scalars['Int']['output'];
2010
- udpBuddyMinServers: Scalars['Int']['output'];
2011
- /** Org wallet balance, in cents. */
2012
- walletBalanceCents: Scalars['BigInt']['output'];
2013
- };
2014
- /** A sealed environment secret. Exposes ciphertext only (sealedCiphertextBase64) — never the plaintext. */
2015
- export type CksEnvironmentSecretValue = {
2016
- __typename?: 'CksEnvironmentSecretValue';
2017
- createdAt: Scalars['DateTime']['output'];
2018
- environmentId: Scalars['String']['output'];
2019
- id: Scalars['String']['output'];
2020
- kind: Maybe<Scalars['String']['output']>;
2021
- name: Scalars['String']['output'];
2022
- sealedCiphertextBase64: Scalars['String']['output'];
2023
- updatedAt: Scalars['DateTime']['output'];
2024
- };
2025
- /** An environment release version in the deployable catalog. */
2026
- export type CksEnvironmentVersion = {
2027
- __typename?: 'CksEnvironmentVersion';
2028
- /** Pinned cks-game-api git tag from the ingested manifest. */
2029
- gameApiGitTag: Maybe<Scalars['String']['output']>;
2030
- notes: Maybe<Scalars['String']['output']>;
2031
- releasedAt: Scalars['DateTime']['output'];
2032
- /** Release status, e.g. 'available' (deployable) or 'yanked' (withdrawn). */
2033
- status: Scalars['String']['output'];
2034
- /** Semantic version, e.g. 'v0.1.4'. */
2035
- version: Scalars['String']['output'];
2036
- };
2037
- /** An OVH datacenter offered for environment placement. Only datacenters with at least one customer-selectable flavor are returned by environmentDatacenters. */
2038
- export type CksOvhDatacenter = {
2039
- __typename?: 'CksOvhDatacenter';
2040
- city: Maybe<Scalars['String']['output']>;
2041
- continent: Maybe<Scalars['String']['output']>;
2042
- /** True when the datacenter is currently accepting new instances. */
2043
- isAvailable: Scalars['Boolean']['output'];
2044
- name: Maybe<Scalars['String']['output']>;
2045
- /** Region/datacenter code used as the datacenter arg, e.g. 'GRA11'. */
2046
- region: Scalars['String']['output'];
2047
- /** Number of customer-selectable instances in this datacenter after availability, pricing, and admin visibility filters. */
2048
- selectableInstanceCount: Scalars['Int']['output'];
2049
- /** Provider availability status string, e.g. 'UP'. */
2050
- status: Scalars['String']['output'];
2051
- syncedAt: Scalars['DateTime']['output'];
2052
- };
2053
- /** Customer-selectable catalog instance flavor. Hidden, unavailable, or unpriced rows are omitted from environmentFlavors. */
2054
- export type CksOvhFlavor = {
2055
- __typename?: 'CksOvhFlavor';
2056
- /** Catalog availability for this flavor, e.g. 'available'. */
2057
- availabilityStatus: Scalars['String']['output'];
2058
- /** ISO-4217 currency for the price fields, e.g. 'USD'. */
2059
- currency: Scalars['String']['output'];
2060
- /** Customer hourly price in cents. Non-null for every flavor returned from environmentFlavors. */
2061
- customerHourlyPriceCents: Scalars['BigInt']['output'];
2062
- /** Customer monthly reference price in cents. Display-only until monthly billing is implemented. */
2063
- customerMonthlyPriceCents: Maybe<Scalars['BigInt']['output']>;
2064
- /** Local disk in gigabytes. */
2065
- diskGb: Maybe<Scalars['Int']['output']>;
2066
- flavorName: Scalars['String']['output'];
2067
- flavorType: Maybe<Scalars['String']['output']>;
2068
- /** How the customer price was derived (e.g. fixed vs. markup mode). */
2069
- pricingMode: Scalars['String']['output'];
2070
- /** Where the customer price came from (pricing pipeline source). */
2071
- pricingSource: Maybe<Scalars['String']['output']>;
2072
- /** Remaining instances of this flavor the project may launch in the datacenter (OVH quota headroom). */
2073
- quotaAvailable: Maybe<Scalars['Int']['output']>;
2074
- /** RAM in megabytes. */
2075
- ramMb: Maybe<Scalars['Int']['output']>;
2076
- /** Raw OVH provider hourly cost in cents (pre-markup). Internal reference; bill against customerHourlyPriceCents. */
2077
- rawHourlyCostCents: Maybe<Scalars['BigInt']['output']>;
2078
- syncedAt: Scalars['DateTime']['output'];
2079
- /** Virtual CPU count. */
2080
- vcpus: Maybe<Scalars['Int']['output']>;
2081
- };
2082
1754
  /** Notification received when another client sends an audio packet (voice chat). Received via the udpNotifications subscription. */
2083
1755
  export type ClientAudioNotification = {
2084
1756
  __typename?: 'ClientAudioNotification';
@@ -2278,95 +1950,6 @@ export type ConnectionPageInfo = {
2278
1950
  /** Opaque cursor of the first edge in this page. */
2279
1951
  startCursor: Maybe<Scalars['String']['output']>;
2280
1952
  };
2281
- /** Operator-facing view of cks_environments. */
2282
- export type CpAdminEnvironment = {
2283
- __typename?: 'CpAdminEnvironment';
2284
- createdAt: Scalars['DateTime']['output'];
2285
- /** When true, purgeEnvironment is blocked. Toggle via setEnvironmentDeletionProtection. */
2286
- deletionProtectionEnabled: Scalars['Boolean']['output'];
2287
- deletionProtectionSetAt: Maybe<Scalars['DateTime']['output']>;
2288
- deletionProtectionSetByEmail: Maybe<Scalars['String']['output']>;
2289
- displayName: Scalars['String']['output'];
2290
- id: Scalars['ID']['output'];
2291
- orgId: Maybe<Scalars['String']['output']>;
2292
- primaryCloud: Scalars['String']['output'];
2293
- primaryRegion: Scalars['String']['output'];
2294
- slug: Scalars['String']['output'];
2295
- /** Provisioning lifecycle: deploy_requested -> provisioning -> active; deploy_failed; destroy_requested -> destroyed (destroy_failed on error). */
2296
- status: Scalars['String']['output'];
2297
- subdomainHandle: Maybe<Scalars['String']['output']>;
2298
- updatedAt: Scalars['DateTime']['output'];
2299
- };
2300
- /** One page of operator environment rows. Paging is 1-based: page 1 is the first page. */
2301
- export type CpAdminEnvironmentsPage = {
2302
- __typename?: 'CpAdminEnvironmentsPage';
2303
- /** Current 1-based page number. */
2304
- page: Scalars['Int']['output'];
2305
- /** Requested page size (max rows per page). */
2306
- pageSize: Scalars['Int']['output'];
2307
- /** Environment rows on this page. */
2308
- rows: Array<CpAdminEnvironment>;
2309
- /** Total rows across all pages (not just this page). */
2310
- total: Scalars['Int']['output'];
2311
- };
2312
- export type CpAuditEntry = {
2313
- __typename?: 'CpAuditEntry';
2314
- action: Scalars['String']['output'];
2315
- actorKind: Scalars['String']['output'];
2316
- actorUserId: Maybe<Scalars['String']['output']>;
2317
- createdAt: Scalars['DateTime']['output'];
2318
- entityId: Maybe<Scalars['String']['output']>;
2319
- entityKind: Maybe<Scalars['String']['output']>;
2320
- environmentId: Maybe<Scalars['String']['output']>;
2321
- id: Scalars['ID']['output'];
2322
- payloadJson: Maybe<Scalars['String']['output']>;
2323
- };
2324
- export type CpBuddyLiveRates = {
2325
- __typename?: 'CpBuddyLiveRates';
2326
- clientRecvMbitPerSec: Scalars['Float']['output'];
2327
- clientRecvMsgsPerSec: Scalars['Float']['output'];
2328
- clientSendMbitPerSec: Scalars['Float']['output'];
2329
- clientSendMsgsPerSec: Scalars['Float']['output'];
2330
- clients: Scalars['Float']['output'];
2331
- serverId: Scalars['String']['output'];
2332
- updatedAt: Scalars['DateTime']['output'];
2333
- };
2334
- export type CpChangeOrder = {
2335
- __typename?: 'CpChangeOrder';
2336
- claimedAt: Maybe<Scalars['DateTime']['output']>;
2337
- claimedBy: Maybe<Scalars['String']['output']>;
2338
- createdAt: Scalars['DateTime']['output'];
2339
- environmentId: Scalars['String']['output'];
2340
- error: Maybe<Scalars['String']['output']>;
2341
- finishedAt: Maybe<Scalars['DateTime']['output']>;
2342
- id: Scalars['ID']['output'];
2343
- /** Pipeline kind (e.g. deploy_environment_version, *_destroy). */
2344
- kind: Scalars['String']['output'];
2345
- /** JSON-encoded payload */
2346
- payloadJson: Maybe<Scalars['String']['output']>;
2347
- /** Execution status: pending, claimed/in_progress, succeeded, failed, or cancelled. */
2348
- status: Scalars['String']['output'];
2349
- updatedAt: Scalars['DateTime']['output'];
2350
- };
2351
- /** Change-order detail with ordered task and step progress. Durable change orders may return read-only projected rows when exact live execution details are unavailable. */
2352
- export type CpChangeOrderDetail = {
2353
- __typename?: 'CpChangeOrderDetail';
2354
- order: CpChangeOrder;
2355
- steps: Array<CpStepRow>;
2356
- tasks: Array<CpTaskRow>;
2357
- };
2358
- /** One page of operator change-order rows. Paging is 1-based: page 1 is the first page. */
2359
- export type CpChangeOrdersPage = {
2360
- __typename?: 'CpChangeOrdersPage';
2361
- /** Current 1-based page number. */
2362
- page: Scalars['Int']['output'];
2363
- /** Requested page size (max rows per page). */
2364
- pageSize: Scalars['Int']['output'];
2365
- /** Change-order rows on this page. */
2366
- rows: Array<CpChangeOrder>;
2367
- /** Total rows across all pages (not just this page). */
2368
- total: Scalars['Int']['output'];
2369
- };
2370
1953
  /** Operator-set platform ceilings for the per-app WASM compute policy. Each field caps the matching wasm_module_policy knob platform-wide: game-api rejects computeSetPolicy values above the ceiling. A null field means no operator override is stored — game-api falls back to its COMPUTE_PLATFORM_MAX_* env var (bootstrap default), then to the built-in code default. Edits propagate to game-api replicas via replica sync and apply within ~30 seconds, without a game-api restart. */
2371
1954
  export type CpComputePlatformCeilings = {
2372
1955
  __typename?: 'CpComputePlatformCeilings';
@@ -2393,91 +1976,6 @@ export type CpComputePlatformCeilings = {
2393
1976
  /** users.user_id of the operator who last updated the ceilings. Null when never edited. */
2394
1977
  updatedByUserId: Maybe<Scalars['String']['output']>;
2395
1978
  };
2396
- export type CpEnvSecretRow = {
2397
- __typename?: 'CpEnvSecretRow';
2398
- createdAt: Scalars['DateTime']['output'];
2399
- environmentId: Scalars['String']['output'];
2400
- id: Scalars['ID']['output'];
2401
- kind: Maybe<Scalars['String']['output']>;
2402
- name: Scalars['String']['output'];
2403
- rotatedAt: Maybe<Scalars['DateTime']['output']>;
2404
- };
2405
- /** Operator-facing view of one ingested (or git-only pending) environment release manifest. */
2406
- export type CpEnvironmentVersionRow = {
2407
- __typename?: 'CpEnvironmentVersionRow';
2408
- buddyVersion: Maybe<Scalars['String']['output']>;
2409
- gameApiGitTag: Maybe<Scalars['String']['output']>;
2410
- /** True when a row exists in cks_environment_versions. */
2411
- inDb: Scalars['Boolean']['output'];
2412
- /** True when releases/<version>.yaml exists on the configured git ref. */
2413
- inGit: Scalars['Boolean']['output'];
2414
- ingestedAt: Scalars['DateTime']['output'];
2415
- /** True when this ingested available release is what org redeploy targets (newest available, or ENVIRONMENT_DEFAULT_VERSION). */
2416
- isLatestAvailable: Scalars['Boolean']['output'];
2417
- notes: Maybe<Scalars['String']['output']>;
2418
- releasedAt: Scalars['DateTime']['output'];
2419
- sourceCommit: Maybe<Scalars['String']['output']>;
2420
- status: Scalars['String']['output'];
2421
- updatedAt: Scalars['DateTime']['output'];
2422
- version: Scalars['String']['output'];
2423
- };
2424
- /** Operator release manifest list merged from git and cks_environment_versions. */
2425
- export type CpEnvironmentVersionsPage = {
2426
- __typename?: 'CpEnvironmentVersionsPage';
2427
- /** False when GitHub manifest listing failed (e.g. invalid GITHUB_PAT). Rows may still come from the database. */
2428
- gitSourceAvailable: Scalars['Boolean']['output'];
2429
- /** Version org redeploy resolves to when no explicit version is passed. */
2430
- latestAvailableVersion: Maybe<Scalars['String']['output']>;
2431
- rows: Array<CpEnvironmentVersionRow>;
2432
- };
2433
- /** A user with operator and/or super-admin privileges. */
2434
- export type CpOperatorUser = {
2435
- __typename?: 'CpOperatorUser';
2436
- createdAt: Scalars['DateTime']['output'];
2437
- email: Maybe<Scalars['String']['output']>;
2438
- gamertag: Maybe<Scalars['String']['output']>;
2439
- /** True when users.is_operator is set (operator surface access). */
2440
- isOperator: Scalars['Boolean']['output'];
2441
- /** True when users.is_super_admin is set (implies operator access). */
2442
- isSuperAdmin: Scalars['Boolean']['output'];
2443
- userId: Scalars['ID']['output'];
2444
- };
2445
- export type CpOvhCatalogRow = {
2446
- __typename?: 'CpOvhCatalogRow';
2447
- /** Customer-facing hourly price in cents, as a string. */
2448
- customerHourlyPriceCents: Maybe<Scalars['String']['output']>;
2449
- /** How the customer price was derived (e.g. fixed vs. markup). */
2450
- customerPricingMode: Scalars['String']['output'];
2451
- diskGb: Maybe<Scalars['Int']['output']>;
2452
- flavorName: Scalars['String']['output'];
2453
- inboundBandwidth: Maybe<Scalars['Int']['output']>;
2454
- outboundBandwidth: Maybe<Scalars['Int']['output']>;
2455
- /** Raw OVH provider hourly cost in cents, as a string. Internal reference. */
2456
- ovhHourlyPriceCents: Maybe<Scalars['String']['output']>;
2457
- quotaAvailable: Maybe<Scalars['Int']['output']>;
2458
- ramMb: Maybe<Scalars['Int']['output']>;
2459
- region: Scalars['String']['output'];
2460
- vcpus: Maybe<Scalars['Int']['output']>;
2461
- };
2462
- /** Result of publishing an environment release from a game-api tag. */
2463
- export type CpPublishEnvironmentReleaseResult = {
2464
- __typename?: 'CpPublishEnvironmentReleaseResult';
2465
- /** True when releases/vX.Y.Z.yaml was committed to the manifest git ref. */
2466
- committedToGit: Scalars['Boolean']['output'];
2467
- /** Set when ingest succeeded but the GitHub manifest commit failed. */
2468
- gitCommitError: Maybe<Scalars['String']['output']>;
2469
- schemaChanged: Scalars['Boolean']['output'];
2470
- version: CpEnvironmentVersionRow;
2471
- };
2472
- export type CpSecretRow = {
2473
- __typename?: 'CpSecretRow';
2474
- createdAt: Scalars['DateTime']['output'];
2475
- environmentId: Scalars['String']['output'];
2476
- id: Scalars['ID']['output'];
2477
- kind: Maybe<Scalars['String']['output']>;
2478
- name: Scalars['String']['output'];
2479
- rotatedAt: Maybe<Scalars['DateTime']['output']>;
2480
- };
2481
1979
  /** Patch for cpSetComputePlatformCeilings. Omitted fields stay unchanged; a field set to an explicit null clears that override (game-api falls back to its COMPUTE_PLATFORM_MAX_* env var, then the code default); a value sets the ceiling. All values must be > 0. At least one field is required. */
2482
1980
  export type CpSetComputePlatformCeilingsInput = {
2483
1981
  /** Max fuel per invoke (decimal string). > 0; explicit null clears the override; omit to leave unchanged. */
@@ -2499,94 +1997,6 @@ export type CpSetComputePlatformCeilingsInput = {
2499
1997
  /** Max tick rate in Hz per module. > 0; explicit null clears the override; omit to leave unchanged. */
2500
1998
  maxTickHz?: InputMaybe<Scalars['Int']['input']>;
2501
1999
  };
2502
- /** Operator step progress. Rows may contain recorded execution progress or a read-only projection. Fields unavailable for projected progress remain null. */
2503
- export type CpStepRow = {
2504
- __typename?: 'CpStepRow';
2505
- /** Attempt indicator. For projected progress, 0 means no attempt or outcome has been observed or inferred; 1 means an attempt or outcome has been observed or inferred. */
2506
- attempt: Scalars['Int']['output'];
2507
- claimedBy: Maybe<Scalars['String']['output']>;
2508
- createdAt: Scalars['DateTime']['output'];
2509
- error: Maybe<Scalars['String']['output']>;
2510
- finishedAt: Maybe<Scalars['DateTime']['output']>;
2511
- handleJson: Maybe<Scalars['String']['output']>;
2512
- id: Scalars['ID']['output'];
2513
- idempotencyKey: Maybe<Scalars['String']['output']>;
2514
- intentJson: Maybe<Scalars['String']['output']>;
2515
- kind: Scalars['String']['output'];
2516
- ordinal: Scalars['Int']['output'];
2517
- outputJson: Maybe<Scalars['String']['output']>;
2518
- payloadJson: Maybe<Scalars['String']['output']>;
2519
- recheckAt: Maybe<Scalars['DateTime']['output']>;
2520
- startedAt: Maybe<Scalars['DateTime']['output']>;
2521
- /** Execution status. For projected progress, pending means the step is planned and no terminal outcome is available yet. */
2522
- status: Scalars['String']['output'];
2523
- taskId: Scalars['String']['output'];
2524
- updatedAt: Scalars['DateTime']['output'];
2525
- };
2526
- /** Operator task progress. Rows may contain recorded execution progress or a read-only projection for a durable change order. */
2527
- export type CpTaskRow = {
2528
- __typename?: 'CpTaskRow';
2529
- changeOrderId: Scalars['String']['output'];
2530
- /** JSON-encoded context */
2531
- contextJson: Maybe<Scalars['String']['output']>;
2532
- createdAt: Scalars['DateTime']['output'];
2533
- dependsOn: Array<Scalars['String']['output']>;
2534
- environmentId: Maybe<Scalars['String']['output']>;
2535
- error: Maybe<Scalars['String']['output']>;
2536
- finishedAt: Maybe<Scalars['DateTime']['output']>;
2537
- id: Scalars['ID']['output'];
2538
- kind: Scalars['String']['output'];
2539
- ordinal: Scalars['Int']['output'];
2540
- startedAt: Maybe<Scalars['DateTime']['output']>;
2541
- /** Execution status. For projected progress, pending means the task is planned and no terminal outcome is available yet. */
2542
- status: Scalars['String']['output'];
2543
- updatedAt: Scalars['DateTime']['output'];
2544
- };
2545
- /** cks-game-api tag on GitHub that is not yet pinned by any available environment release. */
2546
- export type CpUnreleasedGameApiTag = {
2547
- __typename?: 'CpUnreleasedGameApiTag';
2548
- /** Environment version that Publish & ingest would create (v0.1.N+1). */
2549
- proposedEnvironmentVersion: Scalars['String']['output'];
2550
- /** True when create-schema.sql differs between this tag and the current deploy-target game-api pin. */
2551
- schemaChanged: Scalars['Boolean']['output'];
2552
- tag: Scalars['String']['output'];
2553
- /** ISO timestamp when the tag was created on GitHub. */
2554
- taggedAt: Maybe<Scalars['String']['output']>;
2555
- };
2556
- /** Game-api tags eligible for one-click environment release publish. */
2557
- export type CpUnreleasedGameApiTagsPage = {
2558
- __typename?: 'CpUnreleasedGameApiTagsPage';
2559
- /** gameApiGitTag on the current org deploy target, if any. */
2560
- currentDeployTargetGameApiTag: Maybe<Scalars['String']['output']>;
2561
- /** False when GitHub tag listing failed (e.g. invalid GITHUB_PAT). */
2562
- gitSourceAvailable: Scalars['Boolean']['output'];
2563
- tags: Array<CpUnreleasedGameApiTag>;
2564
- };
2565
- export type CpUsageMinuteRow = {
2566
- __typename?: 'CpUsageMinuteRow';
2567
- minute: Scalars['DateTime']['output'];
2568
- recvBytes: Scalars['String']['output'];
2569
- recvMsgs: Maybe<Scalars['String']['output']>;
2570
- sendBytes: Scalars['String']['output'];
2571
- sendMsgs: Maybe<Scalars['String']['output']>;
2572
- };
2573
- export type CpUsageRatePeaks = {
2574
- __typename?: 'CpUsageRatePeaks';
2575
- avgSendMbitPerSec: Scalars['Float']['output'];
2576
- avgSendMsgsPerSec: Scalars['Float']['output'];
2577
- peakSendMbitPerSec: Scalars['Float']['output'];
2578
- peakSendMsgsPerSec: Scalars['Float']['output'];
2579
- sampleMinutes: Scalars['Float']['output'];
2580
- };
2581
- export type CpUsageSummary = {
2582
- __typename?: 'CpUsageSummary';
2583
- buddyLive: Maybe<CpBuddyLiveRates>;
2584
- environmentSlug: Scalars['String']['output'];
2585
- graphql: Array<CpUsageMinuteRow>;
2586
- orgId: Maybe<Scalars['String']['output']>;
2587
- replication: Array<CpUsageMinuteRow>;
2588
- replicationRates: CpUsageRatePeaks;
2589
- };
2590
2000
  /** Input for creating a new app access tier. */
2591
2001
  export type CreateAccessTierInput = {
2592
2002
  /** Numeric id of the app the tier belongs to. The caller must hold manage_access_tiers on this app. */
@@ -2752,51 +2162,6 @@ export type CreateCrowdyStudioProjectInput = {
2752
2162
  /** Optional stable crate-style SERVER module name. Deployment rechecks current authority. */
2753
2163
  serverModuleName?: InputMaybe<Scalars['String']['input']>;
2754
2164
  };
2755
- /** Input for createEnvironment. For dedicated (default) supply the four per-role flavors plus scaling counts; for dev_single supply a single flavor and the per-role/count fields are ignored. */
2756
- export type CreateEnvironmentInput = {
2757
- /** Optional app ids to link to the new environment at creation. Each must be unique; omit or pass an empty list to link none. */
2758
- appIds?: InputMaybe<Array<Scalars['String']['input']>>;
2759
- /** Buddy billing tier level from buddyBillingTiers. Defaults to tier 1 for dedicated environments. */
2760
- buddyBillingTier?: InputMaybe<Scalars['Int']['input']>;
2761
- /** Flavor name from environmentFlavors(datacenter) for the Caddy LB VMs in front of the game-api fleet; must have a published hourly price. Required for dedicated. */
2762
- caddyFlavor?: InputMaybe<Scalars['String']['input']>;
2763
- /** Flavor name from environmentFlavors(datacenter); must have a published hourly price. Required for dedicated. */
2764
- databaseFlavor?: InputMaybe<Scalars['String']['input']>;
2765
- /** OVH datacenter/region code from environmentDatacenters (e.g. 'GRA11'). */
2766
- datacenter: Scalars['String']['input'];
2767
- /** Human-readable environment name (max 80 chars). */
2768
- displayName: Scalars['String']['input'];
2769
- /** Deployment class: 'dedicated' (default, multi-VM) or 'dev_single' (one cheap dev-only VM running Postgres + management-api + game-api + Buddy). dev_single is not for production. */
2770
- environmentClass?: InputMaybe<Scalars['String']['input']>;
2771
- /** Single VM flavor for environmentClass='dev_single' (e.g. b3-8); must have a published hourly price. Ignored for dedicated. */
2772
- flavor?: InputMaybe<Scalars['String']['input']>;
2773
- /** Flavor name from environmentFlavors(datacenter) for per-tenant game-api VMs; must have a published hourly price. Required for dedicated. */
2774
- gameApiFlavor?: InputMaybe<Scalars['String']['input']>;
2775
- /** Autoscaling ceiling for game-api servers (min 1, ≥ gameApiMinServers). Required for dedicated; ignored for dev_single. */
2776
- gameApiMaxServers?: InputMaybe<Scalars['Int']['input']>;
2777
- /** Autoscaling floor for game-api servers (min 1). Required for dedicated; ignored for dev_single. */
2778
- gameApiMinServers?: InputMaybe<Scalars['Int']['input']>;
2779
- /** GraphQL billing tier level from graphqlBillingTiers. Defaults to tier 1 for dedicated environments. */
2780
- graphqlBillingTier?: InputMaybe<Scalars['Int']['input']>;
2781
- /** Super-admin only: designate this as the single platform-owned shared environment (slug 'shared') that hosts the shared game-api for apps with deploymentTarget='shared'. Must be a dedicated environment. Customers cannot set this; the management API rejects it for non-super-admins. */
2782
- isShared?: InputMaybe<Scalars['Boolean']['input']>;
2783
- /** Number of Caddy load-balancer VMs in front of the game-api fleet (min 1). Required for dedicated; ignored for dev_single. */
2784
- loadBalancerCount?: InputMaybe<Scalars['Int']['input']>;
2785
- /** Organization id (BigInt) that will own and be billed for the environment. */
2786
- orgId: Scalars['BigInt']['input'];
2787
- /** Postgres billing tier level from postgresBillingTiers. Defaults to tier 1 for dedicated environments. */
2788
- postgresBillingTier?: InputMaybe<Scalars['Int']['input']>;
2789
- /** Optional explicit slug for scripts/E2E. When omitted, the API auto-assigns a short slug. Must fit Route 53 DNS limits for this tier (typically 11–16 characters when DBOS is enabled; up to 40 on legacy runner). Lowercase letters, numbers, and dashes only. */
2790
- slug?: InputMaybe<Scalars['String']['input']>;
2791
- /** Flavor name from environmentFlavors(datacenter); must have a published hourly price. Required for dedicated. */
2792
- udpBuddyFlavor?: InputMaybe<Scalars['String']['input']>;
2793
- /** Autoscaling ceiling for Buddy UDP servers (min 1, ≥ udpBuddyMinServers). Required for dedicated; ignored for dev_single. */
2794
- udpBuddyMaxServers?: InputMaybe<Scalars['Int']['input']>;
2795
- /** Autoscaling floor for Buddy UDP servers (min 1). Required for dedicated; ignored for dev_single. */
2796
- udpBuddyMinServers?: InputMaybe<Scalars['Int']['input']>;
2797
- /** Base64-encoded 32-byte X25519 public key used to seal this environment’s secrets. Must decode to exactly 32 bytes. */
2798
- x25519PublicKeyBase64: Scalars['String']['input'];
2799
- };
2800
2165
  /** Defines a new grid by its app and two opposite corner chunks. The corners are normalized server-side into a low/high chunk box, so corner order is irrelevant and a single chunk (corner1 == corner2) is allowed. */
2801
2166
  export type CreateGridInput = {
2802
2167
  /** The app (tenant) the grid belongs to. */
@@ -3066,11 +2431,11 @@ export declare enum CrowdyStudioAgentLeaseType {
3066
2431
  }
3067
2432
  /** Human-selected authority mode. The model cannot change modes or elevate itself. */
3068
2433
  export declare enum CrowdyStudioAgentMode {
3069
- /** Read-only assistance and proposals. */
2434
+ /** Read bounded project, diagnostics, policy, and host context; no project or game writes. */
3070
2435
  Ask = "ASK",
3071
- /** Routine project edits and draft tests under ordinary write/run permissions. */
2436
+ /** Permit routine checkpointed project edits and draft tests under target write/run permissions and a workspace lease; live deployment is available only through an exact human approval. */
3072
2437
  Build = "BUILD",
3073
- /** Game control only while a human-granted, scoped, time-boxed control lease is active. */
2438
+ /** Permit bounded browser-host observation and gameplay tools only through a visible, human-granted, scoped lease; human input and policy/context changes preempt control immediately. */
3074
2439
  Play = "PLAY"
3075
2440
  }
3076
2441
  /** Per-player UTC-day cumulative limits plus player/app concurrency ceilings. */
@@ -3818,126 +3183,31 @@ export type DeployPlayerComputeInput = {
3818
3183
  /** Optional server tick rate in Hz. Omit for invoke/event-only modules or CLIENT artifacts. Clamped by the effective player/app policy. */
3819
3184
  tickHz?: InputMaybe<Scalars['Float']['input']>;
3820
3185
  };
3821
- export type DestroyEnvironmentInput = {
3822
- /** Optional idempotency key. Recommended for retries: replaying with the same key and identical input returns the first result instead of re-applying; the same key with different input returns IDEMPOTENCY_CONFLICT. Keys expire after 24h. */
3823
- idempotencyKey?: InputMaybe<Scalars['String']['input']>;
3824
- /** Organization id (BigInt) that owns the environment. */
3825
- orgId: Scalars['BigInt']['input'];
3826
- /** Slug of the environment to destroy (all cloud resources are torn down). */
3827
- slug: Scalars['String']['input'];
3828
- };
3829
3186
  /** Dev-only bypass sign-in (active only when DEV_AUTH_BYPASS is enabled; never in production). */
3830
3187
  export type DevLoginInput = {
3831
3188
  /** Email of the account to sign in as (created if absent). */
3832
3189
  email: Scalars['String']['input'];
3833
3190
  };
3834
- /** One manifest component's change in a redeploy plan: what the environment currently runs vs what the target release pins. */
3835
- export type EnvironmentComponentChange = {
3836
- __typename?: 'EnvironmentComponentChange';
3837
- /** True when the redeploy would change this component. */
3838
- changed: Scalars['Boolean']['output'];
3839
- /** Manifest component kind (e.g. 'game_api_environment', 'buddy', 'game_api_base_image'). */
3840
- component: Scalars['String']['output'];
3841
- /** Version the environment currently runs for this component (observed, falling back to last-desired). Null when never deployed. */
3842
- fromVersion: Maybe<Scalars['String']['output']>;
3843
- /** Version the target release pins for this component. Null when the target manifest omits the component. */
3844
- toVersion: Maybe<Scalars['String']['output']>;
3845
- };
3846
- /** A task the redeploy pipeline would enqueue, with its step kinds in execution order. Enumerated from the same planner the real change order uses. */
3847
- export type EnvironmentPlannedTask = {
3848
- __typename?: 'EnvironmentPlannedTask';
3849
- /** Task kinds this task waits on before starting. */
3850
- dependsOn: Array<Scalars['String']['output']>;
3851
- /** Task kind (e.g. 'apply_schema_in_place', 'update_game_api_1'). */
3852
- kind: Scalars['String']['output'];
3853
- /** Step kinds in order (e.g. 'pg:apply_schema', 'ssh:install_wasm_toolchain'). */
3854
- steps: Array<Scalars['String']['output']>;
3855
- };
3856
- /** Input for environmentQuote. Mirrors CreateEnvironmentInput’s class/flavor shape: dedicated needs the four per-role flavors + counts; dev_single needs only the single flavor. */
3857
- export type EnvironmentQuoteInput = {
3858
- /** Flavor name from environmentFlavors(datacenter) for the Caddy LB VMs in front of the game-api fleet; must have a published hourly price. Required for dedicated. */
3859
- caddyFlavor?: InputMaybe<Scalars['String']['input']>;
3860
- /** Flavor name from environmentFlavors(datacenter); must have a published hourly price. Required for dedicated. */
3861
- databaseFlavor?: InputMaybe<Scalars['String']['input']>;
3862
- /** OVH datacenter/region code from environmentDatacenters (e.g. 'GRA11'). */
3863
- datacenter: Scalars['String']['input'];
3864
- /** Deployment class: 'dedicated' (default) or 'dev_single'. */
3865
- environmentClass?: InputMaybe<Scalars['String']['input']>;
3866
- /** Single VM flavor for environmentClass='dev_single'. Ignored for dedicated. */
3867
- flavor?: InputMaybe<Scalars['String']['input']>;
3868
- /** Flavor name from environmentFlavors(datacenter) for per-tenant game-api VMs; must have a published hourly price. Required for dedicated. */
3869
- gameApiFlavor?: InputMaybe<Scalars['String']['input']>;
3870
- gameApiMaxServers?: InputMaybe<Scalars['Int']['input']>;
3871
- gameApiMinServers?: InputMaybe<Scalars['Int']['input']>;
3872
- loadBalancerCount?: InputMaybe<Scalars['Int']['input']>;
3873
- /** Organization id (BigInt) to quote against (uses its wallet balance). */
3874
- orgId: Scalars['BigInt']['input'];
3875
- /** Flavor name from environmentFlavors(datacenter); must have a published hourly price. Required for dedicated. */
3876
- udpBuddyFlavor?: InputMaybe<Scalars['String']['input']>;
3877
- udpBuddyMaxServers?: InputMaybe<Scalars['Int']['input']>;
3878
- udpBuddyMinServers?: InputMaybe<Scalars['Int']['input']>;
3879
- };
3880
- /** DRY RUN preview of redeployEnvironment: exactly what moving the environment to a target release version would do — component version diffs (game-api, Buddy, base images), whether game-DB schema DDL applies, and the pipeline tasks/steps that would run — WITHOUT creating a change order or touching any VM. Blockers list everything that would make the real mutation fail. */
3881
- export type EnvironmentRedeployPlan = {
3882
- __typename?: 'EnvironmentRedeployPlan';
3883
- /** Why the real redeployEnvironment call would be rejected right now (active change order, missing flavors, version not deployable, ...). Empty when the redeploy would proceed. */
3884
- blockers: Array<Scalars['String']['output']>;
3885
- /** Change-order kind the real mutation would enqueue ('redeploy_environment_services' or 'deploy_environment_version'). */
3886
- changeOrderKind: Maybe<Scalars['String']['output']>;
3887
- /** Per-component version diff between what the environment runs and what the target release pins. */
3888
- componentChanges: Array<EnvironmentComponentChange>;
3889
- /** Release version the environment currently observes (null before first deploy). */
3890
- currentVersion: Maybe<Scalars['String']['output']>;
3891
- /** How the redeploy would run: 'services' (in-place bump on existing VMs) or 'full' (full reprovision). Null when blocked before resolution. */
3892
- deployMode: Maybe<Scalars['String']['output']>;
3893
- /** Environment slug. */
3894
- environmentSlug: Scalars['String']['output'];
3895
- /** Human-readable highlights of what the redeploy does (game-api tag movement, Buddy artifact resolution, schema apply/skip, VM counts). */
3896
- notes: Array<Scalars['String']['output']>;
3897
- /** Git ref whose create-schema.sql would be applied. */
3898
- schemaGitRef: Maybe<Scalars['String']['output']>;
3899
- /** True when the plan applies the game schema (create-schema.sql at the target's schemaGitRef) to the tenant game DB in place. False when the observed schema ref already matches (apply skipped) or when blocked. */
3900
- schemaWillApply: Scalars['Boolean']['output'];
3901
- /** Release version the redeploy would move to (the requested version, or the latest available for the class when omitted). Null when no version resolves — see blockers. */
3902
- targetVersion: Maybe<Scalars['String']['output']>;
3903
- /** Pipeline tasks the change order would run (enumerated for 'services' mode; empty for 'full' mode and when blocked). */
3904
- tasks: Array<EnvironmentPlannedTask>;
3905
- };
3906
- /** Aggregate byte totals for one environment over the requested window. All *Bytes fields are string counters (may exceed Int range). */
3907
- export type EnvironmentUsageRollupRow = {
3908
- __typename?: 'EnvironmentUsageRollupRow';
3909
- /** Environment display name. */
3910
- displayName: Scalars['String']['output'];
3911
- /** Environment UUID (as a string). */
3912
- environmentId: Scalars['String']['output'];
3913
- /** Environment slug. */
3914
- environmentSlug: Scalars['String']['output'];
3915
- /** Total GraphQL bytes received (string counter). */
3916
- graphqlRecvBytes: Scalars['String']['output'];
3917
- /** Total GraphQL bytes sent (string counter). */
3918
- graphqlSendBytes: Scalars['String']['output'];
3919
- /** Total replication bytes received (string counter). */
3920
- replicationRecvBytes: Scalars['String']['output'];
3921
- /** Total replication bytes sent (string counter). */
3922
- replicationSendBytes: Scalars['String']['output'];
3923
- };
3924
- /** Per-minute replication and GraphQL usage time series for an environment, with rate peaks and live Buddy rates. */
3925
- export type EnvironmentUsageSummary = {
3926
- __typename?: 'EnvironmentUsageSummary';
3927
- /** Live Buddy UDP rates, or null when no live server is reporting. */
3928
- buddyLive: Maybe<BuddyLiveRates>;
3929
- /** Environment UUID (as a string). */
3930
- environmentId: Scalars['String']['output'];
3931
- /** Environment slug. */
3932
- environmentSlug: Scalars['String']['output'];
3933
- /** GraphQL API usage, one row per minute. */
3934
- graphql: Array<UsageMinuteRow>;
3935
- /** Owning organization id (as a string). */
3936
- orgId: Scalars['String']['output'];
3937
- /** Replication (game state sync) usage, one row per minute. */
3938
- replication: Array<UsageMinuteRow>;
3939
- /** Peak/average replication send rates. */
3940
- replicationRates: UsageRatePeaks;
3191
+ /** Atomically get-or-create a container by an opaque binding key. The key is unique per (appId, typeName, sessionId); concurrent ensures converge on one row. Creation-only fields are ignored when the row already exists. */
3192
+ export type EnsureContainerInput = {
3193
+ /** The app (tenant) the container belongs to. */
3194
+ appId: Scalars['BigInt']['input'];
3195
+ /** Opaque client-derived key (max 128 chars) identifying the shared container within (appId, typeName, sessionId). All concurrent ensures with the same key return the same containerId. */
3196
+ bindingKey: Scalars['String']['input'];
3197
+ /** Optional description. Used ONLY when this call creates the row. */
3198
+ description?: InputMaybe<Scalars['String']['input']>;
3199
+ /** Human-friendly display name. Used ONLY when this call creates the row. */
3200
+ displayName: Scalars['String']['input'];
3201
+ /** JSON object of metadata. Used ONLY when this call creates the row. */
3202
+ metadataJson?: InputMaybe<Scalars['String']['input']>;
3203
+ /** Owner user id, same rules as CreateContainerInput (defaults to the caller for member/owner types, shared null for admin types). Used ONLY when this call creates the row. */
3204
+ ownerUserId?: InputMaybe<Scalars['BigInt']['input']>;
3205
+ /** Initial property values. Used ONLY when this call creates the row. */
3206
+ properties?: InputMaybe<Array<SeedPropertyInput>>;
3207
+ /** Optional session scoping the key and the container (omit for app-global). Two sessions may hold the same bindingKey independently. */
3208
+ sessionId?: InputMaybe<Scalars['String']['input']>;
3209
+ /** The container type to resolve or instantiate. */
3210
+ typeName: Scalars['String']['input'];
3941
3211
  };
3942
3212
  /** Input for exchangePortalCode: the destination game (public client) trades a one-time portal code for an app-scoped gameplay token. Public (the code + PKCE verifier authorize the call). */
3943
3213
  export type ExchangePortalCodeInput = {
@@ -3982,7 +3252,6 @@ export type FreeAppQuotaApp = {
3982
3252
  /** URL slug for the app. */
3983
3253
  slug: Scalars['String']['output'];
3984
3254
  };
3985
- /** Status of the recurring free-play window during which gameplay is open without entitlement. */
3986
3255
  export type FreePlayWindowInfo = {
3987
3256
  __typename?: 'FreePlayWindowInfo';
3988
3257
  /** Human-readable description of the free-play schedule. */
@@ -4025,7 +3294,7 @@ export type FunctionParamInput = {
4025
3294
  /** int | float | string | bool | array | object | container_ref */
4026
3295
  valueType: Scalars['String']['input'];
4027
3296
  };
4028
- /** A declarative grid-permission effect the function applies TRANSACTIONALLY with its property mutations: grant or revoke runtime grid permissions (the same ACL Buddy enforces on movement/voxel writes) driven by game logic. Expressions are compiled server-side and evaluated in the invocation context (params plus the injected $caller_user_id / $self_owner_id / $session_id / $current_turn_user_id). If an effect fails, the whole invocation rolls back. Applied effects are recorded on the invocation event. */
3297
+ /** A declarative grid-permission effect the function applies TRANSACTIONALLY with its property mutations: grant or revoke runtime grid permissions (the same ACL Buddy enforces on movement/voxel writes) driven by game logic. Expressions are compiled server-side and evaluated in the invocation context (params plus the injected $caller_user_id / $self_owner_id / $session_id / $current_turn_user_id / $self_container_id). If an effect fails, the whole invocation rolls back. Applied effects are recorded on the invocation event. */
4029
3298
  export type FunctionPermissionEffectInput = {
4030
3299
  /** 'grant' (upsert direct grants, optionally expiring) or 'revoke' (delete direct grants for the listed keys). */
4031
3300
  action: Scalars['String']['input'];
@@ -4070,6 +3339,36 @@ export type GameHost = {
4070
3339
  /** The user_id of the elected host. Stable while this user has at least one fresh row in `actors` for the app; the next-oldest user takes over automatically once the current host stops heartbeating (its rows age past HOST_ACTOR_FRESHNESS_SECONDS) or Buddy idle-evicts its last row. */
4071
3340
  hostUserId: Scalars['BigInt']['output'];
4072
3341
  };
3342
+ /** One durable transition between complete app-scoped active gameplay-session counts. Delivery is cross-replica but best-effort; deduplicate by revision and requery gameModelActivePlayerCount after reconnect or a revision gap. */
3343
+ export type GameModelActivePlayerCountChange = {
3344
+ __typename?: 'GameModelActivePlayerCountChange';
3345
+ /** The app whose complete active-session count changed. */
3346
+ appId: Scalars['BigInt']['output'];
3347
+ /** New complete active gameplay-session count after this transition. */
3348
+ currentCount: Scalars['Int']['output'];
3349
+ /** Signed change: currentCount minus previousCount. */
3350
+ delta: Scalars['Int']['output'];
3351
+ /** Latest fresh Buddy heartbeat represented by the new count. */
3352
+ observedAt: Scalars['DateTime']['output'];
3353
+ /** Last complete active gameplay-session count before this transition. */
3354
+ previousCount: Scalars['Int']['output'];
3355
+ /** Durable monotonic app revision for this transition. Use it to deduplicate and detect gaps. */
3356
+ revision: Scalars['BigInt']['output'];
3357
+ };
3358
+ /** A point-in-time app-scoped count of active gameplay sessions. This counts sessions, not actors or distinct users; one user with multiple active sessions contributes multiple players. Status states whether the fleet-wide count is complete. */
3359
+ export type GameModelActivePlayerCountSnapshot = {
3360
+ __typename?: 'GameModelActivePlayerCountSnapshot';
3361
+ /** Active gameplay sessions currently reported for the app. For PARTIAL this is the best-known sum from supported fresh Buddies; for UNAVAILABLE it is zero because no live report can be observed. Check status before treating it as a complete fleet total. */
3362
+ activePlayerCount: Scalars['Int']['output'];
3363
+ /** The app whose active gameplay sessions were counted. */
3364
+ appId: Scalars['BigInt']['output'];
3365
+ /** Latest heartbeat time represented by this observation, or null when no fresh Buddy is available. */
3366
+ observedAt: Maybe<Scalars['DateTime']['output']>;
3367
+ /** Durable monotonic revision of complete count changes. Zero means the app is untracked or has not changed after its silent baseline. Partial and unavailable observations never advance it. */
3368
+ revision: Scalars['BigInt']['output'];
3369
+ /** Whether activePlayerCount is complete (FRESH), a supported-Buddy subset (PARTIAL), or unavailable because no Buddy heartbeat is fresh (UNAVAILABLE). */
3370
+ status: GameModelPlayerCountStatus;
3371
+ };
4073
3372
  /** Relay-style cursor-paginated connection over the function-invocation event log (GmEvent). Page with `first`/`after`; cursors are opaque. */
4074
3373
  export type GameModelEventsConnection = {
4075
3374
  __typename?: 'GameModelEventsConnection';
@@ -4080,6 +3379,15 @@ export type GameModelEventsConnection = {
4080
3379
  /** Total matching records across all pages, when known (null for sources that do not compute a total). */
4081
3380
  totalCount: Maybe<Scalars['Int']['output']>;
4082
3381
  };
3382
+ /** Completeness of an app-scoped active gameplay-session count across the fresh Buddy fleet. */
3383
+ export declare enum GameModelPlayerCountStatus {
3384
+ /** At least one non-Offline Buddy heartbeat is fresh and every fresh Buddy supports version 1 app-scoped counts. The count is complete. */
3385
+ Fresh = "FRESH",
3386
+ /** At least one non-Offline Buddy heartbeat is fresh, but one or more fresh Buddies do not support app-scoped counts. The count is only the best-known supported-Buddy sum and does not advance change revisions. */
3387
+ Partial = "PARTIAL",
3388
+ /** No non-Offline Buddy heartbeat is fresh enough to observe. The count is unavailable and does not advance change revisions. */
3389
+ Unavailable = "UNAVAILABLE"
3390
+ }
4083
3391
  /** Asynchronous error from the UDP game server for a previously sent datagram (e.g. a send* mutation). Delivered as a member of the udpNotifications union, NOT as a GraphQL error on the mutation (which only reports whether the datagram was accepted for sending). Match it to the originating send via sequenceNumber and read errorCode for the reason. Note: not every failure produces one — some auth failures are dropped silently (see UdpErrorCode). */
4084
3392
  export type GenericErrorResponse = {
4085
3393
  __typename?: 'GenericErrorResponse';
@@ -4350,22 +3658,22 @@ export type GmAutomationStats = {
4350
3658
  /** The window size in minutes. */
4351
3659
  windowMinutes: Scalars['Int']['output'];
4352
3660
  };
4353
- /** An event subscription that fires an automation in reaction to model activity (matched in the API server, not the DB). */
3661
+ /** An event subscription that fires an automation in reaction to model activity or a complete app-scoped active-player-count transition (matched in the API server, not a DB trigger). */
4354
3662
  export type GmAutomationTrigger = {
4355
3663
  __typename?: 'GmAutomationTrigger';
4356
3664
  /** The app (tenant). */
4357
3665
  appId: Scalars['BigInt']['output'];
4358
3666
  /** The automation this trigger fires. */
4359
3667
  automationId: Scalars['String']['output'];
4360
- /** Filter: only this container type. */
3668
+ /** Filter: only this container type. Always null for player_count_changed. */
4361
3669
  containerTypeName: Maybe<Scalars['String']['output']>;
4362
- /** Debounce/coalesce window in ms. */
3670
+ /** Debounce window in ms. player_count_changed coalesces on the trailing edge; other model events use their existing leading-edge behavior. */
4363
3671
  debounceMs: Scalars['Int']['output'];
4364
- /** Filter: only this function name. */
3672
+ /** Filter: only this function name. Always null for player_count_changed. */
4365
3673
  functionName: Maybe<Scalars['String']['output']>;
4366
- /** The model event: function_invoked | property_changed | container_created. */
3674
+ /** Observed event: function_invoked | property_changed | container_created | player_count_changed. */
4367
3675
  onEvent: Scalars['String']['output'];
4368
- /** Filter: only this property key. */
3676
+ /** Filter: only this property key. Always null for player_count_changed. */
4369
3677
  propertyKey: Maybe<Scalars['String']['output']>;
4370
3678
  /** Unique trigger id (UUID). */
4371
3679
  triggerId: Scalars['String']['output'];
@@ -4375,6 +3683,8 @@ export type GmContainer = {
4375
3683
  __typename?: 'GmContainer';
4376
3684
  /** The app (tenant) that owns the container. */
4377
3685
  appId: Scalars['BigInt']['output'];
3686
+ /** Opaque client-derived key the container was ensured under (unique per appId + typeName + sessionId), or null when it was created without one. */
3687
+ bindingKey: Maybe<Scalars['String']['output']>;
4378
3688
  /** Unique container id (UUID). */
4379
3689
  containerId: Scalars['String']['output'];
4380
3690
  /** Optional description. */
@@ -4460,6 +3770,14 @@ export type GmEdge = {
4460
3770
  /** Optional edge weight. */
4461
3771
  weight: Maybe<Scalars['Float']['output']>;
4462
3772
  };
3773
+ /** Result of gameModelEnsureContainer: the resolved container plus whether this call inserted it. */
3774
+ export type GmEnsureContainerResult = {
3775
+ __typename?: 'GmEnsureContainerResult';
3776
+ /** The container all ensures of this key converge on. */
3777
+ container: GmContainer;
3778
+ /** True when THIS call created the row; false when it resolved an existing one (creation-only input fields were ignored). */
3779
+ created: Scalars['Boolean']['output'];
3780
+ };
4463
3781
  /** An audit-log entry recording one function invocation and its outcome. */
4464
3782
  export type GmEvent = {
4465
3783
  __typename?: 'GmEvent';
@@ -4837,23 +4155,6 @@ export type GraphQlServer = {
4837
4155
  /** When this server row was last updated (heartbeat). Use to judge freshness. */
4838
4156
  updatedAt: Scalars['DateTime']['output'];
4839
4157
  };
4840
- /** GraphQL (game API) billing tier: endpoint call rate + bandwidth allotments and capacity charge. */
4841
- export type GraphqlBillingTier = {
4842
- __typename?: 'GraphqlBillingTier';
4843
- /** Maximum bandwidth allotment in megabits per second. */
4844
- bandwidthMbitPerSecond: Scalars['Float']['output'];
4845
- /** Capacity charge for this tier, in cents (placeholder until load tests). */
4846
- chargeCents: Scalars['BigInt']['output'];
4847
- /** ISO-4217 currency for chargeCents, e.g. 'usd'. */
4848
- currency: Scalars['String']['output'];
4849
- description: Maybe<Scalars['String']['output']>;
4850
- /** Maximum endpoint calls per second allotment (per endpoint). */
4851
- endpointCallsPerSecond: Scalars['Int']['output'];
4852
- /** Customer-facing tier label. */
4853
- label: Scalars['String']['output'];
4854
- /** Tier level (1 = lowest offered tier). */
4855
- tierLevel: Scalars['Int']['output'];
4856
- };
4857
4158
  /** Usage totals for a single GraphQL operation over the window. */
4858
4159
  export type GraphqlOperationUsageRow = {
4859
4160
  __typename?: 'GraphqlOperationUsageRow';
@@ -4987,9 +4288,9 @@ export type GridListing = {
4987
4288
  /** Resale policy for the grid. */
4988
4289
  resalePolicy: Scalars['String']['output'];
4989
4290
  /** Catalog status: 'active' or 'delisted'. */
4990
- status: Scalars['String']['output'];
4291
+ status: Maybe<Scalars['String']['output']>;
4991
4292
  /** Studio cut (bps) on resale, when applicable. */
4992
- studioCutBps: Scalars['Int']['output'];
4293
+ studioCutBps: Maybe<Scalars['Int']['output']>;
4993
4294
  };
4994
4295
  /** Kind of principal holding grid title. P1 can assign USER owners; GROUP and ORG are schema-reserved for future shared ownership. */
4995
4296
  export declare enum GridOwnerKind {
@@ -5143,16 +4444,6 @@ export type ImportCrowdyStudioProjectFileInput = {
5143
4444
  /** Private LIBRARY or app-curated COMMON source. */
5144
4445
  source: CrowdyStudioImportSource;
5145
4446
  };
5146
- export type IngestEnvironmentVersionInput = {
5147
- /** Overwrite an existing version row if one already exists (default false). */
5148
- force?: Scalars['Boolean']['input'];
5149
- /** Override the release notes. Defaults to the manifest value. */
5150
- notes?: InputMaybe<Scalars['String']['input']>;
5151
- /** Override the manifest status (e.g. 'available'). Defaults to the manifest value. */
5152
- status?: InputMaybe<Scalars['String']['input']>;
5153
- /** Environment release version to ingest, e.g. 'v0.1.4'. */
5154
- version: Scalars['String']['input'];
5155
- };
5156
4447
  export type InviteOrgMemberInput = {
5157
4448
  /** Organization to add the user to (BigInt as string). */
5158
4449
  orgId: Scalars['BigInt']['input'];
@@ -5181,14 +4472,6 @@ export type JoinSessionInput = {
5181
4472
  /** The session id to join. */
5182
4473
  sessionId: Scalars['String']['input'];
5183
4474
  };
5184
- export type LinkAppToEnvironmentInput = {
5185
- /** App id (BigInt) to link. Must be unlinked and not a shared app. */
5186
- appId: Scalars['BigInt']['input'];
5187
- /** Environment slug (cks_environments.slug) to link the app to. */
5188
- environmentSlug: Scalars['String']['input'];
5189
- /** Organization id (BigInt) that owns both the app and the environment. */
5190
- orgId: Scalars['BigInt']['input'];
5191
- };
5192
4475
  /** Link an additional federated identity to the signed-in account. */
5193
4476
  export type LinkIdentityInput = {
5194
4477
  code: Scalars['String']['input'];
@@ -5331,8 +4614,6 @@ export type Mutation = {
5331
4614
  createChannelRole: GroupRole;
5332
4615
  /** Creates a Checkout row, opens a hosted payment session with the selected provider, and returns the row with `externalUrl` set — redirect the user there to pay. Status starts PENDING and is reconciled to COMPLETED/FAILED later via provider webhooks (this call does not itself capture funds). The side effect applied on completion depends on `purpose` (e.g. ORG_WALLET_TOPUP credits the org wallet, APP_ACCESS_PURCHASE grants app access). Requires an authenticated user; ORG_WALLET_TOPUP additionally requires the 'manage_billing' org permission. Purposes DONATION and PROPERTY_TOKENS are rejected. Pass `input.idempotencyKey` to make retries safe (a replay returns the first checkout instead of opening a second provider session). */
5333
4616
  createCheckout: Checkout;
5334
- /** Provisions a new environment. SIDE EFFECTS / COST: creates billable cloud infrastructure (OVH VMs + DNS) and starts hourly wallet charges; fails if the wallet's available balance is below the first-day reserve (see environmentQuote.canCreate). Each selected flavor must be available and customer-priced (use environmentFlavors / environmentDatacenters). When input.slug is omitted the slug is auto-generated as 'e-<12 chars>'. Returns immediately with status 'deploy_requested'; poll orgEnvironment for deploy progress. Requires the 'manage_environments' org permission. */
5335
- createEnvironment: CksEnvironmentDetail;
5336
4617
  /** Create a grid: a named 3D box of chunks that runtime/world (voxel) permissions are scoped to. The box must fit within one of the app's grid assignments (its buildable regions); it MAY be nested inside a broader containing grid such as the open-by-default world grid, but must not partially overlap a peer grid. Requires app-admin ('manage_apps'). Returns a hybrid response — on success `grid` is populated and `error` is NO_ERROR; on failure `grid` is null and `error` is a UDP-style error code (e.g. NO_MATCHING_GRID_ASSIGNMENT, GRID_OUTSIDE_ASSIGNMENT, GRID_OVERLAPS_EXISTING, GRID_ALREADY_EXISTS). */
5337
4618
  createGrid: CreateGridResponse;
5338
4619
  /** Create a studio grid listing (07 §1.1): a blueprint that stamps a fresh grid per sale, or a concrete grid. Requires 'manage_apps'. Purchase (in-game) confers grid_ownership + the listed keys + quota preset atomically. */
@@ -5415,11 +4696,9 @@ export type Mutation = {
5415
4696
  deleteChannel: Scalars['Boolean']['output'];
5416
4697
  /** Delete a non-system channel role. Requires the 'manage_roles' channel permission (app admins bypass). The system 'leader' role cannot be deleted. DESTRUCTIVE: removes the role from members. Returns true if a role was deleted. */
5417
4698
  deleteChannelRole: Scalars['Boolean']['output'];
5418
- /** Operator only (is_operator). Deletes a control-plane secret by environment + name and writes an audit entry. Returns true when a secret was removed. */
5419
- deleteCpSecret: Scalars['Boolean']['output'];
5420
4699
  /** Delete a studio-created peer grid so its chunk box no longer blocks overlapping grid creation. Requires app-admin ('manage_apps'). Returns a hybrid response — on success `gridId` is populated and `error` is NO_ERROR; on failure `gridId` is null and `error` is a UDP-style error code (e.g. GRID_NOT_FOUND, CANNOT_DELETE_DEFAULT_WORLD_GRID, GRID_HAS_NESTED_CHILDREN). The open-by-default world grid and any grid that still contains nested child grids cannot be deleted. */
5421
4700
  deleteGrid: DeleteGridResponse;
5422
- /** DESTRUCTIVE self-service: soft-deletes the authenticated caller's OWN account — anonymizes PII and revokes all sessions; wallet, voxel, and donation history stay intact via FK. Acts only on the caller (no target argument). Requires a valid game token. NOTE: the users table is management-owned, so in cks-game-api this throws ForbiddenException — call cks-management-api instead. */
4701
+ /** DESTRUCTIVE self-service: soft-deletes the authenticated caller's OWN account — anonymizes PII and revokes all sessions; wallet, voxel, and donation history stay intact via FK. Acts only on the caller (no target argument). Requires a valid game token. */
5423
4702
  deleteMyAccount: Scalars['Boolean']['output'];
5424
4703
  /** Deletes an organization role. Requires the 'manage_members' permission on the role's org (super admins bypass). DESTRUCTIVE: removes the role and unassigns it from all members. Returns false if the role does not exist. */
5425
4704
  deleteOrgRole: Scalars['Boolean']['output'];
@@ -5433,15 +4712,13 @@ export type Mutation = {
5433
4712
  deleteTeamRole: Scalars['Boolean']['output'];
5434
4713
  /** DESTRUCTIVE: deletes the authenticated user’s per-app state row for `appId` and returns the deleted row. Requires a valid game token; acts only on the caller’s own state. Throws NotFound when no row exists. */
5435
4714
  deleteUserAppState: UserAppState;
5436
- /** DESTRUCTIVE and IRREVERSIBLE. Tears down all cloud resources for the environment (per-tenant Postgres, game-api, Buddy, and load-balancer VMs plus DNS records) and revokes its service tokens; all tenant data is lost. Sets status to 'destroy_requested' and returns the tracking change order — poll orgEnvironment.destroyProgress. Fails if a destroy is already queued. After it reaches 'destroyed', call purgeEnvironment to remove the record. Requires the 'manage_environments' org permission. */
5437
- destroyEnvironment: CksEnvironmentChangeOrder;
5438
4715
  /** DEV ONLY bypass sign-in: returns a session for the given email without email/social verification. Active only when DEV_AUTH_BYPASS is enabled; throws (FORBIDDEN) otherwise. Never enabled in production. */
5439
4716
  devLogin: AuthResponse;
5440
4717
  /** Close the UDP proxy session and socket for this game token. Unsubscribing from udpNotifications does not disconnect; use this mutation (or rely on server inactivity timeout). */
5441
4718
  disconnectUdpProxy: Scalars['Boolean']['output'];
5442
4719
  /** Exchange a one-time portal authorization code (with the matching PKCE verifier) for an app-scoped gameplay token. Public (the code + verifier authorize the call); called by the destination game at its own origin so the game never sees the player's session token. */
5443
4720
  exchangePortalCode: AppTokenResponse;
5444
- /** ADMIN/DESTRUCTIVE: revokes ALL of the target user’s sessions by deleting every game_token row, forcing re-authentication on every device. Returns true if at least one session was revoked. Requires a super-admin bearer game token (and the management API enabled). NOTE: management-owned in cks-game-api (throws ForbiddenException) — use cks-management-api. */
4721
+ /** ADMIN/DESTRUCTIVE: revokes ALL of the target user’s sessions by deleting every game_token row, forcing re-authentication on every device. Returns true if at least one session was revoked. Requires a super-admin bearer game token (and the management API enabled). */
5445
4722
  forceLogoutUser: Scalars['Boolean']['output'];
5446
4723
  /** Create a directed relationship edge between two containers (the game model is a graph), with a relationship type and optional weight. Requires a valid token. */
5447
4724
  gameModelAddEdge: GmEdge;
@@ -5465,6 +4742,8 @@ export type Mutation = {
5465
4742
  gameModelDeleteFunction: Scalars['Boolean']['output'];
5466
4743
  /** Delete a property definition from a container type. Does not remove instance property values already stored on containers. Requires app-admin ('manage_apps'). DESTRUCTIVE. Returns true if a definition was deleted. */
5467
4744
  gameModelDeletePropertyDef: Scalars['Boolean']['output'];
4745
+ /** Atomically get-or-create a container by an opaque bindingKey, unique per (appId, typeName, sessionId). Concurrent ensures with the same key all return the SAME containerId and exactly one response has created: true — no client-side leader election or list-then-create coordination is needed for shared world objects. When the row already exists this behaves like a read (creation-only fields are ignored and the type's instantiableBy rule is NOT enforced); when it does not exist, creation is authorized exactly like gameModelCreateContainer (instantiableBy + owner rules), so a caller who may not instantiate the type errors only in the not-exists case. NOTE: bindingKey is client-supplied and not yet policy-governed; shared world objects should use admin-instantiable types so only app admins can create the keyed row. Requires a valid token. */
4746
+ gameModelEnsureContainer: GmEnsureContainerResult;
5468
4747
  /** Grant a feature key to an access tier, so users on that tier satisfy tier_feature authority checks for it. Requires app-admin ('manage_apps'). */
5469
4748
  gameModelGrantTierFeature: GmTierFeature;
5470
4749
  /** Invoke a studio-defined function against a 'self' container with JSON params. The server enforces the function's invoke policy (authority rule tree: owner_of_self / is_host / is_current_turn / is_participant / tier_feature / group_permission / grid_permission / condition), evaluates its expressions, atomically applies its declared property mutations, logs an event, and returns the result (return value + mutations applied, or success=false with an error message). Invoke-policy denials are gameplay verdicts, NOT exceptions: they return success=false with errorMessage and log a failure event (observable via gameModelEvents). Scope violations (calling a server-scope function as a non-admin, or an internal function directly) are misconfigurations and throw FORBIDDEN. This is the primary, safe way for players to mutate game state. Requires a valid token; only player-scope functions are invocable here. */
@@ -5489,7 +4768,7 @@ export type Mutation = {
5489
4768
  gameModelSetSessionTurn: GmSession;
5490
4769
  /** Create or update an autonomous process ("automation" / NPC): a server-driven entry-point function bound to a trigger (schedule | event | manual), an optional run-as identity, a target/candidate selector, and a per-automation safety budget. The entry-point function must be marked autonomousInvocable. Idempotent on (app, name). Requires app-admin ('manage_apps'). */
5491
4770
  gameModelUpsertAutomation: GmAutomation;
5492
- /** Create an event trigger that fires an automation in reaction to model activity (a function invocation, a direct property write, or a container creation). Matched in the API server post-commit. Requires app-admin ('manage_apps'). */
4771
+ /** Create an event trigger that fires an automation in reaction to model activity or a complete app-scoped active-player-count transition. player_count_changed rejects model filters, starts silent-baseline tracking, injects reserved previous/current/delta/revision params, and uses trailing-edge debounce; other event behavior is unchanged. Matched in the API server post-commit. Requires app-admin ('manage_apps'). */
5493
4772
  gameModelUpsertAutomationTrigger: GmAutomationTrigger;
5494
4773
  /** Create or update a container type: the studio-defined schema for a kind of runtime entity (like a class). Idempotent on (app, typeName). Requires app-admin ('manage_apps'). */
5495
4774
  gameModelUpsertContainerType: GmContainerType;
@@ -5503,8 +4782,6 @@ export type Mutation = {
5503
4782
  grantGridPermissions: GridUserPermissions;
5504
4783
  /** Org dashboard shortcut: the authenticated caller grants themselves access to an app using its default active tier. Requires that the caller is an active member of the app's owning org OR holds the 'manage_access_tiers' permission on the app. ENTITLEMENT CHANGE: upserts an active grant and notifies the game API. Errors if the app has no active tier, or the caller is neither a member nor a manager. */
5505
4784
  grantMyAppAccess: AppUserAccess;
5506
- /** Operator only (is_operator). Ingests a release manifest into cks_environment_versions, making the version deployable, and writes an audit entry. Use force to overwrite an existing row. */
5507
- ingestEnvironmentVersion: CpEnvironmentVersionRow;
5508
4785
  /** Install an acquired listing after consenting to its capability summary (echo the version's capabilityHash as consentCapabilityHash — a mismatch fails closed). Server halves register through the same P1 registry as instances in a grid the caller OWNS (requires run_server_code) and run as the grid owner on their quota/wallet — never as the author. Bundled client halves attach to the grid for per-visitor consent (D2); omitting gridId makes a personal client-only install. Fail-closed on entitlement, admission, consent, ownership, and run keys. */
5509
4786
  installPlayerCode: PlayerCodeInstall;
5510
4787
  /** Adds a user to an organization as a member. Requires the 'manage_members' permission on the target org (super admins bypass). */
@@ -5519,13 +4796,11 @@ export type Mutation = {
5519
4796
  leaveChannel: Scalars['Boolean']['output'];
5520
4797
  /** Leave a team (removes the caller's own membership). Returns true if a membership was removed. */
5521
4798
  leaveTeam: Scalars['Boolean']['output'];
5522
- /** Links an unlinked app to an existing environment for split-mode routing. Refuses shared apps and apps already linked elsewhere. Requires the 'manage_environments' org permission. */
5523
- linkAppToEnvironment: App;
5524
4799
  /** Link an additional federated identity (from a socialLoginStart callback) to the signed-in account. Requires a session token; throws if the identity is already linked to another account. */
5525
4800
  linkIdentity: UserIdentity;
5526
4801
  /** Authenticates with email + password and starts a new session. Returns an AuthResponse whose `token` must be sent on subsequent requests as `Authorization: Bearer <token>`. Public (no auth required); throws on invalid credentials. If the account also has another verified sign-in method, the password must first be email-confirmed. */
5527
4802
  login: AuthResponse;
5528
- /** Single-device logout: revokes the game token that authenticated this request by deleting its game_tokens row. Returns true if a token was revoked, false if the request had no game token. Other devices/tokens are unaffected (use the Management API to revoke all devices). After this, the bearer token is rejected and any open UDP proxy session will no longer authorize new traffic. */
4803
+ /** Ends the current session by deleting the game_token that authenticated this request; other devices stay logged in. An identity session logout also cascades to (revokes) every app token it minted. Returns false if no token was resolved. */
5529
4804
  logout: Scalars['Boolean']['output'];
5530
4805
  /** Ends every active session for the authenticated user (deletes all their game_tokens and records revocations). Requires a valid session token. */
5531
4806
  logoutAllDevices: Scalars['Boolean']['output'];
@@ -5557,22 +4832,12 @@ export type Mutation = {
5557
4832
  playerModelSetProperty: PlayerModelContainer;
5558
4833
  /** 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. */
5559
4834
  publishAppToShared: PublishAppResult;
5560
- /** Operator only (is_operator). Cuts a new environment release from a cks-game-api git tag: ingests it as available and commits the manifest to the git ref. SIDE EFFECT: makes the version the new redeploy target and writes to GitHub. Use force to overwrite. Writes an audit entry. */
5561
- publishEnvironmentReleaseFromGameApiTag: CpPublishEnvironmentReleaseResult;
5562
4835
  /** 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. */
5563
4836
  publishPlayerCode: PlayerCodeListing;
5564
4837
  /** 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. */
5565
4838
  publishPlayerCodeVersion: PlayerCodeListingVersion;
5566
4839
  /** Buy a grid listing with real money (P4b). Debits the player wallet management-side (platform/org split), then assigns grid_ownership + the listed player-code keys atomically; a failure to apply ownership refunds the charge. For blueprint listings, targetChunk picks where the fresh grid is stamped. This is the ownership path for marketplace_only-policy apps. */
5567
4840
  purchaseGrid: GridPurchaseResult;
5568
- /** DESTRUCTIVE. Permanently deletes a destroyed environment's record and all cascaded metadata from the platform; returns true on success. The environment must already be in status 'destroyed' (run destroyEnvironment first) and must not have deletion protection enabled, otherwise this fails. Does not touch cloud resources. Requires the 'manage_environments' org permission. */
5569
- purgeEnvironment: Scalars['Boolean']['output'];
5570
- /** Operator only (is_operator). Creates or overwrites an environment-delivered secret (injected into the tenant runtime) and writes an audit entry. SENSITIVE: plaintext is write-only and never returned. */
5571
- putCpEnvSecret: CpEnvSecretRow;
5572
- /** Operator only (is_operator). Creates or overwrites a control-plane secret (encrypted at rest) and writes an audit entry. SENSITIVE: plaintext is write-only and never returned by cpSecrets. */
5573
- putCpSecret: CpSecretRow;
5574
- /** Redeploys the environment to a target release version (input.version) or, when omitted, the latest available version for its class, reusing its current flavors/scaling and linked apps. Preserves the environment URLs. No-op-safe: re-running when already at latest still redeploys. If a prior deploy failed but stayed in_progress, it is abandoned first so the redeploy can proceed. Preview first with environmentRedeployPlan (the dry run). Requires the 'manage_environments' org permission. */
5575
- redeployEnvironment: CksEnvironmentChangeOrder;
5576
4841
  /** Rotate the calling app token for a fresh one (same app, extended TTL) and revoke the old. Call before the current token expires to keep playing without bouncing back through the Overworld. Allowed for app-scoped tokens; re-checks entitlement. */
5577
4842
  refreshAppToken: AppTokenResponse;
5578
4843
  /** Request a refund of a paid acquisition (P4b). Allowed only within the refund window and before meaningful use (first install/fetch voids it), capped per buyer; a successful refund credits the wallet, reverses the ledger split, claws back the seller balance, revokes the acquisition, and drains installs. Returns cents refunded. */
@@ -5605,10 +4870,6 @@ export type Mutation = {
5605
4870
  resendConfirmationEmail: Scalars['Boolean']['output'];
5606
4871
  /** Completes a password reset using the reset token and a new password. Returns true on success; throws if the token is invalid or expired. Public (the token authorizes the call). Existing sessions are not revoked. */
5607
4872
  resetPassword: Scalars['Boolean']['output'];
5608
- /** SSH-restarts the Buddy systemd service on the active UDP runtime VM. Symptom relief when server_status heartbeat is stale (see CksBuddyHealth.isStale); does not replace cks-udp-api pool fixes. Requires the 'manage_environments' org permission. */
5609
- restartEnvironmentServices: CksEnvironmentChangeOrder;
5610
- /** Resumes a payment-suspended environment, queuing a change order and moving billingStatus to 'resume_queued' (and restarting runtime once it settles). Only valid when billingStatus is grace, suspension_queued, suspended, or resume_failed; otherwise fails. Resumes billable hourly charges. Requires the 'manage_environments' org permission. */
5611
- resumeEnvironment: CksEnvironmentChangeOrder;
5612
4873
  /** Revoke a user's access to an app by setting their app_user_access status to 'revoked', and notifies the game API so the user immediately loses runtime access in Buddy. Requires the 'manage_access_tiers' permission on the app; super admins bypass. The row is retained for audit (not deleted); REVERSIBLE via grantAppAccess. */
5613
4874
  revokeAppAccess: AppUserAccess;
5614
4875
  /** Revoke a previously-granted app authorization and immediately revoke the user's live app tokens for it. Requires a SESSION token. */
@@ -5661,10 +4922,8 @@ export type Mutation = {
5661
4922
  setChannelPolicy: AppGroupPolicy;
5662
4923
  /** Create or patch an app's Agentic Crowdy Studio policy. Requires 'manage_compute'. Omitted values stay unchanged; first creation starts disabled, killed, and deny-all. Model/tool/mode/risk lists are intersected with platform allowlists and every numeric/retention value is clamped down to platform limits. Locked ZDR/collection/body-retention rules and the operator app kill cannot be changed. SIDE EFFECTS: increments Management's publication revision, appends a sanitized audit event, and transactionally notifies Game API to pull crowdy.studio-agent-policy/1. Runtime enforcement changes only after Game API obtains and validates the fresh replica. Stable errors: AGENT_POLICY_INVALID, AGENT_POLICY_REVISION_CONFLICT, IDEMPOTENCY_CONFLICT. */
5663
4924
  setCrowdyStudioAgentPolicy: CrowdyStudioAgentPolicy;
5664
- /** Sets the per-user early-access override flag, forcing early access on or off regardless of the global free-play window. Requires a super-admin bearer game token (and the management API enabled). NOTE: management-owned in cks-game-api (throws ForbiddenException) — use cks-management-api. */
4925
+ /** Sets the per-user early-access override flag, forcing early access on or off regardless of the global free-play window. Requires a super-admin bearer game token (and the management API enabled). */
5665
4926
  setEarlyAccessOverride: User;
5666
- /** Operator only (is_operator). Toggles deletion protection on an environment (when enabled, purgeEnvironment is blocked) and writes an audit entry. Returns true on success. */
5667
- setEnvironmentDeletionProtection: Scalars['Boolean']['output'];
5668
4927
  /** Replace the whitelist of permission keys allowed on a grid (writes the `grid_permission_limits` input table), then recompute the grid's materialized effective ACL so any keys no longer on the whitelist are dropped for all users. Pass an empty array to remove all limits. Requires app-admin ('manage_apps'). DESTRUCTIVE: narrowing the whitelist can strip effective permissions from existing users on the grid. */
5669
4928
  setGridPermissionLimits: GridPermissionLimits;
5670
4929
  /** Set (author-only) the acquisition mode and pricing for a code listing. Non-free modes require completed seller onboarding. Curation can reject a listing but never reprice it (07 §1.2). */
@@ -5685,7 +4944,7 @@ export type Mutation = {
5685
4944
  setPlayerWasmPolicy: PlayerWasmPolicy;
5686
4945
  /** Creates or updates a quota enforcement rule (idempotent upsert keyed by org/app/tier + metric + period) and returns it. Scope is inferred from the input ids: an app-scoped rule requires the 'manage_quotas' app permission, an org-scoped rule requires the 'manage_quotas' org permission, and a global rule (no org/app/tier) requires super admin. Changes which limit `effectiveQuota` resolves for the metric; does not retroactively alter past usage. */
5687
4946
  setQuota: ServiceQuota;
5688
- /** ADMIN PRIVILEGE CHANGE: grants or revokes platform super-admin on the target user, changing their privileges across the whole platform. Requires a super-admin bearer game token (and the management API enabled). NOTE: in cks-game-api super-admin checks always fail and the users table is management-owned — perform this via cks-management-api. */
4947
+ /** ADMIN PRIVILEGE CHANGE: grants or revokes platform super-admin on the target user, changing their privileges across the whole platform. Requires a super-admin bearer game token (and the management API enabled). */
5689
4948
  setSuperAdmin: User;
5690
4949
  /** Replace a member's roles with the given set (not additive — roles not listed are removed). Requires the 'manage_roles' team permission (app admins bypass). */
5691
4950
  setTeamMemberRoles: GroupMember;
@@ -5737,11 +4996,7 @@ export type Mutation = {
5737
4996
  updateChunkLods: Maybe<Chunk>;
5738
4997
  /** Upserts ONLY the opaque base64 chunk-level state blob for a chunk, preserving its voxels, per-voxel states and LODs; returns the updated chunk (or null if it could not be written). WRITES world state. Requires a valid bearer token AND the `manage_apps` permission on the org that owns input.appId (super admins bypass). */
5739
4998
  updateChunkState: Maybe<Chunk>;
5740
- /** Updates an environment's three-dimension usage billing tier selections (Buddy, GraphQL, Postgres). Omitted tier fields are left unchanged. Requires the 'manage_environments' org permission. */
5741
- updateEnvironmentBillingTiers: CksEnvironment;
5742
- /** Updates a dedicated environment's autoscaling bounds (game-api / Buddy min & max server counts), load-balancer count, and optionally the Caddy flavor, queuing a change order that redeploys the affected tiers. May change the hourly cost. Rejected for 'dev_single' environments and when another change order is already active. Requires the 'manage_environments' org permission. */
5743
- updateEnvironmentScaling: CksEnvironmentChangeOrder;
5744
- /** Sets the authenticated user’s gamertag and disambiguation and appends a gamertag-history row. Requires a valid game token; only ever updates the caller. Fails if the gamertag+disambiguation pair is already taken. NOTE: the users table is management-owned, so in cks-game-api this throws ForbiddenException — call cks-management-api instead. */
4999
+ /** Sets the authenticated user’s gamertag and disambiguation and appends a gamertag-history row. Requires a valid game token; only ever updates the caller. Fails if the gamertag+disambiguation pair is already taken. */
5745
5000
  updateGamertag: User;
5746
5001
  /** Replaces the full set of roles assigned to an org member. Requires the 'manage_members' permission on the org (super admins bypass). Pass the complete desired role list; roles not included are removed. */
5747
5002
  updateOrgMemberRoles: OrgMember;
@@ -5755,14 +5010,12 @@ export type Mutation = {
5755
5010
  updateTeamRole: GroupRole;
5756
5011
  /** Creates or replaces the authenticated user’s per-app state for `input.appId` (upsert keyed by appId+userId). Requires a valid game token; always writes the caller’s own state. `input.state` is base64-encoded binary. */
5757
5012
  updateUserAppState: UserAppState;
5758
- /** Replaces the authenticated user’s top-level `state` blob (base64-encoded binary; omit/null clears it). Requires a valid game token; only ever writes the caller. NOTE: users.state is management-owned, so in cks-game-api this throws ForbiddenException — call cks-management-api instead. */
5013
+ /** Replaces the authenticated user’s top-level `state` blob (base64-encoded binary; omit/null clears it). Requires a valid game token; only ever writes the caller. */
5759
5014
  updateUserState: User;
5760
- /** Sets the target user’s account `user_type` (e.g. "direct", "deleted"). Requires a super-admin bearer game token (and the management API enabled). NOTE: management-owned in cks-game-api (throws ForbiddenException) — use cks-management-api. */
5015
+ /** Sets the target user’s account `user_type` (e.g. "direct", "deleted"). Requires a super-admin bearer game token (and the management API enabled). */
5761
5016
  updateUserType: User;
5762
5017
  /** Records (upserts) a single voxel edit in the voxel_updates log for one chunk and returns the resulting Voxel. WRITES world state; a background maintenance job later folds these edits into the chunk's packed grid. Requires a valid bearer token AND voxel-edit permission for the target region: the user must have active app access, the `update_voxel_data` tier permission, and (when grids cover the chunk) `update_voxel_data` on a covering grid. */
5763
5018
  updateVoxel: Voxel;
5764
- /** Operator only (is_operator). Yanks (withdraws) an environment version so it can no longer be deployed; existing environments are unaffected. Writes an audit entry. Returns true on success. */
5765
- yankEnvironmentVersion: Scalars['Boolean']['output'];
5766
5019
  };
5767
5020
  export type MutationAcquirePlayerCodeArgs = {
5768
5021
  appId: Scalars['BigInt']['input'];
@@ -5906,9 +5159,6 @@ export type MutationCreateChannelRoleArgs = {
5906
5159
  export type MutationCreateCheckoutArgs = {
5907
5160
  input: CreateCheckoutInput;
5908
5161
  };
5909
- export type MutationCreateEnvironmentArgs = {
5910
- input: CreateEnvironmentInput;
5911
- };
5912
5162
  export type MutationCreateGridArgs = {
5913
5163
  input: CreateGridInput;
5914
5164
  };
@@ -6039,10 +5289,6 @@ export type MutationDeleteChannelArgs = {
6039
5289
  export type MutationDeleteChannelRoleArgs = {
6040
5290
  groupRoleId: Scalars['BigInt']['input'];
6041
5291
  };
6042
- export type MutationDeleteCpSecretArgs = {
6043
- environmentId: Scalars['String']['input'];
6044
- name: Scalars['String']['input'];
6045
- };
6046
5292
  export type MutationDeleteGridArgs = {
6047
5293
  input: DeleteGridInput;
6048
5294
  };
@@ -6069,9 +5315,6 @@ export type MutationDeleteTeamRoleArgs = {
6069
5315
  export type MutationDeleteUserAppStateArgs = {
6070
5316
  appId: Scalars['BigInt']['input'];
6071
5317
  };
6072
- export type MutationDestroyEnvironmentArgs = {
6073
- input: DestroyEnvironmentInput;
6074
- };
6075
5318
  export type MutationDevLoginArgs = {
6076
5319
  input: DevLoginInput;
6077
5320
  };
@@ -6122,6 +5365,9 @@ export type MutationGameModelDeletePropertyDefArgs = {
6122
5365
  containerTypeName: Scalars['String']['input'];
6123
5366
  key: Scalars['String']['input'];
6124
5367
  };
5368
+ export type MutationGameModelEnsureContainerArgs = {
5369
+ input: EnsureContainerInput;
5370
+ };
6125
5371
  export type MutationGameModelGrantTierFeatureArgs = {
6126
5372
  input: GrantTierFeatureInput;
6127
5373
  };
@@ -6182,9 +5428,6 @@ export type MutationGrantGridPermissionsArgs = {
6182
5428
  export type MutationGrantMyAppAccessArgs = {
6183
5429
  appId: Scalars['BigInt']['input'];
6184
5430
  };
6185
- export type MutationIngestEnvironmentVersionArgs = {
6186
- input: IngestEnvironmentVersionInput;
6187
- };
6188
5431
  export type MutationInstallPlayerCodeArgs = {
6189
5432
  acquisitionId: Scalars['String']['input'];
6190
5433
  appId: Scalars['BigInt']['input'];
@@ -6213,9 +5456,6 @@ export type MutationLeaveTeamArgs = {
6213
5456
  groupId: Scalars['BigInt']['input'];
6214
5457
  idempotencyKey?: InputMaybe<Scalars['String']['input']>;
6215
5458
  };
6216
- export type MutationLinkAppToEnvironmentArgs = {
6217
- input: LinkAppToEnvironmentInput;
6218
- };
6219
5459
  export type MutationLinkIdentityArgs = {
6220
5460
  input: LinkIdentityInput;
6221
5461
  };
@@ -6286,9 +5526,6 @@ export type MutationPublishAppToSharedArgs = {
6286
5526
  provider?: InputMaybe<PaymentProvider>;
6287
5527
  successUrl?: InputMaybe<Scalars['String']['input']>;
6288
5528
  };
6289
- export type MutationPublishEnvironmentReleaseFromGameApiTagArgs = {
6290
- input: PublishEnvironmentReleaseFromGameApiTagInput;
6291
- };
6292
5529
  export type MutationPublishPlayerCodeArgs = {
6293
5530
  input: PublishPlayerCodeInput;
6294
5531
  };
@@ -6302,24 +5539,6 @@ export type MutationPurchaseGridArgs = {
6302
5539
  chunkZ?: InputMaybe<Scalars['Int']['input']>;
6303
5540
  gridListingId: Scalars['String']['input'];
6304
5541
  };
6305
- export type MutationPurgeEnvironmentArgs = {
6306
- input: PurgeEnvironmentInput;
6307
- };
6308
- export type MutationPutCpEnvSecretArgs = {
6309
- environmentId: Scalars['String']['input'];
6310
- kind?: InputMaybe<Scalars['String']['input']>;
6311
- name: Scalars['String']['input'];
6312
- plaintext: Scalars['String']['input'];
6313
- };
6314
- export type MutationPutCpSecretArgs = {
6315
- environmentId: Scalars['String']['input'];
6316
- kind?: InputMaybe<Scalars['String']['input']>;
6317
- name: Scalars['String']['input'];
6318
- plaintext: Scalars['String']['input'];
6319
- };
6320
- export type MutationRedeployEnvironmentArgs = {
6321
- input: RedeployEnvironmentInput;
6322
- };
6323
5542
  export type MutationRefundPlayerCodeAcquisitionArgs = {
6324
5543
  acquisitionId: Scalars['String']['input'];
6325
5544
  appId: Scalars['BigInt']['input'];
@@ -6371,12 +5590,6 @@ export type MutationResendConfirmationEmailArgs = {
6371
5590
  export type MutationResetPasswordArgs = {
6372
5591
  resetPasswordInput: ResetPasswordInput;
6373
5592
  };
6374
- export type MutationRestartEnvironmentServicesArgs = {
6375
- input: RestartEnvironmentServicesInput;
6376
- };
6377
- export type MutationResumeEnvironmentArgs = {
6378
- input: ResumeEnvironmentInput;
6379
- };
6380
5593
  export type MutationRevokeAppAccessArgs = {
6381
5594
  appId: Scalars['BigInt']['input'];
6382
5595
  idempotencyKey?: InputMaybe<Scalars['String']['input']>;
@@ -6479,10 +5692,6 @@ export type MutationSetEarlyAccessOverrideArgs = {
6479
5692
  userId: Scalars['BigInt']['input'];
6480
5693
  value: Scalars['Boolean']['input'];
6481
5694
  };
6482
- export type MutationSetEnvironmentDeletionProtectionArgs = {
6483
- enabled: Scalars['Boolean']['input'];
6484
- environmentId: Scalars['String']['input'];
6485
- };
6486
5695
  export type MutationSetGridPermissionLimitsArgs = {
6487
5696
  input: SetGridPermissionLimitsInput;
6488
5697
  };
@@ -6616,12 +5825,6 @@ export type MutationUpdateChunkLodsArgs = {
6616
5825
  export type MutationUpdateChunkStateArgs = {
6617
5826
  input: UpdateChunkStateInput;
6618
5827
  };
6619
- export type MutationUpdateEnvironmentBillingTiersArgs = {
6620
- input: UpdateEnvironmentBillingTiersInput;
6621
- };
6622
- export type MutationUpdateEnvironmentScalingArgs = {
6623
- input: UpdateEnvironmentScalingInput;
6624
- };
6625
5828
  export type MutationUpdateGamertagArgs = {
6626
5829
  input: UpdateGamertagInput;
6627
5830
  };
@@ -6657,9 +5860,6 @@ export type MutationUpdateUserTypeArgs = {
6657
5860
  export type MutationUpdateVoxelArgs = {
6658
5861
  input: UpdateVoxelInput;
6659
5862
  };
6660
- export type MutationYankEnvironmentVersionArgs = {
6661
- version: Scalars['String']['input'];
6662
- };
6663
5863
  /** A grid overlapping a scanned region, plus a user's effective permission keys on it (returned by nearbyGridPermissions). */
6664
5864
  export type NearbyGridPermissions = {
6665
5865
  __typename?: 'NearbyGridPermissions';
@@ -6892,14 +6092,10 @@ export type Organization = {
6892
6092
  /** When the organization was last updated. */
6893
6093
  updatedAt: Scalars['DateTime']['output'];
6894
6094
  };
6895
- /** Offset/limit pagination metadata for a paginated list. */
6896
6095
  export type PageInfo = {
6897
6096
  __typename?: 'PageInfo';
6898
- /** Maximum number of items returned in this page (the page size that was applied). */
6899
6097
  limit: Scalars['Int']['output'];
6900
- /** Number of items skipped before this page (zero-based offset). */
6901
6098
  offset: Scalars['Int']['output'];
6902
- /** Total number of records matching the query across all pages, ignoring limit and offset. */
6903
6099
  totalCount: Scalars['Int']['output'];
6904
6100
  };
6905
6101
  /** A single inbound payment-provider webhook event from the reconciliation audit log. */
@@ -7081,8 +6277,8 @@ export type PlayerCodeAcquisition = {
7081
6277
  __typename?: 'PlayerCodeAcquisition';
7082
6278
  /** When acquired. */
7083
6279
  acquiredAt: Scalars['DateTime']['output'];
7084
- /** Numeric user id of the acquirer. */
7085
- acquirerUserId: Scalars['BigInt']['output'];
6280
+ /** Numeric user id of the acquirer (management catalog reads). */
6281
+ acquirerUserId: Maybe<Scalars['BigInt']['output']>;
7086
6282
  /** UUID of the acquisition. */
7087
6283
  acquisitionId: Scalars['String']['output'];
7088
6284
  /** App of the listing. */
@@ -7160,8 +6356,8 @@ export type PlayerCodeListing = {
7160
6356
  __typename?: 'PlayerCodeListing';
7161
6357
  /** Acquisition mode: FREE, or a paid mode (BUY / RENT / TIME_LIMITED / COST_LIMITED; P4b). Free listings carry no price. */
7162
6358
  acquisitionMode: PlayerCodeAcquisitionMode;
7163
- /** The listing's admission standing in this app. In implicit_allow apps this is always ADMITTED; in allow_list apps PENDING listings can be acquired but not installed. */
7164
- admissionState: PlayerCodeAdmissionState;
6359
+ /** The listing's admission standing in this app. In implicit_allow apps this is always ADMITTED; in allow_list apps PENDING listings can be acquired but not installed. Null on management catalog reads that carry no app admission context. */
6360
+ admissionState: Maybe<PlayerCodeAdmissionState>;
7165
6361
  /** App the listing belongs to. */
7166
6362
  appId: Scalars['BigInt']['output'];
7167
6363
  /** When the listing was created. */
@@ -7191,7 +6387,7 @@ export type PlayerCodeListing = {
7191
6387
  /** Compute-unit budget per purchase (COST_LIMITED mode). */
7192
6388
  unitBudget: Maybe<Scalars['BigInt']['output']>;
7193
6389
  /** When the listing was last updated. */
7194
- updatedAt: Scalars['DateTime']['output'];
6390
+ updatedAt: Maybe<Scalars['DateTime']['output']>;
7195
6391
  /** Fixed access window in days (TIME_LIMITED mode). */
7196
6392
  windowDays: Maybe<Scalars['Int']['output']>;
7197
6393
  };
@@ -7626,21 +6822,6 @@ export type PortalConsentState = {
7626
6822
  /** True for first-party/trusted apps (consent is always skipped). */
7627
6823
  trusted: Scalars['Boolean']['output'];
7628
6824
  };
7629
- /** Postgres billing tier: bandwidth allotment and capacity charge. Usage metering deferred. */
7630
- export type PostgresBillingTier = {
7631
- __typename?: 'PostgresBillingTier';
7632
- /** Maximum bandwidth allotment in megabits per second. */
7633
- bandwidthMbitPerSecond: Scalars['Float']['output'];
7634
- /** Capacity charge for this tier, in cents (placeholder until load tests). */
7635
- chargeCents: Scalars['BigInt']['output'];
7636
- /** ISO-4217 currency for chargeCents, e.g. 'usd'. */
7637
- currency: Scalars['String']['output'];
7638
- description: Maybe<Scalars['String']['output']>;
7639
- /** Customer-facing tier label. */
7640
- label: Scalars['String']['output'];
7641
- /** Tier level (1 = lowest offered tier). */
7642
- tierLevel: Scalars['Int']['output'];
7643
- };
7644
6825
  /** Result of publishing an app to the shared environment. All paths publish immediately; usage above the free hourly allowance is wallet-billed. */
7645
6826
  export type PublishAppResult = {
7646
6827
  __typename?: 'PublishAppResult';
@@ -7673,12 +6854,6 @@ export type PublishCrowdyStudioCommonFileInput = {
7673
6854
  /** Crowdy Studio-authored catalog title. */
7674
6855
  title: Scalars['String']['input'];
7675
6856
  };
7676
- export type PublishEnvironmentReleaseFromGameApiTagInput = {
7677
- /** Overwrite an existing environment version row if it already exists. */
7678
- force?: Scalars['Boolean']['input'];
7679
- /** cks-game-api semver tag (e.g. v0.6.20). */
7680
- gameApiTag: Scalars['String']['input'];
7681
- };
7682
6857
  export type PublishPlayerCodeInput = {
7683
6858
  /** App the listing belongs to. */
7684
6859
  appId: Scalars['BigInt']['input'];
@@ -7705,14 +6880,6 @@ export type PublishPlayerCodeVersionInput = {
7705
6880
  /** Open-source this published version (irreversible for the version). */
7706
6881
  openSource?: InputMaybe<Scalars['Boolean']['input']>;
7707
6882
  };
7708
- export type PurgeEnvironmentInput = {
7709
- /** Optional idempotency key. Recommended for retries: replaying with the same key and identical input returns the first result instead of re-applying; the same key with different input returns IDEMPOTENCY_CONFLICT. Keys expire after 24h. */
7710
- idempotencyKey?: InputMaybe<Scalars['String']['input']>;
7711
- /** Organization id (BigInt) that owns the environment. */
7712
- orgId: Scalars['BigInt']['input'];
7713
- /** Slug of the already-destroyed environment whose record to permanently delete. */
7714
- slug: Scalars['String']['input'];
7715
- };
7716
6883
  export type Query = {
7717
6884
  __typename?: 'Query';
7718
6885
  /** List only healthy GraphQL API servers (status = ReadyForClients) for client routing/discovery. No authentication required. */
@@ -7783,8 +6950,6 @@ export type Query = {
7783
6950
  avatarAppStates: Array<AppAvatarState>;
7784
6951
  /** Bulk-fetches actors by a list of 32-character ASCII uuids in one round-trip. Requires a valid game token. PUBLIC-STATE ONLY: `privateState` is stripped (null) for every result regardless of ownership. Unknown uuids are silently omitted. Use this to resolve many actors at once; use `actor` for a single owner-scoped fetch. */
7785
6952
  batchLookupActors: Array<Actor>;
7786
- /** Public read-only catalog of active Buddy (UDP replication) billing tiers. */
7787
- buddyBillingTiers: Array<BuddyBillingTier>;
7788
6953
  /** Fetch one channel by id. Errors if the id is not a channel. */
7789
6954
  channel: Group;
7790
6955
  /** List the members of a channel (the subscriber set, including pending requests), each with their status and roles. */
@@ -7823,32 +6988,10 @@ export type Query = {
7823
6988
  computeModules: Array<WasmModule>;
7824
6989
  /** The platform's engine-template registry: ready-made compute engines (mob/world/match/deck/instance/director/matchmaking/market/board/minigame/abilities/movement-warden/territory/racing/...) deployable by name with computeDeployTemplate. Requires the org 'manage_compute' permission. */
7825
6990
  computeTemplates: Array<ComputeTemplateInfo>;
7826
- /** Operator only (is_operator). Most recent operator audit entries, newest first, optionally filtered by environment. */
7827
- cpAudit: Array<CpAuditEntry>;
7828
- /** Operator only (is_operator). One change order with ordered task and step progress. Durable change orders may return read-only projected rows when exact live execution details are unavailable; planned work remains pending until an outcome is observed or inferred. Null when the id is not found. */
7829
- cpChangeOrder: Maybe<CpChangeOrderDetail>;
7830
- /** Operator only (is_operator). Paginated change orders, optionally filtered by environment. Returns a *Page (rows/total/page/pageSize); page is 1-based. */
7831
- cpChangeOrders: CpChangeOrdersPage;
7832
6991
  /** Operator only (is_operator). The stored platform ceilings for the per-app WASM compute policy (the nine knobs computeSetPolicy clamps against). Null fields mean no operator override: game-api uses its COMPUTE_PLATFORM_MAX_* env var, then the code default. Read-only. */
7833
6992
  cpComputePlatformCeilings: CpComputePlatformCeilings;
7834
6993
  /** Operator only (is_operator or is_super_admin). Read the platform Agentic Studio enablement, global emergency kill, model/tool/mode/risk allowlists, budget ceilings, retention/privacy policy, pilot funding seam, timestamps, and revision. No provider credential or request body is stored or returned. */
7835
6994
  cpCrowdyStudioAgentPlatformPolicy: CrowdyStudioAgentPolicy;
7836
- /** Operator only (is_operator). Lists environment-delivered secret metadata (names/kinds only, never plaintext) injected into the tenant runtime, optionally filtered by environment. */
7837
- cpEnvSecrets: Array<CpEnvSecretRow>;
7838
- /** Operator only (is_operator). Operator view of one environment by slug, across any org. Null when not found. */
7839
- cpEnvironment: Maybe<CpAdminEnvironment>;
7840
- /** Operator only (is_operator). Environment release manifests merged from git and the database, with the latest available version and git-source availability. Read-only. */
7841
- cpEnvironmentVersions: CpEnvironmentVersionsPage;
7842
- /** Operator only (is_operator). Paginated list of all environments across every org. Returns a *Page (rows/total/page/pageSize); page is 1-based. */
7843
- cpEnvironments: CpAdminEnvironmentsPage;
7844
- /** Operator only (is_operator). OVH flavor catalog with provider vs. customer pricing for cost analysis, optionally filtered by region. Read-only. */
7845
- cpOvhCatalogSummary: Array<CpOvhCatalogRow>;
7846
- /** Operator only (is_operator). Lists control-plane secret metadata (names/kinds only, never plaintext), optionally filtered by environment. */
7847
- cpSecrets: Array<CpSecretRow>;
7848
- /** Operator only (is_operator). cks-game-api git tags not yet pinned by any environment release, each with the version a publish would create. Read-only. */
7849
- cpUnreleasedGameApiTags: CpUnreleasedGameApiTagsPage;
7850
- /** Operator only (is_operator). Per-minute usage summary for any environment by slug (operator equivalent of environmentUsageSummary, not org-scoped). Read-only. */
7851
- cpUsageSummary: CpUsageSummary;
7852
6995
  /** Return every effective TURN, SESSION, and PLAYER_DAY request/token/reasoning/cost/tool-round/wall-clock/tool-call/compile dimension with reserved, consumed, and non-negative remaining values. The pilot is platform-funded and this owner/app query never debits a wallet. */
7853
6996
  crowdyStudioAgentBudget: AgentBudget;
7854
6997
  /** Read Management's fail-closed Agentic Crowdy Studio publication: platform enable/kill, per-app operator kill, app enable/kill, exact model/tool/mode/risk intersections, minimum budgets/retention, locked privacy, and platform-funded billing seam. Requires 'view_compute_diagnostics'. This is the source publication, not proof of current runtime enforcement: Game API must hold a fresh crowdy.studio-agent-policy/1 replica and independently enforce it; missing/stale/malformed replica or an empty model/mode intersection must disable the agent. */
@@ -7875,28 +7018,14 @@ export type Query = {
7875
7018
  crowdyStudioProjects: Array<CrowdyStudioProject>;
7876
7019
  /** Resolves the single most-specific quota that applies to the given (tierId, appId, orgId, metric) by walking tier -> app -> org -> free-tier defaults and returning the first match; its limitValue/period describe the enforced limit. Returns null if no matching rule and no free-tier default exist for the metric. Requires the 'view_usage' permission on the most-specific scope provided: tierId or appId -> 'view_usage' on the (owning) app; orgId -> 'view_usage' on the org. A metric-only query (no scope ids) resolves the platform free-tier default and only requires an authenticated user. */
7877
7020
  effectiveQuota: Maybe<ServiceQuota>;
7878
- /** OVH datacenters that have at least one customer-priced instance flavor available for customer selection. */
7879
- environmentDatacenters: Array<CksOvhDatacenter>;
7880
- /** Customer-selectable instance flavors in the datacenter with current availability and customer pricing. */
7881
- environmentFlavors: Array<CksOvhFlavor>;
7882
- /** Release versions a specific environment may upgrade to: available, deployable by its environment class, and not older than the version it currently runs (forward-only — no rollback). Newest first; backs the version picker passed to redeployEnvironment. Requires the 'view_environments' org permission. */
7883
- environmentForwardVersions: Array<CksEnvironmentVersion>;
7884
- /** Pricing quote for the selected flavors plus the org wallet balance and a canCreate gate. Read-only — provisions nothing. Fails if any flavor is unavailable, hidden, or lacks customer pricing. Requires the 'view_billing' org permission. */
7885
- environmentQuote: CksEnvironmentQuote;
7886
- /** DRY RUN of redeployEnvironment: previews exactly what moving the environment to a target release version (input.version, or latest for its class when omitted) would do — component version diffs (game-api, Buddy, base images), whether game-DB schema DDL applies or is skipped, Buddy artifact resolution, and the pipeline tasks/steps that would run — WITHOUT creating a change order or touching any VM. Anything that would make the real mutation fail is returned in `blockers`. Read-only; requires the 'view_environments' org permission. */
7887
- environmentRedeployPlan: EnvironmentRedeployPlan;
7888
- /** Aggregate replication/GraphQL byte totals per app for the apps linked to an environment, over the time window. Read-only reporting. Requires the 'view_usage' org permission. */
7889
- environmentUsageByApp: Array<AppUsageRollupRow>;
7890
- /** Per-minute replication and GraphQL byte/message usage time series for the apps linked to an environment, plus replication rate peaks and live Buddy rates. Read-only observability. Requires the 'view_usage' org permission. */
7891
- environmentUsageSummary: EnvironmentUsageSummary;
7892
- /** Catalog of available environment release versions that can be deployed, newest first. Not org-scoped (any authenticated caller). For the versions a specific environment may move to, use environmentForwardVersions. */
7893
- environmentVersions: Array<CksEnvironmentVersion>;
7894
7021
  /** Reports whether a free-play window is active now, a human-readable schedule description, and the ISO-8601 start of the next window. PUBLIC: no authentication required. Takes no arguments; computed from server config and the current clock. */
7895
7022
  freePlayWindowInfo: FreePlayWindowInfo;
7896
7023
  /** Single startup payload for browser game clients: the authenticated user, server/min-client version requirements, current UDP proxy status, realtime protocol details (subprotocol + subscription name), and the spatial send limits/constants (maxReplicationDistance, maxDecayRate, sequenceNumberModulo). Requires a bearer game token. Read-only: does not open a UDP proxy session. Call this once after login to initialize a play session. */
7897
7024
  gameClientBootstrap: GameClientBootstrap;
7898
7025
  /** Returns the single elected host user for an app (game). Deterministic across all cks-game-api replicas behind the LB: the user whose earliest still-connected actor row was created first wins, with a uuid tiebreaker. Returns null when no actors exist for the app. Stale actors (no recent actorHeartbeat) are excluded once HOST_ACTOR_FRESHNESS_SECONDS is enabled. Clients should poll; there is no host-change subscription in v1. */
7899
7026
  gameHost: Maybe<GameHost>;
7027
+ /** Read the best-known app-scoped number of active gameplay sessions across fresh non-Offline Buddy servers. This counts sessions, not actors or distinct users. FRESH is a complete fleet total; PARTIAL is only the supported-Buddy subset; UNAVAILABLE has no fresh observation. Partial/unavailable samples never create count-change revisions. Requires an app-scoped token for this exact app. */
7028
+ gameModelActivePlayerCount: GameModelActivePlayerCountSnapshot;
7900
7029
  /** A snapshot of an app's game-model footprint and recent activity: container/property/edge/session/function/automation row counts, total + 24h event volume, failed + automation-driven invocations, and the most-invoked functions. Helps developers understand what is in their game and their database. Requires app-admin ('manage_apps'). */
7901
7030
  gameModelAppDiagnostics: GmAppDiagnostics;
7902
7031
  /** Fetch one automation by name, including its circuit-breaker state. Requires app-admin ('manage_apps'). */
@@ -7917,7 +7046,7 @@ export type Query = {
7917
7046
  gameModelContainerState: GmContainerState;
7918
7047
  /** List all container types defined for an app. Requires app-admin ('manage_apps'). */
7919
7048
  gameModelContainerTypes: Array<GmContainerType>;
7920
- /** List containers in an app, optionally filtered by container type and/or session, by property predicates (`where`, requires typeName; the same predicate shape automation selectors use — missing properties fall back to the type default), and paged with offset/limit over the stable created-at ordering. Requires a valid token. */
7049
+ /** List containers in an app, optionally filtered by container type and/or session, by bindingKey (get-by-key read of an ensured container), by property predicates (`where`, requires typeName; the same predicate shape automation selectors use — missing properties fall back to the type default), and paged with offset/limit over the stable created-at ordering. Requires a valid token. */
7921
7050
  gameModelContainers: Array<GmContainer>;
7922
7051
  /** Query the function-invocation event log (audit trail) with optional filters and pagination. Useful for debugging functions or showing recent activity. Requires a valid token. */
7923
7052
  gameModelEvents: Array<GmEvent>;
@@ -7953,8 +7082,6 @@ export type Query = {
7953
7082
  getChunksByDistance: ChunksByDistanceResponse;
7954
7083
  /** 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. */
7955
7084
  getVoxelList: ChunkVoxelResponse;
7956
- /** Public read-only catalog of active GraphQL (game API) billing tiers. */
7957
- graphqlBillingTiers: Array<GraphqlBillingTier>;
7958
7085
  /** 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). */
7959
7086
  graphqlServers: Array<GraphQlServer>;
7960
7087
  /** The app's grid claim policy (D4): how a player claim confers grid ownership. */
@@ -7977,7 +7104,7 @@ export type Query = {
7977
7104
  listVoxelUpdatesByDistance: VoxelUpdatesByDistanceResponse;
7978
7105
  /** Lists recorded voxel edits for a single chunk (optionally only those at/after `since`), newest first. Requires a valid bearer token; app-scoped tokens are limited to their own app. Read-only. */
7979
7106
  listVoxels: Array<Voxel>;
7980
- /** Returns the authenticated user for the bearer game token on this request, or null if the token is missing/invalid. Use this to validate a token and fetch the current player. The token is issued by the Management API login and sent as `Authorization: Bearer <token>` (and, for the udpNotifications WebSocket, in the graphql-transport-ws connection_init payload as `Authorization`). game-api does not issue tokens. */
7107
+ /** Returns the authenticated user resolved from the token (sent as `Authorization: Bearer <token>`), or null if missing/invalid. Readable with either an identity session token or an app-scoped gameplay token. */
7981
7108
  me: Maybe<User>;
7982
7109
  /** Lists the roles assigned to a single org member. Requires a valid session token. */
7983
7110
  memberRoles: Array<OrgRole>;
@@ -7995,10 +7122,7 @@ export type Query = {
7995
7122
  myCheckouts: CheckoutsPage;
7996
7123
  /** Lists the authenticated caller's own checkouts (newest first), across every org and app. Use this for a self-service payment history; use `checkoutsConnection` for the cross-tenant super-admin view. Requires an authenticated user. Relay cursor connection; prefer this over the offset-based myCheckouts. */
7997
7124
  myCheckoutsConnection: CheckoutsConnection;
7998
- /**
7999
- * Lifetime donation totals for the authenticated user, summed across every app. Requires a valid game token. NOTE: donations are management-owned, so in cks-game-api this throws ForbiddenException — call cks-management-api instead.
8000
- * @deprecated Legacy donation/property-token data; these products are no longer purchasable. Retained for historical records.
8001
- */
7125
+ /** Lifetime donation totals for the authenticated user, summed across every app. Requires a valid game token. */
8002
7126
  myDonationData: UserDonationData;
8003
7127
  /** The signed-in user's linked sign-in identities. */
8004
7128
  myIdentities: Array<UserIdentity>;
@@ -8008,10 +7132,7 @@ export type Query = {
8008
7132
  myPlayerCodeAcquisitions: Array<PlayerCodeAcquisition>;
8009
7133
  /** The caller's active installs in this app: pinned versions, consent hashes, and target grids. */
8010
7134
  myPlayerCodeInstalls: Array<PlayerCodeInstall>;
8011
- /**
8012
- * The authenticated user’s property-token balances (available, in use, total). Requires a valid game token. NOTE: property tokens are management-owned, so in cks-game-api this throws ForbiddenException — call cks-management-api instead.
8013
- * @deprecated Legacy donation/property-token data; these products are no longer purchasable. Retained for historical records.
8014
- */
7135
+ /** The authenticated user’s property-token balances (available, in use, total). Requires a valid game token. */
8015
7136
  myPropertyTokens: UserPropertyTokenData;
8016
7137
  /** The calling player's seller payout balance (pending/payable/reserved). */
8017
7138
  mySellerPayoutBalance: SellerPayoutBalance;
@@ -8019,14 +7140,8 @@ export type Query = {
8019
7140
  myTeams: Array<GroupMembership>;
8020
7141
  /** List every grid overlapping a chunk-coordinate bounding box, each with the given user's effective permission keys on it. Useful for previewing what a user can do across a region (e.g. around their current position). Requires app-admin ('manage_apps'). */
8021
7142
  nearbyGridPermissions: Array<NearbyGridPermissions>;
8022
- /** Operator only (is_operator). Lists users with is_operator or is_super_admin set, ordered by user id. Read-only. */
8023
- operatorUsers: Array<CpOperatorUser>;
8024
7143
  /** An org's off-session auto-billing configuration (enabled flag, recharge amount, low-water threshold, per-period cap, and last error). Requires the 'view_billing' org permission. */
8025
7144
  orgAutoBilling: OrgAutoBilling;
8026
- /** Full detail for one environment: the environment row plus components, change orders, audit log, secrets, outputs, billing resources, live deploy/destroy progress, and Buddy UDP health. Returns null when no environment with that slug exists for the org. Requires the 'view_environments' org permission. */
8027
- orgEnvironment: Maybe<CksEnvironmentDetail>;
8028
- /** Lists every environment owned by an organization, in any lifecycle state (including destroyed). Summary rows only — use orgEnvironment(slug) for full detail. Requires the 'view_environments' org permission. */
8029
- orgEnvironments: Array<CksEnvironment>;
8030
7145
  /** An org's free shared-app slot quota and how much of it is used. Apps beyond the quota still publish; metered usage is billed from the org wallet. Caller must be a member of the org. */
8031
7146
  orgFreeAppQuota: FreeAppQuota;
8032
7147
  /** Lists the members of an organization. Requires the 'manage_members' permission on the org (super admins bypass). */
@@ -8039,8 +7154,6 @@ export type Query = {
8039
7154
  orgRoles: Array<OrgRole>;
8040
7155
  /** Lists an organization's API tokens (metadata only; secret values are never returned here). Requires the 'manage_tokens' permission on the org (super admins bypass). */
8041
7156
  orgTokens: Array<OrgToken>;
8042
- /** Aggregate replication/GraphQL byte totals per environment across the org for the time window. Read-only reporting. Requires the 'view_usage' org permission. */
8043
- orgUsageByEnvironment: Array<EnvironmentUsageRollupRow>;
8044
7157
  /** Org rollup of per-app monthly egress projections for all shared apps, with upgrade prompts when on track to exceed free tier. Requires the 'view_usage' org permission. */
8045
7158
  orgUsageProjection: OrgUsageProjection;
8046
7159
  /** Org-level rollup of replication/GraphQL byte totals and GraphQL op counts across all apps in the organization for the time window. Read-only reporting. Requires the 'view_usage' org permission. */
@@ -8101,8 +7214,6 @@ export type Query = {
8101
7214
  playerWasmPolicies: Array<PlayerWasmPolicy>;
8102
7215
  /** Whether portaling the calling user into an app needs a consent prompt. Trusted (first-party) apps and already-granted apps return consentRequired=false. The Overworld calls this before createPortalAuthorizationCode. Requires a SESSION token. */
8103
7216
  portalConsent: PortalConsentState;
8104
- /** Public read-only catalog of active Postgres billing tiers. Usage metering deferred. */
8105
- postgresBillingTiers: Array<PostgresBillingTier>;
8106
7217
  /** Lists the app-scoped quota rules explicitly configured for an app (excludes org-, tier-, and free-tier-default quotas). Use `effectiveQuota` to resolve the limit actually applied for a given metric. Requires the 'view_usage' app permission. */
8107
7218
  quotasForApp: Array<ServiceQuota>;
8108
7219
  /** Lists the org-scoped quota rules explicitly configured for an organization (excludes app-, tier-, and free-tier-default quotas). Use `effectiveQuota` to resolve the limit actually applied for a given metric. Requires the 'view_usage' org permission. */
@@ -8125,7 +7236,7 @@ export type Query = {
8125
7236
  teams: Array<Group>;
8126
7237
  /** UDP proxy session status for the game token on this request. Without a game token, returns connected: false. Does not open a session—use udpNotifications or connectUdpProxy. */
8127
7238
  udpProxyConnectionStatus: UdpProxyConnectionStatus;
8128
- /** Looks up a single user by id. Requires a valid game token. NOTE: the users table is management-owned, so in cks-game-api this throws ForbiddenException directing you to call cks-management-api directly; use that API to read arbitrary users. Use `me` to read the caller’s own profile. */
7239
+ /** Looks up a single user by id. Requires a valid game token. */
8129
7240
  user: Maybe<User>;
8130
7241
  /** Reads the authenticated user’s per-app state for `appId` (keyed by appId+userId). Requires a valid game token; only the caller’s own state is returned. Returns null when no row exists. `state` is base64-encoded binary. */
8131
7242
  userAppState: Maybe<UserAppState>;
@@ -8135,7 +7246,7 @@ export type Query = {
8135
7246
  userAvatars: Array<Avatar>;
8136
7247
  /** Super admin only. Paginated user search across email, gamertag, disambiguation, and exact user_id. Relay cursor connection; prefer this over the offset-based usersPaginated. */
8137
7248
  usersConnection: UsersConnection;
8138
- /** SUPER-ADMIN ONLY paginated user search; replaces the legacy `users`/`usersByGamertag`/`usersByEmail` queries. `query` is ILIKE-prefix matched against email, gamertag, and disambiguation, plus an exact user_id match. Requires a super-admin bearer game token. NOTE: in cks-game-api super-admin checks always fail and the users table is management-owned, so this is effectively served only by cks-management-api. */
7249
+ /** SUPER-ADMIN ONLY paginated user search; replaces the legacy `users`/`usersByGamertag`/`usersByEmail` queries. `query` is ILIKE-prefix matched against email, gamertag, and disambiguation, plus an exact user_id match. Requires a super-admin bearer game token. */
8139
7250
  usersPaginated: UsersPage;
8140
7251
  /** Current server version and the minimum client version the server accepts. No authentication required. Compare your client build against minimumClientVersion before connecting and prompt an update if it is too old. */
8141
7252
  versionInfo: ServerVersionInfo;
@@ -8345,38 +7456,6 @@ export type QueryComputeModulesArgs = {
8345
7456
  export type QueryComputeTemplatesArgs = {
8346
7457
  appId: Scalars['BigInt']['input'];
8347
7458
  };
8348
- export type QueryCpAuditArgs = {
8349
- environmentId?: InputMaybe<Scalars['String']['input']>;
8350
- limit?: Scalars['Int']['input'];
8351
- };
8352
- export type QueryCpChangeOrderArgs = {
8353
- id: Scalars['String']['input'];
8354
- };
8355
- export type QueryCpChangeOrdersArgs = {
8356
- environmentId?: InputMaybe<Scalars['String']['input']>;
8357
- page?: Scalars['Int']['input'];
8358
- pageSize?: Scalars['Int']['input'];
8359
- };
8360
- export type QueryCpEnvSecretsArgs = {
8361
- environmentId?: InputMaybe<Scalars['String']['input']>;
8362
- };
8363
- export type QueryCpEnvironmentArgs = {
8364
- slug: Scalars['String']['input'];
8365
- };
8366
- export type QueryCpEnvironmentsArgs = {
8367
- page?: Scalars['Int']['input'];
8368
- pageSize?: Scalars['Int']['input'];
8369
- };
8370
- export type QueryCpOvhCatalogSummaryArgs = {
8371
- region?: InputMaybe<Scalars['String']['input']>;
8372
- };
8373
- export type QueryCpSecretsArgs = {
8374
- environmentId?: InputMaybe<Scalars['String']['input']>;
8375
- };
8376
- export type QueryCpUsageSummaryArgs = {
8377
- environmentSlug: Scalars['String']['input'];
8378
- since: Scalars['DateTime']['input'];
8379
- };
8380
7459
  export type QueryCrowdyStudioAgentBudgetArgs = {
8381
7460
  sessionId: Scalars['String']['input'];
8382
7461
  };
@@ -8436,37 +7515,17 @@ export type QueryEffectiveQuotaArgs = {
8436
7515
  orgId?: InputMaybe<Scalars['BigInt']['input']>;
8437
7516
  tierId?: InputMaybe<Scalars['BigInt']['input']>;
8438
7517
  };
8439
- export type QueryEnvironmentFlavorsArgs = {
8440
- datacenter: Scalars['String']['input'];
7518
+ export type QueryGameClientBootstrapArgs = {
7519
+ appId: Scalars['BigInt']['input'];
8441
7520
  };
8442
- export type QueryEnvironmentForwardVersionsArgs = {
8443
- orgId: Scalars['BigInt']['input'];
8444
- slug: Scalars['String']['input'];
7521
+ export type QueryGameHostArgs = {
7522
+ appId: Scalars['BigInt']['input'];
8445
7523
  };
8446
- export type QueryEnvironmentQuoteArgs = {
8447
- input: EnvironmentQuoteInput;
7524
+ export type QueryGameModelActivePlayerCountArgs = {
7525
+ appId: Scalars['BigInt']['input'];
8448
7526
  };
8449
- export type QueryEnvironmentRedeployPlanArgs = {
8450
- input: RedeployEnvironmentInput;
8451
- };
8452
- export type QueryEnvironmentUsageByAppArgs = {
8453
- environmentSlug: Scalars['String']['input'];
8454
- orgId: Scalars['BigInt']['input'];
8455
- since: Scalars['DateTime']['input'];
8456
- };
8457
- export type QueryEnvironmentUsageSummaryArgs = {
8458
- environmentSlug: Scalars['String']['input'];
8459
- orgId: Scalars['BigInt']['input'];
8460
- since: Scalars['DateTime']['input'];
8461
- };
8462
- export type QueryGameClientBootstrapArgs = {
8463
- appId: Scalars['BigInt']['input'];
8464
- };
8465
- export type QueryGameHostArgs = {
8466
- appId: Scalars['BigInt']['input'];
8467
- };
8468
- export type QueryGameModelAppDiagnosticsArgs = {
8469
- appId: Scalars['BigInt']['input'];
7527
+ export type QueryGameModelAppDiagnosticsArgs = {
7528
+ appId: Scalars['BigInt']['input'];
8470
7529
  };
8471
7530
  export type QueryGameModelAutomationArgs = {
8472
7531
  appId: Scalars['BigInt']['input'];
@@ -8506,6 +7565,7 @@ export type QueryGameModelContainerTypesArgs = {
8506
7565
  };
8507
7566
  export type QueryGameModelContainersArgs = {
8508
7567
  appId: Scalars['BigInt']['input'];
7568
+ bindingKey?: InputMaybe<Scalars['String']['input']>;
8509
7569
  limit?: InputMaybe<Scalars['Int']['input']>;
8510
7570
  offset?: InputMaybe<Scalars['Int']['input']>;
8511
7571
  sessionId?: InputMaybe<Scalars['String']['input']>;
@@ -8655,13 +7715,6 @@ export type QueryNearbyGridPermissionsArgs = {
8655
7715
  export type QueryOrgAutoBillingArgs = {
8656
7716
  orgId: Scalars['BigInt']['input'];
8657
7717
  };
8658
- export type QueryOrgEnvironmentArgs = {
8659
- orgId: Scalars['BigInt']['input'];
8660
- slug: Scalars['String']['input'];
8661
- };
8662
- export type QueryOrgEnvironmentsArgs = {
8663
- orgId: Scalars['BigInt']['input'];
8664
- };
8665
7718
  export type QueryOrgFreeAppQuotaArgs = {
8666
7719
  orgId: Scalars['BigInt']['input'];
8667
7720
  };
@@ -8677,10 +7730,6 @@ export type QueryOrgRolesArgs = {
8677
7730
  export type QueryOrgTokensArgs = {
8678
7731
  orgId: Scalars['BigInt']['input'];
8679
7732
  };
8680
- export type QueryOrgUsageByEnvironmentArgs = {
8681
- orgId: Scalars['BigInt']['input'];
8682
- since: Scalars['DateTime']['input'];
8683
- };
8684
7733
  export type QueryOrgUsageProjectionArgs = {
8685
7734
  orgId: Scalars['BigInt']['input'];
8686
7735
  };
@@ -8863,21 +7912,6 @@ export type RealtimeConnectionEvent = {
8863
7912
  /** 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. */
8864
7913
  status: Scalars['String']['output'];
8865
7914
  };
8866
- /** How redeployEnvironment rolls out a new version. Omit for automatic routing (services-only when active runtime VMs exist, otherwise full). */
8867
- export declare enum RedeployDeployMode {
8868
- /** Replace the runtime VMs (reprovision game-api / Buddy instances). Slower; use when the box image or infra must change. */
8869
- Full = "FULL",
8870
- /** Update services in place on the existing runtime VMs (no VM replacement). Faster; only valid when active runtime VMs exist. */
8871
- Services = "SERVICES"
8872
- }
8873
- export type RedeployEnvironmentInput = {
8874
- /** How to roll out the version. When omitted, routes to services-only when active runtime VMs exist, otherwise full. */
8875
- deployMode?: InputMaybe<RedeployDeployMode>;
8876
- orgId: Scalars['BigInt']['input'];
8877
- slug: Scalars['String']['input'];
8878
- /** Target environment version. When omitted, redeploys to the latest available version for the class. Must be available, deployable by this class, and not older than the current version (forward-only — no rollback). */
8879
- version?: InputMaybe<Scalars['String']['input']>;
8880
- };
8881
7915
  export type RegisterUserInput = {
8882
7916
  /** Email for the new account; the confirmation email is sent here. */
8883
7917
  email: Scalars['String']['input'];
@@ -8921,18 +7955,6 @@ export type ResetPasswordInput = {
8921
7955
  /** Password-reset token from the emailed reset link. */
8922
7956
  token: Scalars['String']['input'];
8923
7957
  };
8924
- export type RestartEnvironmentServicesInput = {
8925
- /** Organization id (BigInt) that owns the environment. */
8926
- orgId: Scalars['BigInt']['input'];
8927
- /** Slug of the environment whose Buddy service should be SSH-restarted. */
8928
- slug: Scalars['String']['input'];
8929
- };
8930
- export type ResumeEnvironmentInput = {
8931
- /** Organization id (BigInt) that owns the environment. */
8932
- orgId: Scalars['BigInt']['input'];
8933
- /** Slug of the suspended/grace environment to resume (billingStatus must be grace, suspension_queued, suspended, or resume_failed). */
8934
- slug: Scalars['String']['input'];
8935
- };
8936
7958
  /** Immediately revoke one visible lease. */
8937
7959
  export type RevokeAgentLeaseInput = {
8938
7960
  /** Current attached client epoch. */
@@ -9320,17 +8342,17 @@ export type ServerEventNotification = {
9320
8342
  };
9321
8343
  /** Lifecycle/capacity state of a game/GraphQL server in the fleet. Only ReadyForClients servers should receive new client connections; serverWithLeastClients and activeGraphQLServers already filter to healthy, non-overloaded servers. */
9322
8344
  export declare enum ServerState {
9323
- /** Buddy hard resource overload: excluded from new-client selection and actively shedding clients (sends reconnect commands so they migrate elsewhere). */
8345
+ /** Hard resource overload. Like NearCapacity (excluded from new-client selection), and the server is also actively shedding clients: it sends each affected client a reconnect command and drops their session after a short grace period so they migrate to another server. */
9324
8346
  Full = "Full",
9325
- /** Buddy soft resource overload: excluded from new-client selection until it recovers; existing sessions continue. */
8347
+ /** Soft resource overload (a CPU core or system memory has been high for several seconds). Existing sessions continue, but the server is excluded from serverWithLeastClients so no new clients are routed here until it recovers. */
9326
8348
  NearCapacity = "NearCapacity",
9327
- /** Not running or unreachable (e.g. crashed or missed heartbeats). */
8349
+ /** The server is down or unreachable (failed health checks). Do not route any traffic here. */
9328
8350
  Offline = "Offline",
9329
- /** Healthy and accepting client traffic. The only state safe to route to. */
8351
+ /** The server is healthy and accepting clients. This is the only state safe to route new connections to. */
9330
8352
  ReadyForClients = "ReadyForClients",
9331
- /** Booting / not yet ready: registered but still initializing; do not route client traffic here. */
8353
+ /** The server is booting and not yet accepting clients. Do not route new connections here; wait for ReadyForClients. */
9332
8354
  Starting = "Starting",
9333
- /** Draining / shutting down: finishing in-flight work; do not send new traffic. */
8355
+ /** The server is draining and shutting down: existing sessions may continue briefly but no new clients should be routed here. */
9334
8356
  Stopping = "Stopping"
9335
8357
  }
9336
8358
  /** Live status and load/telemetry for one UDP game server (Buddy) in the fleet. Returned by serverWithLeastClients (which picks a low-load ReadyForClients server). Throughput metrics are per-second samples from the last reporting window and are null until first reported. */
@@ -9368,7 +8390,7 @@ export type ServerStatus = {
9368
8390
  peerSendMsgsPerSec: Maybe<Scalars['Float']['output']>;
9369
8391
  /** Number of peer (server-to-server P2P) connections this server currently holds. */
9370
8392
  peers: Scalars['Int']['output'];
9371
- /** Unique id of this game-server row in the fleet registry. */
8393
+ /** Unique id of this game-server row in the fleet registry (the Buddy instance uuid). */
9372
8394
  serverId: Scalars['ID']['output'];
9373
8395
  /** Current lifecycle state of this server (see ServerState). Only ReadyForClients servers accept new clients. */
9374
8396
  status: ServerState;
@@ -9838,6 +8860,8 @@ export type Subscription = {
9838
8860
  __typename?: 'Subscription';
9839
8861
  /** Replay durable events with seq greater than afterSeq, then tail newly committed facts using database replay plus in-memory wakeups. Requires an app-scoped owner, use_studio_agent, and exact current clientEpoch. Delivery is ordered and at-least-once: deduplicate eventId/seq, fill gaps with crowdyStudioAgentHistory, and acknowledge only contiguous sequences. */
9840
8862
  crowdyStudioAgentEvents: CrowdyStudioAgentEvent;
8863
+ /** Stream complete active gameplay-session count transitions for one app. There is no bootstrap event: query gameModelActivePlayerCount for the current snapshot. The first complete sample is a silent baseline; PARTIAL/UNAVAILABLE samples do not emit or become zero. Delivery uses a Postgres-backed cross-replica best-effort feed with a bounded oldest-drop buffer. Deduplicate by revision; after reconnect or a revision gap, requery gameModelActivePlayerCount. Requires an app-scoped token for this exact app. */
8864
+ gameModelActivePlayerCountChanged: GameModelActivePlayerCountChange;
9841
8865
  /** Push notification whenever a container in the app changes: an invoke mutated it, a direct gameModelSetProperty wrote it, or it was created/deleted. Metadata only (containerId, typeName, changedKeys — no property values); pull the visibility-filtered state with gameModelContainerState on receipt. Post-commit and best-effort (a dropped event costs one missed pull, never correctness) — durable reads remain the source of truth. Optional typeName/sessionId filters narrow delivery. Fans out across all API replicas. Requires a valid token. Replaces interval polling with pull-on-push. */
9842
8866
  gameModelContainerChanged: GmContainerChange;
9843
8867
  /** Realtime downlink from the game server: spatial notifications and responses, GenericErrorResponse (errors from your sends, correlated by sequenceNumber), and RealtimeConnectionEvent (lifecycle/setup failures). Requires a bearer game token AND an appId-scoped connection — the appId is read from the graphql-transport-ws connection (game tokens are app-agnostic and one UDP socket is shared across apps, so an app-agnostic subscription is rejected with a RealtimeConnectionEvent code APP_ID_REQUIRED, and a missing/invalid token with AUTH_REQUIRED). On subscribe, opens a UDP proxy session if none exists (binds to the least-loaded game server); open/transport failures are delivered as RealtimeConnectionEvent (code UDP_PROXY_CONNECTION_FAILED) and then the stream ends. Only this app’s spatial fan-out is delivered; appId-less control frames always pass. Subscribe before/while sending so async results are not missed. Unsubscribing stops delivery only — it does NOT close the UDP session; call disconnectUdpProxy (or rely on the server inactivity timeout) to release it. */
@@ -9848,6 +8872,9 @@ export type SubscriptionCrowdyStudioAgentEventsArgs = {
9848
8872
  clientEpoch: Scalars['BigInt']['input'];
9849
8873
  sessionId: Scalars['String']['input'];
9850
8874
  };
8875
+ export type SubscriptionGameModelActivePlayerCountChangedArgs = {
8876
+ appId: Scalars['BigInt']['input'];
8877
+ };
9851
8878
  export type SubscriptionGameModelContainerChangedArgs = {
9852
8879
  appId: Scalars['BigInt']['input'];
9853
8880
  sessionId?: InputMaybe<Scalars['String']['input']>;
@@ -10075,36 +9102,6 @@ export type UpdateChunkStateInput = {
10075
9102
  /** Address of the chunk whose chunk-level state to set. */
10076
9103
  coordinates: ChunkCoordinatesInput;
10077
9104
  };
10078
- export type UpdateEnvironmentBillingTiersInput = {
10079
- /** Buddy billing tier level from buddyBillingTiers. */
10080
- buddyBillingTier?: InputMaybe<Scalars['Int']['input']>;
10081
- /** GraphQL billing tier level from graphqlBillingTiers. */
10082
- graphqlBillingTier?: InputMaybe<Scalars['Int']['input']>;
10083
- /** Organization id (BigInt) that owns the environment. */
10084
- orgId: Scalars['BigInt']['input'];
10085
- /** Postgres billing tier level from postgresBillingTiers. */
10086
- postgresBillingTier?: InputMaybe<Scalars['Int']['input']>;
10087
- /** Slug of the environment whose billing tiers to update. */
10088
- slug: Scalars['String']['input'];
10089
- };
10090
- export type UpdateEnvironmentScalingInput = {
10091
- /** Caddy LB flavor (in front of the game-api fleet). When omitted the existing value is preserved. */
10092
- caddyFlavor?: InputMaybe<Scalars['String']['input']>;
10093
- /** Maximum game-api servers (autoscaling ceiling). Min 1; ≥ gameApiMinServers. */
10094
- gameApiMaxServers: Scalars['Int']['input'];
10095
- /** Minimum game-api servers (autoscaling floor). Min 1; ≤ gameApiMaxServers. */
10096
- gameApiMinServers: Scalars['Int']['input'];
10097
- /** Number of Caddy load-balancer VMs in front of the game-api fleet. Min 1. */
10098
- loadBalancerCount: Scalars['Int']['input'];
10099
- /** Organization id (BigInt) that owns the environment. */
10100
- orgId: Scalars['BigInt']['input'];
10101
- /** Slug of the dedicated environment to rescale (rejected for 'dev_single'). */
10102
- slug: Scalars['String']['input'];
10103
- /** Maximum Buddy UDP servers (autoscaling ceiling). Min 1; ≥ udpBuddyMinServers. */
10104
- udpBuddyMaxServers: Scalars['Int']['input'];
10105
- /** Minimum Buddy UDP servers (autoscaling floor). Min 1; ≤ udpBuddyMaxServers. */
10106
- udpBuddyMinServers: Scalars['Int']['input'];
10107
- };
10108
9105
  export type UpdateGamertagInput = {
10109
9106
  /** Discriminator paired with `gamertag` (max 128 characters) to form a unique handle. */
10110
9107
  disambiguation: Scalars['String']['input'];
@@ -10221,21 +9218,21 @@ export type UpsertAutomationInput = {
10221
9218
  /** Trigger type: schedule | event | manual. Defaults to schedule. */
10222
9219
  triggerType?: InputMaybe<Scalars['String']['input']>;
10223
9220
  };
10224
- /** Create an event trigger that fires an automation on model activity. */
9221
+ /** Create an event trigger that fires an automation on model activity or a complete app-scoped active-player-count transition. */
10225
9222
  export type UpsertAutomationTriggerInput = {
10226
9223
  /** The app (tenant). */
10227
9224
  appId: Scalars['BigInt']['input'];
10228
9225
  /** The automation (by name) this trigger fires. */
10229
9226
  automationName: Scalars['String']['input'];
10230
- /** Filter: only this container type. */
9227
+ /** Filter: only this container type. Rejected for player_count_changed. */
10231
9228
  containerTypeName?: InputMaybe<Scalars['String']['input']>;
10232
- /** Debounce/coalesce window in ms. */
9229
+ /** Debounce window in ms. player_count_changed uses trailing-edge coalescing (first previous count plus latest current count/revision); existing model events retain leading-edge suppression. */
10233
9230
  debounceMs?: InputMaybe<Scalars['Int']['input']>;
10234
- /** Filter: only this function name. */
9231
+ /** Filter: only this function name. Rejected for player_count_changed. */
10235
9232
  functionName?: InputMaybe<Scalars['String']['input']>;
10236
- /** The model event: function_invoked | property_changed | container_created. */
9233
+ /** Event to observe: function_invoked | property_changed | container_created | player_count_changed. player_count_changed fires only after complete fleet counts change, and injects reserved previous/current/delta/revision params. */
10237
9234
  onEvent: Scalars['String']['input'];
10238
- /** Filter: only this property key. */
9235
+ /** Filter: only this property key. Rejected for player_count_changed. */
10239
9236
  propertyKey?: InputMaybe<Scalars['String']['input']>;
10240
9237
  };
10241
9238
  /** Create or update a WASM compute module (metadata only; source is uploaded with computeDeployVersion). Upsert key is (app, name). */
@@ -10395,7 +9392,7 @@ export type User = {
10395
9392
  isSuperAdmin: Scalars['Boolean']['output'];
10396
9393
  /** Organization the user belongs to, or null. BigInt serialized as a decimal string. */
10397
9394
  orgId: Maybe<Scalars['BigInt']['output']>;
10398
- /** The user's effective permission keys on the given org (empty if not a member; full set if super admin). Requires a valid bearer game token. NOTE: org permissions are management-owned, so in cks-game-api this currently resolves to an empty list — query cks-management-api for authoritative org permissions. */
9395
+ /** The user's effective permission keys on the given org (empty if not a member; full set if super admin). Requires a valid bearer game token. */
10399
9396
  permissionsForOrg: Array<Scalars['String']['output']>;
10400
9397
  /** User-level state blob, base64-encoded binary (management-owned). Null when cleared. */
10401
9398
  state: Maybe<Scalars['String']['output']>;
@@ -10420,7 +9417,6 @@ export type UserAppState = {
10420
9417
  /** Owner user id. BigInt serialized as a decimal string. */
10421
9418
  userId: Scalars['BigInt']['output'];
10422
9419
  };
10423
- /** Aggregated lifetime donation totals for a user. LEGACY: donations are no longer purchasable. Returned by the deprecated myDonationData query. */
10424
9420
  export type UserDonationData = {
10425
9421
  __typename?: 'UserDonationData';
10426
9422
  /** ISO currency code for the total, e.g. "usd". */
@@ -10450,7 +9446,6 @@ export type UserIdentity = {
10450
9446
  subject: Scalars['String']['output'];
10451
9447
  userId: Scalars['ID']['output'];
10452
9448
  };
10453
- /** Aggregated property-token balances for a user. LEGACY: property tokens are no longer purchasable. Returned by the deprecated myPropertyTokens query. */
10454
9449
  export type UserPropertyTokenData = {
10455
9450
  __typename?: 'UserPropertyTokenData';
10456
9451
  /** Property tokens currently available, as a decimal string. */
@@ -10470,7 +9465,6 @@ export type UsersConnection = {
10470
9465
  /** Total matching records across all pages, when known (null for sources that do not compute a total). */
10471
9466
  totalCount: Maybe<Scalars['Int']['output']>;
10472
9467
  };
10473
- /** One page of users from usersPaginated, plus pagination metadata. */
10474
9468
  export type UsersPage = {
10475
9469
  __typename?: 'UsersPage';
10476
9470
  /** Users on the current page, ordered by ascending user id. */
@@ -11923,53 +10917,6 @@ export type AppBudgetsQuery = {
11923
10917
  updatedAt: string;
11924
10918
  }>;
11925
10919
  };
11926
- export type BuddyBillingTiersQueryVariables = Exact<{
11927
- [key: string]: never;
11928
- }>;
11929
- export type BuddyBillingTiersQuery = {
11930
- __typename?: 'Query';
11931
- buddyBillingTiers: Array<{
11932
- __typename?: 'BuddyBillingTier';
11933
- tierLevel: number;
11934
- messagesPerSecond: number;
11935
- bandwidthMbitPerSecond: number;
11936
- chargeCents: string;
11937
- currency: string;
11938
- label: string;
11939
- description: string | null;
11940
- }>;
11941
- };
11942
- export type GraphqlBillingTiersQueryVariables = Exact<{
11943
- [key: string]: never;
11944
- }>;
11945
- export type GraphqlBillingTiersQuery = {
11946
- __typename?: 'Query';
11947
- graphqlBillingTiers: Array<{
11948
- __typename?: 'GraphqlBillingTier';
11949
- tierLevel: number;
11950
- endpointCallsPerSecond: number;
11951
- bandwidthMbitPerSecond: number;
11952
- chargeCents: string;
11953
- currency: string;
11954
- label: string;
11955
- description: string | null;
11956
- }>;
11957
- };
11958
- export type PostgresBillingTiersQueryVariables = Exact<{
11959
- [key: string]: never;
11960
- }>;
11961
- export type PostgresBillingTiersQuery = {
11962
- __typename?: 'Query';
11963
- postgresBillingTiers: Array<{
11964
- __typename?: 'PostgresBillingTier';
11965
- tierLevel: number;
11966
- bandwidthMbitPerSecond: number;
11967
- chargeCents: string;
11968
- currency: string;
11969
- label: string;
11970
- description: string | null;
11971
- }>;
11972
- };
11973
10920
  export type SetAppBudgetMutationVariables = Exact<{
11974
10921
  orgId: Scalars['BigInt']['input'];
11975
10922
  appId: Scalars['BigInt']['input'];
@@ -13058,387 +12005,6 @@ export type ComputeDeployTemplateMutation = {
13058
12005
  updatedAt: string;
13059
12006
  };
13060
12007
  };
13061
- export type CpEnvironmentsQueryVariables = Exact<{
13062
- page?: InputMaybe<Scalars['Int']['input']>;
13063
- pageSize?: InputMaybe<Scalars['Int']['input']>;
13064
- }>;
13065
- export type CpEnvironmentsQuery = {
13066
- __typename?: 'Query';
13067
- cpEnvironments: {
13068
- __typename?: 'CpAdminEnvironmentsPage';
13069
- total: number;
13070
- page: number;
13071
- pageSize: number;
13072
- rows: Array<{
13073
- __typename?: 'CpAdminEnvironment';
13074
- id: string;
13075
- orgId: string | null;
13076
- slug: string;
13077
- displayName: string;
13078
- primaryCloud: string;
13079
- primaryRegion: string;
13080
- status: string;
13081
- deletionProtectionEnabled: boolean;
13082
- subdomainHandle: string | null;
13083
- createdAt: string;
13084
- updatedAt: string;
13085
- }>;
13086
- };
13087
- };
13088
- export type CpEnvironmentQueryVariables = Exact<{
13089
- slug: Scalars['String']['input'];
13090
- }>;
13091
- export type CpEnvironmentQuery = {
13092
- __typename?: 'Query';
13093
- cpEnvironment: {
13094
- __typename?: 'CpAdminEnvironment';
13095
- id: string;
13096
- orgId: string | null;
13097
- slug: string;
13098
- displayName: string;
13099
- primaryCloud: string;
13100
- primaryRegion: string;
13101
- status: string;
13102
- deletionProtectionEnabled: boolean;
13103
- deletionProtectionSetAt: string | null;
13104
- deletionProtectionSetByEmail: string | null;
13105
- subdomainHandle: string | null;
13106
- createdAt: string;
13107
- updatedAt: string;
13108
- } | null;
13109
- };
13110
- export type CpChangeOrdersQueryVariables = Exact<{
13111
- environmentId?: InputMaybe<Scalars['String']['input']>;
13112
- page?: InputMaybe<Scalars['Int']['input']>;
13113
- pageSize?: InputMaybe<Scalars['Int']['input']>;
13114
- }>;
13115
- export type CpChangeOrdersQuery = {
13116
- __typename?: 'Query';
13117
- cpChangeOrders: {
13118
- __typename?: 'CpChangeOrdersPage';
13119
- total: number;
13120
- page: number;
13121
- pageSize: number;
13122
- rows: Array<{
13123
- __typename?: 'CpChangeOrder';
13124
- id: string;
13125
- environmentId: string;
13126
- kind: string;
13127
- status: string;
13128
- claimedBy: string | null;
13129
- claimedAt: string | null;
13130
- finishedAt: string | null;
13131
- error: string | null;
13132
- createdAt: string;
13133
- updatedAt: string;
13134
- }>;
13135
- };
13136
- };
13137
- export type CpChangeOrderQueryVariables = Exact<{
13138
- id: Scalars['String']['input'];
13139
- }>;
13140
- export type CpChangeOrderQuery = {
13141
- __typename?: 'Query';
13142
- cpChangeOrder: {
13143
- __typename?: 'CpChangeOrderDetail';
13144
- order: {
13145
- __typename?: 'CpChangeOrder';
13146
- id: string;
13147
- environmentId: string;
13148
- kind: string;
13149
- status: string;
13150
- error: string | null;
13151
- createdAt: string;
13152
- updatedAt: string;
13153
- finishedAt: string | null;
13154
- };
13155
- tasks: Array<{
13156
- __typename?: 'CpTaskRow';
13157
- id: string;
13158
- changeOrderId: string;
13159
- kind: string;
13160
- ordinal: number;
13161
- status: string;
13162
- error: string | null;
13163
- createdAt: string;
13164
- finishedAt: string | null;
13165
- }>;
13166
- steps: Array<{
13167
- __typename?: 'CpStepRow';
13168
- id: string;
13169
- taskId: string;
13170
- ordinal: number;
13171
- kind: string;
13172
- status: string;
13173
- attempt: number;
13174
- error: string | null;
13175
- createdAt: string;
13176
- finishedAt: string | null;
13177
- }>;
13178
- } | null;
13179
- };
13180
- export type CpAuditQueryVariables = Exact<{
13181
- environmentId?: InputMaybe<Scalars['String']['input']>;
13182
- limit?: InputMaybe<Scalars['Int']['input']>;
13183
- }>;
13184
- export type CpAuditQuery = {
13185
- __typename?: 'Query';
13186
- cpAudit: Array<{
13187
- __typename?: 'CpAuditEntry';
13188
- id: string;
13189
- actorUserId: string | null;
13190
- actorKind: string;
13191
- action: string;
13192
- entityKind: string | null;
13193
- entityId: string | null;
13194
- environmentId: string | null;
13195
- payloadJson: string | null;
13196
- createdAt: string;
13197
- }>;
13198
- };
13199
- export type CpSecretsQueryVariables = Exact<{
13200
- environmentId?: InputMaybe<Scalars['String']['input']>;
13201
- }>;
13202
- export type CpSecretsQuery = {
13203
- __typename?: 'Query';
13204
- cpSecrets: Array<{
13205
- __typename?: 'CpSecretRow';
13206
- id: string;
13207
- environmentId: string;
13208
- name: string;
13209
- kind: string | null;
13210
- createdAt: string;
13211
- rotatedAt: string | null;
13212
- }>;
13213
- };
13214
- export type CpEnvSecretsQueryVariables = Exact<{
13215
- environmentId?: InputMaybe<Scalars['String']['input']>;
13216
- }>;
13217
- export type CpEnvSecretsQuery = {
13218
- __typename?: 'Query';
13219
- cpEnvSecrets: Array<{
13220
- __typename?: 'CpEnvSecretRow';
13221
- id: string;
13222
- environmentId: string;
13223
- name: string;
13224
- kind: string | null;
13225
- createdAt: string;
13226
- rotatedAt: string | null;
13227
- }>;
13228
- };
13229
- export type CpOvhCatalogSummaryQueryVariables = Exact<{
13230
- region?: InputMaybe<Scalars['String']['input']>;
13231
- }>;
13232
- export type CpOvhCatalogSummaryQuery = {
13233
- __typename?: 'Query';
13234
- cpOvhCatalogSummary: Array<{
13235
- __typename?: 'CpOvhCatalogRow';
13236
- region: string;
13237
- flavorName: string;
13238
- vcpus: number | null;
13239
- ramMb: number | null;
13240
- diskGb: number | null;
13241
- ovhHourlyPriceCents: string | null;
13242
- customerHourlyPriceCents: string | null;
13243
- customerPricingMode: string;
13244
- quotaAvailable: number | null;
13245
- }>;
13246
- };
13247
- export type CpUsageSummaryQueryVariables = Exact<{
13248
- environmentSlug: Scalars['String']['input'];
13249
- since: Scalars['DateTime']['input'];
13250
- }>;
13251
- export type CpUsageSummaryQuery = {
13252
- __typename?: 'Query';
13253
- cpUsageSummary: {
13254
- __typename?: 'CpUsageSummary';
13255
- environmentSlug: string;
13256
- orgId: string | null;
13257
- replication: Array<{
13258
- __typename?: 'CpUsageMinuteRow';
13259
- minute: string;
13260
- recvBytes: string;
13261
- sendBytes: string;
13262
- recvMsgs: string | null;
13263
- sendMsgs: string | null;
13264
- }>;
13265
- graphql: Array<{
13266
- __typename?: 'CpUsageMinuteRow';
13267
- minute: string;
13268
- recvBytes: string;
13269
- sendBytes: string;
13270
- }>;
13271
- replicationRates: {
13272
- __typename?: 'CpUsageRatePeaks';
13273
- peakSendMsgsPerSec: number;
13274
- peakSendMbitPerSec: number;
13275
- avgSendMsgsPerSec: number;
13276
- avgSendMbitPerSec: number;
13277
- sampleMinutes: number;
13278
- };
13279
- buddyLive: {
13280
- __typename?: 'CpBuddyLiveRates';
13281
- serverId: string;
13282
- clientSendMsgsPerSec: number;
13283
- clientRecvMsgsPerSec: number;
13284
- clients: number;
13285
- updatedAt: string;
13286
- } | null;
13287
- };
13288
- };
13289
- export type CpUnreleasedGameApiTagsQueryVariables = Exact<{
13290
- [key: string]: never;
13291
- }>;
13292
- export type CpUnreleasedGameApiTagsQuery = {
13293
- __typename?: 'Query';
13294
- cpUnreleasedGameApiTags: {
13295
- __typename?: 'CpUnreleasedGameApiTagsPage';
13296
- currentDeployTargetGameApiTag: string | null;
13297
- gitSourceAvailable: boolean;
13298
- tags: Array<{
13299
- __typename?: 'CpUnreleasedGameApiTag';
13300
- tag: string;
13301
- taggedAt: string | null;
13302
- proposedEnvironmentVersion: string;
13303
- schemaChanged: boolean;
13304
- }>;
13305
- };
13306
- };
13307
- export type CpEnvironmentVersionsQueryVariables = Exact<{
13308
- [key: string]: never;
13309
- }>;
13310
- export type CpEnvironmentVersionsQuery = {
13311
- __typename?: 'Query';
13312
- cpEnvironmentVersions: {
13313
- __typename?: 'CpEnvironmentVersionsPage';
13314
- latestAvailableVersion: string | null;
13315
- gitSourceAvailable: boolean;
13316
- rows: Array<{
13317
- __typename?: 'CpEnvironmentVersionRow';
13318
- version: string;
13319
- releasedAt: string;
13320
- status: string;
13321
- notes: string | null;
13322
- sourceCommit: string | null;
13323
- gameApiGitTag: string | null;
13324
- buddyVersion: string | null;
13325
- ingestedAt: string;
13326
- updatedAt: string;
13327
- inGit: boolean;
13328
- inDb: boolean;
13329
- isLatestAvailable: boolean;
13330
- }>;
13331
- };
13332
- };
13333
- export type OperatorUsersQueryVariables = Exact<{
13334
- [key: string]: never;
13335
- }>;
13336
- export type OperatorUsersQuery = {
13337
- __typename?: 'Query';
13338
- operatorUsers: Array<{
13339
- __typename?: 'CpOperatorUser';
13340
- userId: string;
13341
- email: string | null;
13342
- gamertag: string | null;
13343
- isOperator: boolean;
13344
- isSuperAdmin: boolean;
13345
- createdAt: string;
13346
- }>;
13347
- };
13348
- export type SetEnvironmentDeletionProtectionMutationVariables = Exact<{
13349
- environmentId: Scalars['String']['input'];
13350
- enabled: Scalars['Boolean']['input'];
13351
- }>;
13352
- export type SetEnvironmentDeletionProtectionMutation = {
13353
- __typename?: 'Mutation';
13354
- setEnvironmentDeletionProtection: boolean;
13355
- };
13356
- export type PutCpSecretMutationVariables = Exact<{
13357
- environmentId: Scalars['String']['input'];
13358
- name: Scalars['String']['input'];
13359
- plaintext: Scalars['String']['input'];
13360
- kind?: InputMaybe<Scalars['String']['input']>;
13361
- }>;
13362
- export type PutCpSecretMutation = {
13363
- __typename?: 'Mutation';
13364
- putCpSecret: {
13365
- __typename?: 'CpSecretRow';
13366
- id: string;
13367
- environmentId: string;
13368
- name: string;
13369
- kind: string | null;
13370
- createdAt: string;
13371
- rotatedAt: string | null;
13372
- };
13373
- };
13374
- export type DeleteCpSecretMutationVariables = Exact<{
13375
- environmentId: Scalars['String']['input'];
13376
- name: Scalars['String']['input'];
13377
- }>;
13378
- export type DeleteCpSecretMutation = {
13379
- __typename?: 'Mutation';
13380
- deleteCpSecret: boolean;
13381
- };
13382
- export type PutCpEnvSecretMutationVariables = Exact<{
13383
- environmentId: Scalars['String']['input'];
13384
- name: Scalars['String']['input'];
13385
- plaintext: Scalars['String']['input'];
13386
- kind?: InputMaybe<Scalars['String']['input']>;
13387
- }>;
13388
- export type PutCpEnvSecretMutation = {
13389
- __typename?: 'Mutation';
13390
- putCpEnvSecret: {
13391
- __typename?: 'CpEnvSecretRow';
13392
- id: string;
13393
- environmentId: string;
13394
- name: string;
13395
- kind: string | null;
13396
- createdAt: string;
13397
- rotatedAt: string | null;
13398
- };
13399
- };
13400
- export type IngestEnvironmentVersionMutationVariables = Exact<{
13401
- input: IngestEnvironmentVersionInput;
13402
- }>;
13403
- export type IngestEnvironmentVersionMutation = {
13404
- __typename?: 'Mutation';
13405
- ingestEnvironmentVersion: {
13406
- __typename?: 'CpEnvironmentVersionRow';
13407
- version: string;
13408
- releasedAt: string;
13409
- status: string;
13410
- notes: string | null;
13411
- gameApiGitTag: string | null;
13412
- inGit: boolean;
13413
- inDb: boolean;
13414
- isLatestAvailable: boolean;
13415
- };
13416
- };
13417
- export type PublishEnvironmentReleaseFromGameApiTagMutationVariables = Exact<{
13418
- input: PublishEnvironmentReleaseFromGameApiTagInput;
13419
- }>;
13420
- export type PublishEnvironmentReleaseFromGameApiTagMutation = {
13421
- __typename?: 'Mutation';
13422
- publishEnvironmentReleaseFromGameApiTag: {
13423
- __typename?: 'CpPublishEnvironmentReleaseResult';
13424
- schemaChanged: boolean;
13425
- committedToGit: boolean;
13426
- gitCommitError: string | null;
13427
- version: {
13428
- __typename?: 'CpEnvironmentVersionRow';
13429
- version: string;
13430
- status: string;
13431
- gameApiGitTag: string | null;
13432
- };
13433
- };
13434
- };
13435
- export type YankEnvironmentVersionMutationVariables = Exact<{
13436
- version: Scalars['String']['input'];
13437
- }>;
13438
- export type YankEnvironmentVersionMutation = {
13439
- __typename?: 'Mutation';
13440
- yankEnvironmentVersion: boolean;
13441
- };
13442
12008
  export type CpComputePlatformCeilingsQueryVariables = Exact<{
13443
12009
  [key: string]: never;
13444
12010
  }>;
@@ -15792,388 +14358,6 @@ export type CrowdyStudioAgentEventsSubscription = {
15792
14358
  } | null;
15793
14359
  };
15794
14360
  };
15795
- export type CreateEnvironmentMutationVariables = Exact<{
15796
- input: CreateEnvironmentInput;
15797
- }>;
15798
- export type CreateEnvironmentMutation = {
15799
- __typename?: 'Mutation';
15800
- createEnvironment: {
15801
- __typename?: 'CksEnvironmentDetail';
15802
- environment: {
15803
- __typename?: 'CksEnvironment';
15804
- id: string;
15805
- orgId: string;
15806
- slug: string;
15807
- displayName: string;
15808
- status: string;
15809
- billingStatus: string;
15810
- environmentClass: string;
15811
- primaryRegion: string;
15812
- desiredEnvironmentVersion: string | null;
15813
- observedEnvironmentVersion: string | null;
15814
- createdAt: string;
15815
- updatedAt: string;
15816
- };
15817
- changeOrders: Array<{
15818
- __typename?: 'CksEnvironmentChangeOrder';
15819
- id: string;
15820
- kind: string;
15821
- status: string;
15822
- error: string | null;
15823
- createdAt: string;
15824
- }>;
15825
- };
15826
- };
15827
- export type DestroyEnvironmentMutationVariables = Exact<{
15828
- input: DestroyEnvironmentInput;
15829
- }>;
15830
- export type DestroyEnvironmentMutation = {
15831
- __typename?: 'Mutation';
15832
- destroyEnvironment: {
15833
- __typename?: 'CksEnvironmentChangeOrder';
15834
- id: string;
15835
- environmentId: string;
15836
- kind: string;
15837
- status: string;
15838
- requestedBy: string | null;
15839
- error: string | null;
15840
- createdAt: string;
15841
- updatedAt: string;
15842
- finishedAt: string | null;
15843
- };
15844
- };
15845
- export type EnvironmentDatacentersQueryVariables = Exact<{
15846
- [key: string]: never;
15847
- }>;
15848
- export type EnvironmentDatacentersQuery = {
15849
- __typename?: 'Query';
15850
- environmentDatacenters: Array<{
15851
- __typename?: 'CksOvhDatacenter';
15852
- region: string;
15853
- name: string | null;
15854
- city: string | null;
15855
- continent: string | null;
15856
- status: string;
15857
- isAvailable: boolean;
15858
- selectableInstanceCount: number;
15859
- syncedAt: string;
15860
- }>;
15861
- };
15862
- export type EnvironmentFlavorsQueryVariables = Exact<{
15863
- datacenter: Scalars['String']['input'];
15864
- }>;
15865
- export type EnvironmentFlavorsQuery = {
15866
- __typename?: 'Query';
15867
- environmentFlavors: Array<{
15868
- __typename?: 'CksOvhFlavor';
15869
- flavorName: string;
15870
- flavorType: string | null;
15871
- vcpus: number | null;
15872
- ramMb: number | null;
15873
- diskGb: number | null;
15874
- quotaAvailable: number | null;
15875
- customerHourlyPriceCents: string;
15876
- customerMonthlyPriceCents: string | null;
15877
- currency: string;
15878
- availabilityStatus: string;
15879
- pricingMode: string;
15880
- syncedAt: string;
15881
- }>;
15882
- };
15883
- export type EnvironmentForwardVersionsQueryVariables = Exact<{
15884
- orgId: Scalars['BigInt']['input'];
15885
- slug: Scalars['String']['input'];
15886
- }>;
15887
- export type EnvironmentForwardVersionsQuery = {
15888
- __typename?: 'Query';
15889
- environmentForwardVersions: Array<{
15890
- __typename?: 'CksEnvironmentVersion';
15891
- version: string;
15892
- releasedAt: string;
15893
- status: string;
15894
- notes: string | null;
15895
- gameApiGitTag: string | null;
15896
- }>;
15897
- };
15898
- export type EnvironmentQuoteQueryVariables = Exact<{
15899
- input: EnvironmentQuoteInput;
15900
- }>;
15901
- export type EnvironmentQuoteQuery = {
15902
- __typename?: 'Query';
15903
- environmentQuote: {
15904
- __typename?: 'CksEnvironmentQuote';
15905
- datacenter: string;
15906
- databaseFlavor: string;
15907
- gameApiFlavor: string;
15908
- udpBuddyFlavor: string;
15909
- caddyFlavor: string;
15910
- gameApiMinServers: number;
15911
- gameApiMaxServers: number;
15912
- udpBuddyMinServers: number;
15913
- udpBuddyMaxServers: number;
15914
- loadBalancerCount: number;
15915
- environmentClass: string;
15916
- singleBoxFlavor: string | null;
15917
- hourlyCostCents: string;
15918
- firstDayReserveCents: string;
15919
- walletBalanceCents: string;
15920
- availableBalanceCents: string;
15921
- currency: string;
15922
- canCreate: boolean;
15923
- };
15924
- };
15925
- export type EnvironmentRedeployPlanQueryVariables = Exact<{
15926
- input: RedeployEnvironmentInput;
15927
- }>;
15928
- export type EnvironmentRedeployPlanQuery = {
15929
- __typename?: 'Query';
15930
- environmentRedeployPlan: {
15931
- __typename?: 'EnvironmentRedeployPlan';
15932
- environmentSlug: string;
15933
- currentVersion: string | null;
15934
- targetVersion: string | null;
15935
- deployMode: string | null;
15936
- changeOrderKind: string | null;
15937
- schemaWillApply: boolean;
15938
- schemaGitRef: string | null;
15939
- blockers: Array<string>;
15940
- notes: Array<string>;
15941
- componentChanges: Array<{
15942
- __typename?: 'EnvironmentComponentChange';
15943
- component: string;
15944
- fromVersion: string | null;
15945
- toVersion: string | null;
15946
- changed: boolean;
15947
- }>;
15948
- tasks: Array<{
15949
- __typename?: 'EnvironmentPlannedTask';
15950
- kind: string;
15951
- dependsOn: Array<string>;
15952
- steps: Array<string>;
15953
- }>;
15954
- };
15955
- };
15956
- export type EnvironmentVersionsQueryVariables = Exact<{
15957
- [key: string]: never;
15958
- }>;
15959
- export type EnvironmentVersionsQuery = {
15960
- __typename?: 'Query';
15961
- environmentVersions: Array<{
15962
- __typename?: 'CksEnvironmentVersion';
15963
- version: string;
15964
- releasedAt: string;
15965
- status: string;
15966
- notes: string | null;
15967
- gameApiGitTag: string | null;
15968
- }>;
15969
- };
15970
- export type LinkAppToEnvironmentMutationVariables = Exact<{
15971
- input: LinkAppToEnvironmentInput;
15972
- }>;
15973
- export type LinkAppToEnvironmentMutation = {
15974
- __typename?: 'Mutation';
15975
- linkAppToEnvironment: {
15976
- __typename?: 'App';
15977
- appId: string;
15978
- orgId: string;
15979
- slug: string | null;
15980
- name: string;
15981
- splitMode: boolean;
15982
- deploymentTarget: string;
15983
- gameApiUrl: string | null;
15984
- status: AppStatus;
15985
- };
15986
- };
15987
- export type OrgEnvironmentQueryVariables = Exact<{
15988
- orgId: Scalars['BigInt']['input'];
15989
- slug: Scalars['String']['input'];
15990
- }>;
15991
- export type OrgEnvironmentQuery = {
15992
- __typename?: 'Query';
15993
- orgEnvironment: {
15994
- __typename?: 'CksEnvironmentDetail';
15995
- environment: {
15996
- __typename?: 'CksEnvironment';
15997
- id: string;
15998
- orgId: string;
15999
- slug: string;
16000
- displayName: string;
16001
- status: string;
16002
- billingStatus: string;
16003
- environmentClass: string;
16004
- singleBoxFlavor: string | null;
16005
- primaryRegion: string;
16006
- desiredEnvironmentVersion: string | null;
16007
- observedEnvironmentVersion: string | null;
16008
- gameApiMinServers: number;
16009
- gameApiMaxServers: number;
16010
- udpBuddyMinServers: number;
16011
- udpBuddyMaxServers: number;
16012
- loadBalancerCount: number;
16013
- createdAt: string;
16014
- updatedAt: string;
16015
- };
16016
- components: Array<{
16017
- __typename?: 'CksEnvironmentComponent';
16018
- id: string;
16019
- kind: string;
16020
- status: string | null;
16021
- desiredVersion: string | null;
16022
- observedVersion: string | null;
16023
- }>;
16024
- changeOrders: Array<{
16025
- __typename?: 'CksEnvironmentChangeOrder';
16026
- id: string;
16027
- kind: string;
16028
- status: string;
16029
- error: string | null;
16030
- createdAt: string;
16031
- finishedAt: string | null;
16032
- }>;
16033
- outputs: Array<{
16034
- __typename?: 'CksEnvironmentOutput';
16035
- name: string;
16036
- label: string;
16037
- value: string;
16038
- valueKind: string;
16039
- }>;
16040
- } | null;
16041
- };
16042
- export type OrgEnvironmentsQueryVariables = Exact<{
16043
- orgId: Scalars['BigInt']['input'];
16044
- }>;
16045
- export type OrgEnvironmentsQuery = {
16046
- __typename?: 'Query';
16047
- orgEnvironments: Array<{
16048
- __typename?: 'CksEnvironment';
16049
- id: string;
16050
- orgId: string;
16051
- slug: string;
16052
- displayName: string;
16053
- status: string;
16054
- billingStatus: string;
16055
- environmentClass: string;
16056
- singleBoxFlavor: string | null;
16057
- primaryCloud: string;
16058
- primaryRegion: string;
16059
- desiredEnvironmentVersion: string | null;
16060
- observedEnvironmentVersion: string | null;
16061
- gameApiMinServers: number;
16062
- gameApiMaxServers: number;
16063
- udpBuddyMinServers: number;
16064
- udpBuddyMaxServers: number;
16065
- loadBalancerCount: number;
16066
- createdAt: string;
16067
- updatedAt: string;
16068
- }>;
16069
- };
16070
- export type PurgeEnvironmentMutationVariables = Exact<{
16071
- input: PurgeEnvironmentInput;
16072
- }>;
16073
- export type PurgeEnvironmentMutation = {
16074
- __typename?: 'Mutation';
16075
- purgeEnvironment: boolean;
16076
- };
16077
- export type RedeployEnvironmentMutationVariables = Exact<{
16078
- input: RedeployEnvironmentInput;
16079
- }>;
16080
- export type RedeployEnvironmentMutation = {
16081
- __typename?: 'Mutation';
16082
- redeployEnvironment: {
16083
- __typename?: 'CksEnvironmentChangeOrder';
16084
- id: string;
16085
- environmentId: string;
16086
- kind: string;
16087
- status: string;
16088
- requestedBy: string | null;
16089
- error: string | null;
16090
- createdAt: string;
16091
- updatedAt: string;
16092
- finishedAt: string | null;
16093
- };
16094
- };
16095
- export type RestartEnvironmentServicesMutationVariables = Exact<{
16096
- input: RestartEnvironmentServicesInput;
16097
- }>;
16098
- export type RestartEnvironmentServicesMutation = {
16099
- __typename?: 'Mutation';
16100
- restartEnvironmentServices: {
16101
- __typename?: 'CksEnvironmentChangeOrder';
16102
- id: string;
16103
- environmentId: string;
16104
- kind: string;
16105
- status: string;
16106
- requestedBy: string | null;
16107
- error: string | null;
16108
- createdAt: string;
16109
- updatedAt: string;
16110
- finishedAt: string | null;
16111
- };
16112
- };
16113
- export type ResumeEnvironmentMutationVariables = Exact<{
16114
- input: ResumeEnvironmentInput;
16115
- }>;
16116
- export type ResumeEnvironmentMutation = {
16117
- __typename?: 'Mutation';
16118
- resumeEnvironment: {
16119
- __typename?: 'CksEnvironmentChangeOrder';
16120
- id: string;
16121
- environmentId: string;
16122
- kind: string;
16123
- status: string;
16124
- requestedBy: string | null;
16125
- error: string | null;
16126
- createdAt: string;
16127
- updatedAt: string;
16128
- finishedAt: string | null;
16129
- };
16130
- };
16131
- export type UpdateEnvironmentBillingTiersMutationVariables = Exact<{
16132
- input: UpdateEnvironmentBillingTiersInput;
16133
- }>;
16134
- export type UpdateEnvironmentBillingTiersMutation = {
16135
- __typename?: 'Mutation';
16136
- updateEnvironmentBillingTiers: {
16137
- __typename?: 'CksEnvironment';
16138
- id: string;
16139
- orgId: string;
16140
- slug: string;
16141
- displayName: string;
16142
- status: string;
16143
- billingStatus: string;
16144
- environmentClass: string;
16145
- singleBoxFlavor: string | null;
16146
- primaryCloud: string;
16147
- primaryRegion: string;
16148
- desiredEnvironmentVersion: string | null;
16149
- observedEnvironmentVersion: string | null;
16150
- gameApiMinServers: number;
16151
- gameApiMaxServers: number;
16152
- udpBuddyMinServers: number;
16153
- udpBuddyMaxServers: number;
16154
- loadBalancerCount: number;
16155
- createdAt: string;
16156
- updatedAt: string;
16157
- };
16158
- };
16159
- export type UpdateEnvironmentScalingMutationVariables = Exact<{
16160
- input: UpdateEnvironmentScalingInput;
16161
- }>;
16162
- export type UpdateEnvironmentScalingMutation = {
16163
- __typename?: 'Mutation';
16164
- updateEnvironmentScaling: {
16165
- __typename?: 'CksEnvironmentChangeOrder';
16166
- id: string;
16167
- environmentId: string;
16168
- kind: string;
16169
- status: string;
16170
- requestedBy: string | null;
16171
- error: string | null;
16172
- createdAt: string;
16173
- updatedAt: string;
16174
- finishedAt: string | null;
16175
- };
16176
- };
16177
14361
  export type GridOwnershipFieldsFragment = {
16178
14362
  __typename?: 'GridOwnership';
16179
14363
  gridOwnershipId: string;
@@ -16869,6 +15053,35 @@ export type GameModelAppDiagnosticsQuery = {
16869
15053
  }>;
16870
15054
  };
16871
15055
  };
15056
+ export type GameModelActivePlayerCountQueryVariables = Exact<{
15057
+ appId: Scalars['BigInt']['input'];
15058
+ }>;
15059
+ export type GameModelActivePlayerCountQuery = {
15060
+ __typename?: 'Query';
15061
+ gameModelActivePlayerCount: {
15062
+ __typename?: 'GameModelActivePlayerCountSnapshot';
15063
+ appId: string;
15064
+ activePlayerCount: number;
15065
+ status: GameModelPlayerCountStatus;
15066
+ observedAt: string | null;
15067
+ revision: string;
15068
+ };
15069
+ };
15070
+ export type GameModelActivePlayerCountChangedSubscriptionVariables = Exact<{
15071
+ appId: Scalars['BigInt']['input'];
15072
+ }>;
15073
+ export type GameModelActivePlayerCountChangedSubscription = {
15074
+ __typename?: 'Subscription';
15075
+ gameModelActivePlayerCountChanged: {
15076
+ __typename?: 'GameModelActivePlayerCountChange';
15077
+ appId: string;
15078
+ previousCount: number;
15079
+ currentCount: number;
15080
+ delta: number;
15081
+ revision: string;
15082
+ observedAt: string;
15083
+ };
15084
+ };
16872
15085
  export type GmSessionFieldsFragment = {
16873
15086
  __typename?: 'GmSession';
16874
15087
  sessionId: string;
@@ -17908,7 +16121,7 @@ export type MarketplaceListingsQuery = {
17908
16121
  __typename?: 'Query';
17909
16122
  playerCodeListings: Array<{
17910
16123
  __typename?: 'PlayerCodeListing';
17911
- admissionState: PlayerCodeAdmissionState;
16124
+ admissionState: PlayerCodeAdmissionState | null;
17912
16125
  latestVersionId: string | null;
17913
16126
  listingId: string;
17914
16127
  appId: string;
@@ -18052,7 +16265,7 @@ export type MarketplacePublishListingMutation = {
18052
16265
  __typename?: 'Mutation';
18053
16266
  publishPlayerCode: {
18054
16267
  __typename?: 'PlayerCodeListing';
18055
- admissionState: PlayerCodeAdmissionState;
16268
+ admissionState: PlayerCodeAdmissionState | null;
18056
16269
  latestVersionId: string | null;
18057
16270
  listingId: string;
18058
16271
  appId: string;
@@ -18313,7 +16526,7 @@ export type MarketplaceAppListingsQuery = {
18313
16526
  __typename?: 'Query';
18314
16527
  appPlayerCodeListings: Array<{
18315
16528
  __typename?: 'PlayerCodeListing';
18316
- updatedAt: string;
16529
+ updatedAt: string | null;
18317
16530
  listingId: string;
18318
16531
  appId: string;
18319
16532
  ownerKind: PlayerCodeOwnerKind;
@@ -18338,7 +16551,7 @@ export type MarketplaceAppAcquisitionsQuery = {
18338
16551
  __typename?: 'Query';
18339
16552
  appPlayerCodeAcquisitions: Array<{
18340
16553
  __typename?: 'PlayerCodeAcquisition';
18341
- acquirerUserId: string;
16554
+ acquirerUserId: string | null;
18342
16555
  revokedAt: string | null;
18343
16556
  acquisitionId: string;
18344
16557
  listingId: string;
@@ -18358,7 +16571,7 @@ export type MarketplaceTransferListingMutation = {
18358
16571
  __typename?: 'Mutation';
18359
16572
  transferPlayerCodeListing: {
18360
16573
  __typename?: 'PlayerCodeListing';
18361
- updatedAt: string;
16574
+ updatedAt: string | null;
18362
16575
  listingId: string;
18363
16576
  appId: string;
18364
16577
  ownerKind: PlayerCodeOwnerKind;
@@ -18385,7 +16598,7 @@ export type MarketplaceSetListingStatusMutation = {
18385
16598
  __typename?: 'Mutation';
18386
16599
  setPlayerCodeListingStatus: {
18387
16600
  __typename?: 'PlayerCodeListing';
18388
- updatedAt: string;
16601
+ updatedAt: string | null;
18389
16602
  listingId: string;
18390
16603
  appId: string;
18391
16604
  ownerKind: PlayerCodeOwnerKind;
@@ -18629,7 +16842,7 @@ export type MarketplaceCreateGridListingMutation = {
18629
16842
  name: string;
18630
16843
  priceCents: number;
18631
16844
  resalePolicy: string;
18632
- status: string;
16845
+ status: string | null;
18633
16846
  };
18634
16847
  };
18635
16848
  export type CreateOrgRoleMutationVariables = Exact<{
@@ -21055,87 +19268,6 @@ export type AppUsageSummaryQuery = {
21055
19268
  }>;
21056
19269
  };
21057
19270
  };
21058
- export type EnvironmentUsageByAppQueryVariables = Exact<{
21059
- orgId: Scalars['BigInt']['input'];
21060
- environmentSlug: Scalars['String']['input'];
21061
- since: Scalars['DateTime']['input'];
21062
- }>;
21063
- export type EnvironmentUsageByAppQuery = {
21064
- __typename?: 'Query';
21065
- environmentUsageByApp: Array<{
21066
- __typename?: 'AppUsageRollupRow';
21067
- appId: string;
21068
- appSlug: string;
21069
- appName: string;
21070
- replicationSendBytes: string;
21071
- replicationRecvBytes: string;
21072
- graphqlSendBytes: string;
21073
- graphqlRecvBytes: string;
21074
- }>;
21075
- };
21076
- export type EnvironmentUsageSummaryQueryVariables = Exact<{
21077
- orgId: Scalars['BigInt']['input'];
21078
- environmentSlug: Scalars['String']['input'];
21079
- since: Scalars['DateTime']['input'];
21080
- }>;
21081
- export type EnvironmentUsageSummaryQuery = {
21082
- __typename?: 'Query';
21083
- environmentUsageSummary: {
21084
- __typename?: 'EnvironmentUsageSummary';
21085
- environmentSlug: string;
21086
- environmentId: string;
21087
- orgId: string;
21088
- replication: Array<{
21089
- __typename?: 'UsageMinuteRow';
21090
- minute: string;
21091
- recvBytes: string;
21092
- sendBytes: string;
21093
- recvMsgs: string | null;
21094
- sendMsgs: string | null;
21095
- }>;
21096
- graphql: Array<{
21097
- __typename?: 'UsageMinuteRow';
21098
- minute: string;
21099
- recvBytes: string;
21100
- sendBytes: string;
21101
- }>;
21102
- replicationRates: {
21103
- __typename?: 'UsageRatePeaks';
21104
- peakSendMsgsPerSec: number;
21105
- peakSendMbitPerSec: number;
21106
- avgSendMsgsPerSec: number;
21107
- avgSendMbitPerSec: number;
21108
- sampleMinutes: number;
21109
- };
21110
- buddyLive: {
21111
- __typename?: 'BuddyLiveRates';
21112
- serverId: string;
21113
- clientSendMsgsPerSec: number;
21114
- clientSendMbitPerSec: number;
21115
- clientRecvMsgsPerSec: number;
21116
- clientRecvMbitPerSec: number;
21117
- clients: number;
21118
- updatedAt: string;
21119
- } | null;
21120
- };
21121
- };
21122
- export type OrgUsageByEnvironmentQueryVariables = Exact<{
21123
- orgId: Scalars['BigInt']['input'];
21124
- since: Scalars['DateTime']['input'];
21125
- }>;
21126
- export type OrgUsageByEnvironmentQuery = {
21127
- __typename?: 'Query';
21128
- orgUsageByEnvironment: Array<{
21129
- __typename?: 'EnvironmentUsageRollupRow';
21130
- environmentId: string;
21131
- environmentSlug: string;
21132
- displayName: string;
21133
- replicationSendBytes: string;
21134
- replicationRecvBytes: string;
21135
- graphqlSendBytes: string;
21136
- graphqlRecvBytes: string;
21137
- }>;
21138
- };
21139
19271
  export type PlayerPulseQueryVariables = Exact<{
21140
19272
  orgId: Scalars['BigInt']['input'];
21141
19273
  }>;
@@ -21656,9 +19788,6 @@ export declare const UpdateAvatarStateDocument: DocumentNode<UpdateAvatarStateMu
21656
19788
  export declare const UpdateAvatarAppStateDocument: DocumentNode<UpdateAvatarAppStateMutation, UpdateAvatarAppStateMutationVariables>;
21657
19789
  export declare const AppBudgetDocument: DocumentNode<AppBudgetQuery, AppBudgetQueryVariables>;
21658
19790
  export declare const AppBudgetsDocument: DocumentNode<AppBudgetsQuery, AppBudgetsQueryVariables>;
21659
- export declare const BuddyBillingTiersDocument: DocumentNode<BuddyBillingTiersQuery, BuddyBillingTiersQueryVariables>;
21660
- export declare const GraphqlBillingTiersDocument: DocumentNode<GraphqlBillingTiersQuery, GraphqlBillingTiersQueryVariables>;
21661
- export declare const PostgresBillingTiersDocument: DocumentNode<PostgresBillingTiersQuery, PostgresBillingTiersQueryVariables>;
21662
19791
  export declare const SetAppBudgetDocument: DocumentNode<SetAppBudgetMutation, SetAppBudgetMutationVariables>;
21663
19792
  export declare const WalletBalanceDocument: DocumentNode<WalletBalanceQuery, WalletBalanceQueryVariables>;
21664
19793
  export declare const WalletTransactionsDocument: DocumentNode<WalletTransactionsQuery, WalletTransactionsQueryVariables>;
@@ -21708,25 +19837,6 @@ export declare const ComputeModuleLogsDocument: DocumentNode<ComputeModuleLogsQu
21708
19837
  export declare const ComputeAppDiagnosticsDocument: DocumentNode<ComputeAppDiagnosticsQuery, ComputeAppDiagnosticsQueryVariables>;
21709
19838
  export declare const ComputeTemplatesDocument: DocumentNode<ComputeTemplatesQuery, ComputeTemplatesQueryVariables>;
21710
19839
  export declare const ComputeDeployTemplateDocument: DocumentNode<ComputeDeployTemplateMutation, ComputeDeployTemplateMutationVariables>;
21711
- export declare const CpEnvironmentsDocument: DocumentNode<CpEnvironmentsQuery, CpEnvironmentsQueryVariables>;
21712
- export declare const CpEnvironmentDocument: DocumentNode<CpEnvironmentQuery, CpEnvironmentQueryVariables>;
21713
- export declare const CpChangeOrdersDocument: DocumentNode<CpChangeOrdersQuery, CpChangeOrdersQueryVariables>;
21714
- export declare const CpChangeOrderDocument: DocumentNode<CpChangeOrderQuery, CpChangeOrderQueryVariables>;
21715
- export declare const CpAuditDocument: DocumentNode<CpAuditQuery, CpAuditQueryVariables>;
21716
- export declare const CpSecretsDocument: DocumentNode<CpSecretsQuery, CpSecretsQueryVariables>;
21717
- export declare const CpEnvSecretsDocument: DocumentNode<CpEnvSecretsQuery, CpEnvSecretsQueryVariables>;
21718
- export declare const CpOvhCatalogSummaryDocument: DocumentNode<CpOvhCatalogSummaryQuery, CpOvhCatalogSummaryQueryVariables>;
21719
- export declare const CpUsageSummaryDocument: DocumentNode<CpUsageSummaryQuery, CpUsageSummaryQueryVariables>;
21720
- export declare const CpUnreleasedGameApiTagsDocument: DocumentNode<CpUnreleasedGameApiTagsQuery, CpUnreleasedGameApiTagsQueryVariables>;
21721
- export declare const CpEnvironmentVersionsDocument: DocumentNode<CpEnvironmentVersionsQuery, CpEnvironmentVersionsQueryVariables>;
21722
- export declare const OperatorUsersDocument: DocumentNode<OperatorUsersQuery, OperatorUsersQueryVariables>;
21723
- export declare const SetEnvironmentDeletionProtectionDocument: DocumentNode<SetEnvironmentDeletionProtectionMutation, SetEnvironmentDeletionProtectionMutationVariables>;
21724
- export declare const PutCpSecretDocument: DocumentNode<PutCpSecretMutation, PutCpSecretMutationVariables>;
21725
- export declare const DeleteCpSecretDocument: DocumentNode<DeleteCpSecretMutation, DeleteCpSecretMutationVariables>;
21726
- export declare const PutCpEnvSecretDocument: DocumentNode<PutCpEnvSecretMutation, PutCpEnvSecretMutationVariables>;
21727
- export declare const IngestEnvironmentVersionDocument: DocumentNode<IngestEnvironmentVersionMutation, IngestEnvironmentVersionMutationVariables>;
21728
- export declare const PublishEnvironmentReleaseFromGameApiTagDocument: DocumentNode<PublishEnvironmentReleaseFromGameApiTagMutation, PublishEnvironmentReleaseFromGameApiTagMutationVariables>;
21729
- export declare const YankEnvironmentVersionDocument: DocumentNode<YankEnvironmentVersionMutation, YankEnvironmentVersionMutationVariables>;
21730
19840
  export declare const CpComputePlatformCeilingsDocument: DocumentNode<CpComputePlatformCeilingsQuery, CpComputePlatformCeilingsQueryVariables>;
21731
19841
  export declare const CpSetComputePlatformCeilingsDocument: DocumentNode<CpSetComputePlatformCeilingsMutation, CpSetComputePlatformCeilingsMutationVariables>;
21732
19842
  export declare const CrowdyStudioProjectsDocument: DocumentNode<CrowdyStudioProjectsQuery, CrowdyStudioProjectsQueryVariables>;
@@ -21758,23 +19868,6 @@ export declare const CrowdyStudioAgentResumeDocument: DocumentNode<CrowdyStudioA
21758
19868
  export declare const CrowdyStudioAgentCancelRunDocument: DocumentNode<CrowdyStudioAgentCancelRunMutation, CrowdyStudioAgentCancelRunMutationVariables>;
21759
19869
  export declare const CrowdyStudioAgentCloseSessionDocument: DocumentNode<CrowdyStudioAgentCloseSessionMutation, CrowdyStudioAgentCloseSessionMutationVariables>;
21760
19870
  export declare const CrowdyStudioAgentEventsDocument: DocumentNode<CrowdyStudioAgentEventsSubscription, CrowdyStudioAgentEventsSubscriptionVariables>;
21761
- export declare const CreateEnvironmentDocument: DocumentNode<CreateEnvironmentMutation, CreateEnvironmentMutationVariables>;
21762
- export declare const DestroyEnvironmentDocument: DocumentNode<DestroyEnvironmentMutation, DestroyEnvironmentMutationVariables>;
21763
- export declare const EnvironmentDatacentersDocument: DocumentNode<EnvironmentDatacentersQuery, EnvironmentDatacentersQueryVariables>;
21764
- export declare const EnvironmentFlavorsDocument: DocumentNode<EnvironmentFlavorsQuery, EnvironmentFlavorsQueryVariables>;
21765
- export declare const EnvironmentForwardVersionsDocument: DocumentNode<EnvironmentForwardVersionsQuery, EnvironmentForwardVersionsQueryVariables>;
21766
- export declare const EnvironmentQuoteDocument: DocumentNode<EnvironmentQuoteQuery, EnvironmentQuoteQueryVariables>;
21767
- export declare const EnvironmentRedeployPlanDocument: DocumentNode<EnvironmentRedeployPlanQuery, EnvironmentRedeployPlanQueryVariables>;
21768
- export declare const EnvironmentVersionsDocument: DocumentNode<EnvironmentVersionsQuery, EnvironmentVersionsQueryVariables>;
21769
- export declare const LinkAppToEnvironmentDocument: DocumentNode<LinkAppToEnvironmentMutation, LinkAppToEnvironmentMutationVariables>;
21770
- export declare const OrgEnvironmentDocument: DocumentNode<OrgEnvironmentQuery, OrgEnvironmentQueryVariables>;
21771
- export declare const OrgEnvironmentsDocument: DocumentNode<OrgEnvironmentsQuery, OrgEnvironmentsQueryVariables>;
21772
- export declare const PurgeEnvironmentDocument: DocumentNode<PurgeEnvironmentMutation, PurgeEnvironmentMutationVariables>;
21773
- export declare const RedeployEnvironmentDocument: DocumentNode<RedeployEnvironmentMutation, RedeployEnvironmentMutationVariables>;
21774
- export declare const RestartEnvironmentServicesDocument: DocumentNode<RestartEnvironmentServicesMutation, RestartEnvironmentServicesMutationVariables>;
21775
- export declare const ResumeEnvironmentDocument: DocumentNode<ResumeEnvironmentMutation, ResumeEnvironmentMutationVariables>;
21776
- export declare const UpdateEnvironmentBillingTiersDocument: DocumentNode<UpdateEnvironmentBillingTiersMutation, UpdateEnvironmentBillingTiersMutationVariables>;
21777
- export declare const UpdateEnvironmentScalingDocument: DocumentNode<UpdateEnvironmentScalingMutation, UpdateEnvironmentScalingMutationVariables>;
21778
19871
  export declare const GridOwnershipDocument: DocumentNode<GridOwnershipQuery, GridOwnershipQueryVariables>;
21779
19872
  export declare const AssignGridOwnershipDocument: DocumentNode<AssignGridOwnershipMutation, AssignGridOwnershipMutationVariables>;
21780
19873
  export declare const TransferGridOwnershipDocument: DocumentNode<TransferGridOwnershipMutation, TransferGridOwnershipMutationVariables>;
@@ -21803,6 +19896,8 @@ export declare const GameModelAutomationPolicyDocument: DocumentNode<GameModelAu
21803
19896
  export declare const GameModelAutomationRunsDocument: DocumentNode<GameModelAutomationRunsQuery, GameModelAutomationRunsQueryVariables>;
21804
19897
  export declare const GameModelAutomationStatsDocument: DocumentNode<GameModelAutomationStatsQuery, GameModelAutomationStatsQueryVariables>;
21805
19898
  export declare const GameModelAppDiagnosticsDocument: DocumentNode<GameModelAppDiagnosticsQuery, GameModelAppDiagnosticsQueryVariables>;
19899
+ export declare const GameModelActivePlayerCountDocument: DocumentNode<GameModelActivePlayerCountQuery, GameModelActivePlayerCountQueryVariables>;
19900
+ export declare const GameModelActivePlayerCountChangedDocument: DocumentNode<GameModelActivePlayerCountChangedSubscription, GameModelActivePlayerCountChangedSubscriptionVariables>;
21806
19901
  export declare const GameModelCreateSessionDocument: DocumentNode<GameModelCreateSessionMutation, GameModelCreateSessionMutationVariables>;
21807
19902
  export declare const GameModelJoinSessionDocument: DocumentNode<GameModelJoinSessionMutation, GameModelJoinSessionMutationVariables>;
21808
19903
  export declare const GameModelSetSessionTurnDocument: DocumentNode<GameModelSetSessionTurnMutation, GameModelSetSessionTurnMutationVariables>;
@@ -22012,9 +20107,6 @@ export declare const UdpNotificationsDocument: DocumentNode<UdpNotificationsSubs
22012
20107
  export declare const UdpProxyConnectionStatusDocument: DocumentNode<UdpProxyConnectionStatusQuery, UdpProxyConnectionStatusQueryVariables>;
22013
20108
  export declare const AppGraphqlOperationsDocument: DocumentNode<AppGraphqlOperationsQuery, AppGraphqlOperationsQueryVariables>;
22014
20109
  export declare const AppUsageSummaryDocument: DocumentNode<AppUsageSummaryQuery, AppUsageSummaryQueryVariables>;
22015
- export declare const EnvironmentUsageByAppDocument: DocumentNode<EnvironmentUsageByAppQuery, EnvironmentUsageByAppQueryVariables>;
22016
- export declare const EnvironmentUsageSummaryDocument: DocumentNode<EnvironmentUsageSummaryQuery, EnvironmentUsageSummaryQueryVariables>;
22017
- export declare const OrgUsageByEnvironmentDocument: DocumentNode<OrgUsageByEnvironmentQuery, OrgUsageByEnvironmentQueryVariables>;
22018
20110
  export declare const PlayerPulseDocument: DocumentNode<PlayerPulseQuery, PlayerPulseQueryVariables>;
22019
20111
  export declare const DeleteMyAccountDocument: DocumentNode<DeleteMyAccountMutation, DeleteMyAccountMutationVariables>;
22020
20112
  export declare const ForceLogoutUserDocument: DocumentNode<ForceLogoutUserMutation, ForceLogoutUserMutationVariables>;