@crowdedkingdoms/crowdyjs 15.4.2-test.1 → 15.5.0-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -2
- package/dist/binary-wire.d.ts +10 -0
- package/dist/binary-wire.d.ts.map +1 -1
- package/dist/binary-wire.js +27 -0
- package/dist/default-origin.d.ts +6 -6
- package/dist/default-origin.d.ts.map +1 -1
- package/dist/default-origin.js +6 -6
- package/dist/domains/udp.d.ts +47 -1
- package/dist/domains/udp.d.ts.map +1 -1
- package/dist/domains/udp.js +59 -2
- package/dist/generated/graphql.d.ts +172 -37
- package/dist/generated/graphql.d.ts.map +1 -1
- package/dist/generated/graphql.js +11 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/kit/npcs.d.ts.map +1 -1
- package/dist/kit/social.d.ts.map +1 -1
- package/dist/media/video-frames.d.ts +106 -0
- package/dist/media/video-frames.d.ts.map +1 -0
- package/dist/media/video-frames.js +215 -0
- package/dist/metrics.d.ts +1 -1
- package/dist/metrics.js +2 -2
- package/dist/realtime.d.ts +16 -0
- package/dist/realtime.d.ts.map +1 -1
- package/dist/realtime.js +8 -0
- package/dist/stores/actors.d.ts +15 -0
- package/dist/stores/actors.d.ts.map +1 -1
- package/dist/stores/actors.js +41 -0
- package/dist/stores/session.d.ts +1 -1
- package/dist/stores/session.d.ts.map +1 -1
- package/dist/stores/session.js +2 -0
- package/dist/types.d.ts +88 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -103,6 +103,28 @@ 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 game server has stopped considering an actor present (Buddy v0.25.0). Emitted ONCE, over the actor's last chunk with the replication rings its own updates used, at the moment its presence record is removed -- roughly five seconds after its last update. Not emitted when the actor merely moved to another server. Treat a later ActorUpdateNotification for the same uuid as a rejoin. Received via the udpNotifications subscription. */
|
|
107
|
+
export type ActorLeftNotification = {
|
|
108
|
+
__typename?: 'ActorLeftNotification';
|
|
109
|
+
/** The ID of the app the actor was in. */
|
|
110
|
+
appId: Scalars['BigInt']['output'];
|
|
111
|
+
/** The X coordinate of the actor's last chunk. */
|
|
112
|
+
chunkX: Scalars['BigInt']['output'];
|
|
113
|
+
/** The Y coordinate of the actor's last chunk. */
|
|
114
|
+
chunkY: Scalars['BigInt']['output'];
|
|
115
|
+
/** The Z coordinate of the actor's last chunk. */
|
|
116
|
+
chunkZ: Scalars['BigInt']['output'];
|
|
117
|
+
/** Chunk replication distance (0-8) the notification was fanned out over. */
|
|
118
|
+
distance: Scalars['Int']['output'];
|
|
119
|
+
/** Server-generated epoch milliseconds timestamp. */
|
|
120
|
+
epochMillis: Scalars['BigInt']['output'];
|
|
121
|
+
/** Why the server stopped considering the actor present: 0 = STALE (it stopped updating). 1 is reserved for an immediate server-side release; treat any other value as STALE. */
|
|
122
|
+
leftReason: Scalars['Int']['output'];
|
|
123
|
+
/** Correlation byte from the datagram tail (always 0 today). */
|
|
124
|
+
sequenceNumber: Scalars['Int']['output'];
|
|
125
|
+
/** The unique identifier of the actor that left. */
|
|
126
|
+
uuid: Scalars['String']['output'];
|
|
127
|
+
};
|
|
106
128
|
/** The signed-in identity behind a bearer token. */
|
|
107
129
|
export type ActorType = {
|
|
108
130
|
__typename?: 'ActorType';
|
|
@@ -980,6 +1002,12 @@ export type AgentToolResultInput = {
|
|
|
980
1002
|
/** Owner/app session UUID. */
|
|
981
1003
|
sessionId: Scalars['String']['input'];
|
|
982
1004
|
};
|
|
1005
|
+
/** The interval a free allowance resets on and a dimension is rounded over. Every dimension is billed as its period aggregate crosses each whole cent, within about a minute of the usage arriving; the development quota is MONTH. */
|
|
1006
|
+
export declare enum AllowancePeriod {
|
|
1007
|
+
Day = "DAY",
|
|
1008
|
+
Hour = "HOUR",
|
|
1009
|
+
Month = "MONTH"
|
|
1010
|
+
}
|
|
983
1011
|
/** A publishable application (game/experience) owned by an organization. Its discoverability is controlled by visibility and its lifecycle by status. */
|
|
984
1012
|
export type App = {
|
|
985
1013
|
__typename?: 'App';
|
|
@@ -1022,11 +1050,11 @@ export type App = {
|
|
|
1022
1050
|
* @deprecated Renamed 2026-09-01 when reservations split by traffic type. Use reservedUdpBytesPerSec; this returns the same value for one release.
|
|
1023
1051
|
*/
|
|
1024
1052
|
reservedEgressBytesPerSec: Scalars['BigInt']['output'];
|
|
1025
|
-
/** Reserved API request rate in GraphQL operations/sec. Guarantees a minimum the platform provisions for you; it is not a limit on how many requests you may make. Billed monthly whether or not used. 0 = none. */
|
|
1053
|
+
/** Reserved API request rate in GraphQL operations/sec. Guarantees a minimum the platform provisions for you; it is not a limit on how many requests you may make. Billed monthly whether or not used, IN ADDITION TO metered usage -- a reservation buys capacity, not volume. Independent of reservedUdpBytesPerSec: reserving one does not reserve the other. 0 = none. */
|
|
1026
1054
|
reservedGraphqlOpsPerSec: Scalars['BigInt']['output'];
|
|
1027
|
-
/** Reserved realtime (UDP) capacity in bytes/s. Guarantees a minimum the platform provisions for you; it is not a limit on what you may send. Billed monthly whether or not used. 0 = none. */
|
|
1055
|
+
/** Reserved realtime (UDP) capacity in bytes/s. Guarantees a minimum the platform provisions for you; it is not a limit on what you may send. Billed monthly whether or not used, IN ADDITION TO metered usage -- a reservation buys capacity, not volume, so reserving 5 MB/s does not make the first 5 MB/s free. Independent of reservedGraphqlOpsPerSec. 0 = none. */
|
|
1028
1056
|
reservedUdpBytesPerSec: Scalars['BigInt']['output'];
|
|
1029
|
-
/** When runtimeStatus is not "active", why the runtime is gated: "
|
|
1057
|
+
/** When runtimeStatus is not "active", why the runtime is gated: "insufficient_funds", "spend_cap", or "subscription_lapsed". Null when active. Historical rows may carry "free_allowance", which the gate no longer produces -- an app over its allowance with no way to pay is denied as "insufficient_funds". */
|
|
1030
1058
|
runtimeDenialReason: Maybe<Scalars['String']['output']>;
|
|
1031
1059
|
/** Shared-environment runtime gate, mirrored to the game DB and enforced by game-api + Buddy: "active", "grace", "denied", or "suspended". */
|
|
1032
1060
|
runtimeStatus: Scalars['String']['output'];
|
|
@@ -1062,7 +1090,7 @@ export type AppAccessTier = {
|
|
|
1062
1090
|
isFree: Scalars['Boolean']['output'];
|
|
1063
1091
|
/** Display name of the tier (e.g. "Free", "Pro"). */
|
|
1064
1092
|
name: Scalars['String']['output'];
|
|
1065
|
-
/** Runtime permission keys granted to users on this tier (a subset of runtimePermissions), e.g. "access", "teleport", "update_voxel_data", "use_voice_chat". */
|
|
1093
|
+
/** Runtime permission keys granted to users on this tier (a subset of runtimePermissions), e.g. "access", "teleport", "update_voxel_data", "use_voice_chat", "use_video_chat" (webcam; not granted by default). */
|
|
1066
1094
|
permissionKeys: Array<Scalars['String']['output']>;
|
|
1067
1095
|
/** Price in the smallest currency unit (cents) for paid tiers; null for free tiers. */
|
|
1068
1096
|
priceCents: Maybe<Scalars['BigInt']['output']>;
|
|
@@ -1280,7 +1308,7 @@ export type AppRuntimeState = {
|
|
|
1280
1308
|
deploymentTarget: AppDeploymentTarget;
|
|
1281
1309
|
/** Per-app hourly spend cap in cents (set via setAppSpendCaps). Null = no cap. */
|
|
1282
1310
|
hourlyLimitCents: Maybe<Scalars['BigInt']['output']>;
|
|
1283
|
-
/**
|
|
1311
|
+
/** insufficient_funds | spend_cap | subscription_lapsed when not active. Historical rows may carry free_allowance, which the gate no longer produces. */
|
|
1284
1312
|
runtimeDenialReason: Maybe<Scalars['String']['output']>;
|
|
1285
1313
|
/** Current runtime gate decision (active / grace / denied / suspended). */
|
|
1286
1314
|
runtimeStatus: AppRuntimeStatus;
|
|
@@ -1328,6 +1356,8 @@ export type AppTokenResponse = {
|
|
|
1328
1356
|
__typename?: 'AppTokenResponse';
|
|
1329
1357
|
/** The app this token is confined to, as a String. */
|
|
1330
1358
|
appId: Scalars['String']['output'];
|
|
1359
|
+
/** Set only by `refreshAppToken` when the caller passed `currentServer`: the Buddy the NEW token was just authorized on, which is the node the client is already connected to. When present, keep the existing UDP session and start signing datagrams with the new token; there is no need to call serverWithLeastClients. Null when the caller passed nothing, or when that node can no longer serve this app (gone, draining, Full, or not local to the app) -- then call serverWithLeastClients for a fresh placement, exactly as before. */
|
|
1360
|
+
authorizedServer: Maybe<ServerStatus>;
|
|
1331
1361
|
/** Stable entry origin, resolving to every datacenter, that always reaches SOME healthy instance. Use it to re-discover endpoints when `gameApiUrl` stops answering: a token-holding client cannot re-mint, because that needs the identity session it does not have. Never a per-datacenter or per-instance address. */
|
|
1332
1362
|
discoveryUrl: Maybe<Scalars['String']['output']>;
|
|
1333
1363
|
/** ISO-8601 UTC expiry. Call `refreshAppToken` (same app) before this, or re-portal through the Overworld for a different app. */
|
|
@@ -1348,8 +1378,10 @@ export type AppUsageProjection = {
|
|
|
1348
1378
|
__typename?: 'AppUsageProjection';
|
|
1349
1379
|
/** App id (as a string). */
|
|
1350
1380
|
appId: Scalars['String']['output'];
|
|
1351
|
-
/** Egress bytes recorded so far this calendar month (from app_monthly_egress). */
|
|
1381
|
+
/** Egress bytes recorded so far this calendar month (from app_monthly_egress). Egress only -- bytes the service delivered to clients, measured as wire bytes at the network interface. Ingress is metered separately and does not count toward this figure or the allowance it is compared against. */
|
|
1352
1382
|
currentEgressBytes: Scalars['String']['output'];
|
|
1383
|
+
/** Ingress bytes recorded so far this calendar month (from app_monthly_egress.ingress_bytes): bytes clients sent the service over UDP replication and GraphQL, measured on the same basis as egress. Billed once, as aggregate_data_ingress above its own monthly allowance; never counted toward the egress figure or allowance. */
|
|
1384
|
+
currentIngressBytes: Scalars['String']['output'];
|
|
1353
1385
|
/** Fractional UTC days elapsed since the calendar month started. */
|
|
1354
1386
|
daysElapsed: Scalars['Float']['output'];
|
|
1355
1387
|
/** Per-app free monthly egress allowance in bytes (5 decimal GB). */
|
|
@@ -1363,7 +1395,7 @@ export type AppUsageProjection = {
|
|
|
1363
1395
|
/** True when at least 3 days have elapsed in the month (projection is meaningful). */
|
|
1364
1396
|
sufficientData: Scalars['Boolean']['output'];
|
|
1365
1397
|
};
|
|
1366
|
-
/** Aggregate byte totals plus the top GraphQL operations for one app over the window. */
|
|
1398
|
+
/** Aggregate byte totals plus the top GraphQL operations for one app over the window. WHICH OF THESE YOU PAY FOR: the *SendBytes fields are the billable direction, and *RecvBytes are metered but do NOT count toward Aggregate Data Volume, the monthly free-tier and overage measure. All byte figures are wire bytes measured at the network interface, including transport and network headers, and after any compression the service applies -- they will not match a client-side byte counter. */
|
|
1367
1399
|
export type AppUsageSummary = {
|
|
1368
1400
|
__typename?: 'AppUsageSummary';
|
|
1369
1401
|
/** App id (as a string). */
|
|
@@ -1983,6 +2015,47 @@ export type ClientTextPacketInput = {
|
|
|
1983
2015
|
/** A unique identifier for the text source (typically the player UUID). Must be exactly 32 bytes when encoded as UTF-8. */
|
|
1984
2016
|
uuid: Scalars['String']['input'];
|
|
1985
2017
|
};
|
|
2018
|
+
/** Notification received when another client sends a webcam video fragment. Received via the udpNotifications subscription. videoData is ONE fragment: a 6-byte header (version, codec, frameId uint16 BE, fragIndex, fragCount) followed by that slice of the encoded frame; reassemble fragments with the same uuid and frameId, and drop an incomplete frame when a newer frameId arrives or after ~500 ms. */
|
|
2019
|
+
export type ClientVideoNotification = {
|
|
2020
|
+
__typename?: 'ClientVideoNotification';
|
|
2021
|
+
/** The ID of the app where the video is coming from. */
|
|
2022
|
+
appId: Scalars['BigInt']['output'];
|
|
2023
|
+
/** The X coordinate of the chunk where the video source is located. */
|
|
2024
|
+
chunkX: Scalars['BigInt']['output'];
|
|
2025
|
+
/** The Y coordinate of the chunk where the video source is located. */
|
|
2026
|
+
chunkY: Scalars['BigInt']['output'];
|
|
2027
|
+
/** The Z coordinate of the chunk where the video source is located. */
|
|
2028
|
+
chunkZ: Scalars['BigInt']['output'];
|
|
2029
|
+
/** Decay algorithm (0-5) from the original message. */
|
|
2030
|
+
decayRate: Scalars['Int']['output'];
|
|
2031
|
+
/** Chunk replication distance (0-8) from the original message. */
|
|
2032
|
+
distance: Scalars['Int']['output'];
|
|
2033
|
+
/** Server-generated epoch milliseconds timestamp. */
|
|
2034
|
+
epochMillis: Scalars['BigInt']['output'];
|
|
2035
|
+
/** The sender's sequence number for this message (0-255). */
|
|
2036
|
+
sequenceNumber: Scalars['Int']['output'];
|
|
2037
|
+
/** The unique identifier of the video source (typically the player UUID sending the video). */
|
|
2038
|
+
uuid: Scalars['String']['output'];
|
|
2039
|
+
/** One video fragment, base64-encoded: 6-byte fragment header then the frame slice. */
|
|
2040
|
+
videoData: Scalars['String']['output'];
|
|
2041
|
+
};
|
|
2042
|
+
/** Input for sending one webcam video FRAGMENT to the UDP game server, fanned out to nearby players as a ClientVideoNotification. A datagram carries at most ~1117 bytes of videoData, so an encoded frame is split by the SDK into fragments that each start with the 6-byte video fragment header (version, codec, frameId, fragIndex, fragCount) and are reassembled by the receiver; this mutation sends ONE such fragment. Sustained video belongs on the binary realtime relay; this path works but is a mutation per fragment. */
|
|
2043
|
+
export type ClientVideoPacketInput = {
|
|
2044
|
+
/** The ID of the app where the video is being sent from. */
|
|
2045
|
+
appId: Scalars['BigInt']['input'];
|
|
2046
|
+
/** The chunk coordinates where the video source is located. */
|
|
2047
|
+
chunk: ChunkCoordinatesInput;
|
|
2048
|
+
/** Decay algorithm for replication: 0 = none, 1 = exponential, 2 = linear 50%, 3 = linear 25%, 4 = linear 10%, 5 = linear 5%. Defaults to 0 (none) for video packets. */
|
|
2049
|
+
decayRate?: InputMaybe<Scalars['Int']['input']>;
|
|
2050
|
+
/** Chunk replication distance (0-8). Defaults to 1 for video packets. Every receiver in range pays the egress bytes; keep this small. */
|
|
2051
|
+
distance?: InputMaybe<Scalars['Int']['input']>;
|
|
2052
|
+
/** Client-assigned correlation id for this datagram: a uint8 (0-255) that wraps at gameClientBootstrap.sequenceNumberModulo (256); defaults to 0 if omitted. For CORRELATION ONLY — it is NOT an idempotency key and the server does not dedupe replays. Echoed on any GenericErrorResponse for this send, delivered on the udpNotifications subscription. */
|
|
2053
|
+
sequenceNumber?: InputMaybe<Scalars['Int']['input']>;
|
|
2054
|
+
/** A unique identifier for the video source (typically the player UUID). Must be exactly 32 bytes when encoded as UTF-8. */
|
|
2055
|
+
uuid: Scalars['String']['input'];
|
|
2056
|
+
/** One video fragment, base64-encoded: the 6-byte fragment header followed by that slice of the encoded frame. Opaque to the server. */
|
|
2057
|
+
videoData: Scalars['String']['input'];
|
|
2058
|
+
};
|
|
1986
2059
|
/** Controls player-code censorship for an app. IMPLICIT_ALLOW admits lawful code by default; ALLOW_LIST requires every code target, including self-authored code, to match an active code/author/org admission. */
|
|
1987
2060
|
export declare enum CodeAdmissionMode {
|
|
1988
2061
|
AllowList = "ALLOW_LIST",
|
|
@@ -3292,6 +3365,13 @@ export declare enum CrowdyStudioTarget {
|
|
|
3292
3365
|
/** Server-target Rust that can run only after the caller separately passes current grid ownership and write_server_code deployment checks. */
|
|
3293
3366
|
Server = "SERVER"
|
|
3294
3367
|
}
|
|
3368
|
+
/** The Buddy a native client is CURRENTLY connected to, named by the `ip4` and `clientPort` that `serverWithLeastClients` handed it. Pass it to `refreshAppToken` so the refreshed token is authorized on that same node and the client keeps its session there instead of being re-placed. */
|
|
3369
|
+
export type CurrentServerInput = {
|
|
3370
|
+
/** The `clientPort` of the ServerStatus the client is connected to. */
|
|
3371
|
+
clientPort: Scalars['Int']['input'];
|
|
3372
|
+
/** The `ip4` of the ServerStatus the client is connected to (as returned by serverWithLeastClients). */
|
|
3373
|
+
ip4: Scalars['String']['input'];
|
|
3374
|
+
};
|
|
3295
3375
|
/** Whether a datacenter currently has a ck-api instance able to serve clients. Three-valued on purpose: "nothing is serving there" and "the liveness signal could not be read" look identical through a boolean and call for opposite reactions. */
|
|
3296
3376
|
export declare enum DatacenterServingStatus {
|
|
3297
3377
|
/** The signal was readable and reported no instance able to take a client there. An app placed here would be created and stored correctly, and its players would be told the app is temporarily offline until an instance returns. */
|
|
@@ -3492,7 +3572,7 @@ export type FreeAppQuotaApp = {
|
|
|
3492
3572
|
__typename?: 'FreeAppQuotaApp';
|
|
3493
3573
|
/** App id (BigInt). */
|
|
3494
3574
|
appId: Scalars['BigInt']['output'];
|
|
3495
|
-
/** True when the app consumes a free org slot (shared, not archived, no active subscription, no reserved
|
|
3575
|
+
/** True when the app consumes a free org slot (shared, not archived, no active subscription, no reserved realtime capacity). Only a REALTIME (UDP) reservation releases a slot; a GraphQL operations reservation does not. */
|
|
3496
3576
|
consumesFreeSlot: Scalars['Boolean']['output'];
|
|
3497
3577
|
/** How this app is credited: 'free_slot', 'reserved', or 'paid_subscription'. */
|
|
3498
3578
|
creditKind: Scalars['String']['output'];
|
|
@@ -3500,7 +3580,7 @@ export type FreeAppQuotaApp = {
|
|
|
3500
3580
|
hasActiveSubscription: Scalars['Boolean']['output'];
|
|
3501
3581
|
/** App display name. */
|
|
3502
3582
|
name: Scalars['String']['output'];
|
|
3503
|
-
/** Reserved
|
|
3583
|
+
/** Reserved REALTIME (UDP) capacity in bytes/sec (0 when none). This is the dimension that decides free-slot consumption; a GraphQL operations reservation is separate and is not reported here. Same value as App.reservedUdpBytesPerSec. */
|
|
3504
3584
|
reservedEgressBytesPerSec: Scalars['BigInt']['output'];
|
|
3505
3585
|
/** URL slug for the app. */
|
|
3506
3586
|
slug: Scalars['String']['output'];
|
|
@@ -3553,7 +3633,7 @@ export type FunctionPermissionEffectInput = {
|
|
|
3553
3633
|
action: Scalars['String']['input'];
|
|
3554
3634
|
/** Expression resolving the grid id (int) the permissions apply to, e.g. "self.grid_id". The grid must belong to the app. */
|
|
3555
3635
|
gridIdExpression: Scalars['String']['input'];
|
|
3556
|
-
/** Runtime permission keys to grant/revoke (validated against the runtime_permissions catalog, e.g. 'access', 'teleport', 'update_voxel_data', 'use_voice_chat'). */
|
|
3636
|
+
/** Runtime permission keys to grant/revoke (validated against the runtime_permissions catalog, e.g. 'access', 'teleport', 'update_voxel_data', 'use_voice_chat', 'use_video_chat'). */
|
|
3557
3637
|
permissionKeys: Array<Scalars['String']['input']>;
|
|
3558
3638
|
/** Grant only: optional expression resolving a TTL in seconds (int > 0) after which the grant expires (rentals/leases), e.g. '86400'. Omit for a non-expiring grant. */
|
|
3559
3639
|
ttlSecondsExpression?: InputMaybe<Scalars['String']['input']>;
|
|
@@ -3811,7 +3891,7 @@ export type GmAutomation = {
|
|
|
3811
3891
|
maxTargets: Scalars['Int']['output'];
|
|
3812
3892
|
/** Automation name (unique per app); the upsert key. */
|
|
3813
3893
|
name: Scalars['String']['output'];
|
|
3814
|
-
/** When the automation is next due (schedule). */
|
|
3894
|
+
/** When the automation is next due (schedule). Due is not a promise to run: a schedule that comes due while the app has no players is skipped, and this advances to the next slot without the skipped run being made up. */
|
|
3815
3895
|
nextRunAt: Maybe<Scalars['DateTime']['output']>;
|
|
3816
3896
|
/** JSON object of static params passed to the entry point. */
|
|
3817
3897
|
paramsJson: Scalars['String']['output'];
|
|
@@ -3953,19 +4033,19 @@ export type GmAutomationTrigger = {
|
|
|
3953
4033
|
appId: Scalars['BigInt']['output'];
|
|
3954
4034
|
/** The automation this trigger fires. */
|
|
3955
4035
|
automationId: Scalars['String']['output'];
|
|
3956
|
-
/** Filter: only this container type. Always null for player_count_changed. */
|
|
4036
|
+
/** Filter: only this container type. Always null for player_count_changed and player_left. */
|
|
3957
4037
|
containerTypeName: Maybe<Scalars['String']['output']>;
|
|
3958
4038
|
/** Debounce window in ms. player_count_changed coalesces on the trailing edge; other model events use their existing leading-edge behavior. */
|
|
3959
4039
|
debounceMs: Scalars['Int']['output'];
|
|
3960
|
-
/** Filter: only this function name. Always null for player_count_changed. */
|
|
4040
|
+
/** Filter: only this function name. Always null for player_count_changed and player_left. */
|
|
3961
4041
|
functionName: Maybe<Scalars['String']['output']>;
|
|
3962
4042
|
/** When this trigger last matched an event and dispatched a run, or null if it has never matched. A trigger that stays null while its event is happening is almost always a filter that cannot match — see warnings. */
|
|
3963
4043
|
lastMatchedAt: Maybe<Scalars['DateTime']['output']>;
|
|
3964
4044
|
/** Runs this trigger dispatched in the last 24 hours, including runs a guard then dropped. Fires suppressed by debounceMs never reach a run and are not counted. */
|
|
3965
4045
|
matchCount24h: Scalars['Int']['output'];
|
|
3966
|
-
/** Observed event: function_invoked | property_changed | container_created | player_count_changed. */
|
|
4046
|
+
/** Observed event: function_invoked | property_changed | container_created | player_count_changed | player_left. */
|
|
3967
4047
|
onEvent: Scalars['String']['output'];
|
|
3968
|
-
/** Filter: only this property key. Always null for player_count_changed. */
|
|
4048
|
+
/** Filter: only this property key. Always null for player_count_changed and player_left. */
|
|
3969
4049
|
propertyKey: Maybe<Scalars['String']['output']>;
|
|
3970
4050
|
/** Unique trigger id (UUID). */
|
|
3971
4051
|
triggerId: Scalars['String']['output'];
|
|
@@ -5238,7 +5318,7 @@ export type Mutation = {
|
|
|
5238
5318
|
gameModelRevokeTierFeature: Scalars['Boolean']['output'];
|
|
5239
5319
|
/** Run an automation once, immediately (manual trigger), regardless of its schedule. Applies the same guard chain (app gate, rate limit, circuit) and records a run. Useful for testing an NPC. Requires app-admin ('manage_apps'). */
|
|
5240
5320
|
gameModelRunAutomation: GmAutomationRun;
|
|
5241
|
-
/** Arm a one-shot timer: invoke a function once, after a delay. The timer is durable (it survives an API restart) and claimed by exactly one replica, so it fires once. The target function must be autonomousInvocable, because the fire is headless and runs with system authority rather than a player's — which is also why this needs app-admin ('manage_apps'). For player-driven delays, author a timers effect on a function instead so the delay is part of your game logic. Supply dedupeKey to make re-arming replace the pending timer rather than queue another fire. */
|
|
5321
|
+
/** Arm a one-shot timer: invoke a function once, after a delay. The timer is durable (it survives an API restart) and claimed by exactly one replica, so it fires once. A timer whose deadline passes while the app has no players WAITS rather than firing into an empty world, and fires when somebody returns: late, not lost. Read the clock in the handler rather than assuming the delay you asked for is the delay that elapsed. The target function must be autonomousInvocable, because the fire is headless and runs with system authority rather than a player's — which is also why this needs app-admin ('manage_apps'). For player-driven delays, author a timers effect on a function instead so the delay is part of your game logic. Supply dedupeKey to make re-arming replace the pending timer rather than queue another fire. */
|
|
5242
5322
|
gameModelScheduleInvoke: GmTimer;
|
|
5243
5323
|
/** Bulk-create game-model definitions (container types, property defs, functions) and optionally instances (containers + edges) in one transaction — used to initialize or import a model. Requires app-admin ('manage_apps'). Returns counts created, warnings, and a map of seed temp_id -> created container UUID. */
|
|
5244
5324
|
gameModelSeed: GmSeedResult;
|
|
@@ -5252,7 +5332,7 @@ export type Mutation = {
|
|
|
5252
5332
|
gameModelSetProperty: GmContainer;
|
|
5253
5333
|
/** Set or clear the session's current-turn user, for turn-based play (authority enforced by the service). Pass userId null to clear the turn. Requires a valid token. */
|
|
5254
5334
|
gameModelSetSessionTurn: GmSession;
|
|
5255
|
-
/** 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'). */
|
|
5335
|
+
/** 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'). NOTHING RUNS FOR AN APP WITH NO PLAYER IN IT: a SCHEDULE trigger that comes due while the app is empty is skipped and rescheduled from the moment a player returns, and the missed runs are never made up -- so write the entry point to advance the world by elapsed time rather than by one step per run. Event and manual triggers are unaffected, because something already asked. */
|
|
5256
5336
|
gameModelUpsertAutomation: GmAutomation;
|
|
5257
5337
|
/** 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'). */
|
|
5258
5338
|
gameModelUpsertAutomationTrigger: GmAutomationTrigger;
|
|
@@ -5324,7 +5404,7 @@ export type Mutation = {
|
|
|
5324
5404
|
publishPlayerCodeVersion: PlayerCodeListingVersion;
|
|
5325
5405
|
/** 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. */
|
|
5326
5406
|
purchaseGrid: GridPurchaseResult;
|
|
5327
|
-
/** 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. */
|
|
5407
|
+
/** 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. NATIVE CLIENTS: pass `currentServer` (the ip4 + clientPort serverWithLeastClients gave you) and the new token is authorized on that same Buddy -- read `authorizedServer` on the response: when it is set, keep your UDP session and just switch tokens; when it is null, call serverWithLeastClients for a fresh placement. Without `currentServer` the new token is not known to any Buddy until you call serverWithLeastClients. */
|
|
5328
5408
|
refreshAppToken: AppTokenResponse;
|
|
5329
5409
|
/** 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. */
|
|
5330
5410
|
refundPlayerCodeAcquisition: Scalars['Int']['output'];
|
|
@@ -5390,6 +5470,8 @@ export type Mutation = {
|
|
|
5390
5470
|
sendTestEmail: SendTestEmailResult;
|
|
5391
5471
|
/** Send a spatial text/chat packet, fanned out to nearby actors as a ClientTextNotification. Requires a bearer game token; opens a UDP proxy session automatically if none exists. Returns Boolean! that is true only when the datagram was ACCEPTED FOR SENDING to the game server — NOT confirmation of delivery. The sender receives no echo; failures arrive ASYNCHRONOUSLY as GenericErrorResponse on udpNotifications, correlated by the request sequenceNumber (correlation only — not an idempotency key; the server does not dedupe replays). */
|
|
5392
5472
|
sendTextPacket: Scalars['Boolean']['output'];
|
|
5473
|
+
/** Send ONE webcam video fragment, fanned out to nearby actors as a ClientVideoNotification (Buddy v0.25.0). Requires a bearer game token and the use_video_chat runtime permission at app AND grid level -- without it the game server responds asynchronously with a GenericErrorResponse (errorCode UNAUTHORIZED). A datagram carries at most ~1117 bytes of videoData, so an encoded frame is split by the SDK into fragments (6-byte header: version, codec, frameId, fragIndex, fragCount; at most 16 per frame) and reassembled by receivers; this is a mutation PER FRAGMENT and sustained video belongs on the binary realtime relay. Every receiver in range pays the egress bytes: keep distance small and frames few. Opens a UDP proxy session automatically if none exists. Returns Boolean! that is true only when the datagram was ACCEPTED FOR SENDING -- NOT that it was delivered; the sender receives no echo, only errors (GenericErrorResponse, correlated by sequenceNumber) on udpNotifications. */
|
|
5474
|
+
sendVideoPacket: Scalars['Boolean']['output'];
|
|
5393
5475
|
/** Send a single voxel (block) update for spatial replication to nearby chunks. Requires a bearer game token; opens a UDP proxy session automatically if none exists. Returns Boolean! that is true only when the datagram was ACCEPTED FOR SENDING to the game server — NOT confirmation that the world applied the change. There is NO separate per-request success response: the change fans out to nearby clients (the sender included) as a VoxelUpdateNotification carrying the same sequenceNumber (VoxelUpdateResponse is legacy and is never emitted). Failures arrive ASYNCHRONOUSLY as a GenericErrorResponse; both are correlated by the request sequenceNumber (correlation only — not an idempotency key; the server does not dedupe replays). */
|
|
5394
5476
|
sendVoxelUpdate: Scalars['Boolean']['output'];
|
|
5395
5477
|
/** Creates or updates an app's monthly spend cap (idempotent upsert keyed by org + app) and returns the resulting budget. This only records the cap used to monitor/limit overspend; it does not move money, charge a card, or alter the wallet balance. Requires the 'manage_billing' app permission. */
|
|
@@ -5432,7 +5514,7 @@ export type Mutation = {
|
|
|
5432
5514
|
setOperator: User;
|
|
5433
5515
|
/** OPERATOR ONLY. Sets or clears an organization billing exemption. When true, org-wallet debits and money-driven runtime denials are skipped; usage is still metered and every waived amount is written to org_billing_waivers. Does not waive player-wallet charges, failure breakers, or the per-minute compute budget. reason is required when setting true. SIDE EFFECT: re-evaluates the runtime gate for every shared app in the org, so clearing the exemption re-denies immediately instead of waiting for the next hourly tick. */
|
|
5434
5516
|
setOrgBillingExempt: BillingExemptOrgType;
|
|
5435
|
-
/** Super admin only.
|
|
5517
|
+
/** Super admin only. Freeze ('frozen') or unfreeze ('active') an organization platform-wide. A FROZEN organization grants its members NO org permission (super admins excepted, so it is reversible): they cannot spend its wallet, create or manage apps, or change members, and every such refusal names the freeze; its API tokens stop authenticating; the org itself still resolves by id and slug so Studio can show the state. Takes exactly 'active' or 'frozen'; 'retired' is refused in either direction — retirement is retireOrganization, which writes a tombstone. */
|
|
5436
5518
|
setOrgStatus: Organization;
|
|
5437
5519
|
/** Configure the caller's player-wallet auto-recharge: enable/disable, per-period ceiling, recharge amount, and low-water threshold. Enabling requires a vaulted payment method. */
|
|
5438
5520
|
setPlayerAutoBilling: PlayerAutoBilling;
|
|
@@ -6063,6 +6145,9 @@ export type MutationPurchaseGridArgs = {
|
|
|
6063
6145
|
chunkZ?: InputMaybe<Scalars['Int']['input']>;
|
|
6064
6146
|
gridListingId: Scalars['String']['input'];
|
|
6065
6147
|
};
|
|
6148
|
+
export type MutationRefreshAppTokenArgs = {
|
|
6149
|
+
currentServer?: InputMaybe<CurrentServerInput>;
|
|
6150
|
+
};
|
|
6066
6151
|
export type MutationRefundPlayerCodeAcquisitionArgs = {
|
|
6067
6152
|
acquisitionId: Scalars['String']['input'];
|
|
6068
6153
|
appId: Scalars['BigInt']['input'];
|
|
@@ -6167,6 +6252,9 @@ export type MutationSendTestEmailArgs = {
|
|
|
6167
6252
|
export type MutationSendTextPacketArgs = {
|
|
6168
6253
|
input: ClientTextPacketInput;
|
|
6169
6254
|
};
|
|
6255
|
+
export type MutationSendVideoPacketArgs = {
|
|
6256
|
+
input: ClientVideoPacketInput;
|
|
6257
|
+
};
|
|
6170
6258
|
export type MutationSendVoxelUpdateArgs = {
|
|
6171
6259
|
input: VoxelUpdateRequestInput;
|
|
6172
6260
|
};
|
|
@@ -6453,7 +6541,7 @@ export type OrgAppUsageProjectionRow = {
|
|
|
6453
6541
|
appId: Scalars['String']['output'];
|
|
6454
6542
|
/** App display name. */
|
|
6455
6543
|
appName: Scalars['String']['output'];
|
|
6456
|
-
/** Egress bytes so far this calendar month. */
|
|
6544
|
+
/** Egress bytes so far this calendar month. Egress only; ingress does not count toward the aggregate volume. */
|
|
6457
6545
|
currentEgressBytes: Scalars['String']['output'];
|
|
6458
6546
|
/** True when this app is on track to exceed its free allowance, or null when insufficient data. */
|
|
6459
6547
|
onTrackToExceed: Maybe<Scalars['Boolean']['output']>;
|
|
@@ -6621,14 +6709,14 @@ export type OrgUsageProjection = {
|
|
|
6621
6709
|
onTrackToExceedAny: Scalars['Boolean']['output'];
|
|
6622
6710
|
/** True when at least 3 days have elapsed in the month (projection is meaningful). */
|
|
6623
6711
|
sufficientData: Scalars['Boolean']['output'];
|
|
6624
|
-
/** True when org total projected egress exceeds the combined free tier
|
|
6712
|
+
/** True when org total projected egress exceeds the combined free tier, so the org should expect a metered bill. Note that a capacity reservation is NOT a remedy for this: reservations buy provisioned capacity and are charged in addition to metered usage, so they do not reduce an egress bill. What this signals is that the org needs a funded wallet or auto-billing. */
|
|
6625
6713
|
suggestReservedThroughput: Scalars['Boolean']['output'];
|
|
6626
6714
|
/** Total free monthly egress allowance across all shared apps in the org (apps × 5 GB). */
|
|
6627
6715
|
totalFreeAllowanceBytes: Scalars['String']['output'];
|
|
6628
6716
|
/** Sum of projected end-of-month egress across shared apps, or null when insufficient data. */
|
|
6629
6717
|
totalProjectedBytes: Maybe<Scalars['String']['output']>;
|
|
6630
6718
|
};
|
|
6631
|
-
/** Org-level rollup of replication/GraphQL byte totals and GraphQL op counts across all apps in the organization for the time window. */
|
|
6719
|
+
/** Org-level rollup of replication/GraphQL byte totals and GraphQL op counts across all apps in the organization for the time window. WHICH OF THESE YOU PAY FOR: the *SendBytes fields are the billable direction, and *RecvBytes are metered but do NOT count toward Aggregate Data Volume, the monthly free-tier and overage measure. All byte figures are wire bytes measured at the network interface, including transport and network headers, and after any compression the service applies -- they will not match a client-side byte counter. */
|
|
6632
6720
|
export type OrgUsageSummary = {
|
|
6633
6721
|
__typename?: 'OrgUsageSummary';
|
|
6634
6722
|
/** Total GraphQL bytes received across all org apps (string counter). */
|
|
@@ -7151,6 +7239,7 @@ export declare enum PlayerFaultCode {
|
|
|
7151
7239
|
QuotaExhausted = "QUOTA_EXHAUSTED",
|
|
7152
7240
|
/** This caller is asking too often. It arrives ONLY as a thrown error, never in band on a result, and `extensions.retryAfterMs` carries the wait. That number is the milliseconds REMAINING in the current fixed window at the moment the refusal was built, not a fixed backoff, so a second refusal inside the same window carries a smaller number: treat it as a deadline from receipt and do not reuse a cached one. */
|
|
7153
7241
|
RateLimited = "RATE_LIMITED",
|
|
7242
|
+
SpendCapReached = "SPEND_CAP_REACHED",
|
|
7154
7243
|
/** A breaker is open or an operator switch is off for this subject. */
|
|
7155
7244
|
TemporarilyDisabled = "TEMPORARILY_DISABLED",
|
|
7156
7245
|
/** No valid credential was presented. */
|
|
@@ -7161,6 +7250,7 @@ export declare enum PlayerFaultCode {
|
|
|
7161
7250
|
UserCodeLimitExceeded = "USER_CODE_LIMIT_EXCEEDED",
|
|
7162
7251
|
/** The app's own code ran past the time it is allowed. */
|
|
7163
7252
|
UserCodeTooSlow = "USER_CODE_TOO_SLOW",
|
|
7253
|
+
WalletEmpty = "WALLET_EMPTY",
|
|
7164
7254
|
/** This app is served from another datacenter. The error extensions carry `gameApiUrl`; move there and retry. */
|
|
7165
7255
|
WrongDatacenter = "WRONG_DATACENTER"
|
|
7166
7256
|
}
|
|
@@ -7488,6 +7578,10 @@ export type PublicRateCardEntryType = {
|
|
|
7488
7578
|
freePerHour: Maybe<Scalars['BigInt']['output']>;
|
|
7489
7579
|
/** Raw metric units free per UTC calendar month, as a BigInt decimal string. On the PLAYER card this is the pooled monthly trial budget per (player, app). Null when this dimension has no monthly allowance. */
|
|
7490
7580
|
freePerMonth: Maybe<Scalars['BigInt']['output']>;
|
|
7581
|
+
/** The period freeUnits resets on. Every dimension is billed as its period aggregate crosses each whole cent, within about a minute of the usage arriving. */
|
|
7582
|
+
freePeriod: Maybe<AllowancePeriod>;
|
|
7583
|
+
/** The allowance as the biller reads it: raw metric units free per freePeriod, as a BigInt decimal string. Null when the dimension has no allowance row. */
|
|
7584
|
+
freeUnits: Maybe<Scalars['BigInt']['output']>;
|
|
7491
7585
|
/** The metered dimension, e.g. "graphql_recv_ops" or "player_wasm_compute_units". This is the key your usage is aggregated under, so it is what to match a bill line against. */
|
|
7492
7586
|
metric: Scalars['String']['output'];
|
|
7493
7587
|
/** Cents charged per unitQuantity raw units, above the free allowance. Fractional values are permitted. 0 means metered but not charged. */
|
|
@@ -7499,7 +7593,7 @@ export type PublicRateCardEntryType = {
|
|
|
7499
7593
|
/** How many raw metric units one priceCents charge covers, as a BigInt decimal string. A price of 19 with unitQuantity 1073741824 is 19 cents per GiB. priceCents and unitQuantity are two halves of one price and mean nothing apart. */
|
|
7500
7594
|
unitQuantity: Scalars['BigInt']['output'];
|
|
7501
7595
|
};
|
|
7502
|
-
/** Result of publishing an app to the shared environment. All paths publish immediately
|
|
7596
|
+
/** Result of publishing an app to the shared environment. All paths publish immediately. Usage above the free allowances is wallet-billed: each app has a per-dimension hourly allowance and, for client egress, 5 decimal GB per calendar month. An unfunded free app is also shaped to roughly 1 MB/s; funding the org wallet or enabling auto-billing lifts that. */
|
|
7503
7597
|
export type PublishAppResult = {
|
|
7504
7598
|
__typename?: 'PublishAppResult';
|
|
7505
7599
|
appId: Scalars['BigInt']['output'];
|
|
@@ -7933,7 +8027,7 @@ export type Query = {
|
|
|
7933
8027
|
quotasForOrg: Array<ServiceQuota>;
|
|
7934
8028
|
/** OPERATOR ONLY. Every organization currently retired, newest first. A retirement nobody can enumerate is indistinguishable from an organization that was quietly lost. */
|
|
7935
8029
|
retiredOrganizations: Array<OrgRetirementType>;
|
|
7936
|
-
/** Lists all valid runtime permission keys (e.g. "access", "teleport", "update_voxel_data", "use_voice_chat") that may be assigned to an access tier permissionKeys. PUBLIC: no authentication required. Ordered by the permission bit index. */
|
|
8030
|
+
/** Lists all valid runtime permission keys (e.g. "access", "teleport", "update_voxel_data", "use_voice_chat", "use_video_chat") that may be assigned to an access tier permissionKeys. PUBLIC: no authentication required. Ordered by the permission bit index. */
|
|
7937
8031
|
runtimePermissions: Array<Scalars['String']['output']>;
|
|
7938
8032
|
/** Pick a low-load game server for a native (direct-UDP) client to connect to: returns a random server from the least-loaded ~20% (by client count) of ReadyForClients servers to spread load, always CO-LOCATED with the datacenter that holds the data for this app (all rows for one app live in a single datacenter). This REFUSES rather than returning a Buddy elsewhere, because every gameplay write for the session would otherwise cross datacenters — invisible, because each write still succeeds — and the refusal tells you which of three situations you are in. If you reached the wrong datacenter (the shared entry name resolves to all of them, so this is the common case for a client that has not re-discovered) it is WRONG_DATACENTER, carrying gameApiUrl and gameApiWsUrl in extensions: reconnect there and retry, which the CrowdyJS and CrowdyCPP clients do for you. If the app’s own datacenter is not serving at all it is APP_UNAVAILABLE, deliberately with no endpoint. Only when this IS the app’s datacenter and it has no healthy co-located Buddy is it NO_LOCAL_BUDDY — also with no endpoint, because there is nowhere else to go; that one needs an operator. Requires a bearer game token; as a side effect it authorizes that token’s P2P session with the chosen Buddy so the native client’s spatial datagrams are accepted. Connect the native client to the returned ip4 and clientPort. Browser clients should instead use the UDP proxy (connectUdpProxy / udpNotifications) and do not need this. */
|
|
7939
8033
|
serverWithLeastClients: ServerStatus;
|
|
@@ -8680,6 +8774,10 @@ export type RateCardEntryType = {
|
|
|
8680
8774
|
freePerHour: Maybe<Scalars['BigInt']['output']>;
|
|
8681
8775
|
/** Raw metric units free per UTC calendar month, as a BigInt decimal string. On the PLAYER card this is the pooled monthly trial budget per (player, app), and player_wasm_compute_units is its canonical key. Null when this dimension has no monthly allowance. */
|
|
8682
8776
|
freePerMonth: Maybe<Scalars['BigInt']['output']>;
|
|
8777
|
+
/** The period freeUnits resets on. Null when the dimension has no allowance row. */
|
|
8778
|
+
freePeriod: Maybe<AllowancePeriod>;
|
|
8779
|
+
/** The allowance as the biller reads it: raw metric units free per freePeriod, as a BigInt decimal string. freePerHour and freePerMonth are views of this same row for the periods they name; a DAY allowance shows only here. Null when the dimension has no allowance row. */
|
|
8780
|
+
freeUnits: Maybe<Scalars['BigInt']['output']>;
|
|
8683
8781
|
/** The metered dimension, e.g. "graphql_recv_ops" or "player_wasm_compute_units". Matches a key the billing tick aggregates. */
|
|
8684
8782
|
metric: Scalars['String']['output'];
|
|
8685
8783
|
/** Cents charged per unitQuantity raw units, above the free allowance. Fractional values are permitted (the column is NUMERIC(20,6)). 0 means metered but not charged. */
|
|
@@ -8694,7 +8792,7 @@ export type RateCardEntryType = {
|
|
|
8694
8792
|
/** One field that moved, with the value it held before. Reported so a price change is auditable from the response rather than reconstructed afterwards. */
|
|
8695
8793
|
export type RateChangeType = {
|
|
8696
8794
|
__typename?: 'RateChangeType';
|
|
8697
|
-
/** One of "priceCents", "unitLabel", "unitQuantity", "
|
|
8795
|
+
/** One of "priceCents", "unitLabel", "unitQuantity", "freeUnits", "freePeriod" or "freePerMonth". */
|
|
8698
8796
|
field: Scalars['String']['output'];
|
|
8699
8797
|
metric: Scalars['String']['output'];
|
|
8700
8798
|
/** The value before this call, as a decimal string. "none" when there was no allowance row. */
|
|
@@ -9318,13 +9416,13 @@ export type SetAppClientSettingsInput = {
|
|
|
9318
9416
|
/** Allow-listed redirect URIs for the portal authorization code (origin-matched). Replaces the current list. */
|
|
9319
9417
|
redirectUris?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
9320
9418
|
};
|
|
9321
|
-
/** Set or change an app's reserved
|
|
9419
|
+
/** Set or change an app's reserved REALTIME (UDP) capacity on the shared environment. Reservations are sold in two independent dimensions and this mutation sets one of them; read both back from App.reservedUdpBytesPerSec and App.reservedGraphqlOpsPerSec. */
|
|
9322
9420
|
export type SetAppReservedThroughputInput = {
|
|
9323
|
-
/** App to configure reserved
|
|
9421
|
+
/** App to configure reserved realtime (UDP) capacity for. */
|
|
9324
9422
|
appId: Scalars['BigInt']['input'];
|
|
9325
9423
|
/** Organization that owns the app. */
|
|
9326
9424
|
orgId: Scalars['BigInt']['input'];
|
|
9327
|
-
/** Reserved sustained
|
|
9425
|
+
/** Reserved sustained realtime capacity in bytes/s (decimal MB/s: 1_000_000 = 1 MB/s). 0 clears the reservation, which releases the provisioned floor and stops the monthly fee; it does not change how the app is shaped, because the ~1 MB/s free-tier cap is decided by whether the org can be charged rather than by whether it holds a reservation. A reservation buys capacity, not volume: the fee is charged in addition to metered usage and includes no data allowance. */
|
|
9328
9426
|
reservedBytesPerSec: Scalars['BigInt']['input'];
|
|
9329
9427
|
};
|
|
9330
9428
|
/** Result of setAppReservedThroughput: updated app + reservation fee debited (0 when downgrading or unchanged). */
|
|
@@ -9641,6 +9739,10 @@ export type SetRateCardInput = {
|
|
|
9641
9739
|
freePerHour?: InputMaybe<Scalars['BigInt']['input']>;
|
|
9642
9740
|
/** New monthly free allowance in raw metric units, as a BigInt decimal string. Must be >= 0. On the PLAYER card with metric player_wasm_compute_units this is the pooled monthly TRIAL BUDGET per (player, app) — the only sanctioned way to change it on a live tier. Omit to leave it unchanged. */
|
|
9643
9741
|
freePerMonth?: InputMaybe<Scalars['BigInt']['input']>;
|
|
9742
|
+
/** New period for the free allowance. Leaves the units as they are unless freeUnits is also given. Moving a dimension to MONTH is how the development quota is stated. */
|
|
9743
|
+
freePeriod?: InputMaybe<AllowancePeriod>;
|
|
9744
|
+
/** New free allowance in raw metric units per freePeriod, as a BigInt decimal string. Must be >= 0. Leaves the period as it is unless freePeriod is also given. Not combinable with freePerHour, which is the older spelling of freeUnits with freePeriod HOUR. */
|
|
9745
|
+
freeUnits?: InputMaybe<Scalars['BigInt']['input']>;
|
|
9644
9746
|
/** The metered dimension to reprice. Refused unless the platform actually meters it: a rate for an unmetered metric bills nobody while appearing configured. */
|
|
9645
9747
|
metric: Scalars['String']['input'];
|
|
9646
9748
|
/** New price in cents per unitQuantity raw units. Must be >= 0; 0 means meter but do not charge. Omit to leave the price unchanged. Fractional values are accepted (the column is NUMERIC(20,6)). */
|
|
@@ -9896,7 +9998,7 @@ export declare enum UdpErrorCode {
|
|
|
9896
9998
|
UserNotAuthenticated = "USER_NOT_AUTHENTICATED"
|
|
9897
9999
|
}
|
|
9898
10000
|
/** All game-server messages delivered over the UDP proxy as GraphQL payloads. Subscribe to udpNotifications before or with sending mutations so responses and GenericErrorResponse (correlate via sequenceNumber) are not missed. NOTE: the ActorUpdateResponse and VoxelUpdateResponse members are LEGACY and never emitted (applied updates arrive as your own *Notification self-echo; failures as GenericErrorResponse) — they remain in the union for backward compatibility and will be removed in a future major version. */
|
|
9899
|
-
export type UdpNotification = ActorUpdateNotification | ActorUpdateResponse | ChannelMessageNotification | ClientAudioNotification | ClientEventNotification | ClientTextNotification | GenericErrorResponse | RealtimeConnectionEvent | ServerEventNotification | SingleActorMessageNotification | VoxelUpdateNotification | VoxelUpdateResponse;
|
|
10001
|
+
export type UdpNotification = ActorLeftNotification | ActorUpdateNotification | ActorUpdateResponse | ChannelMessageNotification | ClientAudioNotification | ClientEventNotification | ClientTextNotification | ClientVideoNotification | GenericErrorResponse | RealtimeConnectionEvent | ServerEventNotification | SingleActorMessageNotification | VoxelUpdateNotification | VoxelUpdateResponse;
|
|
9900
10002
|
/** UDP proxy session for the game token on the request. Returned by udpProxyConnectionStatus and connectUdpProxy. Binary UDP layouts are documented in database/client-wire-formats.md. */
|
|
9901
10003
|
export type UdpProxyConnectionStatus = {
|
|
9902
10004
|
__typename?: 'UdpProxyConnectionStatus';
|
|
@@ -10134,15 +10236,15 @@ export type UpsertAutomationTriggerInput = {
|
|
|
10134
10236
|
appId: Scalars['BigInt']['input'];
|
|
10135
10237
|
/** The automation (by name) this trigger fires. */
|
|
10136
10238
|
automationName: Scalars['String']['input'];
|
|
10137
|
-
/** Filter: only this container type. For function_invoked this is the type of the invocation's "self" container, so you can watch "this function, on this type". Rejected for player_count_changed. */
|
|
10239
|
+
/** Filter: only this container type. For function_invoked this is the type of the invocation's "self" container, so you can watch "this function, on this type". Rejected for player_count_changed and player_left. */
|
|
10138
10240
|
containerTypeName?: InputMaybe<Scalars['String']['input']>;
|
|
10139
10241
|
/** 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. */
|
|
10140
10242
|
debounceMs?: InputMaybe<Scalars['Int']['input']>;
|
|
10141
|
-
/** Filter: only this function name. Applies to function_invoked; rejected for property_changed, container_created, and
|
|
10243
|
+
/** Filter: only this function name. Applies to function_invoked; rejected for property_changed, container_created, player_count_changed and player_left. */
|
|
10142
10244
|
functionName?: InputMaybe<Scalars['String']['input']>;
|
|
10143
|
-
/** 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. */
|
|
10245
|
+
/** Event to observe: function_invoked | property_changed | container_created | player_count_changed | player_left. player_count_changed fires only after complete fleet counts change, and injects reserved previous/current/delta/revision params. player_left fires once per actor that stops being present (about five seconds after its last update), the LAST player included, and injects actor_uuid, user_id, chunk_x/y/z, last_seen_at, left_reason (presence_removed | lease_expired) and remaining_player_count. */
|
|
10144
10246
|
onEvent: Scalars['String']['input'];
|
|
10145
|
-
/** Filter: only this property key. Applies to property_changed; rejected for function_invoked, container_created, and
|
|
10247
|
+
/** Filter: only this property key. Applies to property_changed; rejected for function_invoked, container_created, player_count_changed and player_left. */
|
|
10146
10248
|
propertyKey?: InputMaybe<Scalars['String']['input']>;
|
|
10147
10249
|
/** property_changed only: which writes to observe — "direct" (gameModelSetProperty), "function" (a mutation applied inside a gameModelInvoke, automation run, or timer fire), or "any" (default). Rejected for other events. */
|
|
10148
10250
|
writeSource?: InputMaybe<Scalars['String']['input']>;
|
|
@@ -10178,7 +10280,7 @@ export type UpsertComputeTriggerInput = {
|
|
|
10178
10280
|
invokePolicyJson?: InputMaybe<Scalars['String']['input']>;
|
|
10179
10281
|
/** The module (by name) this trigger drives. */
|
|
10180
10282
|
moduleName: Scalars['String']['input'];
|
|
10181
|
-
/** For event triggers: function_invoked | property_changed | container_created | compute_event. */
|
|
10283
|
+
/** For event triggers: function_invoked | property_changed | container_created | compute_event | player_left. player_left (v1.87.0) is delivered to on_event as JSON with event, actor_uuid, user_id, chunk_x/y/z, last_seen_at, left_reason and remaining_player_count, once per actor that stops being present, the last one included. */
|
|
10182
10284
|
onEvent?: InputMaybe<Scalars['String']['input']>;
|
|
10183
10285
|
/** Event filter: only this property key. */
|
|
10184
10286
|
propertyKey?: InputMaybe<Scalars['String']['input']>;
|
|
@@ -10300,6 +10402,8 @@ export type User = {
|
|
|
10300
10402
|
grantEarlyAccess: Scalars['Boolean']['output'];
|
|
10301
10403
|
/** Admin override forcing early access on/off regardless of normal eligibility (set via `setEarlyAccessOverride`). */
|
|
10302
10404
|
grantEarlyAccessOverride: Scalars['Boolean']['output'];
|
|
10405
|
+
/** Whether this account has a password set. Studio reads it to say "set a password" only to accounts that have none (magic-link and OAuth sign-ups); it used to say so to everyone. The hash itself never leaves the process. */
|
|
10406
|
+
hasPassword: Scalars['Boolean']['output'];
|
|
10303
10407
|
/** Whether the account email has been confirmed. */
|
|
10304
10408
|
isConfirmed: Scalars['Boolean']['output'];
|
|
10305
10409
|
/** Company-employee flag that grants access to control-plane / operator features. Independent from is_super_admin. */
|
|
@@ -10706,7 +10810,7 @@ export type WalletTransaction = {
|
|
|
10706
10810
|
referenceId: Maybe<Scalars['String']['output']>;
|
|
10707
10811
|
/** Unique transaction id (BigInt as a decimal string). */
|
|
10708
10812
|
transactionId: Scalars['BigInt']['output'];
|
|
10709
|
-
/** What produced this transaction. The complete set of values this API writes: "topup" (wallet credit from a completed checkout, positive), "admin_credit" (operator credit applied without a payment provider, positive), "auto_recharge" (off-session automatic wallet recharge, positive), "shared_usage" (hourly shared-environment metered charge for one closed clock hour, negative), "agent_usage" (Crowdy Studio agent run charged at provider cost, negative), "reserved_throughput" (monthly or prorated reserved
|
|
10813
|
+
/** What produced this transaction. The complete set of values this API writes: "topup" (wallet credit from a completed checkout, positive), "admin_credit" (operator credit applied without a payment provider, positive), "auto_recharge" (off-session automatic wallet recharge, positive), "shared_usage" (hourly shared-environment metered charge for one closed clock hour, negative), "agent_usage" (Crowdy Studio agent run charged at provider cost, negative), "reserved_throughput" (monthly or prorated reserved capacity -- realtime bytes/s or GraphQL operations/s -- charged in addition to metered usage rather than including any of it, negative), "markup_payout" (the app developer's markup on a player's compute bill, credited to the org in the same transaction as the player debit that produced it, positive), "refund" (a payment-provider refund of a top-up, the credited amount leaving the wallet again, negative), "chargeback" (a card dispute on an org top-up, clawed back from the org wallet, negative). No other value is written; earlier versions of this description also listed "usage" and "environment_usage", neither of which was ever produced. */
|
|
10710
10814
|
transactionType: Scalars['String']['output'];
|
|
10711
10815
|
/** Wallet this transaction belongs to (BigInt as a decimal string). */
|
|
10712
10816
|
walletId: Scalars['BigInt']['output'];
|
|
@@ -10943,11 +11047,11 @@ export type WasmModuleTrigger = {
|
|
|
10943
11047
|
invokePolicyJson: Maybe<Scalars['String']['output']>;
|
|
10944
11048
|
/** The module this trigger drives. */
|
|
10945
11049
|
moduleId: Scalars['String']['output'];
|
|
10946
|
-
/** For event triggers: function_invoked | property_changed | container_created | compute_event. */
|
|
11050
|
+
/** For event triggers: function_invoked | property_changed | container_created | compute_event | player_left. player_left (v1.87.0) is delivered to on_event as JSON with event, actor_uuid, user_id, chunk_x/y/z, last_seen_at, left_reason and remaining_player_count, once per actor that stops being present, the last one included. */
|
|
10947
11051
|
onEvent: Maybe<Scalars['String']['output']>;
|
|
10948
11052
|
/** Event filter: only this property key. */
|
|
10949
11053
|
propertyKey: Maybe<Scalars['String']['output']>;
|
|
10950
|
-
/** For tick triggers: the tick rate in Hz. */
|
|
11054
|
+
/** For tick triggers: the tick rate in Hz. The module ticks at this rate only while its app has a player connected somewhere in the fleet, and stops when the last one leaves. */
|
|
10951
11055
|
tickHz: Maybe<Scalars['Float']['output']>;
|
|
10952
11056
|
/** Unique trigger id (UUID). */
|
|
10953
11057
|
triggerId: Scalars['String']['output'];
|
|
@@ -20394,6 +20498,13 @@ export type SendTextPacketMutation = {
|
|
|
20394
20498
|
__typename?: 'Mutation';
|
|
20395
20499
|
sendTextPacket: boolean;
|
|
20396
20500
|
};
|
|
20501
|
+
export type SendVideoPacketMutationVariables = Exact<{
|
|
20502
|
+
input: ClientVideoPacketInput;
|
|
20503
|
+
}>;
|
|
20504
|
+
export type SendVideoPacketMutation = {
|
|
20505
|
+
__typename?: 'Mutation';
|
|
20506
|
+
sendVideoPacket: boolean;
|
|
20507
|
+
};
|
|
20397
20508
|
export type SendVoxelUpdateMutationVariables = Exact<{
|
|
20398
20509
|
input: VoxelUpdateRequestInput;
|
|
20399
20510
|
}>;
|
|
@@ -20407,6 +20518,17 @@ export type UdpNotificationsSubscriptionVariables = Exact<{
|
|
|
20407
20518
|
export type UdpNotificationsSubscription = {
|
|
20408
20519
|
__typename?: 'Subscription';
|
|
20409
20520
|
udpNotifications: {
|
|
20521
|
+
__typename: 'ActorLeftNotification';
|
|
20522
|
+
appId: string;
|
|
20523
|
+
chunkX: string;
|
|
20524
|
+
chunkY: string;
|
|
20525
|
+
chunkZ: string;
|
|
20526
|
+
distance: number;
|
|
20527
|
+
uuid: string;
|
|
20528
|
+
leftReason: number;
|
|
20529
|
+
sequenceNumber: number;
|
|
20530
|
+
epochMillis: string;
|
|
20531
|
+
} | {
|
|
20410
20532
|
__typename: 'ActorUpdateNotification';
|
|
20411
20533
|
appId: string;
|
|
20412
20534
|
chunkX: string;
|
|
@@ -20473,6 +20595,18 @@ export type UdpNotificationsSubscription = {
|
|
|
20473
20595
|
text: string;
|
|
20474
20596
|
sequenceNumber: number;
|
|
20475
20597
|
epochMillis: string;
|
|
20598
|
+
} | {
|
|
20599
|
+
__typename: 'ClientVideoNotification';
|
|
20600
|
+
appId: string;
|
|
20601
|
+
chunkX: string;
|
|
20602
|
+
chunkY: string;
|
|
20603
|
+
chunkZ: string;
|
|
20604
|
+
distance: number;
|
|
20605
|
+
decayRate: number;
|
|
20606
|
+
uuid: string;
|
|
20607
|
+
videoData: string;
|
|
20608
|
+
sequenceNumber: number;
|
|
20609
|
+
epochMillis: string;
|
|
20476
20610
|
} | {
|
|
20477
20611
|
__typename: 'GenericErrorResponse';
|
|
20478
20612
|
sequenceNumber: number;
|
|
@@ -21434,6 +21568,7 @@ export declare const SendChannelMessageDocument: DocumentNode<SendChannelMessage
|
|
|
21434
21568
|
export declare const SendClientEventDocument: DocumentNode<SendClientEventMutation, SendClientEventMutationVariables>;
|
|
21435
21569
|
export declare const SendSingleActorMessageDocument: DocumentNode<SendSingleActorMessageMutation, SendSingleActorMessageMutationVariables>;
|
|
21436
21570
|
export declare const SendTextPacketDocument: DocumentNode<SendTextPacketMutation, SendTextPacketMutationVariables>;
|
|
21571
|
+
export declare const SendVideoPacketDocument: DocumentNode<SendVideoPacketMutation, SendVideoPacketMutationVariables>;
|
|
21437
21572
|
export declare const SendVoxelUpdateDocument: DocumentNode<SendVoxelUpdateMutation, SendVoxelUpdateMutationVariables>;
|
|
21438
21573
|
export declare const UdpNotificationsDocument: DocumentNode<UdpNotificationsSubscription, UdpNotificationsSubscriptionVariables>;
|
|
21439
21574
|
export declare const UdpProxyConnectionStatusDocument: DocumentNode<UdpProxyConnectionStatusQuery, UdpProxyConnectionStatusQueryVariables>;
|