@crowdedkingdoms/crowdyjs 17.6.0-test.1 → 17.7.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.
Files changed (86) hide show
  1. package/MIGRATION.md +41 -0
  2. package/README.md +33 -0
  3. package/dist/client.d.ts +7 -0
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js +2 -1
  6. package/dist/crowdy-client.d.ts +24 -0
  7. package/dist/crowdy-client.d.ts.map +1 -1
  8. package/dist/crowdy-client.js +16 -0
  9. package/dist/crowdy-dsh/bridge.d.ts +24 -1
  10. package/dist/crowdy-dsh/bridge.d.ts.map +1 -1
  11. package/dist/crowdy-dsh/bridge.js +32 -0
  12. package/dist/crowdy-dsh/index.d.ts +1 -1
  13. package/dist/crowdy-dsh/index.d.ts.map +1 -1
  14. package/dist/crowdy-dsh/protocol.d.ts +64 -1
  15. package/dist/crowdy-dsh/protocol.d.ts.map +1 -1
  16. package/dist/crowdy-dsh/protocol.js +8 -1
  17. package/dist/crowdy-studio/starter-projects.js +1 -1
  18. package/dist/default-origin.d.ts +6 -6
  19. package/dist/default-origin.d.ts.map +1 -1
  20. package/dist/default-origin.js +6 -6
  21. package/dist/domains/actors.d.ts +38 -17
  22. package/dist/domains/actors.d.ts.map +1 -1
  23. package/dist/domains/actors.js +38 -17
  24. package/dist/domains/crowdyStudio.js +1 -1
  25. package/dist/domains/grids.d.ts +30 -0
  26. package/dist/domains/grids.d.ts.map +1 -0
  27. package/dist/domains/grids.js +39 -0
  28. package/dist/domains/udp.d.ts +5 -1
  29. package/dist/domains/udp.d.ts.map +1 -1
  30. package/dist/domains/udp.js +5 -1
  31. package/dist/generated/graphql.d.ts +169 -9
  32. package/dist/generated/graphql.d.ts.map +1 -1
  33. package/dist/generated/graphql.js +13 -10
  34. package/dist/grid-mods/grid-host-calls.d.ts +70 -0
  35. package/dist/grid-mods/grid-host-calls.d.ts.map +1 -0
  36. package/dist/grid-mods/grid-host-calls.js +220 -0
  37. package/dist/grid-mods/index.d.ts +3 -0
  38. package/dist/grid-mods/index.d.ts.map +1 -0
  39. package/dist/grid-mods/index.js +2 -0
  40. package/dist/grid-mods/mod-runtime.d.ts +52 -0
  41. package/dist/grid-mods/mod-runtime.d.ts.map +1 -0
  42. package/dist/grid-mods/mod-runtime.js +55 -0
  43. package/dist/grid-program/host.d.ts +88 -0
  44. package/dist/grid-program/host.d.ts.map +1 -0
  45. package/dist/grid-program/host.js +231 -0
  46. package/dist/grid-program/index.d.ts +14 -0
  47. package/dist/grid-program/index.d.ts.map +1 -0
  48. package/dist/grid-program/index.js +13 -0
  49. package/dist/grid-program/program.d.ts +19 -0
  50. package/dist/grid-program/program.d.ts.map +1 -0
  51. package/dist/grid-program/program.js +154 -0
  52. package/dist/grid-program/protocol.d.ts +87 -0
  53. package/dist/grid-program/protocol.d.ts.map +1 -0
  54. package/dist/grid-program/protocol.js +17 -0
  55. package/dist/grid-scope.d.ts +296 -0
  56. package/dist/grid-scope.d.ts.map +1 -0
  57. package/dist/grid-scope.js +183 -0
  58. package/dist/index.d.ts +7 -2
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +7 -2
  61. package/dist/kit/matches.d.ts +1 -0
  62. package/dist/kit/matches.d.ts.map +1 -1
  63. package/dist/kit/npcs.d.ts.map +1 -1
  64. package/dist/kit/social.d.ts.map +1 -1
  65. package/dist/live-coding/assets/browser-authoring-index.json +1 -1
  66. package/dist/live-coding/assets/manifest.json +1 -1
  67. package/dist/live-coding/browser-authoring-index.generated.d.ts.map +1 -1
  68. package/dist/live-coding/browser-authoring-index.generated.js +118 -6
  69. package/dist/player-runtime/client-grid-event-bus.d.ts +37 -0
  70. package/dist/player-runtime/client-grid-event-bus.d.ts.map +1 -0
  71. package/dist/player-runtime/client-grid-event-bus.js +56 -0
  72. package/dist/player-runtime/glue-runtime.d.ts +4 -2
  73. package/dist/player-runtime/glue-runtime.d.ts.map +1 -1
  74. package/dist/player-runtime/glue-runtime.js +20 -23
  75. package/dist/player-runtime/host-catalog.generated.d.ts +16 -0
  76. package/dist/player-runtime/host-catalog.generated.d.ts.map +1 -0
  77. package/dist/player-runtime/host-catalog.generated.js +296 -0
  78. package/dist/player-runtime/player-code-broker.d.ts +38 -0
  79. package/dist/player-runtime/player-code-broker.d.ts.map +1 -1
  80. package/dist/player-runtime/player-code-broker.js +116 -35
  81. package/dist/player-runtime/player-glue-worker.d.ts.map +1 -1
  82. package/dist/player-runtime/player-glue-worker.js +5 -0
  83. package/dist/realtime.d.ts +7 -0
  84. package/dist/realtime.d.ts.map +1 -1
  85. package/dist/realtime.js +3 -1
  86. package/package.json +10 -3
