@crowdedkingdoms/crowdyjs 12.1.0 → 12.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -1
- package/dist/domains/gameModel.d.ts +68 -1
- package/dist/domains/gameModel.d.ts.map +1 -1
- package/dist/domains/gameModel.js +88 -1
- package/dist/generated/graphql.d.ts +132 -15
- package/dist/generated/graphql.d.ts.map +1 -1
- package/dist/generated/graphql.js +12 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/kit/npcs.d.ts.map +1 -1
- package/dist/kit/social.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -39,6 +39,16 @@ CrowdyJS v4 targets browsers by default and uses native `fetch`, `WebSocket`, `c
|
|
|
39
39
|
> `marketplace.claimGridChunk` / `marketplace.releaseClaimedGrid` require the
|
|
40
40
|
> corresponding 2026-07-22 Game API claim schema. Older servers reject only
|
|
41
41
|
> those operations during GraphQL validation.
|
|
42
|
+
>
|
|
43
|
+
> **App-scoped player-count compatibility:** `gameModel.activePlayerCount(appId)`
|
|
44
|
+
> and `gameModel.activePlayerCountChanged({ appId }, handlers)` require the
|
|
45
|
+
> matching 2026-07-24 Game API schema and an app token scoped to that exact app;
|
|
46
|
+
> the subscription also requires `wsUrl`. They count active gameplay sessions,
|
|
47
|
+
> not distinct users or actors, and an abandoned session can remain counted for
|
|
48
|
+
> approximately 120 seconds. Only `FRESH` snapshots are complete:
|
|
49
|
+
> `PARTIAL`/`UNAVAILABLE` are not authoritative zeroes. The subscription is
|
|
50
|
+
> best-effort and has no initial event; establish it, query the snapshot,
|
|
51
|
+
> deduplicate by `revision`, and requery after reconnects or revision gaps.
|
|
42
52
|
|
|
43
53
|
> **v8.21.1 Node realtime routing hotfix:** app-routing responses provide a
|
|
44
54
|
> WebSocket base URL. CrowdyJS now normalizes that base to `/graphql` before
|
|
@@ -155,7 +165,7 @@ If `managementUrl` is omitted, the SDK falls back to `httpUrl` for backwards-com
|
|
|
155
165
|
| `client.host` | Game-host election (`get`, `amIHost`) + actor liveness `heartbeat`. `amIHost` is UI convenience only — authoritative host gating uses `gameModelInvoke`'s `is_host` policy. |
|
|
156
166
|
| `client.teleport` | Teleport requests. |
|
|
157
167
|
| `client.channels`, `client.teams` | Messaging channels and app-scoped player teams (membership + roles). |
|
|
158
|
-
| `client.gameModel` | Abstract game model: containers, properties, functions (incl. model-driven `notify_*` effects), sessions, and **automations / NPCs** (`upsertAutomation`, `runAutomation`, `automationRuns`, `automationStats`, …). |
|
|
168
|
+
| `client.gameModel` | Abstract game model: containers, properties, functions (incl. model-driven `notify_*` effects), sessions, **app-scoped active-session counts** (`activePlayerCount`, `activePlayerCountChanged`), and **automations / NPCs** (`upsertAutomation`, `runAutomation`, `automationRuns`, `automationStats`, …). |
|
|
159
169
|
| `client.compute` | **Compute Modules** — server-side Rust/WASM logic: author + deploy source (`upsertModule`, `deployVersion`, `waitForCompile`), triggers + policy, synchronous `invoke`, and monitoring (`moduleRuns`, `moduleStats`, `moduleLogs`, `appDiagnostics`). Modules run server-only; see [Compute Modules docs](https://docs.crowdedkingdoms.com/game-api/compute-modules). |
|
|
160
170
|
| `client.playerCompute` | Player-authored SERVER/CLIENT Rust/WASM bound to player-owned grids: deploy source, activate/deactivate, list modules/versions, and delete self-authored modules. |
|
|
161
171
|
| `client.crowdyStudio` | Cloud project, personal-library, and common-file APIs for Crowdy Studio: target-scoped files, metadata/module names, pairing preference, optimistic revisions, copy-by-value imports, and atomic metadata/file saves. Generated operations are pinned to the committed merged SDL. |
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { GraphQLClient } from '../client.js';
|
|
2
|
-
import { type GameModelCreateSessionMutation, type GameModelCreateSessionMutationVariables, type GameModelJoinSessionMutation, type GameModelJoinSessionMutationVariables, type GameModelSetSessionTurnMutation, type GameModelSetSessionTurnMutationVariables, type GameModelCreateContainerMutation, type GameModelCreateContainerMutationVariables, type GameModelDeleteContainerMutation, type GameModelDeleteContainerMutationVariables, type GameModelSetPropertyMutation, type GameModelSetPropertyMutationVariables, type GameModelAddEdgeMutation, type GameModelAddEdgeMutationVariables, type GameModelDeleteEdgeMutation, type GameModelDeleteEdgeMutationVariables, type GameModelInvokeMutation, type GameModelInvokeMutationVariables, type GameModelContainerQuery, type GameModelContainerQueryVariables, GameModelContainerChangedSubscription, GameModelContainerChangedSubscriptionVariables, type GameModelContainersQuery, type GameModelContainersQueryVariables, type GameModelContainerStateQuery, type GameModelContainerStateQueryVariables, type GameModelTraverseQuery, type GameModelTraverseQueryVariables, type GameModelSessionQuery, type GameModelSessionQueryVariables, type GameModelSessionsQuery, type GameModelSessionsQueryVariables, type GameModelEventsQuery, type GameModelEventsQueryVariables, type GameModelFlowQuery, type GameModelFlowQueryVariables, type GameModelSeedMutation, type GameModelSeedMutationVariables, type GameModelUpsertContainerTypeMutation, type GameModelUpsertContainerTypeMutationVariables, type GameModelUpsertPropertyDefMutation, type GameModelUpsertPropertyDefMutationVariables, type GameModelDeletePropertyDefMutation, type GameModelDeletePropertyDefMutationVariables, type GameModelDeleteContainerTypeMutation, type GameModelDeleteContainerTypeMutationVariables, type GameModelUpsertFunctionMutation, type GameModelUpsertFunctionMutationVariables, type GameModelDeleteFunctionMutation, type GameModelDeleteFunctionMutationVariables, type GameModelDefineFeatureMutation, type GameModelDefineFeatureMutationVariables, type GameModelGrantTierFeatureMutation, type GameModelGrantTierFeatureMutationVariables, type GameModelSetPolicyMutation, type GameModelSetPolicyMutationVariables, type GameModelTypeSchemaQuery, type GameModelTypeSchemaQueryVariables, type GameModelContainerTypesQuery, type GameModelContainerTypesQueryVariables, type GameModelPropertyDefsQuery, type GameModelPropertyDefsQueryVariables, type GameModelFunctionQuery, type GameModelFunctionQueryVariables, type GameModelFunctionsQuery, type GameModelFunctionsQueryVariables, type GameModelFeaturesQuery, type GameModelFeaturesQueryVariables, type GameModelTierFeaturesQuery, type GameModelTierFeaturesQueryVariables, type GameModelPolicyQuery, type GameModelPolicyQueryVariables, type GameModelRevokeTierFeatureMutation, type GameModelRevokeTierFeatureMutationVariables, type GameModelEventsConnectionQuery, type GameModelEventsConnectionQueryVariables, type GameModelUpsertAutomationMutation, type GameModelUpsertAutomationMutationVariables, type GameModelDeleteAutomationMutation, type GameModelDeleteAutomationMutationVariables, type GameModelSetAutomationEnabledMutation, type GameModelSetAutomationEnabledMutationVariables, type GameModelUpsertAutomationTriggerMutation, type GameModelUpsertAutomationTriggerMutationVariables, type GameModelDeleteAutomationTriggerMutation, type GameModelDeleteAutomationTriggerMutationVariables, type GameModelSetAutomationPolicyMutation, type GameModelSetAutomationPolicyMutationVariables, type GameModelRunAutomationMutation, type GameModelRunAutomationMutationVariables, type GameModelAutomationsQuery, type GameModelAutomationsQueryVariables, type GameModelAutomationQuery, type GameModelAutomationQueryVariables, type GameModelAutomationTriggersQuery, type GameModelAutomationTriggersQueryVariables, type GameModelAutomationPolicyQuery, type GameModelAutomationPolicyQueryVariables, type GameModelAutomationRunsQuery, type GameModelAutomationRunsQueryVariables, type GameModelAutomationStatsQuery, type GameModelAutomationStatsQueryVariables, type GameModelAppDiagnosticsQuery, type GameModelAppDiagnosticsQueryVariables } from '../generated/graphql.js';
|
|
2
|
+
import { type GameModelCreateSessionMutation, type GameModelCreateSessionMutationVariables, type GameModelJoinSessionMutation, type GameModelJoinSessionMutationVariables, type GameModelSetSessionTurnMutation, type GameModelSetSessionTurnMutationVariables, type GameModelCreateContainerMutation, type GameModelCreateContainerMutationVariables, type GameModelDeleteContainerMutation, type GameModelDeleteContainerMutationVariables, type GameModelSetPropertyMutation, type GameModelSetPropertyMutationVariables, type GameModelAddEdgeMutation, type GameModelAddEdgeMutationVariables, type GameModelDeleteEdgeMutation, type GameModelDeleteEdgeMutationVariables, type GameModelInvokeMutation, type GameModelInvokeMutationVariables, type GameModelContainerQuery, type GameModelContainerQueryVariables, GameModelContainerChangedSubscription, GameModelContainerChangedSubscriptionVariables, type GameModelActivePlayerCountQuery, type GameModelActivePlayerCountQueryVariables, type GameModelActivePlayerCountChangedSubscription, type GameModelActivePlayerCountChangedSubscriptionVariables, type GameModelContainersQuery, type GameModelContainersQueryVariables, type GameModelContainerStateQuery, type GameModelContainerStateQueryVariables, type GameModelTraverseQuery, type GameModelTraverseQueryVariables, type GameModelSessionQuery, type GameModelSessionQueryVariables, type GameModelSessionsQuery, type GameModelSessionsQueryVariables, type GameModelEventsQuery, type GameModelEventsQueryVariables, type GameModelFlowQuery, type GameModelFlowQueryVariables, type GameModelSeedMutation, type GameModelSeedMutationVariables, type GameModelUpsertContainerTypeMutation, type GameModelUpsertContainerTypeMutationVariables, type GameModelUpsertPropertyDefMutation, type GameModelUpsertPropertyDefMutationVariables, type GameModelDeletePropertyDefMutation, type GameModelDeletePropertyDefMutationVariables, type GameModelDeleteContainerTypeMutation, type GameModelDeleteContainerTypeMutationVariables, type GameModelUpsertFunctionMutation, type GameModelUpsertFunctionMutationVariables, type GameModelDeleteFunctionMutation, type GameModelDeleteFunctionMutationVariables, type GameModelDefineFeatureMutation, type GameModelDefineFeatureMutationVariables, type GameModelGrantTierFeatureMutation, type GameModelGrantTierFeatureMutationVariables, type GameModelSetPolicyMutation, type GameModelSetPolicyMutationVariables, type GameModelTypeSchemaQuery, type GameModelTypeSchemaQueryVariables, type GameModelContainerTypesQuery, type GameModelContainerTypesQueryVariables, type GameModelPropertyDefsQuery, type GameModelPropertyDefsQueryVariables, type GameModelFunctionQuery, type GameModelFunctionQueryVariables, type GameModelFunctionsQuery, type GameModelFunctionsQueryVariables, type GameModelFeaturesQuery, type GameModelFeaturesQueryVariables, type GameModelTierFeaturesQuery, type GameModelTierFeaturesQueryVariables, type GameModelPolicyQuery, type GameModelPolicyQueryVariables, type GameModelRevokeTierFeatureMutation, type GameModelRevokeTierFeatureMutationVariables, type GameModelEventsConnectionQuery, type GameModelEventsConnectionQueryVariables, type GameModelUpsertAutomationMutation, type GameModelUpsertAutomationMutationVariables, type GameModelDeleteAutomationMutation, type GameModelDeleteAutomationMutationVariables, type GameModelSetAutomationEnabledMutation, type GameModelSetAutomationEnabledMutationVariables, type GameModelUpsertAutomationTriggerMutation, type GameModelUpsertAutomationTriggerMutationVariables, type GameModelDeleteAutomationTriggerMutation, type GameModelDeleteAutomationTriggerMutationVariables, type GameModelSetAutomationPolicyMutation, type GameModelSetAutomationPolicyMutationVariables, type GameModelRunAutomationMutation, type GameModelRunAutomationMutationVariables, type GameModelAutomationsQuery, type GameModelAutomationsQueryVariables, type GameModelAutomationQuery, type GameModelAutomationQueryVariables, type GameModelAutomationTriggersQuery, type GameModelAutomationTriggersQueryVariables, type GameModelAutomationPolicyQuery, type GameModelAutomationPolicyQueryVariables, type GameModelAutomationRunsQuery, type GameModelAutomationRunsQueryVariables, type GameModelAutomationStatsQuery, type GameModelAutomationStatsQueryVariables, type GameModelAppDiagnosticsQuery, type GameModelAppDiagnosticsQueryVariables } from '../generated/graphql.js';
|
|
3
3
|
/**
|
|
4
4
|
* Abstract **game-model** sub-client on the **game-api** — a schema-driven,
|
|
5
5
|
* server-authoritative layer for modelling game/world logic on top of the
|
|
@@ -92,6 +92,24 @@ export interface ContainerChangedHandlers {
|
|
|
92
92
|
*/
|
|
93
93
|
webSocketImpl?: unknown;
|
|
94
94
|
}
|
|
95
|
+
/** A snapshot returned by {@link GameModelAPI.activePlayerCount}. */
|
|
96
|
+
export type GmActivePlayerCountSnapshot = GameModelActivePlayerCountQuery['gameModelActivePlayerCount'];
|
|
97
|
+
/** One count transition from {@link GameModelAPI.activePlayerCountChanged}. */
|
|
98
|
+
export type GmActivePlayerCountChangeEvent = GameModelActivePlayerCountChangedSubscription['gameModelActivePlayerCountChanged'];
|
|
99
|
+
/** Handlers for {@link GameModelAPI.activePlayerCountChanged}. */
|
|
100
|
+
export interface ActivePlayerCountChangedHandlers {
|
|
101
|
+
/** A complete app-scoped active-session count transition. */
|
|
102
|
+
next: (change: GmActivePlayerCountChangeEvent) => void;
|
|
103
|
+
/** Transport/GraphQL errors (the subscription retries on socket drops). */
|
|
104
|
+
error?: (error: unknown) => void;
|
|
105
|
+
/** The server ended the stream. */
|
|
106
|
+
complete?: () => void;
|
|
107
|
+
/**
|
|
108
|
+
* WebSocket constructor for runtimes without a global `WebSocket` (Node
|
|
109
|
+
* ≤ 21): pass `(await import('ws')).default`.
|
|
110
|
+
*/
|
|
111
|
+
webSocketImpl?: unknown;
|
|
112
|
+
}
|
|
95
113
|
export declare class GameModelAPI {
|
|
96
114
|
private gql;
|
|
97
115
|
private readonly ws?;
|
|
@@ -99,6 +117,55 @@ export declare class GameModelAPI {
|
|
|
99
117
|
wsUrl?: string;
|
|
100
118
|
getToken: () => string | null;
|
|
101
119
|
} | undefined);
|
|
120
|
+
/**
|
|
121
|
+
* **Player count** — read the best-known number of active gameplay sessions
|
|
122
|
+
* for one app. Requires a bearer token scoped to exactly `appId`.
|
|
123
|
+
*
|
|
124
|
+
* This is a **session count**, not a distinct-user or actor count: one user
|
|
125
|
+
* with multiple active sessions contributes more than once. A session that
|
|
126
|
+
* disappears without a clean disconnect can remain counted for approximately
|
|
127
|
+
* 120 seconds while its inactivity is recognized.
|
|
128
|
+
*
|
|
129
|
+
* Treat the result as authoritative only when `status === 'FRESH'`.
|
|
130
|
+
* `PARTIAL` is an incomplete best-known count and `UNAVAILABLE` means no fresh
|
|
131
|
+
* observation exists; neither status is an authoritative zero. `appId` and
|
|
132
|
+
* the monotonic `revision` are generated `BigInt` scalars represented as
|
|
133
|
+
* decimal strings.
|
|
134
|
+
*
|
|
135
|
+
* @param appId - App to count, as a decimal-string `BigInt`; it must match
|
|
136
|
+
* the app scope of the bearer token.
|
|
137
|
+
* @returns The generated snapshot payload: `appId`, `activePlayerCount`,
|
|
138
|
+
* `status`, nullable `observedAt`, and `revision`.
|
|
139
|
+
* @throws {CrowdyGraphQLError} `UNAUTHENTICATED` / `SCOPE_MISSING` when the
|
|
140
|
+
* token is missing or is not scoped to `appId`.
|
|
141
|
+
*/
|
|
142
|
+
activePlayerCount(appId: GameModelActivePlayerCountQueryVariables['appId']): Promise<GmActivePlayerCountSnapshot>;
|
|
143
|
+
/**
|
|
144
|
+
* **Player-count subscription** — stream complete active-session count
|
|
145
|
+
* transitions for one app. Requires a bearer token scoped to exactly
|
|
146
|
+
* `variables.appId` and a game-api `wsUrl` in the client config.
|
|
147
|
+
*
|
|
148
|
+
* This stream counts gameplay **sessions**, not distinct users or actors;
|
|
149
|
+
* abandoned sessions can remain counted for approximately 120 seconds while
|
|
150
|
+
* inactivity is recognized. It emits no initial/bootstrap event, so establish
|
|
151
|
+
* the stream and then call {@link activePlayerCount} for the current snapshot.
|
|
152
|
+
* `PARTIAL` and `UNAVAILABLE` observations neither emit transitions nor
|
|
153
|
+
* represent an authoritative zero.
|
|
154
|
+
*
|
|
155
|
+
* Delivery is best-effort and may miss or repeat events across reconnects.
|
|
156
|
+
* Deduplicate by the decimal-string `revision`. Requery
|
|
157
|
+
* {@link activePlayerCount} after every reconnect or whenever revisions have
|
|
158
|
+
* a gap; the query is the source of truth.
|
|
159
|
+
*
|
|
160
|
+
* @param variables - Exact call shape `{ appId }`, where `appId` is the
|
|
161
|
+
* decimal-string `BigInt` matching the app-scoped bearer token.
|
|
162
|
+
* @param handlers - `next` per transition; optional `error`, `complete`, and
|
|
163
|
+
* `webSocketImpl` for runtimes without a global `WebSocket`.
|
|
164
|
+
* @returns An unsubscribe function that disposes this subscription and its
|
|
165
|
+
* graphql-transport-ws client.
|
|
166
|
+
* @throws {Error} Synchronously when the client config has no `wsUrl`.
|
|
167
|
+
*/
|
|
168
|
+
activePlayerCountChanged(variables: GameModelActivePlayerCountChangedSubscriptionVariables, handlers: ActivePlayerCountChangedHandlers): () => void;
|
|
102
169
|
/**
|
|
103
170
|
* **Subscriptions** — stream container-change notifications for an app
|
|
104
171
|
* (`gameModelContainerChanged`): an invoke mutated a container, a direct
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gameModel.d.ts","sourceRoot":"","sources":["../../src/domains/gameModel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gameModel.d.ts","sourceRoot":"","sources":["../../src/domains/gameModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { createClient as createWsClient } from 'graphql-ws';
|
|
|
2
2
|
import { print } from 'graphql';
|
|
3
3
|
import {
|
|
4
4
|
// Runtime (player) ops
|
|
5
|
-
GameModelCreateSessionDocument, GameModelJoinSessionDocument, GameModelSetSessionTurnDocument, GameModelCreateContainerDocument, GameModelDeleteContainerDocument, GameModelSetPropertyDocument, GameModelAddEdgeDocument, GameModelDeleteEdgeDocument, GameModelInvokeDocument, GameModelContainerDocument, GameModelContainerChangedDocument, GameModelContainersDocument, GameModelContainerStateDocument, GameModelTraverseDocument, GameModelSessionDocument, GameModelSessionsDocument, GameModelEventsDocument, GameModelFlowDocument,
|
|
5
|
+
GameModelCreateSessionDocument, GameModelJoinSessionDocument, GameModelSetSessionTurnDocument, GameModelCreateContainerDocument, GameModelDeleteContainerDocument, GameModelSetPropertyDocument, GameModelAddEdgeDocument, GameModelDeleteEdgeDocument, GameModelInvokeDocument, GameModelContainerDocument, GameModelContainerChangedDocument, GameModelActivePlayerCountDocument, GameModelActivePlayerCountChangedDocument, GameModelContainersDocument, GameModelContainerStateDocument, GameModelTraverseDocument, GameModelSessionDocument, GameModelSessionsDocument, GameModelEventsDocument, GameModelFlowDocument,
|
|
6
6
|
// Studio authoring ops
|
|
7
7
|
GameModelSeedDocument, GameModelUpsertContainerTypeDocument, GameModelUpsertPropertyDefDocument, GameModelDeletePropertyDefDocument, GameModelDeleteContainerTypeDocument, GameModelUpsertFunctionDocument, GameModelDeleteFunctionDocument, GameModelDefineFeatureDocument, GameModelGrantTierFeatureDocument, GameModelSetPolicyDocument, GameModelTypeSchemaDocument, GameModelContainerTypesDocument, GameModelPropertyDefsDocument, GameModelFunctionDocument, GameModelFunctionsDocument, GameModelFeaturesDocument, GameModelTierFeaturesDocument, GameModelPolicyDocument, GameModelRevokeTierFeatureDocument, GameModelEventsConnectionDocument,
|
|
8
8
|
// Automations (autonomous processes / NPCs)
|
|
@@ -12,6 +12,93 @@ export class GameModelAPI {
|
|
|
12
12
|
this.gql = gql;
|
|
13
13
|
this.ws = ws;
|
|
14
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* **Player count** — read the best-known number of active gameplay sessions
|
|
17
|
+
* for one app. Requires a bearer token scoped to exactly `appId`.
|
|
18
|
+
*
|
|
19
|
+
* This is a **session count**, not a distinct-user or actor count: one user
|
|
20
|
+
* with multiple active sessions contributes more than once. A session that
|
|
21
|
+
* disappears without a clean disconnect can remain counted for approximately
|
|
22
|
+
* 120 seconds while its inactivity is recognized.
|
|
23
|
+
*
|
|
24
|
+
* Treat the result as authoritative only when `status === 'FRESH'`.
|
|
25
|
+
* `PARTIAL` is an incomplete best-known count and `UNAVAILABLE` means no fresh
|
|
26
|
+
* observation exists; neither status is an authoritative zero. `appId` and
|
|
27
|
+
* the monotonic `revision` are generated `BigInt` scalars represented as
|
|
28
|
+
* decimal strings.
|
|
29
|
+
*
|
|
30
|
+
* @param appId - App to count, as a decimal-string `BigInt`; it must match
|
|
31
|
+
* the app scope of the bearer token.
|
|
32
|
+
* @returns The generated snapshot payload: `appId`, `activePlayerCount`,
|
|
33
|
+
* `status`, nullable `observedAt`, and `revision`.
|
|
34
|
+
* @throws {CrowdyGraphQLError} `UNAUTHENTICATED` / `SCOPE_MISSING` when the
|
|
35
|
+
* token is missing or is not scoped to `appId`.
|
|
36
|
+
*/
|
|
37
|
+
async activePlayerCount(appId) {
|
|
38
|
+
const data = await this.gql.request(GameModelActivePlayerCountDocument, {
|
|
39
|
+
appId,
|
|
40
|
+
});
|
|
41
|
+
return data.gameModelActivePlayerCount;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* **Player-count subscription** — stream complete active-session count
|
|
45
|
+
* transitions for one app. Requires a bearer token scoped to exactly
|
|
46
|
+
* `variables.appId` and a game-api `wsUrl` in the client config.
|
|
47
|
+
*
|
|
48
|
+
* This stream counts gameplay **sessions**, not distinct users or actors;
|
|
49
|
+
* abandoned sessions can remain counted for approximately 120 seconds while
|
|
50
|
+
* inactivity is recognized. It emits no initial/bootstrap event, so establish
|
|
51
|
+
* the stream and then call {@link activePlayerCount} for the current snapshot.
|
|
52
|
+
* `PARTIAL` and `UNAVAILABLE` observations neither emit transitions nor
|
|
53
|
+
* represent an authoritative zero.
|
|
54
|
+
*
|
|
55
|
+
* Delivery is best-effort and may miss or repeat events across reconnects.
|
|
56
|
+
* Deduplicate by the decimal-string `revision`. Requery
|
|
57
|
+
* {@link activePlayerCount} after every reconnect or whenever revisions have
|
|
58
|
+
* a gap; the query is the source of truth.
|
|
59
|
+
*
|
|
60
|
+
* @param variables - Exact call shape `{ appId }`, where `appId` is the
|
|
61
|
+
* decimal-string `BigInt` matching the app-scoped bearer token.
|
|
62
|
+
* @param handlers - `next` per transition; optional `error`, `complete`, and
|
|
63
|
+
* `webSocketImpl` for runtimes without a global `WebSocket`.
|
|
64
|
+
* @returns An unsubscribe function that disposes this subscription and its
|
|
65
|
+
* graphql-transport-ws client.
|
|
66
|
+
* @throws {Error} Synchronously when the client config has no `wsUrl`.
|
|
67
|
+
*/
|
|
68
|
+
activePlayerCountChanged(variables, handlers) {
|
|
69
|
+
if (!this.ws?.wsUrl) {
|
|
70
|
+
throw new Error('activePlayerCountChanged requires a wsUrl in the client config (graphql-transport-ws endpoint)');
|
|
71
|
+
}
|
|
72
|
+
const client = createWsClient({
|
|
73
|
+
url: this.ws.wsUrl,
|
|
74
|
+
lazy: false,
|
|
75
|
+
retryAttempts: 8,
|
|
76
|
+
...(handlers.webSocketImpl
|
|
77
|
+
? { webSocketImpl: handlers.webSocketImpl }
|
|
78
|
+
: {}),
|
|
79
|
+
connectionParams: () => {
|
|
80
|
+
const token = this.ws?.getToken();
|
|
81
|
+
return token ? { Authorization: `Bearer ${token}` } : {};
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
const dispose = client.subscribe({ query: print(GameModelActivePlayerCountChangedDocument), variables }, {
|
|
85
|
+
next: (msg) => {
|
|
86
|
+
const data = msg.data;
|
|
87
|
+
if (data?.gameModelActivePlayerCountChanged) {
|
|
88
|
+
handlers.next(data.gameModelActivePlayerCountChanged);
|
|
89
|
+
}
|
|
90
|
+
else if (msg.errors) {
|
|
91
|
+
handlers.error?.(msg.errors);
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
error: (err) => handlers.error?.(err),
|
|
95
|
+
complete: () => handlers.complete?.(),
|
|
96
|
+
});
|
|
97
|
+
return () => {
|
|
98
|
+
dispose();
|
|
99
|
+
void client.dispose();
|
|
100
|
+
};
|
|
101
|
+
}
|
|
15
102
|
/**
|
|
16
103
|
* **Subscriptions** — stream container-change notifications for an app
|
|
17
104
|
* (`gameModelContainerChanged`): an invoke mutated a container, a direct
|
|
@@ -3831,6 +3831,27 @@ export type DevLoginInput = {
|
|
|
3831
3831
|
/** Email of the account to sign in as (created if absent). */
|
|
3832
3832
|
email: Scalars['String']['input'];
|
|
3833
3833
|
};
|
|
3834
|
+
/** Atomically get-or-create a container by an opaque binding key. The key is unique per (appId, typeName, sessionId); concurrent ensures converge on one row. Creation-only fields are ignored when the row already exists. */
|
|
3835
|
+
export type EnsureContainerInput = {
|
|
3836
|
+
/** The app (tenant) the container belongs to. */
|
|
3837
|
+
appId: Scalars['BigInt']['input'];
|
|
3838
|
+
/** Opaque client-derived key (max 128 chars) identifying the shared container within (appId, typeName, sessionId). All concurrent ensures with the same key return the same containerId. */
|
|
3839
|
+
bindingKey: Scalars['String']['input'];
|
|
3840
|
+
/** Optional description. Used ONLY when this call creates the row. */
|
|
3841
|
+
description?: InputMaybe<Scalars['String']['input']>;
|
|
3842
|
+
/** Human-friendly display name. Used ONLY when this call creates the row. */
|
|
3843
|
+
displayName: Scalars['String']['input'];
|
|
3844
|
+
/** JSON object of metadata. Used ONLY when this call creates the row. */
|
|
3845
|
+
metadataJson?: InputMaybe<Scalars['String']['input']>;
|
|
3846
|
+
/** Owner user id, same rules as CreateContainerInput (defaults to the caller for member/owner types, shared null for admin types). Used ONLY when this call creates the row. */
|
|
3847
|
+
ownerUserId?: InputMaybe<Scalars['BigInt']['input']>;
|
|
3848
|
+
/** Initial property values. Used ONLY when this call creates the row. */
|
|
3849
|
+
properties?: InputMaybe<Array<SeedPropertyInput>>;
|
|
3850
|
+
/** Optional session scoping the key and the container (omit for app-global). Two sessions may hold the same bindingKey independently. */
|
|
3851
|
+
sessionId?: InputMaybe<Scalars['String']['input']>;
|
|
3852
|
+
/** The container type to resolve or instantiate. */
|
|
3853
|
+
typeName: Scalars['String']['input'];
|
|
3854
|
+
};
|
|
3834
3855
|
/** One manifest component's change in a redeploy plan: what the environment currently runs vs what the target release pins. */
|
|
3835
3856
|
export type EnvironmentComponentChange = {
|
|
3836
3857
|
__typename?: 'EnvironmentComponentChange';
|
|
@@ -4025,7 +4046,7 @@ export type FunctionParamInput = {
|
|
|
4025
4046
|
/** int | float | string | bool | array | object | container_ref */
|
|
4026
4047
|
valueType: Scalars['String']['input'];
|
|
4027
4048
|
};
|
|
4028
|
-
/** A declarative grid-permission effect the function applies TRANSACTIONALLY with its property mutations: grant or revoke runtime grid permissions (the same ACL Buddy enforces on movement/voxel writes) driven by game logic. Expressions are compiled server-side and evaluated in the invocation context (params plus the injected $caller_user_id / $self_owner_id / $session_id / $current_turn_user_id). If an effect fails, the whole invocation rolls back. Applied effects are recorded on the invocation event. */
|
|
4049
|
+
/** A declarative grid-permission effect the function applies TRANSACTIONALLY with its property mutations: grant or revoke runtime grid permissions (the same ACL Buddy enforces on movement/voxel writes) driven by game logic. Expressions are compiled server-side and evaluated in the invocation context (params plus the injected $caller_user_id / $self_owner_id / $session_id / $current_turn_user_id / $self_container_id). If an effect fails, the whole invocation rolls back. Applied effects are recorded on the invocation event. */
|
|
4029
4050
|
export type FunctionPermissionEffectInput = {
|
|
4030
4051
|
/** 'grant' (upsert direct grants, optionally expiring) or 'revoke' (delete direct grants for the listed keys). */
|
|
4031
4052
|
action: Scalars['String']['input'];
|
|
@@ -4070,6 +4091,36 @@ export type GameHost = {
|
|
|
4070
4091
|
/** The user_id of the elected host. Stable while this user has at least one fresh row in `actors` for the app; the next-oldest user takes over automatically once the current host stops heartbeating (its rows age past HOST_ACTOR_FRESHNESS_SECONDS) or Buddy idle-evicts its last row. */
|
|
4071
4092
|
hostUserId: Scalars['BigInt']['output'];
|
|
4072
4093
|
};
|
|
4094
|
+
/** One durable transition between complete app-scoped active gameplay-session counts. Delivery is cross-replica but best-effort; deduplicate by revision and requery gameModelActivePlayerCount after reconnect or a revision gap. */
|
|
4095
|
+
export type GameModelActivePlayerCountChange = {
|
|
4096
|
+
__typename?: 'GameModelActivePlayerCountChange';
|
|
4097
|
+
/** The app whose complete active-session count changed. */
|
|
4098
|
+
appId: Scalars['BigInt']['output'];
|
|
4099
|
+
/** New complete active gameplay-session count after this transition. */
|
|
4100
|
+
currentCount: Scalars['Int']['output'];
|
|
4101
|
+
/** Signed change: currentCount minus previousCount. */
|
|
4102
|
+
delta: Scalars['Int']['output'];
|
|
4103
|
+
/** Latest fresh Buddy heartbeat represented by the new count. */
|
|
4104
|
+
observedAt: Scalars['DateTime']['output'];
|
|
4105
|
+
/** Last complete active gameplay-session count before this transition. */
|
|
4106
|
+
previousCount: Scalars['Int']['output'];
|
|
4107
|
+
/** Durable monotonic app revision for this transition. Use it to deduplicate and detect gaps. */
|
|
4108
|
+
revision: Scalars['BigInt']['output'];
|
|
4109
|
+
};
|
|
4110
|
+
/** A point-in-time app-scoped count of active gameplay sessions. This counts sessions, not actors or distinct users; one user with multiple active sessions contributes multiple players. Status states whether the fleet-wide count is complete. */
|
|
4111
|
+
export type GameModelActivePlayerCountSnapshot = {
|
|
4112
|
+
__typename?: 'GameModelActivePlayerCountSnapshot';
|
|
4113
|
+
/** Active gameplay sessions currently reported for the app. For PARTIAL this is the best-known sum from supported fresh Buddies; for UNAVAILABLE it is zero because no live report can be observed. Check status before treating it as a complete fleet total. */
|
|
4114
|
+
activePlayerCount: Scalars['Int']['output'];
|
|
4115
|
+
/** The app whose active gameplay sessions were counted. */
|
|
4116
|
+
appId: Scalars['BigInt']['output'];
|
|
4117
|
+
/** Latest heartbeat time represented by this observation, or null when no fresh Buddy is available. */
|
|
4118
|
+
observedAt: Maybe<Scalars['DateTime']['output']>;
|
|
4119
|
+
/** Durable monotonic revision of complete count changes. Zero means the app is untracked or has not changed after its silent baseline. Partial and unavailable observations never advance it. */
|
|
4120
|
+
revision: Scalars['BigInt']['output'];
|
|
4121
|
+
/** Whether activePlayerCount is complete (FRESH), a supported-Buddy subset (PARTIAL), or unavailable because no Buddy heartbeat is fresh (UNAVAILABLE). */
|
|
4122
|
+
status: GameModelPlayerCountStatus;
|
|
4123
|
+
};
|
|
4073
4124
|
/** Relay-style cursor-paginated connection over the function-invocation event log (GmEvent). Page with `first`/`after`; cursors are opaque. */
|
|
4074
4125
|
export type GameModelEventsConnection = {
|
|
4075
4126
|
__typename?: 'GameModelEventsConnection';
|
|
@@ -4080,6 +4131,15 @@ export type GameModelEventsConnection = {
|
|
|
4080
4131
|
/** Total matching records across all pages, when known (null for sources that do not compute a total). */
|
|
4081
4132
|
totalCount: Maybe<Scalars['Int']['output']>;
|
|
4082
4133
|
};
|
|
4134
|
+
/** Completeness of an app-scoped active gameplay-session count across the fresh Buddy fleet. */
|
|
4135
|
+
export declare enum GameModelPlayerCountStatus {
|
|
4136
|
+
/** At least one non-Offline Buddy heartbeat is fresh and every fresh Buddy supports version 1 app-scoped counts. The count is complete. */
|
|
4137
|
+
Fresh = "FRESH",
|
|
4138
|
+
/** At least one non-Offline Buddy heartbeat is fresh, but one or more fresh Buddies do not support app-scoped counts. The count is only the best-known supported-Buddy sum and does not advance change revisions. */
|
|
4139
|
+
Partial = "PARTIAL",
|
|
4140
|
+
/** No non-Offline Buddy heartbeat is fresh enough to observe. The count is unavailable and does not advance change revisions. */
|
|
4141
|
+
Unavailable = "UNAVAILABLE"
|
|
4142
|
+
}
|
|
4083
4143
|
/** Asynchronous error from the UDP game server for a previously sent datagram (e.g. a send* mutation). Delivered as a member of the udpNotifications union, NOT as a GraphQL error on the mutation (which only reports whether the datagram was accepted for sending). Match it to the originating send via sequenceNumber and read errorCode for the reason. Note: not every failure produces one — some auth failures are dropped silently (see UdpErrorCode). */
|
|
4084
4144
|
export type GenericErrorResponse = {
|
|
4085
4145
|
__typename?: 'GenericErrorResponse';
|
|
@@ -4350,22 +4410,22 @@ export type GmAutomationStats = {
|
|
|
4350
4410
|
/** The window size in minutes. */
|
|
4351
4411
|
windowMinutes: Scalars['Int']['output'];
|
|
4352
4412
|
};
|
|
4353
|
-
/** An event subscription that fires an automation in reaction to model activity (matched in the API server, not
|
|
4413
|
+
/** An event subscription that fires an automation in reaction to model activity or a complete app-scoped active-player-count transition (matched in the API server, not a DB trigger). */
|
|
4354
4414
|
export type GmAutomationTrigger = {
|
|
4355
4415
|
__typename?: 'GmAutomationTrigger';
|
|
4356
4416
|
/** The app (tenant). */
|
|
4357
4417
|
appId: Scalars['BigInt']['output'];
|
|
4358
4418
|
/** The automation this trigger fires. */
|
|
4359
4419
|
automationId: Scalars['String']['output'];
|
|
4360
|
-
/** Filter: only this container type. */
|
|
4420
|
+
/** Filter: only this container type. Always null for player_count_changed. */
|
|
4361
4421
|
containerTypeName: Maybe<Scalars['String']['output']>;
|
|
4362
|
-
/** Debounce
|
|
4422
|
+
/** Debounce window in ms. player_count_changed coalesces on the trailing edge; other model events use their existing leading-edge behavior. */
|
|
4363
4423
|
debounceMs: Scalars['Int']['output'];
|
|
4364
|
-
/** Filter: only this function name. */
|
|
4424
|
+
/** Filter: only this function name. Always null for player_count_changed. */
|
|
4365
4425
|
functionName: Maybe<Scalars['String']['output']>;
|
|
4366
|
-
/**
|
|
4426
|
+
/** Observed event: function_invoked | property_changed | container_created | player_count_changed. */
|
|
4367
4427
|
onEvent: Scalars['String']['output'];
|
|
4368
|
-
/** Filter: only this property key. */
|
|
4428
|
+
/** Filter: only this property key. Always null for player_count_changed. */
|
|
4369
4429
|
propertyKey: Maybe<Scalars['String']['output']>;
|
|
4370
4430
|
/** Unique trigger id (UUID). */
|
|
4371
4431
|
triggerId: Scalars['String']['output'];
|
|
@@ -4375,6 +4435,8 @@ export type GmContainer = {
|
|
|
4375
4435
|
__typename?: 'GmContainer';
|
|
4376
4436
|
/** The app (tenant) that owns the container. */
|
|
4377
4437
|
appId: Scalars['BigInt']['output'];
|
|
4438
|
+
/** Opaque client-derived key the container was ensured under (unique per appId + typeName + sessionId), or null when it was created without one. */
|
|
4439
|
+
bindingKey: Maybe<Scalars['String']['output']>;
|
|
4378
4440
|
/** Unique container id (UUID). */
|
|
4379
4441
|
containerId: Scalars['String']['output'];
|
|
4380
4442
|
/** Optional description. */
|
|
@@ -4460,6 +4522,14 @@ export type GmEdge = {
|
|
|
4460
4522
|
/** Optional edge weight. */
|
|
4461
4523
|
weight: Maybe<Scalars['Float']['output']>;
|
|
4462
4524
|
};
|
|
4525
|
+
/** Result of gameModelEnsureContainer: the resolved container plus whether this call inserted it. */
|
|
4526
|
+
export type GmEnsureContainerResult = {
|
|
4527
|
+
__typename?: 'GmEnsureContainerResult';
|
|
4528
|
+
/** The container all ensures of this key converge on. */
|
|
4529
|
+
container: GmContainer;
|
|
4530
|
+
/** True when THIS call created the row; false when it resolved an existing one (creation-only input fields were ignored). */
|
|
4531
|
+
created: Scalars['Boolean']['output'];
|
|
4532
|
+
};
|
|
4463
4533
|
/** An audit-log entry recording one function invocation and its outcome. */
|
|
4464
4534
|
export type GmEvent = {
|
|
4465
4535
|
__typename?: 'GmEvent';
|
|
@@ -5465,6 +5535,8 @@ export type Mutation = {
|
|
|
5465
5535
|
gameModelDeleteFunction: Scalars['Boolean']['output'];
|
|
5466
5536
|
/** Delete a property definition from a container type. Does not remove instance property values already stored on containers. Requires app-admin ('manage_apps'). DESTRUCTIVE. Returns true if a definition was deleted. */
|
|
5467
5537
|
gameModelDeletePropertyDef: Scalars['Boolean']['output'];
|
|
5538
|
+
/** Atomically get-or-create a container by an opaque bindingKey, unique per (appId, typeName, sessionId). Concurrent ensures with the same key all return the SAME containerId and exactly one response has created: true — no client-side leader election or list-then-create coordination is needed for shared world objects. When the row already exists this behaves like a read (creation-only fields are ignored and the type's instantiableBy rule is NOT enforced); when it does not exist, creation is authorized exactly like gameModelCreateContainer (instantiableBy + owner rules), so a caller who may not instantiate the type errors only in the not-exists case. NOTE: bindingKey is client-supplied and not yet policy-governed; shared world objects should use admin-instantiable types so only app admins can create the keyed row. Requires a valid token. */
|
|
5539
|
+
gameModelEnsureContainer: GmEnsureContainerResult;
|
|
5468
5540
|
/** Grant a feature key to an access tier, so users on that tier satisfy tier_feature authority checks for it. Requires app-admin ('manage_apps'). */
|
|
5469
5541
|
gameModelGrantTierFeature: GmTierFeature;
|
|
5470
5542
|
/** Invoke a studio-defined function against a 'self' container with JSON params. The server enforces the function's invoke policy (authority rule tree: owner_of_self / is_host / is_current_turn / is_participant / tier_feature / group_permission / grid_permission / condition), evaluates its expressions, atomically applies its declared property mutations, logs an event, and returns the result (return value + mutations applied, or success=false with an error message). Invoke-policy denials are gameplay verdicts, NOT exceptions: they return success=false with errorMessage and log a failure event (observable via gameModelEvents). Scope violations (calling a server-scope function as a non-admin, or an internal function directly) are misconfigurations and throw FORBIDDEN. This is the primary, safe way for players to mutate game state. Requires a valid token; only player-scope functions are invocable here. */
|
|
@@ -5489,7 +5561,7 @@ export type Mutation = {
|
|
|
5489
5561
|
gameModelSetSessionTurn: GmSession;
|
|
5490
5562
|
/** Create or update an autonomous process ("automation" / NPC): a server-driven entry-point function bound to a trigger (schedule | event | manual), an optional run-as identity, a target/candidate selector, and a per-automation safety budget. The entry-point function must be marked autonomousInvocable. Idempotent on (app, name). Requires app-admin ('manage_apps'). */
|
|
5491
5563
|
gameModelUpsertAutomation: GmAutomation;
|
|
5492
|
-
/** Create an event trigger that fires an automation in reaction to model activity
|
|
5564
|
+
/** Create an event trigger that fires an automation in reaction to model activity or a complete app-scoped active-player-count transition. player_count_changed rejects model filters, starts silent-baseline tracking, injects reserved previous/current/delta/revision params, and uses trailing-edge debounce; other event behavior is unchanged. Matched in the API server post-commit. Requires app-admin ('manage_apps'). */
|
|
5493
5565
|
gameModelUpsertAutomationTrigger: GmAutomationTrigger;
|
|
5494
5566
|
/** Create or update a container type: the studio-defined schema for a kind of runtime entity (like a class). Idempotent on (app, typeName). Requires app-admin ('manage_apps'). */
|
|
5495
5567
|
gameModelUpsertContainerType: GmContainerType;
|
|
@@ -6122,6 +6194,9 @@ export type MutationGameModelDeletePropertyDefArgs = {
|
|
|
6122
6194
|
containerTypeName: Scalars['String']['input'];
|
|
6123
6195
|
key: Scalars['String']['input'];
|
|
6124
6196
|
};
|
|
6197
|
+
export type MutationGameModelEnsureContainerArgs = {
|
|
6198
|
+
input: EnsureContainerInput;
|
|
6199
|
+
};
|
|
6125
6200
|
export type MutationGameModelGrantTierFeatureArgs = {
|
|
6126
6201
|
input: GrantTierFeatureInput;
|
|
6127
6202
|
};
|
|
@@ -7897,6 +7972,8 @@ export type Query = {
|
|
|
7897
7972
|
gameClientBootstrap: GameClientBootstrap;
|
|
7898
7973
|
/** Returns the single elected host user for an app (game). Deterministic across all cks-game-api replicas behind the LB: the user whose earliest still-connected actor row was created first wins, with a uuid tiebreaker. Returns null when no actors exist for the app. Stale actors (no recent actorHeartbeat) are excluded once HOST_ACTOR_FRESHNESS_SECONDS is enabled. Clients should poll; there is no host-change subscription in v1. */
|
|
7899
7974
|
gameHost: Maybe<GameHost>;
|
|
7975
|
+
/** Read the best-known app-scoped number of active gameplay sessions across fresh non-Offline Buddy servers. This counts sessions, not actors or distinct users. FRESH is a complete fleet total; PARTIAL is only the supported-Buddy subset; UNAVAILABLE has no fresh observation. Partial/unavailable samples never create count-change revisions. Requires an app-scoped token for this exact app. */
|
|
7976
|
+
gameModelActivePlayerCount: GameModelActivePlayerCountSnapshot;
|
|
7900
7977
|
/** A snapshot of an app's game-model footprint and recent activity: container/property/edge/session/function/automation row counts, total + 24h event volume, failed + automation-driven invocations, and the most-invoked functions. Helps developers understand what is in their game and their database. Requires app-admin ('manage_apps'). */
|
|
7901
7978
|
gameModelAppDiagnostics: GmAppDiagnostics;
|
|
7902
7979
|
/** Fetch one automation by name, including its circuit-breaker state. Requires app-admin ('manage_apps'). */
|
|
@@ -7917,7 +7994,7 @@ export type Query = {
|
|
|
7917
7994
|
gameModelContainerState: GmContainerState;
|
|
7918
7995
|
/** List all container types defined for an app. Requires app-admin ('manage_apps'). */
|
|
7919
7996
|
gameModelContainerTypes: Array<GmContainerType>;
|
|
7920
|
-
/** List containers in an app, optionally filtered by container type and/or session, by property predicates (`where`, requires typeName; the same predicate shape automation selectors use — missing properties fall back to the type default), and paged with offset/limit over the stable created-at ordering. Requires a valid token. */
|
|
7997
|
+
/** List containers in an app, optionally filtered by container type and/or session, by bindingKey (get-by-key read of an ensured container), by property predicates (`where`, requires typeName; the same predicate shape automation selectors use — missing properties fall back to the type default), and paged with offset/limit over the stable created-at ordering. Requires a valid token. */
|
|
7921
7998
|
gameModelContainers: Array<GmContainer>;
|
|
7922
7999
|
/** Query the function-invocation event log (audit trail) with optional filters and pagination. Useful for debugging functions or showing recent activity. Requires a valid token. */
|
|
7923
8000
|
gameModelEvents: Array<GmEvent>;
|
|
@@ -8465,6 +8542,9 @@ export type QueryGameClientBootstrapArgs = {
|
|
|
8465
8542
|
export type QueryGameHostArgs = {
|
|
8466
8543
|
appId: Scalars['BigInt']['input'];
|
|
8467
8544
|
};
|
|
8545
|
+
export type QueryGameModelActivePlayerCountArgs = {
|
|
8546
|
+
appId: Scalars['BigInt']['input'];
|
|
8547
|
+
};
|
|
8468
8548
|
export type QueryGameModelAppDiagnosticsArgs = {
|
|
8469
8549
|
appId: Scalars['BigInt']['input'];
|
|
8470
8550
|
};
|
|
@@ -8506,6 +8586,7 @@ export type QueryGameModelContainerTypesArgs = {
|
|
|
8506
8586
|
};
|
|
8507
8587
|
export type QueryGameModelContainersArgs = {
|
|
8508
8588
|
appId: Scalars['BigInt']['input'];
|
|
8589
|
+
bindingKey?: InputMaybe<Scalars['String']['input']>;
|
|
8509
8590
|
limit?: InputMaybe<Scalars['Int']['input']>;
|
|
8510
8591
|
offset?: InputMaybe<Scalars['Int']['input']>;
|
|
8511
8592
|
sessionId?: InputMaybe<Scalars['String']['input']>;
|
|
@@ -9838,6 +9919,8 @@ export type Subscription = {
|
|
|
9838
9919
|
__typename?: 'Subscription';
|
|
9839
9920
|
/** Replay durable events with seq greater than afterSeq, then tail newly committed facts using database replay plus in-memory wakeups. Requires an app-scoped owner, use_studio_agent, and exact current clientEpoch. Delivery is ordered and at-least-once: deduplicate eventId/seq, fill gaps with crowdyStudioAgentHistory, and acknowledge only contiguous sequences. */
|
|
9840
9921
|
crowdyStudioAgentEvents: CrowdyStudioAgentEvent;
|
|
9922
|
+
/** Stream complete active gameplay-session count transitions for one app. There is no bootstrap event: query gameModelActivePlayerCount for the current snapshot. The first complete sample is a silent baseline; PARTIAL/UNAVAILABLE samples do not emit or become zero. Delivery uses a Postgres-backed cross-replica best-effort feed with a bounded oldest-drop buffer. Deduplicate by revision; after reconnect or a revision gap, requery gameModelActivePlayerCount. Requires an app-scoped token for this exact app. */
|
|
9923
|
+
gameModelActivePlayerCountChanged: GameModelActivePlayerCountChange;
|
|
9841
9924
|
/** Push notification whenever a container in the app changes: an invoke mutated it, a direct gameModelSetProperty wrote it, or it was created/deleted. Metadata only (containerId, typeName, changedKeys — no property values); pull the visibility-filtered state with gameModelContainerState on receipt. Post-commit and best-effort (a dropped event costs one missed pull, never correctness) — durable reads remain the source of truth. Optional typeName/sessionId filters narrow delivery. Fans out across all API replicas. Requires a valid token. Replaces interval polling with pull-on-push. */
|
|
9842
9925
|
gameModelContainerChanged: GmContainerChange;
|
|
9843
9926
|
/** Realtime downlink from the game server: spatial notifications and responses, GenericErrorResponse (errors from your sends, correlated by sequenceNumber), and RealtimeConnectionEvent (lifecycle/setup failures). Requires a bearer game token AND an appId-scoped connection — the appId is read from the graphql-transport-ws connection (game tokens are app-agnostic and one UDP socket is shared across apps, so an app-agnostic subscription is rejected with a RealtimeConnectionEvent code APP_ID_REQUIRED, and a missing/invalid token with AUTH_REQUIRED). On subscribe, opens a UDP proxy session if none exists (binds to the least-loaded game server); open/transport failures are delivered as RealtimeConnectionEvent (code UDP_PROXY_CONNECTION_FAILED) and then the stream ends. Only this app’s spatial fan-out is delivered; appId-less control frames always pass. Subscribe before/while sending so async results are not missed. Unsubscribing stops delivery only — it does NOT close the UDP session; call disconnectUdpProxy (or rely on the server inactivity timeout) to release it. */
|
|
@@ -9848,6 +9931,9 @@ export type SubscriptionCrowdyStudioAgentEventsArgs = {
|
|
|
9848
9931
|
clientEpoch: Scalars['BigInt']['input'];
|
|
9849
9932
|
sessionId: Scalars['String']['input'];
|
|
9850
9933
|
};
|
|
9934
|
+
export type SubscriptionGameModelActivePlayerCountChangedArgs = {
|
|
9935
|
+
appId: Scalars['BigInt']['input'];
|
|
9936
|
+
};
|
|
9851
9937
|
export type SubscriptionGameModelContainerChangedArgs = {
|
|
9852
9938
|
appId: Scalars['BigInt']['input'];
|
|
9853
9939
|
sessionId?: InputMaybe<Scalars['String']['input']>;
|
|
@@ -10221,21 +10307,21 @@ export type UpsertAutomationInput = {
|
|
|
10221
10307
|
/** Trigger type: schedule | event | manual. Defaults to schedule. */
|
|
10222
10308
|
triggerType?: InputMaybe<Scalars['String']['input']>;
|
|
10223
10309
|
};
|
|
10224
|
-
/** Create an event trigger that fires an automation on model activity. */
|
|
10310
|
+
/** Create an event trigger that fires an automation on model activity or a complete app-scoped active-player-count transition. */
|
|
10225
10311
|
export type UpsertAutomationTriggerInput = {
|
|
10226
10312
|
/** The app (tenant). */
|
|
10227
10313
|
appId: Scalars['BigInt']['input'];
|
|
10228
10314
|
/** The automation (by name) this trigger fires. */
|
|
10229
10315
|
automationName: Scalars['String']['input'];
|
|
10230
|
-
/** Filter: only this container type. */
|
|
10316
|
+
/** Filter: only this container type. Rejected for player_count_changed. */
|
|
10231
10317
|
containerTypeName?: InputMaybe<Scalars['String']['input']>;
|
|
10232
|
-
/** Debounce
|
|
10318
|
+
/** Debounce window in ms. player_count_changed uses trailing-edge coalescing (first previous count plus latest current count/revision); existing model events retain leading-edge suppression. */
|
|
10233
10319
|
debounceMs?: InputMaybe<Scalars['Int']['input']>;
|
|
10234
|
-
/** Filter: only this function name. */
|
|
10320
|
+
/** Filter: only this function name. Rejected for player_count_changed. */
|
|
10235
10321
|
functionName?: InputMaybe<Scalars['String']['input']>;
|
|
10236
|
-
/**
|
|
10322
|
+
/** Event to observe: function_invoked | property_changed | container_created | player_count_changed. player_count_changed fires only after complete fleet counts change, and injects reserved previous/current/delta/revision params. */
|
|
10237
10323
|
onEvent: Scalars['String']['input'];
|
|
10238
|
-
/** Filter: only this property key. */
|
|
10324
|
+
/** Filter: only this property key. Rejected for player_count_changed. */
|
|
10239
10325
|
propertyKey?: InputMaybe<Scalars['String']['input']>;
|
|
10240
10326
|
};
|
|
10241
10327
|
/** Create or update a WASM compute module (metadata only; source is uploaded with computeDeployVersion). Upsert key is (app, name). */
|
|
@@ -16869,6 +16955,35 @@ export type GameModelAppDiagnosticsQuery = {
|
|
|
16869
16955
|
}>;
|
|
16870
16956
|
};
|
|
16871
16957
|
};
|
|
16958
|
+
export type GameModelActivePlayerCountQueryVariables = Exact<{
|
|
16959
|
+
appId: Scalars['BigInt']['input'];
|
|
16960
|
+
}>;
|
|
16961
|
+
export type GameModelActivePlayerCountQuery = {
|
|
16962
|
+
__typename?: 'Query';
|
|
16963
|
+
gameModelActivePlayerCount: {
|
|
16964
|
+
__typename?: 'GameModelActivePlayerCountSnapshot';
|
|
16965
|
+
appId: string;
|
|
16966
|
+
activePlayerCount: number;
|
|
16967
|
+
status: GameModelPlayerCountStatus;
|
|
16968
|
+
observedAt: string | null;
|
|
16969
|
+
revision: string;
|
|
16970
|
+
};
|
|
16971
|
+
};
|
|
16972
|
+
export type GameModelActivePlayerCountChangedSubscriptionVariables = Exact<{
|
|
16973
|
+
appId: Scalars['BigInt']['input'];
|
|
16974
|
+
}>;
|
|
16975
|
+
export type GameModelActivePlayerCountChangedSubscription = {
|
|
16976
|
+
__typename?: 'Subscription';
|
|
16977
|
+
gameModelActivePlayerCountChanged: {
|
|
16978
|
+
__typename?: 'GameModelActivePlayerCountChange';
|
|
16979
|
+
appId: string;
|
|
16980
|
+
previousCount: number;
|
|
16981
|
+
currentCount: number;
|
|
16982
|
+
delta: number;
|
|
16983
|
+
revision: string;
|
|
16984
|
+
observedAt: string;
|
|
16985
|
+
};
|
|
16986
|
+
};
|
|
16872
16987
|
export type GmSessionFieldsFragment = {
|
|
16873
16988
|
__typename?: 'GmSession';
|
|
16874
16989
|
sessionId: string;
|
|
@@ -21803,6 +21918,8 @@ export declare const GameModelAutomationPolicyDocument: DocumentNode<GameModelAu
|
|
|
21803
21918
|
export declare const GameModelAutomationRunsDocument: DocumentNode<GameModelAutomationRunsQuery, GameModelAutomationRunsQueryVariables>;
|
|
21804
21919
|
export declare const GameModelAutomationStatsDocument: DocumentNode<GameModelAutomationStatsQuery, GameModelAutomationStatsQueryVariables>;
|
|
21805
21920
|
export declare const GameModelAppDiagnosticsDocument: DocumentNode<GameModelAppDiagnosticsQuery, GameModelAppDiagnosticsQueryVariables>;
|
|
21921
|
+
export declare const GameModelActivePlayerCountDocument: DocumentNode<GameModelActivePlayerCountQuery, GameModelActivePlayerCountQueryVariables>;
|
|
21922
|
+
export declare const GameModelActivePlayerCountChangedDocument: DocumentNode<GameModelActivePlayerCountChangedSubscription, GameModelActivePlayerCountChangedSubscriptionVariables>;
|
|
21806
21923
|
export declare const GameModelCreateSessionDocument: DocumentNode<GameModelCreateSessionMutation, GameModelCreateSessionMutationVariables>;
|
|
21807
21924
|
export declare const GameModelJoinSessionDocument: DocumentNode<GameModelJoinSessionMutation, GameModelJoinSessionMutationVariables>;
|
|
21808
21925
|
export declare const GameModelSetSessionTurnDocument: DocumentNode<GameModelSetSessionTurnMutation, GameModelSetSessionTurnMutationVariables>;
|