@crowdedkingdoms/crowdyjs 17.2.0 → 17.4.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/MIGRATION.md +97 -0
  2. package/README.md +2 -2
  3. package/dist/crowdy-studio/controller.d.ts +15 -0
  4. package/dist/crowdy-studio/controller.d.ts.map +1 -1
  5. package/dist/crowdy-studio/controller.js +41 -0
  6. package/dist/crowdy-studio/dom-shell.d.ts +1 -0
  7. package/dist/crowdy-studio/dom-shell.d.ts.map +1 -1
  8. package/dist/crowdy-studio/dom-shell.js +20 -1
  9. package/dist/crowdy-studio/github/index.d.ts +1 -0
  10. package/dist/crowdy-studio/github/index.d.ts.map +1 -1
  11. package/dist/crowdy-studio/github/index.js +1 -0
  12. package/dist/crowdy-studio/github/new-repo.d.ts +27 -0
  13. package/dist/crowdy-studio/github/new-repo.d.ts.map +1 -0
  14. package/dist/crowdy-studio/github/new-repo.js +44 -0
  15. package/dist/crowdy-studio/github/transport.d.ts +7 -0
  16. package/dist/crowdy-studio/github/transport.d.ts.map +1 -1
  17. package/dist/crowdy-studio/github/transport.js +1 -1
  18. package/dist/default-origin.d.ts +6 -6
  19. package/dist/default-origin.d.ts.map +1 -1
  20. package/dist/default-origin.js +6 -6
  21. package/dist/domains/gameModel.d.ts +172 -14
  22. package/dist/domains/gameModel.d.ts.map +1 -1
  23. package/dist/domains/gameModel.js +204 -14
  24. package/dist/generated/graphql.d.ts +524 -6
  25. package/dist/generated/graphql.d.ts.map +1 -1
  26. package/dist/generated/graphql.js +16 -6
  27. package/dist/index.d.ts +3 -3
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +1 -1
  30. package/dist/kit/index.d.ts +1 -1
  31. package/dist/kit/index.d.ts.map +1 -1
  32. package/dist/kit/matches.d.ts +79 -2
  33. package/dist/kit/matches.d.ts.map +1 -1
  34. package/dist/kit/matches.js +85 -1
  35. package/dist/kit/npcs.d.ts.map +1 -1
  36. package/dist/kit/social.d.ts.map +1 -1
  37. package/package.json +1 -1