@@ -2249,11 +2249,26 @@ export type CreateCrowdyStudioProjectInput = {
2249
2249
  name: Scalars['String']['input'];
2250
2250
  /** Optional editor pairing preference; defaults to PAIRED. */
2251
2251
  pairingPreference?: InputMaybe<CrowdyStudioPairingPreference>;
2252
- /** Supported crowdy-compute-sdk pin; defaults to the current 0.1.5 authoring pin. */
2252
+ /** Supported crowdy-compute-sdk pin; defaults to the current 0.1.6 authoring pin. */
2253
2253
  sdkVersion?: InputMaybe<Scalars['String']['input']>;
2254
2254
  /** Optional stable crate-style SERVER module name. Deployment rechecks current authority. */
2255
2255
  serverModuleName?: InputMaybe<Scalars['String']['input']>;
2256
2256
  };
2257
+ /** Create a grid channel (DN-10): a channel that belongs to one grid, so that grid's player modules may emit_channel into it. Only the grid's current owner may create one. */
2258
+ export type CreateGridChannelInput = {
2259
+ /** The app (tenant) the channel belongs to. */
2260
+ appId: Scalars['BigInt']['input'];
2261
+ /** Optional free-text description of the channel. */
2262
+ description?: InputMaybe<Scalars['String']['input']>;
2263
+ /** The grid the channel belongs to. The caller must own it. */
2264
+ gridId: Scalars['BigInt']['input'];
2265
+ /** When true (default), new members are auto-granted send_messages so they can post (open chat channel). When false, only roles you grant may post (announce/read-only channel). */
2266
+ membersCanSend?: InputMaybe<Scalars['Boolean']['input']>;
2267
+ /** open | request | invite | admin. Defaults to the app policy. */
2268
+ membershipPolicy?: InputMaybe<Scalars['String']['input']>;
2269
+ /** Display name for the channel (max 128 chars; unique per app+type). */
2270
+ name: Scalars['String']['input'];
2271
+ };
2257
2272
  /** Defines a new grid by its app and two opposite corner chunks. The corners are normalized server-side into a low/high chunk box, so corner order is irrelevant and a single chunk (corner1 == corner2) is allowed. */
