@crowdedkingdoms/crowdyjs 18.17.0 → 18.18.0-test.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -12,19 +12,23 @@ gameplay, minted per app through `client.portal`.
12
12
 
13
13
  Start here:
14
14
 
15
- - [SDK guide](https://docs.crowdedkingdoms.com/crowdyjs/readme) — the canonical
15
+ - [SDK guide](https://docs.dev.crowdedkingdoms.com/crowdyjs/readme) — the canonical
16
16
  walkthrough of everything in this README.
17
- - [Build a game](https://docs.crowdedkingdoms.com/build-a-game/intro) — a
17
+ - [Build a game](https://docs.dev.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.crowdedkingdoms.com/overview/client-workflow)
19
+ - [Platform overview](https://docs.dev.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
25
+ npm install @crowdedkingdoms/crowdyjs@dev
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
+
28
32
  **Server compatibility.** A release selects fields the Game API it was built against has,
29
33
  so it needs that Game API or newer; promote the Game API before the SDK on each tier.
30
34
 
@@ -196,8 +200,8 @@ Notes:
196
200
  - Use `client.auth.setToken(token)` to seed a token externally (e.g. when
197
201
  restoring auth from a non-default storage).
198
202
 
199
- Deeper reading: [Portals & app-scoped tokens](https://docs.crowdedkingdoms.com/management-api/portals-and-app-tokens)
200
- and [Sign in](https://docs.crowdedkingdoms.com/management-api/authentication).
203
+ Deeper reading: [Portals & app-scoped tokens](https://docs.dev.crowdedkingdoms.com/management-api/portals-and-app-tokens)
204
+ and [Sign in](https://docs.dev.crowdedkingdoms.com/management-api/authentication).
201
205
 
202
206
  ### Org-managed players
203
207
 
@@ -338,7 +342,7 @@ never told about, so a native refresh without it is a re-placement.
338
342
  | `client.kit(appId)` | Game Kit: typed clients for the ck-exec starter hubs (world, matchmaking, sessions, NPCs and pets) on one shared connection, their topology, realtime conventions, and parties, guilds and chat (`kit.social`) — see [Game Kit](#game-kit). |
339
343
  | `createWorldSession(client, appId, config)` | World Stores: opt-in, SDK-managed game state from the `@crowdedkingdoms/crowdyjs/stores` subpath — see [World Stores](#world-stores). |
340
344
 
341
- **Studio-admin surface** (privileged; drive with a server-side / studio token,
345
+ **Studio-admin surface** (privileged; drive with an org admin's session, or an org token for the managed-player calls,
342
346
  grouped under `client.admin` and mirrored at the top level):
343
347
 
344
348
  | Sub-client | What it does |
@@ -394,7 +398,7 @@ query AppForRouting($appId: BigInt!) {
394
398
  `CrowdyClient` with `httpUrl: gameApiUrl` (and the matching `wsUrl`) holding
395
399
  that app's app-scoped token, then drive gameplay through that client. Apps
396
400
  with no `gameApiUrl` keep working against the default `httpUrl` you
397
- configured. See [Loading an app's Game API](https://docs.crowdedkingdoms.com/crowdyjs/shared-environment-routing).
401
+ configured. See [Loading an app's Game API](https://docs.dev.crowdedkingdoms.com/crowdyjs/shared-environment-routing).
398
402
 
399
403
  ## Realtime notifications
400
404
 
@@ -820,7 +824,7 @@ reach your bundle. Reads are synchronous snapshots and writes happen on
820
824
  WebSocket events (not `requestAnimationFrame`), so render loops read freely
821
825
  and a backgrounded tab keeps ingesting updates; pass `workerTicker()` to also
822
826
  keep timer-driven sends at full rate while hidden. See the
823
- [World Stores guide](https://docs.crowdedkingdoms.com/crowdyjs/stores).
827
+ [World Stores guide](https://docs.dev.crowdedkingdoms.com/crowdyjs/stores).
824
828
 
825
829
  ## Game Kit
826
830
 
@@ -898,7 +902,7 @@ The protocol is held to ck-exec's golden record of the starters
898
902
  (`test/unit/fixtures/kit-protocol.json`): every module call and topic in it is replayed in
899
903
  `test/unit/game-kit.test.mjs`. The blueprints, `kit.deploy`, the engines and the model-backed
900
904
  helpers went with the game model in 18.0.0; the hub modules replace them. See the
901
- [Game Kit docs](https://docs.crowdedkingdoms.com/game-kit/intro) and
905
+ [Game Kit docs](https://docs.dev.crowdedkingdoms.com/game-kit/intro) and
902
906
  [MIGRATION.md](MIGRATION.md).
903
907
 
904
908
  ## ck-exec
@@ -962,7 +966,7 @@ Integers above 2^53 decode as `number` and lose precision unless you pass
962
966
  `{ decode: { useBigInt64: true } }`. A call's whole numbers outside 32 bits (a timestamp in
963
967
  milliseconds, a player id) go out as 64-bit integers (18.11.0; before, as floats, which a
964
968
  hub's integer fields refuse). The wire format is in the
965
- [ck-exec docs](https://docs.crowdedkingdoms.com/exec/intro).
969
+ [ck-exec docs](https://docs.dev.crowdedkingdoms.com/exec/intro).
966
970
 
967
971
  ### A mod's CLIENT half
968
972
 
@@ -1033,7 +1037,7 @@ counts what was dropped); `invoke` sends at most 256 KiB each way and is refused
1033
1037
  module is not running. `NOT_FOUND` holds a CLIENT half back 15 s and `RATE_LIMITED` 60 s. The
1034
1038
  grid's owner is asked about their own CLIENT halves like anyone; answer yes in `confirm` when
1035
1039
  `prompt.authorId` is the player. See
1036
- [CLIENT halves](https://docs.crowdedkingdoms.com/exec/client-halves).
1040
+ [CLIENT halves](https://docs.dev.crowdedkingdoms.com/exec/client-halves).
1037
1041
 
1038
1042
  ## Hosting a game on Crowdy Games
1039
1043
 
@@ -1152,8 +1156,8 @@ CLIENT project needs ck-api `v2.25.1` or later. A CLIENT crate still on the lega
1152
1156
  `mountCrowdyStudio` and the controller take `mods: client.exec`. Crowdy Studio runs nothing
1153
1157
  on legacy player compute since 18.0.0.
1154
1158
 
1155
- See [CLIENT halves](https://docs.crowdedkingdoms.com/exec/client-halves), [mods](https://docs.crowdedkingdoms.com/exec/mods)
1156
- and [Embed Crowdy Studio in your game](https://docs.crowdedkingdoms.com/crowdyjs/crowdy-studio-embed).
1159
+ See [CLIENT halves](https://docs.dev.crowdedkingdoms.com/exec/client-halves), [mods](https://docs.dev.crowdedkingdoms.com/exec/mods)
1160
+ and [Embed Crowdy Studio in your game](https://docs.dev.crowdedkingdoms.com/crowdyjs/crowdy-studio-embed).
1157
1161
 
1158
1162
  ### The Studio agent (DeepSeek Harness in the browser)
1159
1163
 
@@ -1344,7 +1348,7 @@ no other repositories and no network access required:
1344
1348
  `src/generated/graphql-schema.ts`, the generated schema types.
1345
1349
 
1346
1350
  Schema refresh is explicit, from the published
1347
- [SDL](https://docs.crowdedkingdoms.com/schema/game-api.graphql):
1351
+ [SDL](https://docs.dev.crowdedkingdoms.com/schema/game-api.graphql):
1348
1352
 
1349
1353
  ```bash
1350
1354
  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 prod` writes this file, and
3
+ * `sync-client-origins.mjs --write --tier test` 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 'prod'
13
+ * Source: the operator's per-tier public CK API origin declaration, tier 'test'
14
14
  */
15
15
  /** The tier this build of the SDK is published for. */
16
- export declare const CROWDY_DEFAULT_TIER = "prod";
16
+ export declare const CROWDY_DEFAULT_TIER = "test";
17
17
  /** The public CK API origin for that tier. */
18
- export declare const CROWDY_DEFAULT_HTTP_ORIGIN = "https://ck.prod.crowdedkingdoms.com";
18
+ export declare const CROWDY_DEFAULT_HTTP_ORIGIN = "https://ck.test.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.prod.crowdedkingdoms.com";
20
+ export declare const CROWDY_DEFAULT_WS_ORIGIN = "wss://ck.test.crowdedkingdoms.com";
21
21
  /** The bare hostname, for callers that need to compare rather than dial. */
22
- export declare const CROWDY_DEFAULT_HOST = "ck.prod.crowdedkingdoms.com";
22
+ export declare const CROWDY_DEFAULT_HOST = "ck.test.crowdedkingdoms.com";
23
23
  //# sourceMappingURL=default-origin.d.ts.map
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * GENERATED — do not edit. The operator tooling's
3
- * `sync-client-origins.mjs --write --tier prod` writes this file, and
3
+ * `sync-client-origins.mjs --write --tier test` 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 'prod'
13
+ * Source: the operator's per-tier public CK API origin declaration, tier 'test'
14
14
  */
15
15
  /** The tier this build of the SDK is published for. */
16
- export const CROWDY_DEFAULT_TIER = 'prod';
16
+ export const CROWDY_DEFAULT_TIER = 'test';
17
17
  /** The public CK API origin for that tier. */
18
- export const CROWDY_DEFAULT_HTTP_ORIGIN = 'https://ck.prod.crowdedkingdoms.com';
18
+ export const CROWDY_DEFAULT_HTTP_ORIGIN = 'https://ck.test.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.prod.crowdedkingdoms.com';
20
+ export const CROWDY_DEFAULT_WS_ORIGIN = 'wss://ck.test.crowdedkingdoms.com';
21
21
  /** The bare hostname, for callers that need to compare rather than dial. */
22
- export const CROWDY_DEFAULT_HOST = 'ck.prod.crowdedkingdoms.com';
22
+ export const CROWDY_DEFAULT_HOST = 'ck.test.crowdedkingdoms.com';
@@ -71,7 +71,10 @@ export declare class ManagedPlayersAPI {
71
71
  endSessions(orgId: string, externalId: string): Promise<boolean>;
72
72
  /**
73
73
  * Delete a player: its sessions end and its account is scrubbed. The external id is free
74
- * again, so a later sign-in with it creates a new player.
74
+ * again, so a later sign-in with it creates a new player. Since Game API v2.54.0 its
75
+ * player-side content is erased within minutes (usage and billing records and world edits
76
+ * stay), and a legal hold on the player or its organization refuses the delete with
77
+ * `LEGAL_HOLD`; the player stays as it was.
75
78
  */
76
79
  delete(orgId: string, externalId: string): Promise<boolean>;
77
80
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"managedPlayers.d.ts","sourceRoot":"","sources":["../../src/domains/managedPlayers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAaL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,+BAA+B,EACpC,KAAK,2BAA2B,EAChC,KAAK,6BAA6B,EAClC,KAAK,mBAAmB,EACxB,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAChC,MAAM,yBAAyB,CAAC;AAgBjC,uGAAuG;AACvG,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,0BAA0B,EAAE,WAAW,CAAC,GAAG;IACtF,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAE/C;;;;;OAKG;IACG,IAAI,CACR,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAChE,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAKjD,kEAAkE;IAC5D,GAAG,CACP,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAK/C;;;;;;OAMG;IACG,SAAS,CACb,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,+BAA+B,CAAC,yBAAyB,CAAC,CAAC;IAKtE;;;;OAIG;IACG,MAAM,CACV,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,2BAA2B,CAAC,qBAAqB,CAAC,CAAC;IAK9D,wFAAwF;IAClF,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtE;;;OAGG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKjE;;;;;;OAMG;IACG,QAAQ,CACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,6BAA6B,CAAC,0BAA0B,CAAC,CAAC;IAKrE,wEAAwE;IAClE,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAKhF;;;;;;;OAOG;IACG,kBAAkB,CACtB,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAAC,6BAA6B,CAAC,uBAAuB,CAAC,CAAC;IAiBlE,0EAA0E;IACpE,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtE;;;;;OAKG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrD;;;;OAIG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;CAIpE"}
1
+ {"version":3,"file":"managedPlayers.d.ts","sourceRoot":"","sources":["../../src/domains/managedPlayers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAaL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,+BAA+B,EACpC,KAAK,2BAA2B,EAChC,KAAK,6BAA6B,EAClC,KAAK,mBAAmB,EACxB,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAChC,MAAM,yBAAyB,CAAC;AAgBjC,uGAAuG;AACvG,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,0BAA0B,EAAE,WAAW,CAAC,GAAG;IACtF,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAE/C;;;;;OAKG;IACG,IAAI,CACR,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAChE,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAKjD,kEAAkE;IAC5D,GAAG,CACP,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAK/C;;;;;;OAMG;IACG,SAAS,CACb,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,+BAA+B,CAAC,yBAAyB,CAAC,CAAC;IAKtE;;;;OAIG;IACG,MAAM,CACV,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,2BAA2B,CAAC,qBAAqB,CAAC,CAAC;IAK9D,wFAAwF;IAClF,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtE;;;;;;OAMG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKjE;;;;;;OAMG;IACG,QAAQ,CACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,6BAA6B,CAAC,0BAA0B,CAAC,CAAC;IAKrE,wEAAwE;IAClE,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAKhF;;;;;;;OAOG;IACG,kBAAkB,CACtB,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAAC,6BAA6B,CAAC,uBAAuB,CAAC,CAAC;IAiBlE,0EAA0E;IACpE,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtE;;;;;OAKG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrD;;;;OAIG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;CAIpE"}
@@ -92,7 +92,10 @@ export class ManagedPlayersAPI {
92
92
  }
93
93
  /**
94
94
  * Delete a player: its sessions end and its account is scrubbed. The external id is free
95
- * again, so a later sign-in with it creates a new player.
95
+ * again, so a later sign-in with it creates a new player. Since Game API v2.54.0 its
96
+ * player-side content is erased within minutes (usage and billing records and world edits
97
+ * stay), and a legal hold on the player or its organization refuses the delete with
98
+ * `LEGAL_HOLD`; the player stays as it was.
96
99
  */
97
100
  async delete(orgId, externalId) {
98
101
  const data = await this.api.request(DeleteManagedPlayerDocument, { orgId, externalId });
@@ -341,7 +341,10 @@ export declare class UdpAPI {
341
341
  * Send a spatial text/chat packet, fanned out to nearby actors as a
342
342
  * `ClientTextNotification`. Fire-and-forget; opens a UDP proxy session
343
343
  * automatically. The sender receives no success echo; failures arrive
344
- * asynchronously as `GenericErrorResponse` on {@link subscribe}.
344
+ * asynchronously as `GenericErrorResponse` on {@link subscribe}. Needs the
345
+ * `use_text_chat` runtime permission on the app (Game API v2.55.0; every tier
346
+ * that grants `access` has it unless the app took it away): without it the
347
+ * server answers `UNAUTHORIZED`.
345
348
  *
346
349
  * @param input - {@link ClientTextPacketInput}:
347
350
  * - `appId` — owning app id (`BigInt` as a decimal string).
@@ -432,6 +435,9 @@ export declare class UdpAPI {
432
435
  * Fire-and-forget: the sender receives no echo, so there is no
433
436
  * `sendSingleActorMessageAndWait` variant. The target receives a
434
437
  * `SingleActorMessageNotification` on its `udpNotifications` subscription.
438
+ * Needs the `use_direct_messages` runtime permission on the app (Game API
439
+ * v2.55.0; every tier that grants `access` has it unless the app took it
440
+ * away): without it the server answers `UNAUTHORIZED`.
435
441
  *
436
442
  * @param input - {@link SingleActorMessageInput}:
437
443
  * - `appId` — the destination actor's app id (`BigInt` as a decimal string).
@@ -477,8 +483,10 @@ export declare class UdpAPI {
477
483
  * Publish a message to a channel. Delivered to every active member of the
478
484
  * channel (regardless of location) as a `ChannelMessageNotification` on their
479
485
  * `udpNotifications` subscription. Requires the channel `send_messages`
480
- * permission; the server drops the message otherwise. Fire-and-forget: the
481
- * sender receives no echo.
486
+ * permission and, from Game API v2.55.0, the `use_text_chat` runtime
487
+ * permission on the channel's app; without either the server answers
488
+ * `UNAUTHORIZED` on {@link subscribe}. Fire-and-forget: the sender receives
489
+ * no echo.
482
490
  *
483
491
  * @param input - {@link ChannelMessageInput}:
484
492
  * - `channelId` — the channel id (`groups.group_id`) as a `BigInt` decimal
@@ -489,8 +497,9 @@ export declare class UdpAPI {
489
497
  * 1024 bytes.
490
498
  * - `sequenceNumber` — optional uint8 (0-255) correlation id.
491
499
  * @returns `true` when accepted for sending — **not** confirmation of
492
- * delivery; note that a message dropped for a missing `send_messages`
493
- * permission still returns `true`.
500
+ * delivery; a message refused for a missing `send_messages` or
501
+ * `use_text_chat` still returns `true` (the refusal arrives as a
502
+ * `genericError` notification).
494
503
  * @throws {CrowdyGraphQLError} on auth/validation failures.
495
504
  */
496
505
  sendChannelMessage(input: SendChannelMessageMutationVariables['input']): Promise<boolean>;
@@ -518,8 +527,8 @@ export declare class UdpAPI {
518
527
  * {@link sendChannelMessage}, when one of its live actors is in `appId`
519
528
  * within `maxDistance` chunks of `chunk`, measured as the straight-line
520
529
  * distance between chunk coordinates, boundary included. A member with no
521
- * live actor does not receive it. Same send right as `sendChannelMessage`;
522
- * the sender receives no echo.
530
+ * live actor does not receive it. Same send right and `use_text_chat` as
531
+ * `sendChannelMessage`; the sender receives no echo.
523
532
  *
524
533
  * @param input - {@link RangedChannelMessageInput}:
525
534
  * - `channelId` — the channel id (`groups.group_id`) as a `BigInt` decimal
@@ -534,8 +543,9 @@ export declare class UdpAPI {
534
543
  * 2147483647. Not the 0-8 Chebyshev ring count spatial sends take.
535
544
  * - `sequenceNumber` — optional uint8 (0-255) correlation id.
536
545
  * @returns `true` when accepted for sending — **not** confirmation of
537
- * delivery. A refusal (no send right: `UNAUTHORIZED`; another app:
538
- * `INVALID_APP_ID`) arrives as a `genericError` notification.
546
+ * delivery. A refusal (no send right or no `use_text_chat`:
547
+ * `UNAUTHORIZED`; another app: `INVALID_APP_ID`) arrives as a
548
+ * `genericError` notification.
539
549
  * @throws {CrowdyGraphQLError} on auth/validation failures.
540
550
  */
541
551
  sendRangedChannelMessage(input: SendRangedChannelMessageMutationVariables['input']): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"udp.d.ts","sourceRoot":"","sources":["../../src/domains/udp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"udp.d.ts","sourceRoot":"","sources":["../../src/domains/udp.ts"],"names":[],"mappings":"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"}
@@ -491,7 +491,10 @@ export class UdpAPI {
491
491
  * Send a spatial text/chat packet, fanned out to nearby actors as a
492
492
  * `ClientTextNotification`. Fire-and-forget; opens a UDP proxy session
493
493
  * automatically. The sender receives no success echo; failures arrive
494
- * asynchronously as `GenericErrorResponse` on {@link subscribe}.
494
+ * asynchronously as `GenericErrorResponse` on {@link subscribe}. Needs the
495
+ * `use_text_chat` runtime permission on the app (Game API v2.55.0; every tier
496
+ * that grants `access` has it unless the app took it away): without it the
497
+ * server answers `UNAUTHORIZED`.
495
498
  *
496
499
  * @param input - {@link ClientTextPacketInput}:
497
500
  * - `appId` — owning app id (`BigInt` as a decimal string).
@@ -614,6 +617,9 @@ export class UdpAPI {
614
617
  * Fire-and-forget: the sender receives no echo, so there is no
615
618
  * `sendSingleActorMessageAndWait` variant. The target receives a
616
619
  * `SingleActorMessageNotification` on its `udpNotifications` subscription.
620
+ * Needs the `use_direct_messages` runtime permission on the app (Game API
621
+ * v2.55.0; every tier that grants `access` has it unless the app took it
622
+ * away): without it the server answers `UNAUTHORIZED`.
617
623
  *
618
624
  * @param input - {@link SingleActorMessageInput}:
619
625
  * - `appId` — the destination actor's app id (`BigInt` as a decimal string).
@@ -681,8 +687,10 @@ export class UdpAPI {
681
687
  * Publish a message to a channel. Delivered to every active member of the
682
688
  * channel (regardless of location) as a `ChannelMessageNotification` on their
683
689
  * `udpNotifications` subscription. Requires the channel `send_messages`
684
- * permission; the server drops the message otherwise. Fire-and-forget: the
685
- * sender receives no echo.
690
+ * permission and, from Game API v2.55.0, the `use_text_chat` runtime
691
+ * permission on the channel's app; without either the server answers
692
+ * `UNAUTHORIZED` on {@link subscribe}. Fire-and-forget: the sender receives
693
+ * no echo.
686
694
  *
687
695
  * @param input - {@link ChannelMessageInput}:
688
696
  * - `channelId` — the channel id (`groups.group_id`) as a `BigInt` decimal
@@ -693,8 +701,9 @@ export class UdpAPI {
693
701
  * 1024 bytes.
694
702
  * - `sequenceNumber` — optional uint8 (0-255) correlation id.
695
703
  * @returns `true` when accepted for sending — **not** confirmation of
696
- * delivery; note that a message dropped for a missing `send_messages`
697
- * permission still returns `true`.
704
+ * delivery; a message refused for a missing `send_messages` or
705
+ * `use_text_chat` still returns `true` (the refusal arrives as a
706
+ * `genericError` notification).
698
707
  * @throws {CrowdyGraphQLError} on auth/validation failures.
699
708
  */
700
709
  async sendChannelMessage(input) {
@@ -742,8 +751,8 @@ export class UdpAPI {
742
751
  * {@link sendChannelMessage}, when one of its live actors is in `appId`
743
752
  * within `maxDistance` chunks of `chunk`, measured as the straight-line
744
753
  * distance between chunk coordinates, boundary included. A member with no
745
- * live actor does not receive it. Same send right as `sendChannelMessage`;
746
- * the sender receives no echo.
754
+ * live actor does not receive it. Same send right and `use_text_chat` as
755
+ * `sendChannelMessage`; the sender receives no echo.
747
756
  *
748
757
  * @param input - {@link RangedChannelMessageInput}:
749
758
  * - `channelId` — the channel id (`groups.group_id`) as a `BigInt` decimal
@@ -758,8 +767,9 @@ export class UdpAPI {
758
767
  * 2147483647. Not the 0-8 Chebyshev ring count spatial sends take.
759
768
  * - `sequenceNumber` — optional uint8 (0-255) correlation id.
760
769
  * @returns `true` when accepted for sending — **not** confirmation of
761
- * delivery. A refusal (no send right: `UNAUTHORIZED`; another app:
762
- * `INVALID_APP_ID`) arrives as a `genericError` notification.
770
+ * delivery. A refusal (no send right or no `use_text_chat`:
771
+ * `UNAUTHORIZED`; another app: `INVALID_APP_ID`) arrives as a
772
+ * `genericError` notification.
763
773
  * @throws {CrowdyGraphQLError} on auth/validation failures.
764
774
  */
765
775
  async sendRangedChannelMessage(input) {