@crowdedkingdoms/crowdyjs 18.13.2 → 18.14.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/MIGRATION.md CHANGED
@@ -120,6 +120,18 @@ super-admin's session). There is no SDK replacement.
120
120
  `dev`'s SDL after #417 merged (`npm run schema:sync:paths -- --schema <that schema.gql>`, then
121
121
  `npm run codegen`).
122
122
 
123
+ ## 18.14.0: billing descriptions, and `playerWallet.charges()` deprecated
124
+
125
+ No breaking change. The schema is cks-game-api `dev`'s after #550: the billing descriptions say
126
+ what the lossless ledger does (settled about once a minute, per dimension and period, with no
127
+ clock-hour close), and the voxel comments say what `getChunk` returns (an edit is in the
128
+ chunk's `voxelStates`; only `updateChunk` writes the packed grid).
129
+
130
+ `playerWallet.charges()` is **deprecated**, like the `playerUsageCharges` field it wraps: that
131
+ field reads the cents-era hourly charge rows, which the ledger does not write, so the list ends
132
+ where the ledger took over. Read `playerWallet.transactions()`: each `usage_debit` entry is one
133
+ usage charge, per app, with the app's markup included. Nothing is removed in 18.x.
134
+
123
135
  ## 18.13.0: the economy
124
136
 
125
137
  Additive. **Needs a compute toolchain whose starter pack has the `player` and `market`
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
 
@@ -195,8 +199,8 @@ Notes:
195
199
  - Use `client.auth.setToken(token)` to seed a token externally (e.g. when
196
200
  restoring auth from a non-default storage).
197
201
 
198
- Deeper reading: [Portals & app-scoped tokens](https://docs.crowdedkingdoms.com/management-api/portals-and-app-tokens)
199
- and [Sign in](https://docs.crowdedkingdoms.com/management-api/authentication).
202
+ Deeper reading: [Portals & app-scoped tokens](https://docs.dev.crowdedkingdoms.com/management-api/portals-and-app-tokens)
203
+ and [Sign in](https://docs.dev.crowdedkingdoms.com/management-api/authentication).
200
204
 
201
205
  ### Token refresh during gameplay
202
206
 
@@ -320,7 +324,7 @@ query AppForRouting($appId: BigInt!) {
320
324
  `CrowdyClient` with `httpUrl: gameApiUrl` (and the matching `wsUrl`) holding
321
325
  that app's app-scoped token, then drive gameplay through that client. Apps
322
326
  with no `gameApiUrl` keep working against the default `httpUrl` you
323
- configured. See [Loading an app's Game API](https://docs.crowdedkingdoms.com/crowdyjs/shared-environment-routing).
327
+ configured. See [Loading an app's Game API](https://docs.dev.crowdedkingdoms.com/crowdyjs/shared-environment-routing).
324
328
 
325
329
  ## Realtime notifications
326
330
 
@@ -731,7 +735,7 @@ reach your bundle. Reads are synchronous snapshots and writes happen on
731
735
  WebSocket events (not `requestAnimationFrame`), so render loops read freely
732
736
  and a backgrounded tab keeps ingesting updates; pass `workerTicker()` to also
733
737
  keep timer-driven sends at full rate while hidden. See the
734
- [World Stores guide](https://docs.crowdedkingdoms.com/crowdyjs/stores).
738
+ [World Stores guide](https://docs.dev.crowdedkingdoms.com/crowdyjs/stores).
735
739
 
736
740
  ## Game Kit
737
741
 
@@ -809,7 +813,7 @@ The protocol is held to ck-exec's golden record of the starters
809
813
  (`test/unit/fixtures/kit-protocol.json`): every module call and topic in it is replayed in
810
814
  `test/unit/game-kit.test.mjs`. The blueprints, `kit.deploy`, the engines and the model-backed
811
815
  helpers went with the game model in 18.0.0; the hub modules replace them. See the
812
- [Game Kit docs](https://docs.crowdedkingdoms.com/game-kit/intro) and
816
+ [Game Kit docs](https://docs.dev.crowdedkingdoms.com/game-kit/intro) and
813
817
  [MIGRATION.md](MIGRATION.md).
814
818
 
815
819
  ## ck-exec
@@ -873,7 +877,7 @@ Integers above 2^53 decode as `number` and lose precision unless you pass
873
877
  `{ decode: { useBigInt64: true } }`. A call's whole numbers outside 32 bits (a timestamp in
874
878
  milliseconds, a player id) go out as 64-bit integers (18.11.0; before, as floats, which a
875
879
  hub's integer fields refuse). The wire format is in the
876
- [ck-exec docs](https://docs.crowdedkingdoms.com/exec/intro).
880
+ [ck-exec docs](https://docs.dev.crowdedkingdoms.com/exec/intro).
877
881
 
878
882
  ### A mod's CLIENT half
879
883
 
@@ -944,7 +948,7 @@ counts what was dropped); `invoke` sends at most 256 KiB each way and is refused
944
948
  module is not running. `NOT_FOUND` holds a CLIENT half back 15 s and `RATE_LIMITED` 60 s. The
945
949
  grid's owner is asked about their own CLIENT halves like anyone; answer yes in `confirm` when
946
950
  `prompt.authorId` is the player. See
947
- [CLIENT halves](https://docs.crowdedkingdoms.com/exec/client-halves).
951
+ [CLIENT halves](https://docs.dev.crowdedkingdoms.com/exec/client-halves).
948
952
 
949
953
  ## Hosting a game on Crowdy Games
950
954
 
@@ -1063,8 +1067,8 @@ CLIENT project needs ck-api `v2.25.1` or later. A CLIENT crate still on the lega
1063
1067
  `mountCrowdyStudio` and the controller take `mods: client.exec`. Crowdy Studio runs nothing
1064
1068
  on legacy player compute since 18.0.0.
1065
1069
 
1066
- See [CLIENT halves](https://docs.crowdedkingdoms.com/exec/client-halves), [mods](https://docs.crowdedkingdoms.com/exec/mods)
1067
- and [Embed Crowdy Studio in your game](https://docs.crowdedkingdoms.com/crowdyjs/crowdy-studio-embed).
1070
+ See [CLIENT halves](https://docs.dev.crowdedkingdoms.com/exec/client-halves), [mods](https://docs.dev.crowdedkingdoms.com/exec/mods)
1071
+ and [Embed Crowdy Studio in your game](https://docs.dev.crowdedkingdoms.com/crowdyjs/crowdy-studio-embed).
1068
1072
 
1069
1073
  ### The Studio agent (DeepSeek Harness in the browser)
1070
1074
 
@@ -1253,7 +1257,7 @@ no other repositories and no network access required:
1253
1257
  `src/generated/graphql-schema.ts`, the generated schema types.
1254
1258
 
1255
1259
  Schema refresh is explicit, from the published
1256
- [SDL](https://docs.crowdedkingdoms.com/schema/game-api.graphql):
1260
+ [SDL](https://docs.dev.crowdedkingdoms.com/schema/game-api.graphql):
1257
1261
 
1258
1262
  ```bash
1259
1263
  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';
@@ -23,11 +23,17 @@ export declare class PlayerWalletAPI {
23
23
  * worst case while it runs). `balanceCents` is the deprecated truncation.
24
24
  */
25
25
  balance(): Promise<PlayerWalletBalanceQuery["playerWalletBalance"]>;
26
- /** The caller's wallet ledger, newest first. */
26
+ /**
27
+ * The caller's wallet ledger, newest first. Usage charges are its `usage_debit` entries: one
28
+ * per app, dimension and period each time that period's usage costs more, the app's markup
29
+ * included.
30
+ */
27
31
  transactions(variables?: PlayerWalletTransactionsQueryVariables): Promise<PlayerWalletTransactionsQuery["playerWalletTransactions"]>;
28
32
  /**
29
- * The caller's posted hourly usage charges; each splits platformCents vs
30
- * markupCents with a per-metric snapshot ("what is this grid costing me").
33
+ * The caller's hourly usage charges from the cents-era billing, which the lossless ledger
34
+ * replaced: nothing is added to this list any more.
35
+ *
36
+ * @deprecated Read {@link transactions}: its `usage_debit` entries are the usage charges.
31
37
  */
32
38
  charges(variables?: PlayerUsageChargesQueryVariables): Promise<PlayerUsageChargesQuery["playerUsageCharges"]>;
33
39
  /** The caller's self-set spend caps with running counters. */
@@ -1 +1 @@
1
- {"version":3,"file":"playerWallet.d.ts","sourceRoot":"","sources":["../../src/domains/playerWallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EASL,KAAK,4BAA4B,EAOjC,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,EAClC,KAAK,sCAAsC,EAC3C,KAAK,uBAAuB,EAC5B,KAAK,gCAAgC,EACrC,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,kCAAkC,EACvC,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,EACjC,KAAK,qCAAqC,EAC1C,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,8BAA8B,EACnC,KAAK,2BAA2B,EAChC,KAAK,oCAAoC,EACzC,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EAChC,KAAK,oCAAoC,EACzC,KAAK,mCAAmC,EACxC,KAAK,4CAA4C,EAClD,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;;;;GAYG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,aAAa;IAEnD;;;;;OAKG;IACG,OAAO,IAAI,OAAO,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;IAKzE,gDAAgD;IAC1C,YAAY,CAChB,SAAS,GAAE,sCAA2C,GACrD,OAAO,CAAC,6BAA6B,CAAC,0BAA0B,CAAC,CAAC;IAQrE;;;OAGG;IACG,OAAO,CACX,SAAS,GAAE,gCAAqC,GAC/C,OAAO,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,CAAC;IAQzD,8DAA8D;IACxD,SAAS,IAAI,OAAO,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAKnE,0EAA0E;IACpE,WAAW,CACf,SAAS,EAAE,kCAAkC,GAC5C,OAAO,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,CAAC;IAQ1D,2CAA2C;IACrC,WAAW,IAAI,OAAO,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;IAKzE,6EAA6E;IACvE,cAAc,CAClB,SAAS,EAAE,qCAAqC,GAC/C,OAAO,CAAC,4BAA4B,CAAC,sBAAsB,CAAC,CAAC;IAQhE;;;;OAIG;IACG,cAAc,IAAI,OAAO,CAC7B,4BAA4B,CAAC,sBAAsB,CAAC,CACrD;IAKD,+DAA+D;IACzD,aAAa,IAAI,OAAO,CAC5B,wBAAwB,CAAC,qBAAqB,CAAC,CAChD;IAKD,8EAA8E;IACxE,UAAU,CACd,SAAS,EAAE,8BAA8B,GACxC,OAAO,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;IAQrD,+EAA+E;IACzE,aAAa,CACjB,SAAS,EAAE,oCAAoC,GAC9C,OAAO,CAAC,2BAA2B,CAAC,qBAAqB,CAAC,CAAC;IAQ9D,uEAAuE;IACjE,cAAc,CAClB,SAAS,EAAE,4BAA4B,GACtC,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAKjD;;;OAGG;IACG,gBAAgB,CACpB,SAAS,EAAE,oCAAoC,GAC9C,OAAO,CAAC,2BAA2B,CAAC,wBAAwB,CAAC,CAAC;IAQjE,gFAAgF;IAC1E,wBAAwB,CAC5B,SAAS,EAAE,4CAA4C,GACtD,OAAO,CACR,mCAAmC,CAAC,gCAAgC,CAAC,CACtE;CAOF"}
1
+ {"version":3,"file":"playerWallet.d.ts","sourceRoot":"","sources":["../../src/domains/playerWallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EASL,KAAK,4BAA4B,EAOjC,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,EAClC,KAAK,sCAAsC,EAC3C,KAAK,uBAAuB,EAC5B,KAAK,gCAAgC,EACrC,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,kCAAkC,EACvC,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,EACjC,KAAK,qCAAqC,EAC1C,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,8BAA8B,EACnC,KAAK,2BAA2B,EAChC,KAAK,oCAAoC,EACzC,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EAChC,KAAK,oCAAoC,EACzC,KAAK,mCAAmC,EACxC,KAAK,4CAA4C,EAClD,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;;;;GAYG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,aAAa;IAEnD;;;;;OAKG;IACG,OAAO,IAAI,OAAO,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;IAKzE;;;;OAIG;IACG,YAAY,CAChB,SAAS,GAAE,sCAA2C,GACrD,OAAO,CAAC,6BAA6B,CAAC,0BAA0B,CAAC,CAAC;IAQrE;;;;;OAKG;IACG,OAAO,CACX,SAAS,GAAE,gCAAqC,GAC/C,OAAO,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,CAAC;IAQzD,8DAA8D;IACxD,SAAS,IAAI,OAAO,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAKnE,0EAA0E;IACpE,WAAW,CACf,SAAS,EAAE,kCAAkC,GAC5C,OAAO,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,CAAC;IAQ1D,2CAA2C;IACrC,WAAW,IAAI,OAAO,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;IAKzE,6EAA6E;IACvE,cAAc,CAClB,SAAS,EAAE,qCAAqC,GAC/C,OAAO,CAAC,4BAA4B,CAAC,sBAAsB,CAAC,CAAC;IAQhE;;;;OAIG;IACG,cAAc,IAAI,OAAO,CAC7B,4BAA4B,CAAC,sBAAsB,CAAC,CACrD;IAKD,+DAA+D;IACzD,aAAa,IAAI,OAAO,CAC5B,wBAAwB,CAAC,qBAAqB,CAAC,CAChD;IAKD,8EAA8E;IACxE,UAAU,CACd,SAAS,EAAE,8BAA8B,GACxC,OAAO,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;IAQrD,+EAA+E;IACzE,aAAa,CACjB,SAAS,EAAE,oCAAoC,GAC9C,OAAO,CAAC,2BAA2B,CAAC,qBAAqB,CAAC,CAAC;IAQ9D,uEAAuE;IACjE,cAAc,CAClB,SAAS,EAAE,4BAA4B,GACtC,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAKjD;;;OAGG;IACG,gBAAgB,CACpB,SAAS,EAAE,oCAAoC,GAC9C,OAAO,CAAC,2BAA2B,CAAC,wBAAwB,CAAC,CAAC;IAQjE,gFAAgF;IAC1E,wBAAwB,CAC5B,SAAS,EAAE,4CAA4C,GACtD,OAAO,CACR,mCAAmC,CAAC,gCAAgC,CAAC,CACtE;CAOF"}
@@ -26,14 +26,20 @@ export class PlayerWalletAPI {
26
26
  const data = await this.graphql.request(PlayerWalletBalanceDocument, {});
27
27
  return data.playerWalletBalance;
28
28
  }
29
- /** The caller's wallet ledger, newest first. */
29
+ /**
30
+ * The caller's wallet ledger, newest first. Usage charges are its `usage_debit` entries: one
31
+ * per app, dimension and period each time that period's usage costs more, the app's markup
32
+ * included.
33
+ */
30
34
  async transactions(variables = {}) {
31
35
  const data = await this.graphql.request(PlayerWalletTransactionsDocument, variables);
32
36
  return data.playerWalletTransactions;
33
37
  }
34
38
  /**
35
- * The caller's posted hourly usage charges; each splits platformCents vs
36
- * markupCents with a per-metric snapshot ("what is this grid costing me").
39
+ * The caller's hourly usage charges from the cents-era billing, which the lossless ledger
40
+ * replaced: nothing is added to this list any more.
41
+ *
42
+ * @deprecated Read {@link transactions}: its `usage_debit` entries are the usage charges.
37
43
  */
38
44
  async charges(variables = {}) {
39
45
  const data = await this.graphql.request(PlayerUsageChargesDocument, variables);
@@ -7,8 +7,9 @@ import { type ListVoxelsQuery, type ListVoxelsQueryVariables, type ListVoxelUpda
7
7
  *
8
8
  * A "voxel edit" is one row of the `voxel_updates` log (a {@link Voxel}): the
9
9
  * app / chunk / local position that changed, the new voxel type, an optional
10
- * base64 state blob, and who/when. A background maintenance job later folds these
11
- * edits into the chunk's packed grid (see {@link ChunksAPI}). For high-frequency
10
+ * base64 state blob, and who/when. `getChunk` applies these edits to the chunk it
11
+ * returns, as entries of its `voxelStates`; the packed grid itself is written only
12
+ * by `updateChunk` (see {@link ChunksAPI}). For high-frequency
12
13
  * realtime edits prefer the UDP path (`client.udp.sendVoxelUpdate(...)`); use
13
14
  * this API for authoritative reads, audit history, and administrative rollback.
14
15
  *
@@ -60,10 +61,12 @@ export declare class VoxelsAPI {
60
61
  listByDistance(input: ListVoxelUpdatesByDistanceQueryVariables['input']): Promise<ListVoxelUpdatesByDistanceQuery['listVoxelUpdatesByDistance']>;
61
62
  /**
62
63
  * Record (upsert) a single voxel edit in the `voxel_updates` log for one chunk.
63
- * **Writes world state**; a background job later folds the edit into the
64
- * chunk's packed grid. Requires voxel-edit permission for the target region:
65
- * active app access plus the `update_voxel_data` runtime permission (and, where
66
- * grids cover the chunk, `update_voxel_data` on a covering grid).
64
+ * **Writes world state**; `getChunk` returns the edit in the chunk's
65
+ * `voxelStates` (the packed grid is written only by `updateChunk`). Requires
66
+ * voxel-edit permission for the target region: active app access, the
67
+ * `update_voxel_data` tier permission, and `update_voxel_data` on the most
68
+ * specific grid covering the chunk. A chunk no grid covers is refused, and so
69
+ * is one only the app's world grid covers while its wilderness is closed.
67
70
  *
68
71
  * @param input - {@link UpdateVoxelInput}: `appId`, chunk `coordinates`, the
69
72
  * local voxel `location` and the `voxelType` to write (app-defined
@@ -1 +1 @@
1
- {"version":3,"file":"voxels.d.ts","sourceRoot":"","sources":["../../src/domains/voxels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAE7B,KAAK,+BAA+B,EACpC,KAAK,wCAAwC,EAE7C,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EAEjC,KAAK,uBAAuB,EAC5B,KAAK,gCAAgC,EAErC,KAAK,iCAAiC,EACtC,KAAK,0CAA0C,EAE/C,KAAK,4BAA4B,EACjC,KAAK,qCAAqC,EAC3C,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,SAAS;IACR,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAEtC;;;;;;;;;;OAUG;IACG,IAAI,CACR,KAAK,EAAE,wBAAwB,CAAC,OAAO,CAAC,GACvC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAKzC;;;;;;;;;;;;;;OAcG;IACG,cAAc,CAClB,KAAK,EAAE,wCAAwC,CAAC,OAAO,CAAC,GACvD,OAAO,CAAC,+BAA+B,CAAC,4BAA4B,CAAC,CAAC;IAKzE;;;;;;;;;;;;;OAaG;IACG,MAAM,CACV,KAAK,EAAE,4BAA4B,CAAC,OAAO,CAAC,GAC3C,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAK9C;;;;;;;;;;;;;;;;;;OAkBG;IACG,OAAO,CACX,IAAI,EAAE,gCAAgC,GACrC,OAAO,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,CAAC;IAKzD;;;;;;;;;;;;OAYG;IACG,iBAAiB,CACrB,IAAI,EAAE,0CAA0C,GAC/C,OAAO,CAAC,iCAAiC,CAAC,8BAA8B,CAAC,CAAC;IAQ7E;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,QAAQ,CACZ,KAAK,EAAE,qCAAqC,CAAC,OAAO,CAAC,GACpD,OAAO,CAAC,4BAA4B,CAAC,sBAAsB,CAAC,CAAC;CAIjE"}
1
+ {"version":3,"file":"voxels.d.ts","sourceRoot":"","sources":["../../src/domains/voxels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAE7B,KAAK,+BAA+B,EACpC,KAAK,wCAAwC,EAE7C,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EAEjC,KAAK,uBAAuB,EAC5B,KAAK,gCAAgC,EAErC,KAAK,iCAAiC,EACtC,KAAK,0CAA0C,EAE/C,KAAK,4BAA4B,EACjC,KAAK,qCAAqC,EAC3C,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,SAAS;IACR,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAEtC;;;;;;;;;;OAUG;IACG,IAAI,CACR,KAAK,EAAE,wBAAwB,CAAC,OAAO,CAAC,GACvC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAKzC;;;;;;;;;;;;;;OAcG;IACG,cAAc,CAClB,KAAK,EAAE,wCAAwC,CAAC,OAAO,CAAC,GACvD,OAAO,CAAC,+BAA+B,CAAC,4BAA4B,CAAC,CAAC;IAKzE;;;;;;;;;;;;;;;OAeG;IACG,MAAM,CACV,KAAK,EAAE,4BAA4B,CAAC,OAAO,CAAC,GAC3C,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAK9C;;;;;;;;;;;;;;;;;;OAkBG;IACG,OAAO,CACX,IAAI,EAAE,gCAAgC,GACrC,OAAO,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,CAAC;IAKzD;;;;;;;;;;;;OAYG;IACG,iBAAiB,CACrB,IAAI,EAAE,0CAA0C,GAC/C,OAAO,CAAC,iCAAiC,CAAC,8BAA8B,CAAC,CAAC;IAQ7E;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,QAAQ,CACZ,KAAK,EAAE,qCAAqC,CAAC,OAAO,CAAC,GACpD,OAAO,CAAC,4BAA4B,CAAC,sBAAsB,CAAC,CAAC;CAIjE"}
@@ -6,8 +6,9 @@ import { ListVoxelsDocument, ListVoxelUpdatesByDistanceDocument, UpdateVoxelDocu
6
6
  *
7
7
  * A "voxel edit" is one row of the `voxel_updates` log (a {@link Voxel}): the
8
8
  * app / chunk / local position that changed, the new voxel type, an optional
9
- * base64 state blob, and who/when. A background maintenance job later folds these
10
- * edits into the chunk's packed grid (see {@link ChunksAPI}). For high-frequency
9
+ * base64 state blob, and who/when. `getChunk` applies these edits to the chunk it
10
+ * returns, as entries of its `voxelStates`; the packed grid itself is written only
11
+ * by `updateChunk` (see {@link ChunksAPI}). For high-frequency
11
12
  * realtime edits prefer the UDP path (`client.udp.sendVoxelUpdate(...)`); use
12
13
  * this API for authoritative reads, audit history, and administrative rollback.
13
14
  *
@@ -66,10 +67,12 @@ export class VoxelsAPI {
66
67
  }
67
68
  /**
68
69
  * Record (upsert) a single voxel edit in the `voxel_updates` log for one chunk.
69
- * **Writes world state**; a background job later folds the edit into the
70
- * chunk's packed grid. Requires voxel-edit permission for the target region:
71
- * active app access plus the `update_voxel_data` runtime permission (and, where
72
- * grids cover the chunk, `update_voxel_data` on a covering grid).
70
+ * **Writes world state**; `getChunk` returns the edit in the chunk's
71
+ * `voxelStates` (the packed grid is written only by `updateChunk`). Requires
72
+ * voxel-edit permission for the target region: active app access, the
73
+ * `update_voxel_data` tier permission, and `update_voxel_data` on the most
74
+ * specific grid covering the chunk. A chunk no grid covers is refused, and so
75
+ * is one only the app's world grid covers while its wilderness is closed.
73
76
  *
74
77
  * @param input - {@link UpdateVoxelInput}: `appId`, chunk `coordinates`, the
75
78
  * local voxel `location` and the `voxelType` to write (app-defined
@@ -4596,7 +4596,7 @@ export type Mutation = {
4596
4596
  confirmEmail: Scalars['Boolean']['output'];
4597
4597
  /** Open the UDP proxy session for this game token (idempotent: returns the existing status if one is already open). Binds a socket and selects the game server with the fewest clients on first open. Optional: send mutations and udpNotifications also create a session lazily when none exists. To force a fresh socket, call disconnectUdpProxy first. */
4598
4598
  connectUdpProxy: UdpProxyConnectionStatus;
4599
- /** Operator only. Credit the payer of an over-billed charge (an I3 finding: an allowance or rate was raised after the charge landed) the difference, and close the charge row. Idempotent per charge state. SIDE EFFECT: a wallet credit and a CREDIT event. */
4599
+ /** Operator only. Close an over-billed charge (an I3 finding: its priced total fell below what was billed and written off). The billed part of the difference is credited to the payer (a wallet credit and a CREDIT event); a written-off part (an exempt org) was never paid, so no money moves and a WRITE_OFF event of the opposite sign (reason OVERBILL_REVERSAL) offsets it. creditedMicrousd is the wallet credit only. Idempotent per charge state. */
4600
4600
  cpBillingCreditOverbill: BillingCreditResult;
4601
4601
  /** Operator only (is_operator or is_super_admin). Publish or release an emergency kill for one app. This state is separate from the app's own kill and always takes precedence in Management's effective envelope; app users cannot clear it. SIDE EFFECTS: revision increment and a sanitized audit event. NOTHING IS PUSHED TO GAME API: preemption takes effect when its runtime next pulls this app's crowdy.studio-agent-policy/1 replica, which is within about a minute for an app already holding one and not at all for an app that does not until a permitted caller asks. Releasing the operator kill does not enable the app or clear its own kill. Stable errors: AGENT_POLICY_INVALID, AGENT_POLICY_REVISION_CONFLICT, IDEMPOTENCY_CONFLICT. */
4602
4602
  cpSetCrowdyStudioAgentAppKill: CrowdyStudioAgentPolicy;
@@ -8261,13 +8261,13 @@ export type SetRateCardInput = {
8261
8261
  acknowledgeRepricing?: InputMaybe<Scalars['Boolean']['input']>;
8262
8262
  /** true removes the dimension's bands so it is priced flat at priceCents (the former first band's price unless priceCents is also given). Not combinable with priceBands. */
8263
8263
  clearPriceBands?: InputMaybe<Scalars['Boolean']['input']>;
8264
- /** New hourly free allowance in raw metric units, as a BigInt decimal string. Must be >= 0. Omit to leave the allowance unchanged. */
8264
+ /** New hourly free allowance in raw metric units, as a BigInt decimal string. Must be >= 0. Omit to leave the allowance unchanged. Like a price, it applies from a dimension's next period where a period has already been charged. */
8265
8265
  freePerHour?: InputMaybe<Scalars['BigInt']['input']>;
8266
- /** New monthly free allowance in raw metric units, as a BigInt decimal string. Must be >= 0. On the PLAYER card with metric player_wasm_compute_units this is the pooled monthly TRIAL BUDGET per (player, app) — the only sanctioned way to change it on a live tier. Omit to leave it unchanged. */
8266
+ /** New monthly free allowance in raw metric units, as a BigInt decimal string. Must be >= 0. On the PLAYER card with metric player_wasm_compute_units this is the pooled monthly TRIAL BUDGET per (player, app) — the only sanctioned way to change it on a live tier. Omit to leave it unchanged. Like a price, it applies from a dimension's next period where a period has already been charged. */
8267
8267
  freePerMonth?: InputMaybe<Scalars['BigInt']['input']>;
8268
8268
  /** New period for the free allowance. Leaves the units as they are unless freeUnits is also given. Moving a dimension to MONTH is how the development quota is stated. */
8269
8269
  freePeriod?: InputMaybe<AllowancePeriod>;
8270
- /** New free allowance in raw metric units per freePeriod, as a BigInt decimal string. Must be >= 0. Leaves the period as it is unless freePeriod is also given. Not combinable with freePerHour, which is the older spelling of freeUnits with freePeriod HOUR. */
8270
+ /** New free allowance in raw metric units per freePeriod, as a BigInt decimal string. Must be >= 0. Leaves the period as it is unless freePeriod is also given. Not combinable with freePerHour, which is the older spelling of freeUnits with freePeriod HOUR. Like a price, it applies from a dimension's next period where a period has already been charged. */
8271
8271
  freeUnits?: InputMaybe<Scalars['BigInt']['input']>;
8272
8272
  /** The metered dimension to reprice. Refused unless the platform actually meters it: a rate for an unmetered metric bills nobody while appearing configured. */
8273
8273
  metric: Scalars['String']['input'];