2258
2273
  export type CreateGridInput = {
2259
2274
  /** The app (tenant) the grid belongs to. */
@@ -2359,6 +2374,8 @@ export type CreateSessionInput = {
2359
2374
  appId: Scalars['BigInt']['input'];
2360
2375
  /** Seconds a session may sit with nobody joined before the server ends it as abandoned. Omit for the platform default; 0 disables the timeout for this session. */
2361
2376
  emptyTimeoutSec?: InputMaybe<Scalars['Int']['input']>;
2377
+ /** Optional: host the session inside a grid (a game within the game). Only the grid's current owner may do this, and the app's session creation policy still applies. Player modules on that grid list it through sessions_list; everyone else sees it as an ordinary session carrying gridId. */
2378
+ gridId?: InputMaybe<Scalars['BigInt']['input']>;
2362
2379
  /** Optional idempotency key. Replaying with the same key and identical input returns the first session instead of creating a second; the same key with different input returns IDEMPOTENCY_CONFLICT. Keys expire after 24h. */
2363
2380
  idempotencyKey?: InputMaybe<Scalars['String']['input']>;
2364
2381
  /** Seat cap: the most participants that may be joined at once. Omit for unbounded. Initial participants count against it. */
@@ -3482,6 +3499,8 @@ export type DeployPlayerComputeInput = {
3482
3499
  description?: InputMaybe<Scalars['String']['input']>;
3483
3500
  /** Deploy in draft mode (live-coding iteration): the module runs for its author but its spatial egress is suppressed server-side, so no other session in the grid observes its world effects. Omit or false for a normal deploy. */
3484
3501
  draft?: InputMaybe<Scalars['Boolean']['input']>;
3502
+ /** SERVER only (DN-10): grid event bus subscriptions. Each entry is an event name this module's on_event receives when another module on the same grid calls emit_event with it; '*' subscribes to every name. Omit to keep the module's current subscriptions; pass [] to clear them. Addressed events (emit_event with target = this module's name) arrive either way. */
3503
+ gridEvents?: InputMaybe<Array<Scalars['String']['input']>>;
3485
3504
  /** Owned grid that confines server execution. */
3486
3505
  gridId: Scalars['BigInt']['input'];
3487
3506
  /** Lowercase crate-style module name, unique within the grid. Defaults to the project’s module name for the target and must equal it when both are set. */
@@ -4582,6 +4601,8 @@ export type GmSession = {
4582
4601
  endReason: Maybe<Scalars['String']['output']>;
4583
4602
  /** When the session ended, or null while active. */
4584
4603
  endedAt: Maybe<Scalars['DateTime']['output']>;
4604
+ /** The grid this session is hosted in, when its creator hosted it inside a grid they own (a game within the game); null for an app-level session. Player modules on that grid see it through sessions_list. */
4605
+ gridId: Maybe<Scalars['BigInt']['output']>;
4585
4606
  /** Increments on every host change. Send it as expectedHostTerm on host actions to be refused (SESSION_HOST_TERM_STALE) instead of acting on a host change you have not seen. */
4586
4607
  hostTerm: Scalars['Int']['output'];
4587
4608
  /** The current session host, or null while nobody is joined. The creator starts as host; when the host leaves or expires, the longest-joined present participant succeeds. */
@@ -4976,6 +4997,24 @@ export declare enum GridTenure {
4976
4997
  Owned = "OWNED",
4977
4998
  Rented = "RENTED"
4978
4999
  }
5000
+ /** A grid-scoped token: an app token narrowed to one grid. Hand it to code that should act inside the grid and nowhere else (a JS grid program, a mod host adapter, an agent). */
5001
+ export type GridTokenResponse = {
5002
+ __typename?: 'GridTokenResponse';
5003
+ /** The app it is confined to. */
5004
+ appId: Scalars['BigInt']['output'];
5005
+ /** When the token stops working. */
5006
+ expiresAt: Scalars['DateTime']['output'];
5007
+ /** The underlying game_token id, as a BigInt. */
5008
+ gameTokenId: Scalars['BigInt']['output'];
5009
+ /** The grid it is confined to. */
5010
+ gridId: Scalars['BigInt']['output'];
5011
+ /** High corner of the grid box, copied at mint. */
5012
+ highChunk: ChunkCoordinates;
5013
+ /** Low corner of the grid box, copied at mint. */
5014
+ lowChunk: ChunkCoordinates;
5015
+ /** Bearer token. It admits only the root fields the grid-token policy lists, each confined to the grid, and it is refused by the binary realtime relay (realtime runs over GraphQL). */
5016
+ token: Scalars['String']['output'];
5017
+ };
4979
5018
  /** A user's effective (materialized) runtime permissions on one grid: the flattened union of direct + group grants, with expired grants excluded, that Buddy enforces. */
4980
5019
  export type GridUserPermissions = {
4981
5020
  __typename?: 'GridUserPermissions';
@@ -4999,6 +5038,8 @@ export type Group = {
4999
5038
  defaultRoleId: Maybe<Scalars['BigInt']['output']>;
5000
5039
  /** Optional free-text description. */
5001
5040
  description: Maybe<Scalars['String']['output']>;
5041
+ /** Channels only: the grid this channel belongs to (a grid channel, DN-10). Player modules on that grid may emit_channel into it; null for an ordinary channel. */
5042
+ gridId: Maybe<Scalars['BigInt']['output']>;
5002
5043
  /** Unique group id. */
5003
5044
  groupId: Scalars['BigInt']['output'];
5004
5045
  /** Discriminator: 'team' | 'channel' | 'grid'. */
@@ -5262,6 +5303,15 @@ export type MintAppTokenInput = {
5262
5303
  /** Numeric id of the app to mint a confined gameplay token for. Free/open apps are auto-granted access; paid apps require an existing entitlement (else FORBIDDEN). */
5263
5304
  appId: Scalars['BigInt']['input'];
5264
5305
  };
5306
+ /** Narrow the app token you hold to one grid (DN-10 grid-scoped token). */
5307
+ export type MintGridTokenInput = {
5308
+ /** The app; must be the calling app token’s app. */
5309
+ appId: Scalars['BigInt']['input'];
5310
+ /** The grid to confine the token to. The caller must own it or hold its run_client_code permission. */
5311
+ gridId: Scalars['BigInt']['input'];
5312
+ /** Lifetime in seconds (60-3600, default 900). Never outlives the app token it was minted from. */
5313
+ ttlSeconds?: InputMaybe<Scalars['Int']['input']>;
5314
+ };
5265
5315
  export type Mutation = {
5266
5316
  __typename?: 'Mutation';
5267
5317
  /** Give up a STAGING publish and clear its staged objects. Requires manage_apps and a SESSION token. */
@@ -5360,6 +5410,8 @@ export type Mutation = {
5360
5410
  createCheckout: Checkout;
5361
5411
  /** Create a grid: a named 3D box of chunks that runtime/world (voxel) permissions are scoped to. The box must fit within one of the app's grid assignments (its buildable regions); it MAY be nested inside a broader containing grid such as the open-by-default world grid, but must not partially overlap a peer grid. Requires app-admin ('manage_apps'). Returns a hybrid response — on success `grid` is populated and `error` is NO_ERROR; on failure `grid` is null and `error` is a UDP-style error code (e.g. NO_MATCHING_GRID_ASSIGNMENT, GRID_OUTSIDE_ASSIGNMENT, GRID_OVERLAPS_EXISTING, GRID_ALREADY_EXISTS). */
5362
5412
  createGrid: CreateGridResponse;
5413
+ /** Create a grid channel (DN-10): an ordinary channel bound to one grid, owned by the caller, so the grid's player modules may emit_channel into it (their messages carry the sender uuid 'grid:<gridId>'). Only the grid's current owner may create one, whatever the app's channel creation policy says, and a grid holds at most 8 active channels. Membership works like any channel: membershipPolicy defaults to 'open' so visitors can join it, and members get send_messages unless membersCanSend is false. */
5414
+ createGridChannel: Group;
5363
5415
  /** Creates a custom role in an organization with a name, optional description, and permission keys. Requires the 'manage_members' permission on the org (super admins bypass). */
5364
5416
  createOrgRole: OrgRole;
5365
5417
  /** Mints a new org API token and returns the plaintext token exactly once - save it, since subsequent queries only show metadata. Requires the 'manage_tokens' permission on the target org (super admins bypass). */
@@ -5410,7 +5462,7 @@ export type Mutation = {
5410
5462
  crowdyStudioSetProviderConsent: CrowdyStudioProviderConsent;
5411
5463
  /** Approve or deny a pending grid claim request (claim policy APPROVAL). Callable by the app's designated approver users or studio staff holding manage_compute. Approval assigns grid_ownership to the requester. */
5412
5464
  decideGridClaim: GridClaimRequest;
5413
- /** DESTRUCTIVE: permanently deletes the actor identified by `uuid` and returns a copy of the now-deleted row. OWNER-EXCLUSIVE: only the owner may delete (throws Unauthorized otherwise). Requires a valid game token. `uuid` is the 32-character ASCII actor id. */
5465
+ /** DESTRUCTIVE: permanently deletes the actor identified by `uuid` and returns a copy of the now-deleted row. OWNER-EXCLUSIVE: only the owner may delete (throws Unauthorized otherwise). Game-plane: requires an app token for the actor’s app (a session token or another app’s token is answered NotFound). `uuid` is the 32-character ASCII actor id. */
5414
5466
  deleteActor: Actor;
5415
5467
  /** DESTRUCTIVE: permanently deletes the avatar and returns a copy of the now-deleted row. OWNER-EXCLUSIVE: only the owner may delete (throws Unauthorized otherwise). Requires a valid game token. */
5416
5468
  deleteAvatar: Avatar;
@@ -5540,6 +5592,8 @@ export type Mutation = {
5540
5592
  logoutAllDevices: Scalars['Boolean']['output'];
5541
5593
  /** Mint a short-lived, app-scoped gameplay token for the calling user (native/direct path; no browser redirect). Requires an identity SESSION token (app tokens cannot mint). Free/open apps auto-grant access; paid apps require an existing entitlement (else FORBIDDEN). Side effect: may create an app_user_access row on the app's free default tier. */
5542
5594
  mintAppToken: AppTokenResponse;
5595
+ /** Mint a grid-scoped token from the app token you hold (DN-10). The result can call only a short, fixed list of gameplay fields, and each is confined to the grid: world reads and replication sends must address a chunk inside it (a send's origin; its reach follows distance), channels must be the grid's own, sessions must be hosted in it, and player-model / player-compute calls must name it. refreshAppToken and logout are refused, so the token cannot widen or tear down its parent. Requires an app token (not a session token, not another grid token), and the caller must own the grid or hold run_client_code on it. */
5596
+ mintGridToken: GridTokenResponse;
5543
5597
  /** Create a disabled player automation confined to the caller and one currently owned grid. Strict trigger/action validation rejects selectors, supplied identities, and app-wide shapes. */
5544
5598
  playerAutomationCreate: PlayerAutomation;
5545
5599
  /** Delete one caller-owned player automation from the specified currently owned grid. Destructive; recorded run rows remain for audit. */
@@ -5716,9 +5770,9 @@ export type Mutation = {
5716
5770
  unlinkIdentity: Scalars['Boolean']['output'];
5717
5771
  /** Update an existing access tier (name, ordering, pricing, permissions, etc.); only fields present in the input are changed. Requires the 'manage_access_tiers' permission on the app that owns the tier (resolved from tierId); super admins bypass. SIDE EFFECTS: re-syncs the tier's permissions to the game API. Throws if the tier is not found or the caller lacks permission. */
5718
5772
  updateAccessTier: AppAccessTier;
5719
- /** Partially updates an actor (appId, avatarId, chunk, publicState, privateState); fields omitted from `input` are left unchanged. OWNER-EXCLUSIVE: only the actor’s owner may update (throws Unauthorized otherwise). Requires a valid game token. `uuid` is the 32-character ASCII actor id. */
5773
+ /** Partially updates an actor (appId, avatarId, chunk, publicState, privateState); fields omitted from `input` are left unchanged. OWNER-EXCLUSIVE: only the actor’s owner may update (throws Unauthorized otherwise). Game-plane: requires an app token for the actor’s app (a session token or another app’s token is answered NotFound). `uuid` is the 32-character ASCII actor id. */
5720
5774
  updateActor: Actor;
5721
- /** Replaces an actor’s `publicState` and/or `privateState` blobs (fields omitted from `input` are left unchanged). OWNER-EXCLUSIVE: only the actor’s owner may write (throws Unauthorized otherwise). Requires a valid game token. `uuid` is the 32-character ASCII actor id; blobs are base64-encoded binary. */
5775
+ /** Replaces an actor’s `publicState` and/or `privateState` blobs (fields omitted from `input` are left unchanged). OWNER-EXCLUSIVE: only the actor’s owner may write (throws Unauthorized otherwise). Game-plane: requires an app token for the actor’s app (a session token or another app’s token is answered NotFound). `uuid` is the 32-character ASCII actor id; blobs are base64-encoded binary. */
5722
5776
  updateActorState: Actor;
5723
5777
  /** Update mutable fields of an existing app (name, description, visibility, status, metadata); only fields present in the input are changed. Requires the 'manage_apps' permission on the app (resolved via its org); super admins bypass. Use this to publish (status=LIVE), change visibility, or restore an archived app (status back to DRAFT/LIVE). Throws if the app id does not exist. */
5724
5778
  updateApp: App;
@@ -5924,6 +5978,9 @@ export type MutationCreateCheckoutArgs = {
5924
5978
  export type MutationCreateGridArgs = {
5925
5979
  input: CreateGridInput;
5926
5980
  };
5981
+ export type MutationCreateGridChannelArgs = {
5982
+ input: CreateGridChannelInput;
5983
+ };
5927
5984
  export type MutationCreateOrgRoleArgs = {
5928
5985
  input: CreateOrgRoleInput;
5929
5986
  };
@@ -6211,6 +6268,9 @@ export type MutationLoginArgs = {
6211
6268
  export type MutationMintAppTokenArgs = {
6212
6269
  input: MintAppTokenInput;
6213
6270
  };
6271
+ export type MutationMintGridTokenArgs = {
6272
+ input: MintGridTokenInput;
6273
+ };
6214
6274
  export type MutationPlayerAutomationCreateArgs = {
6215
6275
  input: CreatePlayerAutomationInput;
6216
6276
  };
@@ -7678,6 +7738,8 @@ export type PlayerWasmPolicy = {
7678
7738
  __typename?: 'PlayerWasmPolicy';
7679
7739
  /** The app. */
7680
7740
  appId: Scalars['BigInt']['output'];
7741
+ /** DN-10: which channels this scope's player modules may emit_channel into: 'grid' (default, the grid's own channels), 'send_messages' (also channels the grid owner may post to), or 'none'. */
7742
+ channelEgress: Scalars['String']['output'];
7681
7743
  /** Client-target fuel budget per browser dispatch (04 §3). */
7682
7744
  clientFuelPerDispatch: Scalars['BigInt']['output'];
7683
7745
  /** Whether this row is applied. */
@@ -7686,6 +7748,8 @@ export type PlayerWasmPolicy = {
7686
7748
  fuelPerInvoke: Scalars['BigInt']['output'];
7687
7749
  /** Fuel budget per tick. */
7688
7750
  fuelPerTick: Scalars['BigInt']['output'];
7751
+ /** DN-10: whether player modules may publish on the grid event bus (emit_event). Default true. */
7752
+ gridEventEgress: Scalars['Boolean']['output'];
7689
7753
  /** Deploys (compiles) allowed per player per hour. */
7690
7754
  maxCompilesPerHour: Scalars['Int']['output'];
7691
7755
  /** Player model containers created per player per day. */
@@ -7712,6 +7776,8 @@ export type PlayerWasmPolicy = {
7712
7776
  scope: Scalars['String']['output'];
7713
7777
  /** Tier/grid/user id; null for app_default. */
7714
7778
  scopeRef: Maybe<Scalars['BigInt']['output']>;
7779
+ /** DN-10: most chunks a player module's spatial message may reach from its in-grid origin (0-8, default 8). 0 keeps grid messages inside the origin chunk. */
7780
+ spatialMaxDistance: Scalars['Int']['output'];
7715
7781
  /** Daily compute-unit quota; null = uncapped. */
7716
7782
  unitsPerDay: Maybe<Scalars['BigInt']['output']>;
7717
7783
  /** Hourly compute-unit quota (PLAYER_QUOTA_EXHAUSTED pause); null = uncapped. */
@@ -7836,11 +7902,11 @@ export type Query = {
7836
7902
  __typename?: 'Query';
7837
7903
  /** List only healthy GraphQL API servers (status = ReadyForClients) for client routing/discovery. No authentication required. */
7838
7904
  activeGraphQLServers: Array<GraphQlServer>;
7839
- /** Fetches a single actor by its 32-character ASCII `uuid`. Requires a valid game token. Owner-aware: the owner receives full state; non-owners receive a public copy with `privateState` stripped (null). Throws NotFound if the uuid does not exist. */
7905
+ /** Fetches a single actor by its 32-character ASCII `uuid`. Game-plane: requires an app token for the actor’s app (a session token or another app’s token is answered NotFound, the same as a missing id). Owner-aware: the owner receives full state; non-owners receive a public copy with `privateState` stripped (null). */
7840
7906
  actor: Actor;
7841
- /** Lists actors owned by the authenticated user, optionally narrowed by `filter` (appId, avatarId, uuid, chunk). Requires a valid game token; only the caller’s own actors are returned (full state included). For other users’ actors use `actor` or `batchLookupActors`. */
7907
+ /** Lists actors owned by the authenticated user, optionally narrowed by `filter` (appId, avatarId, uuid, chunk). Requires a valid game token; only the caller’s own actors are returned (full state included). Under an app token the list is confined to that token’s app (a `filter.appId` naming another app is refused). For other users’ actors use `actor` or `batchLookupActors`. */
7842
7908
  actors: Array<Actor>;
7843
- /** Relay-style cursor-paginated version of `actors`: lists actors owned by the authenticated user, optionally narrowed by `filter` (appId, avatarId, uuid, chunk). Page forward with `first` (default 50, max 200) and `after` (an opaque cursor from a previous page’s `pageInfo.endCursor`); `totalCount` is the full number of matching actors. Requires a valid game token; only the caller’s own actors are returned (full state included). */
7909
+ /** Relay-style cursor-paginated version of `actors`: lists actors owned by the authenticated user, optionally narrowed by `filter` (appId, avatarId, uuid, chunk). Page forward with `first` (default 50, max 200) and `after` (an opaque cursor from a previous page’s `pageInfo.endCursor`); `totalCount` is the full number of matching actors. Requires a valid game token; only the caller’s own actors are returned (full state included). Under an app token the list is confined to that token’s app. */
7844
7910
  actorsConnection: ActorsConnection;
7845
7911
  /** OPERATOR ONLY. The Crowdy Studio agent price list: every model card with its four per-million token prices and its lifecycle status. Separate from billingRateCard because agent pricing is per model rather than per metered dimension. Read-only. */
7846
7912
  agentRateCards: Array<AgentRateCardEntryType>;
@@ -7917,7 +7983,7 @@ export type Query = {
7917
7983
  avatarAppState: Maybe<AppAvatarState>;
7918
7984
  /** Batch-reads per-app state for many avatars under a single app in one call. PUBLIC READ: any authenticated user may read. Requires a valid game token. Avatars with no row for the app are omitted. `state` blobs are base64-encoded binary. */
7919
7985
  avatarAppStates: Array<AppAvatarState>;
7920
- /** Bulk-fetches actors by a list of 32-character ASCII uuids in one round-trip. Requires a valid game token. PUBLIC-STATE ONLY: `privateState` is stripped (null) for every result regardless of ownership. Unknown uuids are silently omitted. Use this to resolve many actors at once; use `actor` for a single owner-scoped fetch. */
7986
+ /** Bulk-fetches actors by a list of 32-character ASCII uuids in one round-trip. Game-plane: requires an app token; only actors in that token’s app are returned (uuids in other apps are omitted, the same as unknown ids). A session token is answered NotFound. PUBLIC-STATE ONLY: `privateState` is stripped (null) for every result regardless of ownership. Use this to resolve many actors at once; use `actor` for a single owner-scoped fetch. */
7921
7987
  batchLookupActors: Array<Actor>;
7922
7988
  /** The lossless ledger's charge rows for one app: every (payer, meter, period) or request that has been priced, with what was billed, held and written off, in micro-USD. Requires 'view_billing' on the org. */
7923
7989
  billingCharges: Array<BillingCharge>;
@@ -8069,7 +8135,7 @@ export type Query = {
8069
8135
  gameModelSessionInspect: GmSessionInspection;
8070
8136
  /** The authoritative state of one session at one revision: the session row and every joined participant. Pull it when you subscribe, after a reconnect, or when gameModelSessionChanged shows a revision gap; then apply only events with a higher revision. Requires a valid token. */
8071
8137
  gameModelSessionSnapshot: GmSessionSnapshot;
8072
- /** List sessions in an app, newest first, optionally filtered by status, admission and/or host. Requires a valid token. */
8138
+ /** List sessions in an app, newest first, optionally filtered by status, admission, host and/or grid. Requires a valid token. */
8073
8139
  gameModelSessions: Array<GmSession>;
8074
8140
  /** List tier -> feature grants for an app, optionally filtered to one tier. Requires app-admin ('manage_apps'). */
8075
8141
  gameModelTierFeatures: Array<GmTierFeature>;
@@ -8089,6 +8155,8 @@ export type Query = {
8089
8155
  getVoxelList: ChunkVoxelResponse;
8090
8156
  /** List every registered GraphQL API server regardless of health/state. No authentication required. For service discovery; to route clients, prefer activeGraphQLServers (filters to healthy servers). */
8091
8157
  graphqlServers: Array<GraphQlServer>;
8158
+ /** The active grid channels of one grid (DN-10), oldest first. Any caller with a token for the app may list them, the same visibility as the app's channel list; joining still follows each channel's membership policy. */
8159
+ gridChannels: Array<Group>;
8092
8160
  /** The app's grid claim policy (D4): how a player claim confers grid ownership. */
8093
8161
  gridClaimPolicy: GridClaimPolicy;
8094
8162
  /** Pending grid claim requests: designated approvers (or studio staff holding manage_compute) see the app's queue; other callers see their own requests. */
@@ -8711,6 +8779,7 @@ export type QueryGameModelSessionSnapshotArgs = {
8711
8779
  export type QueryGameModelSessionsArgs = {
8712
8780
  admission?: InputMaybe<Scalars['String']['input']>;
8713
8781
  appId: Scalars['BigInt']['input'];
8782
+ gridId?: InputMaybe<Scalars['BigInt']['input']>;
8714
8783
  hostUserId?: InputMaybe<Scalars['BigInt']['input']>;
8715
8784
  limit?: InputMaybe<Scalars['Int']['input']>;
8716
8785
  status?: InputMaybe<Scalars['String']['input']>;
@@ -8746,6 +8815,10 @@ export type QueryGetChunksByDistanceArgs = {
8746
8815
  export type QueryGetVoxelListArgs = {
8747
8816
  input: GetVoxelListInput;
8748
8817
  };
8818
+ export type QueryGridChannelsArgs = {
8819
+ appId: Scalars['BigInt']['input'];
8820
+ gridId: Scalars['BigInt']['input'];
8821
+ };
8749
8822
  export type QueryGridClaimPolicyArgs = {
8750
8823
  appId: Scalars['BigInt']['input'];
8751
8824
  };
@@ -9880,10 +9953,14 @@ export type SetPlayerModelPropertyInput = {
9880
9953
  export type SetPlayerWasmPolicyInput = {
9881
9954
  /** The app. */
9882
9955
  appId: Scalars['BigInt']['input'];
9956
+ /** DN-10 channel egress: 'none' | 'grid' | 'send_messages'. */
9957
+ channelEgress?: InputMaybe<Scalars['String']['input']>;
9883
9958
  clientFuelPerDispatch?: InputMaybe<Scalars['BigInt']['input']>;
9884
9959
  enabled?: InputMaybe<Scalars['Boolean']['input']>;
9885
9960
  fuelPerInvoke?: InputMaybe<Scalars['BigInt']['input']>;
9886
9961
  fuelPerTick?: InputMaybe<Scalars['BigInt']['input']>;
9962
+ /** DN-10 grid event bus on/off. */
9963
+ gridEventEgress?: InputMaybe<Scalars['Boolean']['input']>;
9887
9964
  maxCompilesPerHour?: InputMaybe<Scalars['Int']['input']>;
9888
9965
  maxContainerCreatesDay?: InputMaybe<Scalars['Int']['input']>;
9889
9966
  maxDbOpsPerTick?: InputMaybe<Scalars['Int']['input']>;
@@ -9898,6 +9975,8 @@ export type SetPlayerWasmPolicyInput = {
9898
9975
  scope: Scalars['String']['input'];
9899
9976
  /** Tier/grid/user id; required unless scope is app_default. */
9900
9977
  scopeRef?: InputMaybe<Scalars['BigInt']['input']>;
9978
+ /** DN-10 spatial reach cap in chunks (0-8). */
9979
+ spatialMaxDistance?: InputMaybe<Scalars['Int']['input']>;
9901
9980
  unitsPerDay?: InputMaybe<Scalars['BigInt']['input']>;
9902
9981
  unitsPerHour?: InputMaybe<Scalars['BigInt']['input']>;
9903
9982
  };
@@ -14703,6 +14782,7 @@ export type GmSessionFieldsFragment = {
14703
14782
  endReason: string | null;
14704
14783
  createdAt: string;
14705
14784
  presence: string;
14785
+ gridId: string | null;
14706
14786
  seededContainerCount: number | null;
14707
14787
  };
14708
14788
  export type GmSessionParticipantFieldsFragment = {
@@ -14784,6 +14864,7 @@ export type GameModelCreateSessionMutation = {
14784
14864
  endReason: string | null;
14785
14865
  createdAt: string;
14786
14866
  presence: string;
14867
+ gridId: string | null;
14787
14868
  seededContainerCount: number | null;
14788
14869
  };
14789
14870
  };
@@ -14847,6 +14928,7 @@ export type GameModelSetSessionTurnMutation = {
14847
14928
  endReason: string | null;
14848
14929
  createdAt: string;
14849
14930
  presence: string;
14931
+ gridId: string | null;
14850
14932
  seededContainerCount: number | null;
14851
14933
  };
14852
14934
  };
@@ -14874,6 +14956,7 @@ export type GameModelSetSessionAdmissionMutation = {
14874
14956
  endReason: string | null;
14875
14957
  createdAt: string;
14876
14958
  presence: string;
14959
+ gridId: string | null;
14877
14960
  seededContainerCount: number | null;
14878
14961
  };
14879
14962
  };
@@ -14901,6 +14984,7 @@ export type GameModelTransferSessionHostMutation = {
14901
14984
  endReason: string | null;
14902
14985
  createdAt: string;
14903
14986
  presence: string;
14987
+ gridId: string | null;
14904
14988
  seededContainerCount: number | null;
14905
14989
  };
14906
14990
  };
@@ -14928,6 +15012,7 @@ export type GameModelEndSessionMutation = {
14928
15012
  endReason: string | null;
14929
15013
  createdAt: string;
14930
15014
  presence: string;
15015
+ gridId: string | null;
14931
15016
  seededContainerCount: number | null;
14932
15017
  };
14933
15018
  };
@@ -15175,6 +15260,7 @@ export type GameModelSessionQuery = {
15175
15260
  endReason: string | null;
15176
15261
  createdAt: string;
15177
15262
  presence: string;
15263
+ gridId: string | null;
15178
15264
  seededContainerCount: number | null;
15179
15265
  };
15180
15266
  };
@@ -15184,6 +15270,7 @@ export type GameModelSessionsQueryVariables = Exact<{
15184
15270
  admission?: InputMaybe<Scalars['String']['input']>;
15185
15271
  hostUserId?: InputMaybe<Scalars['BigInt']['input']>;
15186
15272
  limit?: InputMaybe<Scalars['Int']['input']>;
15273
+ gridId?: InputMaybe<Scalars['BigInt']['input']>;
15187
15274
  }>;
15188
15275
  export type GameModelSessionsQuery = {
15189
15276
  __typename?: 'Query';
@@ -15206,6 +15293,7 @@ export type GameModelSessionsQuery = {
15206
15293
  endReason: string | null;
15207
15294
  createdAt: string;
15208
15295
  presence: string;
15296
+ gridId: string | null;
15209
15297
  seededContainerCount: number | null;
15210
15298
  }>;
15211
15299
  };
@@ -15237,6 +15325,7 @@ export type GameModelSessionSnapshotQuery = {
15237
15325
  endReason: string | null;
15238
15326
  createdAt: string;
15239
15327
  presence: string;
15328
+ gridId: string | null;
15240
15329
  seededContainerCount: number | null;
15241
15330
  };
15242
15331
  participants: Array<{
@@ -15298,6 +15387,7 @@ export type GameModelSessionInspectQuery = {
15298
15387
  endReason: string | null;
15299
15388
  createdAt: string;
15300
15389
  presence: string;
15390
+ gridId: string | null;
15301
15391
  seededContainerCount: number | null;
15302
15392
  };
15303
15393
  participants: Array<{
@@ -16033,6 +16123,73 @@ export type GameModelRevokeTierFeatureMutation = {
16033
16123
  __typename?: 'Mutation';
16034
16124
  gameModelRevokeTierFeature: boolean;
16035
16125
  };
16126
+ export type CreateGridChannelMutationVariables = Exact<{
16127
+ input: CreateGridChannelInput;
16128
+ }>;
16129
+ export type CreateGridChannelMutation = {
16130
+ __typename?: 'Mutation';
16131
+ createGridChannel: {
16132
+ __typename?: 'Group';
16133
+ groupId: string;
16134
+ appId: string;
16135
+ groupType: string;
16136
+ name: string;
16137
+ description: string | null;
16138
+ ownerUserId: string | null;
16139
+ membershipPolicy: string;
16140
+ status: string;
16141
+ defaultRoleId: string | null;
16142
+ gridId: string | null;
16143
+ createdAt: string;
16144
+ };
16145
+ };
16146
+ export type GridChannelsQueryVariables = Exact<{
16147
+ appId: Scalars['BigInt']['input'];
16148
+ gridId: Scalars['BigInt']['input'];
16149
+ }>;
16150
+ export type GridChannelsQuery = {
16151
+ __typename?: 'Query';
16152
+ gridChannels: Array<{
16153
+ __typename?: 'Group';
16154
+ groupId: string;
16155
+ appId: string;
16156
+ groupType: string;
16157
+ name: string;
16158
+ description: string | null;
16159
+ ownerUserId: string | null;
16160
+ membershipPolicy: string;
16161
+ status: string;
16162
+ defaultRoleId: string | null;
16163
+ gridId: string | null;
16164
+ createdAt: string;
16165
+ }>;
16166
+ };
16167
+ export type MintGridTokenMutationVariables = Exact<{
16168
+ input: MintGridTokenInput;
16169
+ }>;
16170
+ export type MintGridTokenMutation = {
16171
+ __typename?: 'Mutation';
16172
+ mintGridToken: {
16173
+ __typename?: 'GridTokenResponse';
16174
+ token: string;
16175
+ gameTokenId: string;
16176
+ appId: string;
16177
+ gridId: string;
16178
+ expiresAt: string;
16179
+ lowChunk: {
16180
+ __typename?: 'ChunkCoordinates';
16181
+ x: string;
16182
+ y: string;
16183
+ z: string;
16184
+ };
16185
+ highChunk: {
16186
+ __typename?: 'ChunkCoordinates';
16187
+ x: string;
16188
+ y: string;
16189
+ z: string;
16190
+ };
16191
+ };
16192
+ };
16036
16193
  export type GameHostQueryVariables = Exact<{
16037
16194
  appId: Scalars['BigInt']['input'];
16038
16195
  }>;
@@ -20124,6 +20281,9 @@ export declare const GameModelFeaturesDocument: DocumentNode<GameModelFeaturesQu
20124
20281
  export declare const GameModelTierFeaturesDocument: DocumentNode<GameModelTierFeaturesQuery, GameModelTierFeaturesQueryVariables>;
20125
20282
  export declare const GameModelPolicyDocument: DocumentNode<GameModelPolicyQuery, GameModelPolicyQueryVariables>;
20126
20283
  export declare const GameModelRevokeTierFeatureDocument: DocumentNode<GameModelRevokeTierFeatureMutation, GameModelRevokeTierFeatureMutationVariables>;
20284
+ export declare const CreateGridChannelDocument: DocumentNode<CreateGridChannelMutation, CreateGridChannelMutationVariables>;
20285
+ export declare const GridChannelsDocument: DocumentNode<GridChannelsQuery, GridChannelsQueryVariables>;
20286
+ export declare const MintGridTokenDocument: DocumentNode<MintGridTokenMutation, MintGridTokenMutationVariables>;
20127
20287
  export declare const GameHostDocument: DocumentNode<GameHostQuery, GameHostQueryVariables>;
20128
20288
  export declare const AmIGameHostDocument: DocumentNode<AmIGameHostQuery, AmIGameHostQueryVariables>;
20129
20289
  export declare const ActorHeartbeatDocument: DocumentNode<ActorHeartbeatMutation, ActorHeartbeatMutationVariables>;