@@ -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 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, type GameModelScheduleInvokeMutation, type GameModelScheduleInvokeMutationVariables, type GameModelCancelTimerMutation, type GameModelCancelTimerMutationVariables, type GameModelTimersQuery, type GameModelTimersQueryVariables } from '../generated/graphql.js';
2
+ import { type GameModelCreateSessionMutation, type GameModelCreateSessionMutationVariables, type GameModelJoinSessionMutation, type GameModelJoinSessionMutationVariables, type GameModelSetSessionTurnMutation, type GameModelSetSessionTurnMutationVariables, type GameModelLeaveSessionMutation, type GameModelLeaveSessionMutationVariables, type GameModelSetSessionAdmissionMutation, type GameModelSetSessionAdmissionMutationVariables, type GameModelTransferSessionHostMutation, type GameModelTransferSessionHostMutationVariables, type GameModelEndSessionMutation, type GameModelEndSessionMutationVariables, type GameModelSessionSnapshotQuery, type GameModelSessionSnapshotQueryVariables, type GameModelSessionEventsQuery, type GameModelSessionEventsQueryVariables, type GameModelSessionInspectQuery, type GameModelSessionInspectQueryVariables, type GameModelSessionChangedSubscription, type GameModelSessionChangedSubscriptionVariables, 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, type GameModelScheduleInvokeMutation, type GameModelScheduleInvokeMutationVariables, type GameModelCancelTimerMutation, type GameModelCancelTimerMutationVariables, type GameModelTimersQuery, type GameModelTimersQueryVariables } 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
@@ -86,6 +86,28 @@ import { type GameModelCreateSessionMutation, type GameModelCreateSessionMutatio
86
86
  */
87
87
  /** One container-change push from {@link GameModelAPI.containerChanged}. */
88
88
  export type GmContainerChangeEvent = GameModelContainerChangedSubscription['gameModelContainerChanged'];
89
+ /** One session revision as streamed by {@link GameModelAPI.sessionChanged}. */
90
+ export type GmSessionChangeEvent = GameModelSessionChangedSubscription['gameModelSessionChanged'];
91
+ /** Handlers for {@link GameModelAPI.sessionChanged}. */
92
+ export interface SessionChangedHandlers {
93
+ /**
94
+ * One revision of the session. `revision` is a decimal string and strictly
95
+ * increasing; `kind` is one of `created | participant_joined |
96
+ * participant_rejoined | participant_left | participant_expired |
97
+ * host_changed | admission_changed | turn_changed | ended`; `payloadJson`
98
+ * names the subject (user id, host, admission, ...).
99
+ */
100
+ next: (event: GmSessionChangeEvent) => void;
101
+ /** Transport/GraphQL errors (the subscription retries on socket drops). */
102
+ error?: (error: unknown) => void;
103
+ /** The server ended the stream. */
104
+ complete?: () => void;
105
+ /**
106
+ * WebSocket constructor for runtimes without a global `WebSocket` (Node
107
+ * ≤ 21): pass `(await import('ws')).default`.
108
+ */
109
+ webSocketImpl?: unknown;
110
+ }
89
111
  /** Handlers for {@link GameModelAPI.containerChanged}. */
90
112
  export interface ContainerChangedHandlers {
91
113
  /** A container changed (metadata only — pull state on receipt). */
@@ -190,33 +212,73 @@ export declare class GameModelAPI {
190
212
  * @returns An unsubscribe function (closes this subscription's socket).
191
213
  */
192
214
  containerChanged(variables: GameModelContainerChangedSubscriptionVariables, handlers: ContainerChangedHandlers): () => void;
215
+ /**
216
+ * **Subscriptions** — stream the revisions of one session as they commit
217
+ * (`gameModelSessionChanged`): joins, rejoins, leaves, presence expiries,
218
+ * host changes, admission changes, turn changes and the end. There is no
219
+ * bootstrap event: pull {@link sessionSnapshot} first, or pass
220
+ * `afterRevision` to replay retained events from there. Revisions are
221
+ * strictly increasing; on a gap or after a reconnect, pull the snapshot
222
+ * again. Cross-replica and best-effort over a bounded buffer; the events
223
+ * table ({@link sessionEvents}) is the record. Requires a `wsUrl` in the
224
+ * client config.
225
+ *
226
+ * @param variables - `{ appId, sessionId, afterRevision? }`.
227
+ * @param handlers - `next` per revision; optional `error` / `complete` /
228
+ * `webSocketImpl`.
229
+ * @returns An unsubscribe function (closes this subscription's socket).
230
+ * @throws {Error} Synchronously when the client config has no `wsUrl`.
231
+ */
232
+ sessionChanged(variables: GameModelSessionChangedSubscriptionVariables, handlers: SessionChangedHandlers): () => void;
193
233
  /**
194
234
  * **Sessions** — create a runtime session: an isolated instance scope for
195
235
  * containers (e.g. a match, room, or save). Subject to the app's
196
236
  * session-creation policy ({@link setPolicy}); the caller becomes the creator
197
237
  * and a participant.
198
238
  *
239
+ * **Presence mode.** `presence: 'actor'` (the default) expires a joined
240
+ * participant with no fresh Buddy actor in the app after the join grace
241
+ * window. `presence: 'none'` never expires anybody: use it for turn-based
242
+ * play that talks GraphQL and channel pings and never replicates an actor
243
+ * (`kit.matches` does), where the roster's only exits are
244
+ * {@link leaveSession}, {@link endSession} and the empty timeout once
245
+ * everyone has left. The mode is fixed at creation.
246
+ *
199
247
  * @param input - {@link CreateSessionInput}: `appId` (decimal string), an
200
- * optional `name`, optional `metadataJson` (a JSON-object string), and
248
+ * optional `name`, optional `metadataJson` (a JSON-object string),
201
249
  * optional `participantUserIds` (decimal-string ids of initial participants
202
- * besides the creator).
250
+ * besides the creator), optional `maxParticipants`, `admission`,
251
+ * `emptyTimeoutSec`, `presence` and `idempotencyKey`.
203
252
  * @returns The created {@link GmSession} (`sessionId`, `status`, creator,
204
- * current turn, metadata, …).
253
+ * host, admission, `presence`, revision, …).
205
254
  * @throws {CrowdyGraphQLError} `UNAUTHENTICATED` / `SCOPE_MISSING` if the token
206
255
  * is missing or not scoped to the app, `FORBIDDEN` if the session-creation
207
256
  * policy disallows the caller, or `BAD_USER_INPUT` for malformed input.
208
257
  */
209
258
  createSession(input: GameModelCreateSessionMutationVariables['input']): Promise<GameModelCreateSessionMutation['gameModelCreateSession']>;
210
259
  /**
211
- * **Sessions** — join an existing session as a participant, optionally with a
212
- * role. Requires a valid token and access to the app.
260
+ * **Sessions** — join a session, or **reconnect** to one you are already in.
261
+ * A rejoin returns your row with `incarnation + 1` and supersedes any older
262
+ * client of yours; keep the returned `incarnation`, {@link leaveSession}
263
+ * needs it. Pass `actorUuid` (your own Buddy actor, 32 hex chars — the uuid
264
+ * you replicate with) to bind this participant's presence to that actor;
265
+ * without it any fresh actor of yours in the app keeps you present.
266
+ * **Presence is your actor** (in a `presence: 'actor'` session, the default):
267
+ * a participant with no fresh Buddy actor in the app after the join grace
268
+ * window is expired by the server (`participant_expired`); a client that only
269
+ * speaks GraphQL must rejoin to come back. In a `presence: 'none'` session
270
+ * nobody is expired and `actorUuid` is recorded but not judged.
213
271
  *
214
272
  * @param input - {@link JoinSessionInput}: `appId` (decimal string),
215
- * `sessionId`, and an optional participant `role`.
216
- * @returns The {@link GmSessionParticipant} record (`sessionId`, `userId`,
217
- * `role`).
218
- * @throws {CrowdyGraphQLError} `UNAUTHENTICATED` / `SCOPE_MISSING`,
219
- * `NOT_FOUND` if no such session, or `FORBIDDEN` if joining isn't permitted.
273
+ * `sessionId`, optional `role`, optional `actorUuid`, optional
274
+ * `idempotencyKey` (replaying returns the same incarnation).
275
+ * @returns The {@link GmSessionParticipant} row (`state`, `incarnation`,
276
+ * `actorUuid`, `joinedAt`, ...).
277
+ * @throws {CrowdyGraphQLError} `SESSION_FULL` (every seat taken),
278
+ * `SESSION_LOCKED` (admission locked and you never joined),
279
+ * `SESSION_CLOSED`, `SESSION_ENDED`, `FORBIDDEN` (the `actorUuid` is not
280
+ * yours or is already bound by another participant), `NOT_FOUND`,
281
+ * `UNAUTHENTICATED` / `SCOPE_MISSING`.
220
282
  */
221
283
  joinSession(input: GameModelJoinSessionMutationVariables['input']): Promise<GameModelJoinSessionMutation['gameModelJoinSession']>;
222
284
  /**
@@ -233,6 +295,66 @@ export declare class GameModelAPI {
233
295
  * not change the turn.
234
296
  */
235
297
  setSessionTurn(input: GameModelSetSessionTurnMutationVariables['input']): Promise<GameModelSetSessionTurnMutation['gameModelSetSessionTurn']>;
298
+ /**
299
+ * **Sessions** — leave a session you are joined to. `incarnation` is
300
+ * **required**: it is the value {@link joinSession} returned to *this*
301
+ * client (a creator starts at 1), so a superseded client can never remove
302
+ * the one that took over. Leaving an already-left row is a no-op. If you
303
+ * were host, the longest-joined present participant succeeds you
304
+ * (`host_changed`).
305
+ *
306
+ * @param input - {@link LeaveSessionInput}: `appId`, `sessionId`,
307
+ * `incarnation`, optional `idempotencyKey`.
308
+ * @returns Your {@link GmSessionParticipant} row, now `state: 'left'` with
309
+ * `leftReason: 'left'`.
310
+ * @throws {CrowdyGraphQLError} `SESSION_INCARNATION_STALE` (a newer client
311
+ * rejoined as you — stop acting from this one, or rejoin),
312
+ * `SESSION_NOT_PARTICIPANT`, `NOT_FOUND`.
313
+ */
314
+ leaveSession(input: GameModelLeaveSessionMutationVariables['input']): Promise<GameModelLeaveSessionMutation['gameModelLeaveSession']>;
315
+ /**
316
+ * **Sessions** — change who may still join: `'open'` (anyone the app
317
+ * admits), `'locked'` (only participants who already joined may reconnect —
318
+ * set it when the match starts), `'closed'` (nobody). Session host or app
319
+ * admin (`manage_apps`). Emits `admission_changed`.
320
+ *
321
+ * @param input - {@link SetSessionAdmissionInput}: `appId`, `sessionId`,
322
+ * `admission`, optional `expectedHostTerm` (the `hostTerm` you last read:
323
+ * refused if the host changed since), optional `idempotencyKey`.
324
+ * @returns The updated {@link GmSession}.
325
+ * @throws {CrowdyGraphQLError} `FORBIDDEN` (not host / admin),
326
+ * `SESSION_HOST_TERM_STALE`, `SESSION_ENDED`, `NOT_FOUND`.
327
+ */
328
+ setSessionAdmission(input: GameModelSetSessionAdmissionMutationVariables['input']): Promise<GameModelSetSessionAdmissionMutation['gameModelSetSessionAdmission']>;
329
+ /**
330
+ * **Sessions** — hand the host role to another *joined* participant.
331
+ * Session host or app admin. Increments `hostTerm` and emits
332
+ * `host_changed` (reason `transferred`).
333
+ *
334
+ * @param input - {@link TransferSessionHostInput}: `appId`, `sessionId`,
335
+ * `toUserId` (decimal string), optional `expectedHostTerm`, optional
336
+ * `idempotencyKey`.
337
+ * @returns The updated {@link GmSession} (`hostUserId`, `hostTerm`).
338
+ * @throws {CrowdyGraphQLError} `FORBIDDEN`, `SESSION_HOST_TERM_STALE`,
339
+ * `SESSION_TARGET_NOT_PARTICIPANT` (the user named is not joined; refetch
340
+ * the snapshot and pick a participant), `SESSION_ENDED`.
341
+ */
342
+ transferSessionHost(input: GameModelTransferSessionHostMutationVariables['input']): Promise<GameModelTransferSessionHostMutation['gameModelTransferSessionHost']>;
343
+ /**
344
+ * **Sessions** — end a session as `'completed'` (default) or `'abandoned'`.
345
+ * Every joined participant is marked left (`session_ended`), admission
346
+ * becomes `closed`, `endedAt` / `endReason` are set and an `ended` event
347
+ * closes the revision log. Session host or app admin. (The server also ends a
348
+ * session nobody has been joined to for longer than its `emptyTimeoutSec` as
349
+ * `abandoned` / `empty_timeout`.)
350
+ *
351
+ * @param input - {@link EndSessionInput}: `appId`, `sessionId`, optional
352
+ * `reason`, optional `expectedHostTerm`, optional `idempotencyKey`.
353
+ * @returns The ended {@link GmSession}.
354
+ * @throws {CrowdyGraphQLError} `FORBIDDEN`, `SESSION_HOST_TERM_STALE`,
355
+ * `SESSION_ENDED` (already ended), `NOT_FOUND`.
356
+ */
357
+ endSession(input: GameModelEndSessionMutationVariables['input']): Promise<GameModelEndSessionMutation['gameModelEndSession']>;
236
358
  /**
237
359
  * **Containers** — instantiate a container (a runtime entity of a given type),
238
360
  * optionally within a session, with an owner and initial property values.
@@ -415,14 +537,50 @@ export declare class GameModelAPI {
415
537
  */
416
538
  session(variables: GameModelSessionQueryVariables): Promise<GameModelSessionQuery['gameModelSession']>;
417
539
  /**
418
- * **Sessions** — list sessions in an app, optionally filtered by status.
540
+ * **Sessions** — list sessions in an app, newest first, optionally filtered
541
+ * by `status` (`active | completed | abandoned`), `admission`
542
+ * (`open | locked | closed` — `'open'` lists joinable lobbies) and/or
543
+ * `hostUserId`.
419
544
  *
420
- * @param variables - `{ appId, status? }`: `appId` (decimal string) and an
421
- * optional `status` filter (e.g. `'active'`; omit for all statuses).
545
+ * @param variables - `{ appId, status?, admission?, hostUserId?, limit? }`
546
+ * (`limit` defaults to 200, max 1000).
422
547
  * @returns The matching {@link GmSession}s.
423
548
  * @throws {CrowdyGraphQLError} `UNAUTHENTICATED` / `SCOPE_MISSING`.
424
549
  */
425
550
  sessions(variables: GameModelSessionsQueryVariables): Promise<GameModelSessionsQuery['gameModelSessions']>;
551
+ /**
552
+ * **Sessions** — the authoritative state of one session at one revision: the
553
+ * session row and every *joined* participant. Pull it when you subscribe
554
+ * with {@link sessionChanged}, after a reconnect, or when the stream shows a
555
+ * revision gap; then apply only events whose `revision` is above
556
+ * `snapshot.revision`.
557
+ *
558
+ * @param variables - `{ appId, sessionId }`.
559
+ * @returns `{ revision, session, participants }`.
560
+ * @throws {CrowdyGraphQLError} `NOT_FOUND`, `UNAUTHENTICATED` / `SCOPE_MISSING`.
561
+ */
562
+ sessionSnapshot(variables: GameModelSessionSnapshotQueryVariables): Promise<GameModelSessionSnapshotQuery['gameModelSessionSnapshot']>;
563
+ /**
564
+ * **Sessions** — the events of a session with a revision strictly greater
565
+ * than `afterRevision`, oldest first: the gap-fill read behind
566
+ * {@link sessionChanged}. Events of ended sessions are retained for a bounded
567
+ * period, then purged.
568
+ *
569
+ * @param variables - `{ appId, sessionId, afterRevision, limit? }`;
570
+ * `afterRevision` is a decimal string (`'0'` for everything retained).
571
+ * @returns The matching {@link GmSessionEvent}s.
572
+ */
573
+ sessionEvents(variables: GameModelSessionEventsQueryVariables): Promise<GameModelSessionEventsQuery['gameModelSessionEvents']>;
574
+ /**
575
+ * **Sessions (operators)** — the full roster including departed participants
576
+ * (with `leftReason` and `incarnation`), each joined participant's live
577
+ * presence verdict (`fresh | grace | stale | legacy | left`), and the most
578
+ * recent events. Requires app-admin (`manage_apps`).
579
+ *
580
+ * @param variables - `{ appId, sessionId }`.
581
+ * @throws {CrowdyGraphQLError} `FORBIDDEN` without `manage_apps`.
582
+ */
583
+ sessionInspect(variables: GameModelSessionInspectQueryVariables): Promise<GameModelSessionInspectQuery['gameModelSessionInspect']>;
426
584
  /**
427
585
  * **Events** — query the function-invocation event log (audit trail) with
428
586
  * optional filters and pagination. Useful for debugging functions or showing
@@ -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, GameModelActivePlayerCountDocument, GameModelActivePlayerCountChangedDocument, GameModelContainersDocument, GameModelContainerStateDocument, GameModelTraverseDocument, GameModelSessionDocument, GameModelSessionsDocument, GameModelEventsDocument, GameModelFlowDocument,
5
+ GameModelCreateSessionDocument, GameModelJoinSessionDocument, GameModelSetSessionTurnDocument, GameModelLeaveSessionDocument, GameModelSetSessionAdmissionDocument, GameModelTransferSessionHostDocument, GameModelEndSessionDocument, GameModelSessionSnapshotDocument, GameModelSessionEventsDocument, GameModelSessionInspectDocument, GameModelSessionChangedDocument, 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)
@@ -148,6 +148,57 @@ export class GameModelAPI {
148
148
  void client.dispose();
149
149
  };
150
150
  }
151
+ /**
152
+ * **Subscriptions** — stream the revisions of one session as they commit
153
+ * (`gameModelSessionChanged`): joins, rejoins, leaves, presence expiries,
154
+ * host changes, admission changes, turn changes and the end. There is no
155
+ * bootstrap event: pull {@link sessionSnapshot} first, or pass
156
+ * `afterRevision` to replay retained events from there. Revisions are
157
+ * strictly increasing; on a gap or after a reconnect, pull the snapshot
158
+ * again. Cross-replica and best-effort over a bounded buffer; the events
159
+ * table ({@link sessionEvents}) is the record. Requires a `wsUrl` in the
160
+ * client config.
161
+ *
162
+ * @param variables - `{ appId, sessionId, afterRevision? }`.
163
+ * @param handlers - `next` per revision; optional `error` / `complete` /
164
+ * `webSocketImpl`.
165
+ * @returns An unsubscribe function (closes this subscription's socket).
166
+ * @throws {Error} Synchronously when the client config has no `wsUrl`.
167
+ */
168
+ sessionChanged(variables, handlers) {
169
+ if (!this.ws?.wsUrl) {
170
+ throw new Error('sessionChanged requires a wsUrl in the client config (graphql-transport-ws endpoint)');
171
+ }
172
+ const client = createWsClient({
173
+ url: this.ws.wsUrl,
174
+ lazy: false,
175
+ retryAttempts: 8,
176
+ ...(handlers.webSocketImpl
177
+ ? { webSocketImpl: handlers.webSocketImpl }
178
+ : {}),
179
+ connectionParams: () => {
180
+ const token = this.ws?.getToken();
181
+ return token ? { Authorization: `Bearer ${token}` } : {};
182
+ },
183
+ });
184
+ const dispose = client.subscribe({ query: print(GameModelSessionChangedDocument), variables }, {
185
+ next: (msg) => {
186
+ const data = msg.data;
187
+ if (data?.gameModelSessionChanged) {
188
+ handlers.next(data.gameModelSessionChanged);
189
+ }
190
+ else if (msg.errors) {
191
+ handlers.error?.(msg.errors);
192
+ }
193
+ },
194
+ error: (err) => handlers.error?.(err),
195
+ complete: () => handlers.complete?.(),
196
+ });
197
+ return () => {
198
+ dispose();
199
+ void client.dispose();
200
+ };
201
+ }
151
202
  // -- Runtime (player) -------------------------------------------------------
152
203
  /**
153
204
  * **Sessions** — create a runtime session: an isolated instance scope for
@@ -155,12 +206,21 @@ export class GameModelAPI {
155
206
  * session-creation policy ({@link setPolicy}); the caller becomes the creator
156
207
  * and a participant.
157
208
  *
209
+ * **Presence mode.** `presence: 'actor'` (the default) expires a joined
210
+ * participant with no fresh Buddy actor in the app after the join grace
211
+ * window. `presence: 'none'` never expires anybody: use it for turn-based
212
+ * play that talks GraphQL and channel pings and never replicates an actor
213
+ * (`kit.matches` does), where the roster's only exits are
214
+ * {@link leaveSession}, {@link endSession} and the empty timeout once
215
+ * everyone has left. The mode is fixed at creation.
216
+ *
158
217
  * @param input - {@link CreateSessionInput}: `appId` (decimal string), an
159
- * optional `name`, optional `metadataJson` (a JSON-object string), and
218
+ * optional `name`, optional `metadataJson` (a JSON-object string),
160
219
  * optional `participantUserIds` (decimal-string ids of initial participants
161
- * besides the creator).
220
+ * besides the creator), optional `maxParticipants`, `admission`,
221
+ * `emptyTimeoutSec`, `presence` and `idempotencyKey`.
162
222
  * @returns The created {@link GmSession} (`sessionId`, `status`, creator,
163
- * current turn, metadata, …).
223
+ * host, admission, `presence`, revision, …).
164
224
  * @throws {CrowdyGraphQLError} `UNAUTHENTICATED` / `SCOPE_MISSING` if the token
165
225
  * is missing or not scoped to the app, `FORBIDDEN` if the session-creation
166
226
  * policy disallows the caller, or `BAD_USER_INPUT` for malformed input.
@@ -170,15 +230,28 @@ export class GameModelAPI {
170
230
  return data.gameModelCreateSession;
171
231
  }
172
232
  /**
173
- * **Sessions** — join an existing session as a participant, optionally with a
174
- * role. Requires a valid token and access to the app.
233
+ * **Sessions** — join a session, or **reconnect** to one you are already in.
234
+ * A rejoin returns your row with `incarnation + 1` and supersedes any older
235
+ * client of yours; keep the returned `incarnation`, {@link leaveSession}
236
+ * needs it. Pass `actorUuid` (your own Buddy actor, 32 hex chars — the uuid
237
+ * you replicate with) to bind this participant's presence to that actor;
238
+ * without it any fresh actor of yours in the app keeps you present.
239
+ * **Presence is your actor** (in a `presence: 'actor'` session, the default):
240
+ * a participant with no fresh Buddy actor in the app after the join grace
241
+ * window is expired by the server (`participant_expired`); a client that only
242
+ * speaks GraphQL must rejoin to come back. In a `presence: 'none'` session
243
+ * nobody is expired and `actorUuid` is recorded but not judged.
175
244
  *
176
245
  * @param input - {@link JoinSessionInput}: `appId` (decimal string),
177
- * `sessionId`, and an optional participant `role`.
178
- * @returns The {@link GmSessionParticipant} record (`sessionId`, `userId`,
179
- * `role`).
180
- * @throws {CrowdyGraphQLError} `UNAUTHENTICATED` / `SCOPE_MISSING`,
181
- * `NOT_FOUND` if no such session, or `FORBIDDEN` if joining isn't permitted.
246
+ * `sessionId`, optional `role`, optional `actorUuid`, optional
247
+ * `idempotencyKey` (replaying returns the same incarnation).
248
+ * @returns The {@link GmSessionParticipant} row (`state`, `incarnation`,
249
+ * `actorUuid`, `joinedAt`, ...).
250
+ * @throws {CrowdyGraphQLError} `SESSION_FULL` (every seat taken),
251
+ * `SESSION_LOCKED` (admission locked and you never joined),
252
+ * `SESSION_CLOSED`, `SESSION_ENDED`, `FORBIDDEN` (the `actorUuid` is not
253
+ * yours or is already bound by another participant), `NOT_FOUND`,
254
+ * `UNAUTHENTICATED` / `SCOPE_MISSING`.
182
255
  */
183
256
  async joinSession(input) {
184
257
  const data = await this.gql.request(GameModelJoinSessionDocument, { input });
@@ -201,6 +274,78 @@ export class GameModelAPI {
201
274
  const data = await this.gql.request(GameModelSetSessionTurnDocument, { input });
202
275
  return data.gameModelSetSessionTurn;
203
276
  }
277
+ /**
278
+ * **Sessions** — leave a session you are joined to. `incarnation` is
279
+ * **required**: it is the value {@link joinSession} returned to *this*
280
+ * client (a creator starts at 1), so a superseded client can never remove
281
+ * the one that took over. Leaving an already-left row is a no-op. If you
282
+ * were host, the longest-joined present participant succeeds you
283
+ * (`host_changed`).
284
+ *
285
+ * @param input - {@link LeaveSessionInput}: `appId`, `sessionId`,
286
+ * `incarnation`, optional `idempotencyKey`.
287
+ * @returns Your {@link GmSessionParticipant} row, now `state: 'left'` with
288
+ * `leftReason: 'left'`.
289
+ * @throws {CrowdyGraphQLError} `SESSION_INCARNATION_STALE` (a newer client
290
+ * rejoined as you — stop acting from this one, or rejoin),
291
+ * `SESSION_NOT_PARTICIPANT`, `NOT_FOUND`.
292
+ */
293
+ async leaveSession(input) {
294
+ const data = await this.gql.request(GameModelLeaveSessionDocument, { input });
295
+ return data.gameModelLeaveSession;
296
+ }
297
+ /**
298
+ * **Sessions** — change who may still join: `'open'` (anyone the app
299
+ * admits), `'locked'` (only participants who already joined may reconnect —
300
+ * set it when the match starts), `'closed'` (nobody). Session host or app
301
+ * admin (`manage_apps`). Emits `admission_changed`.
302
+ *
303
+ * @param input - {@link SetSessionAdmissionInput}: `appId`, `sessionId`,
304
+ * `admission`, optional `expectedHostTerm` (the `hostTerm` you last read:
305
+ * refused if the host changed since), optional `idempotencyKey`.
306
+ * @returns The updated {@link GmSession}.
307
+ * @throws {CrowdyGraphQLError} `FORBIDDEN` (not host / admin),
308
+ * `SESSION_HOST_TERM_STALE`, `SESSION_ENDED`, `NOT_FOUND`.
309
+ */
310
+ async setSessionAdmission(input) {
311
+ const data = await this.gql.request(GameModelSetSessionAdmissionDocument, { input });
312
+ return data.gameModelSetSessionAdmission;
313
+ }
314
+ /**
315
+ * **Sessions** — hand the host role to another *joined* participant.
316
+ * Session host or app admin. Increments `hostTerm` and emits
317
+ * `host_changed` (reason `transferred`).
318
+ *
319
+ * @param input - {@link TransferSessionHostInput}: `appId`, `sessionId`,
320
+ * `toUserId` (decimal string), optional `expectedHostTerm`, optional
321
+ * `idempotencyKey`.
322
+ * @returns The updated {@link GmSession} (`hostUserId`, `hostTerm`).
323
+ * @throws {CrowdyGraphQLError} `FORBIDDEN`, `SESSION_HOST_TERM_STALE`,
324
+ * `SESSION_TARGET_NOT_PARTICIPANT` (the user named is not joined; refetch
325
+ * the snapshot and pick a participant), `SESSION_ENDED`.
326
+ */
327
+ async transferSessionHost(input) {
328
+ const data = await this.gql.request(GameModelTransferSessionHostDocument, { input });
329
+ return data.gameModelTransferSessionHost;
330
+ }
331
+ /**
332
+ * **Sessions** — end a session as `'completed'` (default) or `'abandoned'`.
333
+ * Every joined participant is marked left (`session_ended`), admission
334
+ * becomes `closed`, `endedAt` / `endReason` are set and an `ended` event
335
+ * closes the revision log. Session host or app admin. (The server also ends a
336
+ * session nobody has been joined to for longer than its `emptyTimeoutSec` as
337
+ * `abandoned` / `empty_timeout`.)
338
+ *
339
+ * @param input - {@link EndSessionInput}: `appId`, `sessionId`, optional
340
+ * `reason`, optional `expectedHostTerm`, optional `idempotencyKey`.
341
+ * @returns The ended {@link GmSession}.
342
+ * @throws {CrowdyGraphQLError} `FORBIDDEN`, `SESSION_HOST_TERM_STALE`,
343
+ * `SESSION_ENDED` (already ended), `NOT_FOUND`.
344
+ */
345
+ async endSession(input) {
346
+ const data = await this.gql.request(GameModelEndSessionDocument, { input });
347
+ return data.gameModelEndSession;
348
+ }
204
349
  /**
205
350
  * **Containers** — instantiate a container (a runtime entity of a given type),
206
351
  * optionally within a session, with an owner and initial property values.
@@ -416,10 +561,13 @@ export class GameModelAPI {
416
561
  return data.gameModelSession;
417
562
  }
418
563
  /**
419
- * **Sessions** — list sessions in an app, optionally filtered by status.
564
+ * **Sessions** — list sessions in an app, newest first, optionally filtered
565
+ * by `status` (`active | completed | abandoned`), `admission`
566
+ * (`open | locked | closed` — `'open'` lists joinable lobbies) and/or
567
+ * `hostUserId`.
420
568
  *
421
- * @param variables - `{ appId, status? }`: `appId` (decimal string) and an
422
- * optional `status` filter (e.g. `'active'`; omit for all statuses).
569
+ * @param variables - `{ appId, status?, admission?, hostUserId?, limit? }`
570
+ * (`limit` defaults to 200, max 1000).
423
571
  * @returns The matching {@link GmSession}s.
424
572
  * @throws {CrowdyGraphQLError} `UNAUTHENTICATED` / `SCOPE_MISSING`.
425
573
  */
@@ -427,6 +575,48 @@ export class GameModelAPI {
427
575
  const data = await this.gql.request(GameModelSessionsDocument, variables);
428
576
  return data.gameModelSessions;
429
577
  }
578
+ /**
579
+ * **Sessions** — the authoritative state of one session at one revision: the
580
+ * session row and every *joined* participant. Pull it when you subscribe
581
+ * with {@link sessionChanged}, after a reconnect, or when the stream shows a
582
+ * revision gap; then apply only events whose `revision` is above
583
+ * `snapshot.revision`.
584
+ *
585
+ * @param variables - `{ appId, sessionId }`.
586
+ * @returns `{ revision, session, participants }`.
587
+ * @throws {CrowdyGraphQLError} `NOT_FOUND`, `UNAUTHENTICATED` / `SCOPE_MISSING`.
588
+ */
589
+ async sessionSnapshot(variables) {
590
+ const data = await this.gql.request(GameModelSessionSnapshotDocument, variables);
591
+ return data.gameModelSessionSnapshot;
592
+ }
593
+ /**
594
+ * **Sessions** — the events of a session with a revision strictly greater
595
+ * than `afterRevision`, oldest first: the gap-fill read behind
596
+ * {@link sessionChanged}. Events of ended sessions are retained for a bounded
597
+ * period, then purged.
598
+ *
599
+ * @param variables - `{ appId, sessionId, afterRevision, limit? }`;
600
+ * `afterRevision` is a decimal string (`'0'` for everything retained).
601
+ * @returns The matching {@link GmSessionEvent}s.
602
+ */
603
+ async sessionEvents(variables) {
604
+ const data = await this.gql.request(GameModelSessionEventsDocument, variables);
605
+ return data.gameModelSessionEvents;
606
+ }
607
+ /**
608
+ * **Sessions (operators)** — the full roster including departed participants
609
+ * (with `leftReason` and `incarnation`), each joined participant's live
610
+ * presence verdict (`fresh | grace | stale | legacy | left`), and the most
611
+ * recent events. Requires app-admin (`manage_apps`).
612
+ *
613
+ * @param variables - `{ appId, sessionId }`.
614
+ * @throws {CrowdyGraphQLError} `FORBIDDEN` without `manage_apps`.
615
+ */
616
+ async sessionInspect(variables) {
617
+ const data = await this.gql.request(GameModelSessionInspectDocument, variables);
618
+ return data.gameModelSessionInspect;
619
+ }
430
620
  /**
431
621
  * **Events** — query the function-invocation event log (audit trail) with
432
622
  * optional filters and pagination. Useful for debugging functions or showing