@crowdedkingdoms/crowdyjs 18.2.0-dev.1 → 18.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -12,23 +12,19 @@ gameplay, minted per app through `client.portal`.
12
12
 
13
13
  Start here:
14
14
 
15
- - [SDK guide](https://docs.dev.crowdedkingdoms.com/crowdyjs/readme) — the canonical
15
+ - [SDK guide](https://docs.crowdedkingdoms.com/crowdyjs/readme) — the canonical
16
16
  walkthrough of everything in this README.
17
- - [Build a game](https://docs.dev.crowdedkingdoms.com/build-a-game/intro) — a
17
+ - [Build a game](https://docs.crowdedkingdoms.com/build-a-game/intro) — a
18
18
  hands-on tutorial from sign-in to a playable voxel game.
19
- - [Platform overview](https://docs.dev.crowdedkingdoms.com/overview/client-workflow)
19
+ - [Platform overview](https://docs.crowdedkingdoms.com/overview/client-workflow)
20
20
  — how a client session flows through the platform.
21
21
 
22
22
  ## Install
23
23
 
24
24
  ```bash
25
- npm install @crowdedkingdoms/crowdyjs@dev
25
+ npm install @crowdedkingdoms/crowdyjs
26
26
  ```
27
27
 
28
- This README is the `dev` branch's: it documents the release on the `dev` dist-tag
29
- (`npm view @crowdedkingdoms/crowdyjs dist-tags`), and its links go to the dev docs site. A
30
- plain `npm install` resolves `latest`, the production release, which has no `client.exec`.
31
-
32
28
  CrowdyJS targets browsers by default and uses native `fetch`, `WebSocket`,
33
29
  `crypto`, `btoa`, and `atob`. Node tools can still use the SDK, but must
34
30
  provide browser-compatible globals when opening realtime connections (e.g.
@@ -175,8 +171,8 @@ Notes:
175
171
  - Use `client.auth.setToken(token)` to seed a token externally (e.g. when
176
172
  restoring auth from a non-default storage).
177
173
 
178
- Deeper reading: [Portals & app-scoped tokens](https://docs.dev.crowdedkingdoms.com/management-api/portals-and-app-tokens)
179
- and [Sign in](https://docs.dev.crowdedkingdoms.com/management-api/authentication).
174
+ Deeper reading: [Portals & app-scoped tokens](https://docs.crowdedkingdoms.com/management-api/portals-and-app-tokens)
175
+ and [Sign in](https://docs.crowdedkingdoms.com/management-api/authentication).
180
176
 
181
177
  ### Token refresh during gameplay
182
178
 
@@ -232,7 +228,7 @@ never told about, so a native refresh without it is a re-placement.
232
228
  | `client.host` | Game-host election (`get`, `amIHost`) + actor liveness `heartbeat`. `amIHost` is UI convenience only — a hub decides host-only actions from its caller. |
233
229
  | `client.teleport` | Teleport requests. |
234
230
  | `client.channels`, `client.teams` | Messaging channels and app-scoped player teams (membership + roles). |
235
- | `client.exec` | **ck-exec (dev-tier preview):** an app's server code as hubs and spokes. `connect(appId, { nodeType, key })` opens a player's connection to an execution host; the `ExecConnection` it returns has `call`, `callRaw`, `subscribe`, `ping`, `onReconnect` and `close`, with MessagePack payloads, and it reconnects and renews subscriptions by itself. `starters` / `build` / `deploy` build and deploy an app (`manage_compute`); `logs`, `instances`, `versions`, `activateVersion` and `setEnabled` operate it; `mod*` are players' mods on grids they own, and `modClient*`, `gridClientMods`, `consentClientMod`, `trustAuthor`, `revokeClientModConsent` and `revokeAuthorTrust` their CLIENT halves. See [ck-exec](#ck-exec-dev-tier-preview). |
231
+ | `client.exec` | **ck-exec:** an app's server code as hubs and spokes. `connect(appId, { nodeType, key })` opens a player's connection to an execution host; the `ExecConnection` it returns has `call`, `callRaw`, `subscribe`, `ping`, `onReconnect` and `close`, with MessagePack payloads, and it reconnects and renews subscriptions by itself. `starters` / `build` / `deploy` build and deploy an app (`manage_compute`); `logs`, `instances`, `versions`, `activateVersion` and `setEnabled` operate it; `mod*` are players' mods on grids they own, and `modClient*`, `gridClientMods`, `consentClientMod`, `trustAuthor`, `revokeClientModConsent` and `revokeAuthorTrust` their CLIENT halves. See [ck-exec](#ck-exec). |
236
232
  | `client.playerWallet` | Player spend: balance, ledger, hourly charges, spend caps, card setup, auto-recharge. A ck-exec mod's compute is billed here, to its owner. |
237
233
  | `client.marketplace` | Player-authorized grid claims (`claimGridOwnership`, `claimGridChunk`, `releaseClaimedGrid`, requests and invites) and studio moderation of player code (admission queue, listing administration, claim policy). Mods publish and install through `client.exec`. |
238
234
  | `client.crowdyStudio` | Cloud project, personal-library, and common-file APIs for Crowdy Studio: target-scoped files, metadata/module names, optimistic revisions, copy-by-value imports, atomic saves. |
@@ -299,7 +295,7 @@ query AppForRouting($appId: BigInt!) {
299
295
  `CrowdyClient` with `httpUrl: gameApiUrl` (and the matching `wsUrl`) holding
300
296
  that app's app-scoped token, then drive gameplay through that client. Apps
301
297
  with no `gameApiUrl` keep working against the default `httpUrl` you
302
- configured. See [Loading an app's Game API](https://docs.dev.crowdedkingdoms.com/crowdyjs/shared-environment-routing).
298
+ configured. See [Loading an app's Game API](https://docs.crowdedkingdoms.com/crowdyjs/shared-environment-routing).
303
299
 
304
300
  ## Realtime notifications
305
301
 
@@ -608,7 +604,7 @@ reach your bundle. Reads are synchronous snapshots and writes happen on
608
604
  WebSocket events (not `requestAnimationFrame`), so render loops read freely
609
605
  and a backgrounded tab keeps ingesting updates; pass `workerTicker()` to also
610
606
  keep timer-driven sends at full rate while hidden. See the
611
- [World Stores guide](https://docs.dev.crowdedkingdoms.com/crowdyjs/stores).
607
+ [World Stores guide](https://docs.crowdedkingdoms.com/crowdyjs/stores).
612
608
 
613
609
  ## Game Kit
614
610
 
@@ -632,12 +628,11 @@ and `runOptimisticAction`, which applies an action locally, asks a referee
632
628
  `kit.deploy`, the engines and the model-backed helpers went with the game
633
629
  model in 18.0.0; see [MIGRATION.md](MIGRATION.md).
634
630
 
635
- ## ck-exec (dev-tier preview)
631
+ ## ck-exec
636
632
 
637
633
  ck-exec runs an app's server code as **hubs** (stateful, one instance per key) and **spokes**
638
- (stateless, replicated) on execution hosts, on the dev environment only for now, so it needs
639
- the `@dev` release (`npm install @crowdedkingdoms/crowdyjs@dev`). A player
640
- connects to one host and calls any node of the app through it:
634
+ (stateless, replicated) on execution hosts. A player connects to one host and calls any node
635
+ of the app through it:
641
636
 
642
637
  ```ts
643
638
  // The session token is the app's app-scoped token (client.portal.mintAppToken).
@@ -692,7 +687,7 @@ exec.onReconnect((host) => console.log('moved to', host));
692
687
 
693
688
  Integers above 2^53 decode as `number` and lose precision unless you pass
694
689
  `{ decode: { useBigInt64: true } }`. The wire format is in the
695
- [ck-exec docs](https://docs.dev.crowdedkingdoms.com/exec/intro).
690
+ [ck-exec docs](https://docs.crowdedkingdoms.com/exec/intro).
696
691
 
697
692
  ### A mod's CLIENT half
698
693
 
@@ -763,7 +758,7 @@ counts what was dropped); `invoke` sends at most 256 KiB each way and is refused
763
758
  module is not running. `NOT_FOUND` holds a CLIENT half back 15 s and `RATE_LIMITED` 60 s. The
764
759
  grid's owner is asked about their own CLIENT halves like anyone; answer yes in `confirm` when
765
760
  `prompt.authorId` is the player. See
766
- [CLIENT halves](https://docs.dev.crowdedkingdoms.com/exec/client-halves).
761
+ [CLIENT halves](https://docs.crowdedkingdoms.com/exec/client-halves).
767
762
 
768
763
  ## Hosting a game on Crowdy Games
769
764
 
@@ -882,8 +877,8 @@ CLIENT project needs ck-api `v2.25.1` or later. A CLIENT crate still on the lega
882
877
  `mountCrowdyStudio` and the controller take `mods: client.exec`. Crowdy Studio runs nothing
883
878
  on legacy player compute since 18.0.0.
884
879
 
885
- See [CLIENT halves](https://docs.dev.crowdedkingdoms.com/exec/client-halves), [mods](https://docs.dev.crowdedkingdoms.com/exec/mods)
886
- and [Embed Crowdy Studio in your game](https://docs.dev.crowdedkingdoms.com/crowdyjs/crowdy-studio-embed).
880
+ See [CLIENT halves](https://docs.crowdedkingdoms.com/exec/client-halves), [mods](https://docs.crowdedkingdoms.com/exec/mods)
881
+ and [Embed Crowdy Studio in your game](https://docs.crowdedkingdoms.com/crowdyjs/crowdy-studio-embed).
887
882
 
888
883
  ### The Studio agent (DeepSeek Harness in the browser)
889
884
 
@@ -1061,7 +1056,7 @@ no other repositories and no network access required:
1061
1056
  - `src/generated/graphql.ts` — generated TypeScript operation types.
1062
1057
 
1063
1058
  Schema refresh is explicit, from the published
1064
- [SDL](https://docs.dev.crowdedkingdoms.com/schema/game-api.graphql):
1059
+ [SDL](https://docs.crowdedkingdoms.com/schema/game-api.graphql):
1065
1060
 
1066
1061
  ```bash
1067
1062
  npm run schema:sync:prod
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * GENERATED — do not edit. The operator tooling's
3
- * `sync-client-origins.mjs --write --tier dev` writes this file, and
3
+ * `sync-client-origins.mjs --write --tier prod` writes this file, and
4
4
  * `check-sdk-default-origin.mjs` refuses it when it names the wrong tier or a
5
5
  * host that declaration does not carry. Regenerate; never hand-edit.
6
6
  *
@@ -10,14 +10,14 @@
10
10
  * than no default at all. Every fallback this SDK ever removed named a host that
11
11
  * was already dead. A generated file plus a gate is what makes this one different.
12
12
  *
13
- * Source: the operator's per-tier public CK API origin declaration, tier 'dev'
13
+ * Source: the operator's per-tier public CK API origin declaration, tier 'prod'
14
14
  */
15
15
  /** The tier this build of the SDK is published for. */
16
- export declare const CROWDY_DEFAULT_TIER = "dev";
16
+ export declare const CROWDY_DEFAULT_TIER = "prod";
17
17
  /** The public CK API origin for that tier. */
18
- export declare const CROWDY_DEFAULT_HTTP_ORIGIN = "https://ck.dev.crowdedkingdoms.com";
18
+ export declare const CROWDY_DEFAULT_HTTP_ORIGIN = "https://ck.prod.crowdedkingdoms.com";
19
19
  /** The same host over WebSocket. A scheme is composed; a hostname is looked up. */
20
- export declare const CROWDY_DEFAULT_WS_ORIGIN = "wss://ck.dev.crowdedkingdoms.com";
20
+ export declare const CROWDY_DEFAULT_WS_ORIGIN = "wss://ck.prod.crowdedkingdoms.com";
21
21
  /** The bare hostname, for callers that need to compare rather than dial. */
22
- export declare const CROWDY_DEFAULT_HOST = "ck.dev.crowdedkingdoms.com";
22
+ export declare const CROWDY_DEFAULT_HOST = "ck.prod.crowdedkingdoms.com";
23
23
  //# sourceMappingURL=default-origin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"default-origin.d.ts","sourceRoot":"","sources":["../src/default-origin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC,8CAA8C;AAC9C,eAAO,MAAM,0BAA0B,uCAAuC,CAAC;AAE/E,mFAAmF;AACnF,eAAO,MAAM,wBAAwB,qCAAqC,CAAC;AAE3E,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,+BAA+B,CAAC"}
1
+ {"version":3,"file":"default-origin.d.ts","sourceRoot":"","sources":["../src/default-origin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAE1C,8CAA8C;AAC9C,eAAO,MAAM,0BAA0B,wCAAwC,CAAC;AAEhF,mFAAmF;AACnF,eAAO,MAAM,wBAAwB,sCAAsC,CAAC;AAE5E,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,gCAAgC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * GENERATED — do not edit. The operator tooling's
3
- * `sync-client-origins.mjs --write --tier dev` writes this file, and
3
+ * `sync-client-origins.mjs --write --tier prod` writes this file, and
4
4
  * `check-sdk-default-origin.mjs` refuses it when it names the wrong tier or a
5
5
  * host that declaration does not carry. Regenerate; never hand-edit.
6
6
  *
@@ -10,13 +10,13 @@
10
10
  * than no default at all. Every fallback this SDK ever removed named a host that
11
11
  * was already dead. A generated file plus a gate is what makes this one different.
12
12
  *
13
- * Source: the operator's per-tier public CK API origin declaration, tier 'dev'
13
+ * Source: the operator's per-tier public CK API origin declaration, tier 'prod'
14
14
  */
15
15
  /** The tier this build of the SDK is published for. */
16
- export const CROWDY_DEFAULT_TIER = 'dev';
16
+ export const CROWDY_DEFAULT_TIER = 'prod';
17
17
  /** The public CK API origin for that tier. */
18
- export const CROWDY_DEFAULT_HTTP_ORIGIN = 'https://ck.dev.crowdedkingdoms.com';
18
+ export const CROWDY_DEFAULT_HTTP_ORIGIN = 'https://ck.prod.crowdedkingdoms.com';
19
19
  /** The same host over WebSocket. A scheme is composed; a hostname is looked up. */
20
- export const CROWDY_DEFAULT_WS_ORIGIN = 'wss://ck.dev.crowdedkingdoms.com';
20
+ export const CROWDY_DEFAULT_WS_ORIGIN = 'wss://ck.prod.crowdedkingdoms.com';
21
21
  /** The bare hostname, for callers that need to compare rather than dial. */
22
- export const CROWDY_DEFAULT_HOST = 'ck.dev.crowdedkingdoms.com';
22
+ export const CROWDY_DEFAULT_HOST = 'ck.prod.crowdedkingdoms.com';
@@ -4,7 +4,7 @@ import { CrowdyError } from '../errors.js';
4
4
  import { type ExecAppStatusFieldsFragment, type ExecBuildFieldsFragment, type ExecEndpointStatsQuery, type ExecGridClientModFieldsFragment, type ExecInstancesQuery, type ExecLogsQuery, type ExecModClientArtifactQuery, type ExecModClientFieldsFragment, type ExecModFieldsFragment, type ExecModListingFieldsFragment, ExecModScope, type ExecModSwitchFieldsFragment, type ExecVersionsQuery } from '../generated/graphql.js';
5
5
  export { ExecModScope };
6
6
  /**
7
- * ck-exec, the hub-and-spoke execution service (dev-tier preview).
7
+ * ck-exec, the hub-and-spoke execution service.
8
8
  *
9
9
  * An app's code runs as **hubs** (stateful nodes, one per key, one handler at a
10
10
  * time) and **spokes** (stateless, replicated) on execution hosts. A player
@@ -5,7 +5,7 @@ import { CrowdyError, CrowdyProtocolError } from '../errors.js';
5
5
  import { ExecActivateVersionDocument, ExecAppStatusDocument, ExecBuildDocument, ExecBuildStatusDocument, ExecConnectAsDeveloperDocument, ExecConnectDocument, ExecConsentClientModDocument, ExecDeployDocument, ExecEndpointStatsDocument, ExecGridClientModsDocument, ExecInstancesDocument, ExecLogsDocument, ExecAppModsDocument, ExecModBuildDocument, ExecModBuildStatusDocument, ExecModClientArtifactDocument, ExecModClientBuildDocument, ExecModClientDeleteDocument, ExecModClientDeployDocument, ExecModDeleteDocument, ExecModDeployDocument, ExecModInstallDocument, ExecModListingsDocument, ExecModLogsDocument, ExecModPublishDocument, ExecModScope, ExecModSetEnabledDocument, ExecModSetSwitchDocument, ExecModStarterDocument, ExecModSwitchesDocument, ExecModUnpublishDocument, ExecModsDocument, ExecMyModsDocument, ExecRevokeAuthorTrustDocument, ExecRevokeClientModConsentDocument, ExecSetEnabledDocument, ExecStartersDocument, ExecTrustAuthorDocument, ExecVersionsDocument, } from '../generated/graphql.js';
6
6
  export { ExecModScope };
7
7
  /**
8
- * ck-exec, the hub-and-spoke execution service (dev-tier preview).
8
+ * ck-exec, the hub-and-spoke execution service.
9
9
  *
10
10
  * An app's code runs as **hubs** (stateful nodes, one per key, one handler at a
11
11
  * time) and **spokes** (stateless, replicated) on execution hosts. A player
@@ -1676,7 +1676,7 @@ export type Chunk = {
1676
1676
  owner: Maybe<Scalars['ID']['output']>;
1677
1677
  /** Timestamp of the most recent write to this chunk. */
1678
1678
  updatedAt: Scalars['DateTime']['output'];
1679
- /** Sparse list of per-voxel state overrides (e.g. rotation, atlas, flags) for voxels that need more than a plain type byte. Empty when no voxel carries extra state. */
1679
+ /** Sparse list of per-voxel overrides: the states stored with the chunk (e.g. rotation, atlas, flags) and every voxel edit recorded for it since (the voxel_updates log), each with its voxel type, which takes precedence over the type byte in `voxels`. Empty when the chunk has neither. */
1680
1680
  voxelStates: Array<VoxelState>;
1681
1681
  /** BASE64-encoded binary blob of the dense voxel-type grid. When present, the DECODED buffer is exactly 4096 bytes: one unsigned byte (voxel type 0-255) per voxel, indexed as x + y*16 + z*256 with x,y,z in 0-15. Null when the chunk has no voxel grid yet. Decode from base64 before reading. */
1682
1682
  voxels: Maybe<Scalars['String']['output']>;
@@ -1738,7 +1738,7 @@ export type ChunkUpdateInput = {
1738
1738
  appId: Scalars['BigInt']['input'];
1739
1739
  /** Address of the chunk to create or update. */
1740
1740
  coordinates: ChunkCoordinatesInput;
1741
- /** Optional per-voxel state overrides to write; each entry is also recorded as an individual voxel update. Omit to leave existing states unchanged. */
1741
+ /** Optional per-voxel state overrides to write, at most 4096 (one per voxel); each entry is also recorded as an individual voxel update. Omit to leave existing states unchanged. */
1742
1742
  voxelStates?: InputMaybe<Array<VoxelStateInput>>;
1743
1743
  /** Optional BASE64-encoded dense voxel grid. The DECODED buffer must be exactly 4096 bytes: one voxel-type byte (0-255) per voxel, indexed x + y*16 + z*256 (x,y,z in 0-15). Omit to leave the existing grid unchanged. */
1744
1744
  voxels?: InputMaybe<Scalars['String']['input']>;
@@ -3324,7 +3324,7 @@ export type ExchangePortalCodeInput = {
3324
3324
  /** PKCE code verifier matching the challenge supplied when the code was created. Required when the code was created with a challenge. */
3325
3325
  codeVerifier?: InputMaybe<Scalars['String']['input']>;
3326
3326
  };
3327
- /** Whether an app’s ck-exec code may run: its active version and its switches (dev-tier preview). */
3327
+ /** Whether an app’s ck-exec code may run: its active version and its switches. */
3328
3328
  export type ExecAppStatus = {
3329
3329
  __typename?: 'ExecAppStatus';
3330
3330
  /** The active version; null before the first deploy. */
@@ -3343,7 +3343,7 @@ export type ExecArtifactInput = {
3343
3343
  /** The WASM module (wasm32-unknown-unknown, built with ckx-sdk), base64. */
3344
3344
  wasmBase64: Scalars['String']['input'];
3345
3345
  };
3346
- /** A ck-exec build (dev-tier preview): queued, building, succeeded or failed, with the compiler’s log and, once it succeeds, one module per crate. */
3346
+ /** A ck-exec build: queued, building, succeeded or failed, with the compiler’s log and, once it succeeds, one module per crate. */
3347
3347
  export type ExecBuild = {
3348
3348
  __typename?: 'ExecBuild';
3349
3349
  /** The modules built so far, one per crate. */
@@ -3400,7 +3400,7 @@ export type ExecBuildInput = {
3400
3400
  /** The crates, at most 16, 2 MB of source in all; each becomes one module. */
3401
3401
  crates: Array<ExecBuildCrateInput>;
3402
3402
  };
3403
- /** Where and how a game client connects to ck-exec, the hub-and-spoke execution service (dev-tier preview). Open a WebSocket to `{gatewayUrl}/v1/connect?token={token}` before `expiresAt`. */
3403
+ /** Where and how a game client connects to ck-exec, the hub-and-spoke execution service. Open a WebSocket to `{gatewayUrl}/v1/connect?token={token}` before `expiresAt`. */
3404
3404
  export type ExecConnection = {
3405
3405
  __typename?: 'ExecConnection';
3406
3406
  /** When the token stops being accepted; the open socket is not closed then. */
@@ -3429,7 +3429,7 @@ export type ExecDeployResult = {
3429
3429
  /** The version now active for the app. */
3430
3430
  version: Scalars['Int']['output'];
3431
3431
  };
3432
- /** Calls to one endpoint (a node type's method) of an app's ck-exec code over a window, by outcome (dev-tier preview). A client's or an instance's call is counted once, by the host it entered on, with the status its caller got; a platform event (`$timer`, `$topic`, `$presence`, `$session`, `$world`) is counted by the host that ran it. Counts are whole numbers. */
3432
+ /** Calls to one endpoint (a node type's method) of an app's ck-exec code over a window, by outcome. A client's or an instance's call is counted once, by the host it entered on, with the status its caller got; a platform event (`$timer`, `$topic`, `$presence`, `$session`, `$world`) is counted by the host that ran it. Counts are whole numbers. */
3433
3433
  export type ExecEndpointStat = {
3434
3434
  __typename?: 'ExecEndpointStat';
3435
3435
  /** Calls the handler answered with an error (`AppError`). */
@@ -3459,7 +3459,7 @@ export type ExecEndpointStat = {
3459
3459
  /** Calls a handler answered (`Ok` or `AppError`); the latencies are over these. */
3460
3460
  timedCalls: Scalars['Float']['output'];
3461
3461
  };
3462
- /** A CLIENT half a grid serves (dev-tier preview): of a mod on it that is switched on, not stopped by the kill ladder and admitted, running as the grid’s owner. Carries the caller’s consent and trust in its author. */
3462
+ /** A CLIENT half a grid serves: of a mod on it that is switched on, not stopped by the kill ladder and admitted, running as the grid’s owner. Carries the caller’s consent and trust in its author. */
3463
3463
  export type ExecGridClientMod = {
3464
3464
  __typename?: 'ExecGridClientMod';
3465
3465
  /** The hash `execTrustAuthor` takes: SHA-256 of the canonical union. A new capability changes it. */
@@ -3493,7 +3493,7 @@ export type ExecGridClientMod = {
3493
3493
  /** When it was last attached. */
3494
3494
  updatedAt: Scalars['DateTime']['output'];
3495
3495
  };
3496
- /** An instance the execution manager has placed for an app (dev-tier preview). */
3496
+ /** An instance the execution manager has placed for an app. */
3497
3497
  export type ExecInstance = {
3498
3498
  __typename?: 'ExecInstance';
3499
3499
  /** Rises each time it is placed; snapshots from an older epoch are refused. */
@@ -3514,7 +3514,7 @@ export type ExecInstance = {
3514
3514
  /** Milliseconds since it entered this phase. */
3515
3515
  sinceMs: Scalars['Float']['output'];
3516
3516
  };
3517
- /** One guest log line from an app’s ck-exec instances (`ctx.log`), kept for 24 hours (dev-tier preview). */
3517
+ /** One guest log line from an app’s ck-exec instances (`ctx.log`), kept for 24 hours. */
3518
3518
  export type ExecLogLine = {
3519
3519
  __typename?: 'ExecLogLine';
3520
3520
  /** When the instance logged it. */
@@ -3534,7 +3534,7 @@ export type ExecLogLine = {
3534
3534
  /** The line, at most 1 KiB. */
3535
3535
  text: Scalars['String']['output'];
3536
3536
  };
3537
- /** A mod: a player’s code on a grid they own, run by ck-exec as the hub `mod:<name>` keyed by the grid id, in its owner’s own sandbox (dev-tier preview). */
3537
+ /** A mod: a player’s code on a grid they own, run by ck-exec as the hub `mod:<name>` keyed by the grid id, in its owner’s own sandbox. */
3538
3538
  export type ExecMod = {
3539
3539
  __typename?: 'ExecMod';
3540
3540
  /** Why an enabled mod will not run: a switch of the app’s kill ladder, or the app’s own switch. */
@@ -3556,7 +3556,7 @@ export type ExecMod = {
3556
3556
  updatedAt: Scalars['DateTime']['output'];
3557
3557
  version: Scalars['Int']['output'];
3558
3558
  };
3559
- /** The CLIENT half of a mod (dev-tier preview): browser WASM built from a crowdy-client-sdk crate and attached to the mod, which the mod’s grid serves to visitors who consent to it. */
3559
+ /** The CLIENT half of a mod: browser WASM built from a crowdy-client-sdk crate and attached to the mod, which the mod’s grid serves to visitors who consent to it. */
3560
3560
  export type ExecModClient = {
3561
3561
  __typename?: 'ExecModClient';
3562
3562
  /** SHA-256 of the canonical capability summary, hex: what a visitor consents to. */
@@ -3582,7 +3582,7 @@ export type ExecModClient = {
3582
3582
  /** When it was last attached. */
3583
3583
  updatedAt: Scalars['DateTime']['output'];
3584
3584
  };
3585
- /** A CLIENT half’s module and what the browser broker needs to run it (dev-tier preview): the fuel-metered wasm32-unknown-unknown module, its digest to check the bytes against, and the per-dispatch fuel budget to load into its `ck_fuel` global. */
3585
+ /** A CLIENT half’s module and what the browser broker needs to run it: the fuel-metered wasm32-unknown-unknown module, its digest to check the bytes against, and the per-dispatch fuel budget to load into its `ck_fuel` global. */
3586
3586
  export type ExecModClientArtifact = {
3587
3587
  __typename?: 'ExecModClientArtifact';
3588
3588
  /** The client ABI version it was built for (0). */
@@ -3610,7 +3610,7 @@ export type ExecModClientArtifact = {
3610
3610
  /** The module, base64. */
3611
3611
  wasmBase64: Scalars['String']['output'];
3612
3612
  };
3613
- /** A mod version its owner published, which any grid owner in the app may install as a mod of their own (dev-tier preview; no payments). */
3613
+ /** A mod version its owner published, which any grid owner in the app may install as a mod of their own (no payments). */
3614
3614
  export type ExecModListing = {
3615
3615
  __typename?: 'ExecModListing';
3616
3616
  /** SHA-256 of that capability summary, hex. */
@@ -3641,7 +3641,7 @@ export declare enum ExecModScope {
3641
3641
  Mod = "MOD",
3642
3642
  Player = "PLAYER"
3643
3643
  }
3644
- /** A rung of the mods kill ladder that is off (dev-tier preview). */
3644
+ /** A rung of the mods kill ladder that is off. */
3645
3645
  export type ExecModSwitch = {
3646
3646
  __typename?: 'ExecModSwitch';
3647
3647
  createdAt: Scalars['DateTime']['output'];
@@ -3672,7 +3672,7 @@ export type ExecStarterFile = {
3672
3672
  /** The path within the crate, as `execBuild` takes it. */
3673
3673
  path: Scalars['String']['output'];
3674
3674
  };
3675
- /** The starter packs (dev-tier preview): four crates and a manifest that deploys them as one app. */
3675
+ /** The starter packs: four crates and a manifest that deploys them as one app. */
3676
3676
  export type ExecStarterPack = {
3677
3677
  __typename?: 'ExecStarterPack';
3678
3678
  /** The manifest for `execDeploy` with the build’s id: the root `world` hub, and `matchmaker`, `session` and `npcs` under it, each naming its crate. */
@@ -4467,47 +4467,47 @@ export type Mutation = {
4467
4467
  disconnectUdpProxy: Scalars['Boolean']['output'];
4468
4468
  /** 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. */
4469
4469
  exchangePortalCode: AppTokenResponse;
4470
- /** Make an earlier ck-exec version active again, a rollback (dev-tier preview). Running instances pick it up when they next start, as after a deploy. Requires the org 'manage_compute' permission. */
4470
+ /** Make an earlier ck-exec version active again, a rollback. Running instances pick it up when they next start, as after a deploy. Requires the org 'manage_compute' permission. */
4471
4471
  execActivateVersion: ExecAppStatus;
4472
- /** Build ck-exec modules from Rust source (dev-tier preview): each crate is compiled with the platform's pinned toolchain and `ckx-sdk`, for wasm32-unknown-unknown, and checked against the guest ABI. Returns at once with the build queued; poll `execBuildStatus`, then pass its id to `execDeploy`. Requires the org 'manage_compute' permission. */
4472
+ /** Build ck-exec modules from Rust source: each crate is compiled with the platform's pinned toolchain and `ckx-sdk`, for wasm32-unknown-unknown, and checked against the guest ABI. Returns at once with the build queued; poll `execBuildStatus`, then pass its id to `execDeploy`. Requires the org 'manage_compute' permission. */
4473
4473
  execBuild: ExecBuild;
4474
- /** Connect a player to ck-exec (dev-tier preview): the execution manager picks a host (the one running `nodeType`/`key` when given, placing it if needed) and this returns its gateway and a 60-second connect token bound to this player, this app and that host. Requires the app-scoped token of the app named. */
4474
+ /** Connect a player to ck-exec: the execution manager picks a host (the one running `nodeType`/`key` when given, placing it if needed) and this returns its gateway and a 60-second connect token bound to this player, this app and that host. Requires the app-scoped token of the app named. */
4475
4475
  execConnect: ExecConnection;
4476
- /** Connect to an app's ck-exec code as one of its developers, for studio tools, manual runs and admin endpoints (dev-tier preview). The session's calls arrive as `Caller::Developer` with your user id and may reach any node type, not only `client` ones, but never the platform's `$` methods. Requires the org 'manage_compute' permission and your own session, not an app token. */
4476
+ /** Connect to an app's ck-exec code as one of its developers, for studio tools, manual runs and admin endpoints. The session's calls arrive as `Caller::Developer` with your user id and may reach any node type, not only `client` ones, but never the platform's `$` methods. Requires the org 'manage_compute' permission and your own session, not an app token. */
4477
4477
  execConnectAsDeveloper: ExecConnection;
4478
- /** Consent to run a mod's CLIENT half in your browser (dev-tier preview) at its current capability hash. A CLIENT half whose capabilities change carries a new hash, and the consent stops holding until you consent again. Answers CONFLICT when the hash is not the current one. Requires access to the app. */
4478
+ /** Consent to run a mod's CLIENT half in your browser at its current capability hash. A CLIENT half whose capabilities change carries a new hash, and the consent stops holding until you consent again. Answers CONFLICT when the hash is not the current one. Requires access to the app. */
4479
4479
  execConsentClientMod: Scalars['Boolean']['output'];
4480
- /** Deploy a new version of an app's ck-exec topology (dev-tier preview): the manifest and any modules it names that were not uploaded before. The execution manager checks the manifest's tree and bounds and each module's digest, stores them, and makes the version active; running instances pick it up when they next start. Requires the org 'manage_compute' permission. */
4480
+ /** Deploy a new version of an app's ck-exec topology: the manifest and any modules it names that were not uploaded before. The execution manager checks the manifest's tree and bounds and each module's digest, stores them, and makes the version active; running instances pick it up when they next start. Requires the org 'manage_compute' permission. */
4481
4481
  execDeploy: ExecDeployResult;
4482
- /** Build a mod from one ckx-sdk crate (dev-tier preview), as `execBuild` builds a developer's crates. Returns at once with the build queued; poll `execModBuildStatus`, then pass its id to `execModDeploy`. One build at a time per player. Requires the 'write_server_code' permission in the app. */
4482
+ /** Build a mod from one ckx-sdk crate, as `execBuild` builds a developer's crates. Returns at once with the build queued; poll `execModBuildStatus`, then pass its id to `execModDeploy`. One build at a time per player. Requires the 'write_server_code' permission in the app. */
4483
4483
  execModBuild: ExecBuild;
4484
- /** Build the CLIENT half of a mod from one crowdy-client-sdk crate (dev-tier preview): compiled for wasm32-unknown-unknown in the build sandbox, fuel-metered and optimized there, checked against the client ABI and at most 512 KiB, with its capability summary derived from the module. Returns at once with the build queued (`kind` `client`); poll `execModBuildStatus`, then attach it with `execModClientDeploy`. One build, server or CLIENT, at a time per player. Requires the 'write_client_code' permission in the app. */
4484
+ /** Build the CLIENT half of a mod from one crowdy-client-sdk crate: compiled for wasm32-unknown-unknown in the build sandbox, fuel-metered and optimized there, checked against the client ABI and at most 512 KiB, with its capability summary derived from the module. Returns at once with the build queued (`kind` `client`); poll `execModBuildStatus`, then attach it with `execModClientDeploy`. One build, server or CLIENT, at a time per player. Requires the 'write_client_code' permission in the app. */
4485
4485
  execModClientBuild: ExecBuild;
4486
- /** Detach the CLIENT half of a mod on your grid (dev-tier preview), with every visitor's consent to it; the mod itself keeps running. Requires being the grid's current owner and 'write_client_code' on both the app tier and the grid. */
4486
+ /** Detach the CLIENT half of a mod on your grid, with every visitor's consent to it; the mod itself keeps running. Requires being the grid's current owner and 'write_client_code' on both the app tier and the grid. */
4487
4487
  execModClientDelete: Scalars['Boolean']['output'];
4488
- /** Attach a CLIENT build of yours to your mod on a grid you own (dev-tier preview), replacing the CLIENT half it had; its version rises by one. A visitor's consent carries over only while the capability hash is unchanged. Requires being the grid's current owner, 'write_client_code' on both the app tier and the grid, the mod running as you, and the app's code admission admitting the new CLIENT version (an admission naming the mod, its listing or you). */
4488
+ /** Attach a CLIENT build of yours to your mod on a grid you own, replacing the CLIENT half it had; its version rises by one. A visitor's consent carries over only while the capability hash is unchanged. Requires being the grid's current owner, 'write_client_code' on both the app tier and the grid, the mod running as you, and the app's code admission admitting the new CLIENT version (an admission naming the mod, its listing or you). */
4489
4489
  execModClientDeploy: ExecModClient;
4490
- /** Stop and remove a mod on your grid, with its state and versions (dev-tier preview). Requires being the grid's current owner and 'write_server_code' on both the app tier and the grid. */
4490
+ /** Stop and remove a mod on your grid, with its state and versions. Requires being the grid's current owner and 'write_server_code' on both the app tier and the grid. */
4491
4491
  execModDelete: Scalars['Boolean']['output'];
4492
- /** Deploy a mod build of yours to a grid you own (dev-tier preview): a new mod starts switched off; a running one restarts on the new version. Requires being the grid's current owner and 'write_server_code' on both the app tier and the grid. */
4492
+ /** Deploy a mod build of yours to a grid you own: a new mod starts switched off; a running one restarts on the new version. Requires being the grid's current owner and 'write_server_code' on both the app tier and the grid. */
4493
4493
  execModDeploy: ExecMod;
4494
- /** Install a listing onto a grid you own as your own mod, switched off (dev-tier preview; no payments). Requires being the grid's current owner and 'write_server_code' on both the app tier and the grid. */
4494
+ /** Install a listing onto a grid you own as your own mod, switched off (no payments). Requires being the grid's current owner and 'write_server_code' on both the app tier and the grid. */
4495
4495
  execModInstall: ExecMod;
4496
- /** Publish a mod of yours, at its current version, for other grid owners in the app to install (dev-tier preview; no payments). Requires being the grid's current owner and 'write_server_code' on both the app tier and the grid. */
4496
+ /** Publish a mod of yours, at its current version, for other grid owners in the app to install (no payments). Requires being the grid's current owner and 'write_server_code' on both the app tier and the grid. */
4497
4497
  execModPublish: ExecModListing;
4498
- /** Switch a mod on your grid on or off (dev-tier preview). On, it runs as you once the app's code admission admits it. Requires being the grid's current owner and 'run_server_code' on both the app tier and the grid. */
4498
+ /** Switch a mod on your grid on or off. On, it runs as you once the app's code admission admits it. Requires being the grid's current owner and 'run_server_code' on both the app tier and the grid. */
4499
4499
  execModSetEnabled: ExecMod;
4500
- /** The mods kill ladder (dev-tier preview): switch off one mod, a player's mods, a grid's mods, a listing's installs or every mod in the app, or back on. Off stops what runs at once and refuses calls. Returns the switches that are off. Requires the org 'manage_compute' permission. */
4500
+ /** The mods kill ladder: switch off one mod, a player's mods, a grid's mods, a listing's installs or every mod in the app, or back on. Off stops what runs at once and refuses calls. Returns the switches that are off. Requires the org 'manage_compute' permission. */
4501
4501
  execModSetSwitch: Array<ExecModSwitch>;
4502
- /** Delist a listing you published (dev-tier preview): nobody installs it any more; installed copies keep running. */
4502
+ /** Delist a listing you published: nobody installs it any more; installed copies keep running. */
4503
4503
  execModUnpublish: Scalars['Boolean']['output'];
4504
- /** Stop trusting an author on a grid (dev-tier preview), and take back your consent to each of their CLIENT halves there, so none is served to you until you consent or trust again; true when anything was taken back. Works from anywhere, not only inside the grid. Needs only the app-scoped token of the app, not access to it. */
4504
+ /** Stop trusting an author on a grid, and take back your consent to each of their CLIENT halves there, so none is served to you until you consent or trust again; true when anything was taken back. Works from anywhere, not only inside the grid. Needs only the app-scoped token of the app, not access to it. */
4505
4505
  execRevokeAuthorTrust: Scalars['Boolean']['output'];
4506
- /** Take back your consent to a mod's CLIENT half (dev-tier preview), whatever hash you consented to; true when you had consented. While you trust the mod's author on its grid, their CLIENT halves there are still served to you: take that back with `execRevokeAuthorTrust`. Needs only the app-scoped token of the app, not access to it. */
4506
+ /** Take back your consent to a mod's CLIENT half, whatever hash you consented to; true when you had consented. While you trust the mod's author on its grid, their CLIENT halves there are still served to you: take that back with `execRevokeAuthorTrust`. Needs only the app-scoped token of the app, not access to it. */
4507
4507
  execRevokeClientModConsent: Scalars['Boolean']['output'];
4508
- /** The kill switch for an app's ck-exec code, or one node type of it (dev-tier preview). Switched off, nothing of it is placed, what runs is persisted and stopped, and calls are refused with `Denied`; switched on, instances start as they are called. Requires the org 'manage_compute' permission. */
4508
+ /** The kill switch for an app's ck-exec code, or one node type of it. Switched off, nothing of it is placed, what runs is persisted and stopped, and calls are refused with `Denied`; switched on, instances start as they are called. Requires the org 'manage_compute' permission. */
4509
4509
  execSetEnabled: ExecAppStatus;
4510
- /** Trust one author's CLIENT halves on a grid you stand in (dev-tier preview), at the hash of their union (`authorCapabilityHash`): it covers the author's CLIENT halves there while their union is no wider, and consents to each current one at its own hash. Answers CONFLICT when the hash is not the current one. Requires access to the app. */
4510
+ /** Trust one author's CLIENT halves on a grid you stand in, at the hash of their union (`authorCapabilityHash`): it covers the author's CLIENT halves there while their union is no wider, and consents to each current one at its own hash. Answers CONFLICT when the hash is not the current one. Requires access to the app. */
4511
4511
  execTrustAuthor: Scalars['Boolean']['output'];
4512
4512
  /** 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). */
4513
4513
  forceLogoutUser: Scalars['Boolean']['output'];
@@ -4733,7 +4733,7 @@ export type Mutation = {
4733
4733
  updateUserState: User;
4734
4734
  /** Sets the target user’s account `user_type` (e.g. "direct", "deleted"). Requires a super-admin bearer game token (and the management API enabled). */
4735
4735
  updateUserType: User;
4736
- /** 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 `update_voxel_data` on the most specific grid covering the chunk (the smallest by volume; of equal ones the lowest grid id), so a claim, a plot or a safe zone decides its chunks and the app's world grid decides only the wilderness. A chunk no grid covers is refused, and so is a chunk only the app's world grid covers while the app's wilderness is closed (App.wildernessWritesOpen false). */
4736
+ /** Records (upserts) a single voxel edit in the voxel_updates log for one chunk and returns the resulting Voxel. WRITES world state; getChunk returns the edit in the chunk's voxelStates (the packed grid itself is written only by updateChunk). 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 `update_voxel_data` on the most specific grid covering the chunk (the smallest by volume; of equal ones the lowest grid id), so a claim, a plot or a safe zone decides its chunks and the app's world grid decides only the wilderness. A chunk no grid covers is refused, and so is a chunk only the app's world grid covers while the app's wilderness is closed (App.wildernessWritesOpen false). */
4737
4737
  updateVoxel: Voxel;
4738
4738
  };
4739
4739
  export type MutationAbandonGamePublishArgs = {
@@ -6398,39 +6398,39 @@ export type Query = {
6398
6398
  emailDeliverability: EmailDeliverability;
6399
6399
  /** Operator only (is_operator). How THIS API instance is configured to send mail: whether sending is on, the From address, the SES configuration set, the region and the suppressed domains. Answers 'why did no email arrive' without an SSH session, and reports the instance that served the query rather than the fleet. */
6400
6400
  emailDeliveryConfig: EmailDeliveryConfig;
6401
- /** An app's mods, by grid or by owner, or all of them (at most 1000) (dev-tier preview). Requires the org 'view_compute_diagnostics' permission. */
6401
+ /** An app's mods, by grid or by owner, or all of them (at most 1000). Requires the org 'view_compute_diagnostics' permission. */
6402
6402
  execAppMods: Array<ExecMod>;
6403
- /** Whether an app's ck-exec code may run: its active version, kill switches and budget pause (dev-tier preview). Requires the org 'view_compute_diagnostics' permission. */
6403
+ /** Whether an app's ck-exec code may run: its active version, kill switches and budget pause. Requires the org 'view_compute_diagnostics' permission. */
6404
6404
  execAppStatus: ExecAppStatus;
6405
- /** A ck-exec build's status, compiler log and modules (dev-tier preview); null when this app has no such build, or it is a player's (a mod's builds are read with `execModBuildStatus`, by the player alone). Builds are kept for 7 days. Requires the org 'view_compute_diagnostics' permission. */
6405
+ /** A ck-exec build's status, compiler log and modules; null when this app has no such build, or it is a player's (a mod's builds are read with `execModBuildStatus`, by the player alone). Builds are kept for 7 days. Requires the org 'view_compute_diagnostics' permission. */
6406
6406
  execBuildStatus: Maybe<ExecBuild>;
6407
- /** Calls to each endpoint of an app's ck-exec code over the last minutes, by outcome, with their latency, most called first (dev-tier preview). Each execution host reports a minute once it ends; counters are kept 7 days. Requires the org 'view_compute_diagnostics' permission. */
6407
+ /** Calls to each endpoint of an app's ck-exec code over the last minutes, by outcome, with their latency, most called first. Each execution host reports a minute once it ends; counters are kept 7 days. Requires the org 'view_compute_diagnostics' permission. */
6408
6408
  execEndpointStats: Array<ExecEndpointStat>;
6409
- /** The CLIENT halves a grid serves (dev-tier preview): those of its mods that are switched on, not stopped by the kill ladder, running as the grid's owner and admitted, each with its capability summary and hash and whether you consented to it, and its author's union summary and hash and whether you trust them. Show one prompt per author and call `execTrustAuthor` (or `execConsentClientMod` per CLIENT half), fetch with `execModClientArtifact`, cache by digest, and poll this to stop CLIENT halves that were removed or changed. Requires access to the app. */
6409
+ /** The CLIENT halves a grid serves: those of its mods that are switched on, not stopped by the kill ladder, running as the grid's owner and admitted, each with its capability summary and hash and whether you consented to it, and its author's union summary and hash and whether you trust them. Show one prompt per author and call `execTrustAuthor` (or `execConsentClientMod` per CLIENT half), fetch with `execModClientArtifact`, cache by digest, and poll this to stop CLIENT halves that were removed or changed. Requires access to the app. */
6410
6410
  execGridClientMods: Array<ExecGridClientMod>;
6411
- /** What the execution manager has placed for an app: every instance, its phase and host (dev-tier preview). Requires the org 'view_compute_diagnostics' permission. */
6411
+ /** What the execution manager has placed for an app: every instance, its phase and host. Requires the org 'view_compute_diagnostics' permission. */
6412
6412
  execInstances: Array<ExecInstance>;
6413
- /** Guest log lines from an app's ck-exec instances (`ctx.log`), newest first, kept for 24 hours (dev-tier preview). Requires the org 'view_compute_diagnostics' permission. */
6413
+ /** Guest log lines from an app's ck-exec instances (`ctx.log`), newest first, kept for 24 hours. Requires the org 'view_compute_diagnostics' permission. */
6414
6414
  execLogs: Array<ExecLogLine>;
6415
- /** A mod build of yours: its status, compiler log and module (dev-tier preview). Builds are kept for 7 days. */
6415
+ /** A mod build of yours: its status, compiler log and module. Builds are kept for 7 days. */
6416
6416
  execModBuildStatus: ExecBuild;
6417
- /** A served CLIENT half's module, for the browser broker (dev-tier preview). Served only to a player holding 'run_client_code' in the app, standing in the mod's grid now, who consented to it at its current hash or trusts its author at a union no wider; every refusal answers NOT_FOUND. At most 12 fetches a minute per player and mod on each API instance (RATE_LIMITED); the module never changes for its digest, so cache it. */
6417
+ /** A served CLIENT half's module, for the browser broker. Served only to a player holding 'run_client_code' in the app, standing in the mod's grid now, who consented to it at its current hash or trusts its author at a union no wider; every refusal answers NOT_FOUND. At most 12 fetches a minute per player and mod on each API instance (RATE_LIMITED); the module never changes for its digest, so cache it. */
6418
6418
  execModClientArtifact: ExecModClientArtifact;
6419
- /** The app's mod marketplace: listed mods, most installed first (dev-tier preview). Requires access to the app. */
6419
+ /** The app's mod marketplace: listed mods, most installed first. Requires access to the app. */
6420
6420
  execModListings: Array<ExecModListing>;
6421
- /** A mod of yours' guest log lines (`ctx.log`), newest first, kept for 24 hours (dev-tier preview). */
6421
+ /** A mod of yours' guest log lines (`ctx.log`), newest first, kept for 24 hours. */
6422
6422
  execModLogs: Array<ExecLogLine>;
6423
- /** The mod starter (dev-tier preview): a ckx-sdk crate that greets visitors and follows what happens in its grid (`Hub::on_world`), to pass to `execModBuild`. Requires access to the app. */
6423
+ /** The mod starter: a ckx-sdk crate that greets visitors and follows what happens in its grid (`Hub::on_world`), to pass to `execModBuild`. Requires access to the app. */
6424
6424
  execModStarter: ExecStarter;
6425
- /** The app's mod switches that are off (dev-tier preview). Requires the org 'view_compute_diagnostics' permission. */
6425
+ /** The app's mod switches that are off. Requires the org 'view_compute_diagnostics' permission. */
6426
6426
  execModSwitches: Array<ExecModSwitch>;
6427
- /** A grid's mods (dev-tier preview), which players in the grid call by name as the node type `mod:<name>` with the grid id as key. Requires access to the app. */
6427
+ /** A grid's mods, which players in the grid call by name as the node type `mod:<name>` with the grid id as key. Requires access to the app. */
6428
6428
  execMods: Array<ExecMod>;
6429
- /** Your mods in an app, on every grid (dev-tier preview). */
6429
+ /** Your mods in an app, on every grid. */
6430
6430
  execMyMods: Array<ExecMod>;
6431
- /** The starter packs (dev-tier preview), which replace the compute templates: a world tick (the root hub: clock, weather, resource nodes, liveops events), a matchmaker, game sessions (lobby, host, turns, scores) and an NPC and mob engine, as ckx-sdk crates to pass to `execBuild` and a manifest for `execDeploy`. Requires the org 'manage_compute' permission. */
6431
+ /** The starter packs, which replace the compute templates: a world tick (the root hub: clock, weather, resource nodes, liveops events), a matchmaker, game sessions (lobby, host, turns, scores) and an NPC and mob engine, as ckx-sdk crates to pass to `execBuild` and a manifest for `execDeploy`. Requires the org 'manage_compute' permission. */
6432
6432
  execStarters: ExecStarterPack;
6433
- /** An app's deployed ck-exec versions, newest first, and which is active (dev-tier preview). Requires the org 'view_compute_diagnostics' permission. */
6433
+ /** An app's deployed ck-exec versions, newest first, and which is active. Requires the org 'view_compute_diagnostics' permission. */
6434
6434
  execVersions: Array<ExecVersion>;
6435
6435
  /** 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. */
6436
6436
  freePlayWindowInfo: FreePlayWindowInfo;
@@ -6442,11 +6442,11 @@ export type Query = {
6442
6442
  gameModelFeatures: Array<GmAppFeature>;
6443
6443
  /** List tier -> feature grants for an app, optionally filtered to one tier. Requires app-admin ('manage_apps'). */
6444
6444
  gameModelTierFeatures: Array<GmTierFeature>;
6445
- /** Fetches one chunk (its base64 voxel grid, per-voxel states, chunk state and LODs) by app id and chunk coordinates. Returns null if the chunk does not exist. Use the input's LOD options to limit which LODs come back. Requires a valid bearer token in the Authorization header; a token scoped to an app may only read that app's chunks. Read-only (no world state is changed). */
6445
+ /** Fetches one chunk (its base64 voxel grid, per-voxel states, chunk state and LODs) by app id and chunk coordinates. `voxelStates` holds the states stored with the chunk and every voxel edit recorded for it (the voxel_updates log: updateVoxel, sendVoxelUpdate and a hub's or mod's world.set_voxels), each with its voxel type; `voxels` is the grid as last written by updateChunk, so apply each entry's voxelType over it. Returns null if the chunk does not exist. Use the input's LOD options to limit which LODs come back. Requires a valid bearer token in the Authorization header; a token scoped to an app may only read that app's chunks. Read-only (no world state is changed). */
6446
6446
  getChunk: Maybe<Chunk>;
6447
6447
  /** Fetches only the requested level-of-detail (LOD) meshes for one chunk, identified by app id and coordinates. Returns null if the chunk does not exist. Cheaper than getChunk when you only need LODs. Requires a valid bearer token; app-scoped tokens are limited to their own app. Read-only. */
6448
6448
  getChunkLods: Maybe<ChunkLodsResponse>;
6449
- /** Returns all chunks for an app within a cubic (Chebyshev-distance) radius of a center chunk, paginated. The cube spans center +/- maxDistance chunks on each axis. Use this for bulk region loads; use getChunk for a single chunk. Requires a valid bearer token; app-scoped tokens are limited to their own app. Read-only. */
6449
+ /** Returns all chunks for an app within a cubic (Chebyshev-distance) radius of a center chunk, paginated. The cube spans center +/- maxDistance chunks on each axis. Each chunk's `voxelStates`, when selected, include its recorded voxel edits as in getChunk (selecting them costs one more read). Use this for bulk region loads; use getChunk for a single chunk. Requires a valid bearer token; app-scoped tokens are limited to their own app. Read-only. */
6450
6450
  getChunksByDistance: ChunksByDistanceResponse;
6451
6451
  /** 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. */
6452
6452
  getVoxelList: ChunkVoxelResponse;
@@ -8345,7 +8345,7 @@ export type VersionInfo = {
8345
8345
  /** Patch version number */
8346
8346
  patch: Scalars['Int']['output'];
8347
8347
  };
8348
- /** A recorded edit to a single voxel (one row of the voxel_updates log): the app/chunk/local-position that changed, the new voxel type, an optional state blob, and who/when. Returned by listVoxels, getVoxelList and listVoxelUpdatesByDistance; created by updateVoxel. A background maintenance job later folds these edits into the chunk grid. */
8348
+ /** A recorded edit to a single voxel (one row of the voxel_updates log): the app/chunk/local-position that changed, the new voxel type, an optional state blob, and who/when. Returned by listVoxels, getVoxelList and listVoxelUpdatesByDistance; created by updateVoxel, sendVoxelUpdate, updateChunk (for each voxel state it stores) and world.set_voxels on the node API. getChunk applies these edits to the chunk it returns, as entries of its voxelStates. */
8349
8349
  export type Voxel = {
8350
8350
  __typename?: 'Voxel';
8351
8351
  /** Id of the app this edit belongs to (decimal string). */
@@ -8384,7 +8384,7 @@ export type VoxelCoordinatesInput = {
8384
8384
  /** Local voxel Z within the chunk, 0-15; voxel writes refuse other values. */
8385
8385
  z: Scalars['Int']['input'];
8386
8386
  };
8387
- /** A single voxel's state override stored on a chunk: its local position, its voxel type, and an opaque base64-encoded state blob. */
8387
+ /** A single voxel's override on a chunk, stored with it or recorded as a voxel edit: its local position, its voxel type, and an opaque base64-encoded state blob. */
8388
8388
  export type VoxelState = {
8389
8389
  __typename?: 'VoxelState';
8390
8390
  /** BASE64-encoded binary state blob for this voxel (decode from base64); null/empty when the voxel has no extra state. */
@@ -8396,7 +8396,7 @@ export type VoxelState = {
8396
8396
  };
8397
8397
  /** One per-voxel state entry to write to a chunk. */
8398
8398
  export type VoxelStateInput = {
8399
- /** BASE64-encoded binary state blob for this voxel; omit/null for no extra state. */
8399
+ /** BASE64-encoded binary state blob for this voxel, at most 1 KiB decoded; omit/null for no extra state. */
8400
8400
  state?: InputMaybe<Scalars['String']['input']>;
8401
8401
  /** Local voxel position within the chunk, 0-15 per axis; anything else is refused. */
8402
8402
  voxelCoord: VoxelCoordinatesInput;