@crowdedkingdoms/crowdyjs 14.2.0-test.1 → 15.0.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.
- package/MIGRATION.md +54 -1
- package/README.md +9 -7
- package/dist/domains/auth.d.ts +69 -16
- package/dist/domains/auth.d.ts.map +1 -1
- package/dist/domains/auth.js +80 -13
- package/dist/generated/graphql.d.ts +243 -34
- package/dist/generated/graphql.d.ts.map +1 -1
- package/dist/generated/graphql.js +7 -1
- package/dist/index.d.ts +15 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -9
- package/dist/kit/npcs.d.ts.map +1 -1
- package/dist/kit/social.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1528,6 +1528,22 @@ export type BatchActorLookupInput = {
|
|
|
1528
1528
|
/** Actor ids to look up. Each is exactly 32 ASCII characters (the UDP-wire actor id), NOT a hyphenated RFC-4122 UUID. Must be non-empty; unknown ids are silently omitted from the result. */
|
|
1529
1529
|
uuids: Array<Scalars['String']['input']>;
|
|
1530
1530
|
};
|
|
1531
|
+
/** An organization whose wallet is not debited and whose apps are not denied for funds. Usage is still metered; waived amounts are in org_billing_waivers. */
|
|
1532
|
+
export type BillingExemptOrgType = {
|
|
1533
|
+
__typename?: 'BillingExemptOrgType';
|
|
1534
|
+
/** Organization name. */
|
|
1535
|
+
name: Scalars['String']['output'];
|
|
1536
|
+
/** Organization id (BigInt as a decimal string). */
|
|
1537
|
+
orgId: Scalars['BigInt']['output'];
|
|
1538
|
+
/** Why the exemption exists. Required when setting it true. */
|
|
1539
|
+
reason: Scalars['String']['output'];
|
|
1540
|
+
/** When the exemption was last set true. */
|
|
1541
|
+
setAt: Scalars['DateTime']['output'];
|
|
1542
|
+
/** Operator user_id who last set the exemption true. */
|
|
1543
|
+
setBy: Maybe<Scalars['BigInt']['output']>;
|
|
1544
|
+
/** Organization slug. */
|
|
1545
|
+
slug: Scalars['String']['output'];
|
|
1546
|
+
};
|
|
1531
1547
|
/** Live (most recent heartbeat) Buddy UDP throughput rates. */
|
|
1532
1548
|
export type BuddyLiveRates = {
|
|
1533
1549
|
__typename?: 'BuddyLiveRates';
|
|
@@ -2398,6 +2414,72 @@ export declare enum CrowdyStudioAgentApprovalStatus {
|
|
|
2398
2414
|
/** Invalidated by context or policy change. */
|
|
2399
2415
|
Revoked = "REVOKED"
|
|
2400
2416
|
}
|
|
2417
|
+
/** One allowed Agentic Studio mode that cannot perform the work the mode exists for, because the tool or risk-class allowlist excludes every tool that would do it. This is a capability shortfall, not a permission failure: the policy really is enabled and the mode really is allowed, so no disable reason code describes it. */
|
|
2418
|
+
export type CrowdyStudioAgentCapabilityGap = {
|
|
2419
|
+
__typename?: 'CrowdyStudioAgentCapabilityGap';
|
|
2420
|
+
/** Stable code. NO_TOOLS: the tool allowlist is empty, so the agent can only talk. NO_WRITE_RISK: tools are allowed but every risk class that would let this mode change something is not, so BUILD can read and cannot build, and PLAY can observe and cannot act. */
|
|
2421
|
+
code: Scalars['String']['output'];
|
|
2422
|
+
/** Safe operator-facing explanation naming the missing risk classes. Never includes provider bodies or secrets. */
|
|
2423
|
+
detail: Scalars['String']['output'];
|
|
2424
|
+
/** The allowed mode that has nothing useful to call. */
|
|
2425
|
+
mode: CrowdyStudioAgentMode;
|
|
2426
|
+
};
|
|
2427
|
+
/** The answering ck-api instance's Agentic Studio capability: the models it carries with their pinned prices, the implemented tool registry with risk classes, and the full mode and risk-class value sets a policy may draw from. This is deployed configuration, not stored policy — a platform policy naming anything absent here is accepted and then runs nothing. */
|
|
2428
|
+
export type CrowdyStudioAgentCatalog = {
|
|
2429
|
+
__typename?: 'CrowdyStudioAgentCatalog';
|
|
2430
|
+
/** The answering instance's datacenter (CK_DATACENTER), or null. */
|
|
2431
|
+
datacenterCode: Maybe<Scalars['String']['output']>;
|
|
2432
|
+
/** Default model id, or null when the agent is disabled here. */
|
|
2433
|
+
defaultModelId: Maybe<Scalars['String']['output']>;
|
|
2434
|
+
/** Whether CROWDY_STUDIO_AGENT_ENABLED is set on this instance. False means every list below is empty and no policy can make the agent run here. */
|
|
2435
|
+
instanceEnabled: Scalars['Boolean']['output'];
|
|
2436
|
+
/** Which process answered (CKS_RUNTIME_SERVER_ID or hostname), because this is a per-instance answer. */
|
|
2437
|
+
instanceId: Maybe<Scalars['String']['output']>;
|
|
2438
|
+
/** Models this instance carries, sorted by id. Empty when the agent is disabled here. */
|
|
2439
|
+
models: Array<CrowdyStudioAgentCatalogModel>;
|
|
2440
|
+
/** Every mode value a policy allowlist may contain. */
|
|
2441
|
+
modes: Array<CrowdyStudioAgentMode>;
|
|
2442
|
+
/** Platform policy contract version the instance enforces. */
|
|
2443
|
+
platformPolicyVersion: Scalars['String']['output'];
|
|
2444
|
+
/** Provider the instance would route to: 'openrouter', or 'fake' outside production. */
|
|
2445
|
+
provider: Scalars['String']['output'];
|
|
2446
|
+
/** Digest over the whole compiled-in tool registry. Two instances reporting different digests are running different tool sets. */
|
|
2447
|
+
registryDigest: Scalars['String']['output'];
|
|
2448
|
+
/** Every risk-class value a policy allowlist may contain. */
|
|
2449
|
+
riskClasses: Array<CrowdyStudioAgentRiskClass>;
|
|
2450
|
+
/** Implemented tools, sorted by logical name. Present whether or not the agent is enabled, because the registry is compiled in. */
|
|
2451
|
+
tools: Array<CrowdyStudioAgentCatalogTool>;
|
|
2452
|
+
};
|
|
2453
|
+
/** One model the answering ck-api instance carries, with the pinned price it will meter against. */
|
|
2454
|
+
export type CrowdyStudioAgentCatalogModel = {
|
|
2455
|
+
__typename?: 'CrowdyStudioAgentCatalogModel';
|
|
2456
|
+
/** Pinned input price in micro-USD per million tokens. */
|
|
2457
|
+
inputMicrosPerMillion: Scalars['Int']['output'];
|
|
2458
|
+
/** Whether this is the instance's default model (CROWDY_STUDIO_AGENT_DEFAULT_MODEL). */
|
|
2459
|
+
isDefault: Scalars['Boolean']['output'];
|
|
2460
|
+
/** Exact provider model id, as a policy would name it. */
|
|
2461
|
+
modelId: Scalars['String']['output'];
|
|
2462
|
+
/** Pinned output price in micro-USD per million tokens. */
|
|
2463
|
+
outputMicrosPerMillion: Scalars['Int']['output'];
|
|
2464
|
+
/** Whether the instance would accept a run on this model: it is in the instance allowlist and has a positive pinned price in both directions. A zero price is only reachable with the non-production fake provider, which cannot reserve cost. */
|
|
2465
|
+
selectable: Scalars['Boolean']['output'];
|
|
2466
|
+
};
|
|
2467
|
+
/** One implemented crowdy.agent-tools/1 tool, named exactly as a policy allowlist must name it. */
|
|
2468
|
+
export type CrowdyStudioAgentCatalogTool = {
|
|
2469
|
+
__typename?: 'CrowdyStudioAgentCatalogTool';
|
|
2470
|
+
/** Whether every call needs exact human approval regardless of policy. */
|
|
2471
|
+
approvalRequired: Scalars['Boolean']['output'];
|
|
2472
|
+
/** Trusted boundary that runs it: SERVER or BROWSER. */
|
|
2473
|
+
executor: CrowdyStudioAgentToolExecutor;
|
|
2474
|
+
/** Modes the tool is available in. */
|
|
2475
|
+
modes: Array<CrowdyStudioAgentMode>;
|
|
2476
|
+
/** Logical dotted tool name. This is the string an allowedToolNames entry must equal. */
|
|
2477
|
+
name: Scalars['String']['output'];
|
|
2478
|
+
/** Server-classified risk. Allowing the class is necessary but not sufficient: an approval-gated tool still requires exact human approval. */
|
|
2479
|
+
riskClass: CrowdyStudioAgentRiskClass;
|
|
2480
|
+
/** What the tool does, from its canonical descriptor. */
|
|
2481
|
+
summary: Scalars['String']['output'];
|
|
2482
|
+
};
|
|
2401
2483
|
/** Typed union of ordered, replayable version 1 session facts. Delivery is at-least-once; seq and eventId support deduplication. */
|
|
2402
2484
|
export type CrowdyStudioAgentEvent = AgentApprovalEvent | AgentBudgetEvent | AgentCheckpointEvent | AgentLeaseEvent | AgentLifecycleEvent | AgentMessageEvent | AgentRunEvent | AgentToolEvent;
|
|
2403
2485
|
/** Version 1 durable ordered event vocabulary. */
|
|
@@ -2564,14 +2646,16 @@ export type CrowdyStudioAgentPolicy = {
|
|
|
2564
2646
|
allowedModelIds: Array<Scalars['String']['output']>;
|
|
2565
2647
|
/** Human-selectable modes allowed by this layer/intersection. */
|
|
2566
2648
|
allowedModes: Array<CrowdyStudioAgentMode>;
|
|
2567
|
-
/** Allowed tool risk classes. Required approval classes remain approval-gated even when listed. */
|
|
2649
|
+
/** Allowed tool risk classes. Required approval classes remain approval-gated even when listed. Empty follows the same rule as allowedToolNames: deny-all on PLATFORM, inherit-the-platform on APP. An EFFECTIVE policy can never be enabled with an empty list, because crowdy.studio-agent-policy/1 requires a non-empty risk intersection; that case reports AGENT_SCOPE_DENIED. */
|
|
2568
2650
|
allowedRiskClasses: Array<CrowdyStudioAgentRiskClass>;
|
|
2569
|
-
/** Exact crowdy.agent-tools/1 logical tool names allowed by this layer/intersection. Empty denies
|
|
2651
|
+
/** Exact crowdy.agent-tools/1 logical tool names allowed by this layer/intersection. Empty means opposite things at the two layers: on PLATFORM it denies every tool, because the platform layer is the ceiling; on APP it expresses no narrowing, so EFFECTIVE inherits the platform list unchanged. An app therefore cannot reach a tool the platform has not published, and an operator who later adds one widens every app that names none. */
|
|
2570
2652
|
allowedToolNames: Array<Scalars['String']['output']>;
|
|
2571
2653
|
/** App id for APP/EFFECTIVE policy; null for platform policy. */
|
|
2572
2654
|
appId: Maybe<Scalars['BigInt']['output']>;
|
|
2573
2655
|
/** App revision used by an EFFECTIVE projection; zero means missing app policy. */
|
|
2574
2656
|
appRevision: Scalars['BigInt']['output'];
|
|
2657
|
+
/** Allowed modes that cannot do what the mode is for, derived from this layer's own tool and risk allowlists. Read this on the EFFECTIVE projection: an empty list is the only thing that entitles a caller to report an unblocked chain, because "enabled with a null disableReasonCode" is true of a dock whose BUILD mode has no tool it may call. On PLATFORM and APP it describes that layer in isolation and is not a claim about the intersection. */
|
|
2658
|
+
capabilityGaps: Array<CrowdyStudioAgentCapabilityGap>;
|
|
2575
2659
|
/** Policy row creation time or projection time. */
|
|
2576
2660
|
createdAt: Scalars['DateTime']['output'];
|
|
2577
2661
|
/** Safe operator/app reason text; never includes provider bodies or secrets. */
|
|
@@ -3264,11 +3348,6 @@ export type DeployPlayerComputeInput = {
|
|
|
3264
3348
|
/** Optional server tick rate in Hz. Omit for invoke/event-only modules or CLIENT artifacts. Clamped by the effective player/app policy. */
|
|
3265
3349
|
tickHz?: InputMaybe<Scalars['Float']['input']>;
|
|
3266
3350
|
};
|
|
3267
|
-
/** Dev-only bypass sign-in (active only when DEV_AUTH_BYPASS is enabled; never in production). */
|
|
3268
|
-
export type DevLoginInput = {
|
|
3269
|
-
/** Email of the account to sign in as (created if absent). */
|
|
3270
|
-
email: Scalars['String']['input'];
|
|
3271
|
-
};
|
|
3272
3351
|
/** Compute units attributed to one engine over the query window. */
|
|
3273
3352
|
export type EngineComputeUnits = {
|
|
3274
3353
|
__typename?: 'EngineComputeUnits';
|
|
@@ -3996,6 +4075,40 @@ export type GmFunction = {
|
|
|
3996
4075
|
/** Non-fatal static-analysis warnings from the last upload. */
|
|
3997
4076
|
warnings: Array<Scalars['String']['output']>;
|
|
3998
4077
|
};
|
|
4078
|
+
/** The player-invoke breaker's mode and thresholds on the answering instance, with this app's circuits. The mode decides whether any of it refuses anything. */
|
|
4079
|
+
export type GmFunctionBreakerStatus = {
|
|
4080
|
+
__typename?: 'GmFunctionBreakerStatus';
|
|
4081
|
+
/** Circuits for this app, non-closed first, then by consecutive failures. Only functions that have failed at least once appear. */
|
|
4082
|
+
circuits: Array<GmFunctionCircuit>;
|
|
4083
|
+
/** How long an open circuit waits before admitting one probe, in milliseconds. */
|
|
4084
|
+
cooldownMs: Scalars['Int']['output'];
|
|
4085
|
+
/** Consecutive failed player invokes of one function before its circuit opens. */
|
|
4086
|
+
failureThreshold: Scalars['Int']['output'];
|
|
4087
|
+
/** 'shadow' (default: the state machine runs in full, every call is admitted, and shadowRefusals counts what enforcement would have refused), 'enforce' (the same state machine, refusing), or 'off' (no state, no measurement). Read from GM_FUNCTION_BREAKER_MODE on the instance that answered. */
|
|
4088
|
+
mode: Scalars['String']['output'];
|
|
4089
|
+
};
|
|
4090
|
+
/** One model function's circuit on the player-invoke path. Rows are created lazily on a function's first failure, so a function absent from this list has never failed. */
|
|
4091
|
+
export type GmFunctionCircuit = {
|
|
4092
|
+
__typename?: 'GmFunctionCircuit';
|
|
4093
|
+
/** App the function belongs to. */
|
|
4094
|
+
appId: Scalars['BigInt']['output'];
|
|
4095
|
+
/** 'closed', 'open', or 'half_open'. In shadow mode an open circuit refuses nothing: read it as 'this function has been failing', not 'players are being blocked'. */
|
|
4096
|
+
circuitState: Scalars['String']['output'];
|
|
4097
|
+
/** Failed player invokes with no success in between. One success resets it to zero, which is what makes the threshold mean a broken function rather than a busy one. */
|
|
4098
|
+
consecutiveFailures: Scalars['Int']['output'];
|
|
4099
|
+
/** When an open circuit next admits one probe, and the window that probe holds. Null when closed. */
|
|
4100
|
+
cooldownUntil: Maybe<Scalars['DateTime']['output']>;
|
|
4101
|
+
/** Function name as a player invokes it, matching gm_function_defs.name. A renamed function starts with a clean circuit. */
|
|
4102
|
+
functionName: Scalars['String']['output'];
|
|
4103
|
+
/** When the circuit last opened. Null if it never has. */
|
|
4104
|
+
openedAt: Maybe<Scalars['DateTime']['output']>;
|
|
4105
|
+
/** Player invokes admitted in shadow mode that enforcement WOULD have refused. This is the measurement: it answers what switching enforcement on would have cost players. Never incremented in enforce mode, where those calls are refused instead. */
|
|
4106
|
+
shadowRefusals: Scalars['BigInt']['output'];
|
|
4107
|
+
/** Lifetime openings. A function that opens once a week and one that opens every minute are different problems, and circuitState cannot tell them apart. */
|
|
4108
|
+
totalOpens: Scalars['BigInt']['output'];
|
|
4109
|
+
/** When the circuit row last changed. */
|
|
4110
|
+
updatedAt: Scalars['DateTime']['output'];
|
|
4111
|
+
};
|
|
3999
4112
|
/** One declared write a function performs: set `property` on `target` to `expression`. */
|
|
4000
4113
|
export type GmFunctionMutation = {
|
|
4001
4114
|
__typename?: 'GmFunctionMutation';
|
|
@@ -4329,7 +4442,7 @@ export type GraphQlServer = {
|
|
|
4329
4442
|
memoryUsagePct: Maybe<Scalars['Float']['output']>;
|
|
4330
4443
|
/** Cloud provider instance id of the underlying host, if known. */
|
|
4331
4444
|
providerInstanceId: Maybe<Scalars['String']['output']>;
|
|
4332
|
-
/** Public hostname clients can reach this instance on directly over TLS, e.g. `ck-api-
|
|
4445
|
+
/** Public hostname clients can reach this instance on directly over TLS, e.g. `ck-api-or-1.prod.v7.cks-env.com`. Null when the instance has no public DNS name or certificate yet, in which case it is reachable only through the shared load balancer and must not be connected to directly. Prefer the `gameApiUrl` returned by mintAppToken over building a URL from this field: that call already picks a low-load instance for you. */
|
|
4333
4446
|
publicHostname: Maybe<Scalars['String']['output']>;
|
|
4334
4447
|
/** Public IPv4 address clients use to reach this server, if assigned. */
|
|
4335
4448
|
publicIp4: Maybe<Scalars['String']['output']>;
|
|
@@ -4796,9 +4909,9 @@ export type Mutation = {
|
|
|
4796
4909
|
consentGridClientMod: Scalars['Boolean']['output'];
|
|
4797
4910
|
/** Operator only (is_operator). Patches the platform compute ceilings: omitted fields stay unchanged, an explicit null clears that override (game-api falls back to env/default), a value (> 0) sets it. SIDE EFFECTS: fans a replica notify out to every game-api so the new ceilings clamp computeSetPolicy within ~30 seconds without a restart, and writes an audit entry. Lowering a ceiling does not shrink already-stored per-app policies; it rejects future computeSetPolicy values above the new ceiling. Returns the updated ceilings row. */
|
|
4798
4911
|
cpSetComputePlatformCeilings: CpComputePlatformCeilings;
|
|
4799
|
-
/** Operator only (is_operator or is_super_admin). Publish or release an emergency kill for one app. This state is separate from the app's own kill and always takes precedence in Management's effective envelope; app users cannot clear it. SIDE EFFECTS: revision increment
|
|
4912
|
+
/** Operator only (is_operator or is_super_admin). Publish or release an emergency kill for one app. This state is separate from the app's own kill and always takes precedence in Management's effective envelope; app users cannot clear it. SIDE EFFECTS: revision increment and a sanitized audit event. NOTHING IS PUSHED TO GAME API: preemption takes effect when its runtime next pulls this app's crowdy.studio-agent-policy/1 replica, which is within about a minute for an app already holding one and not at all for an app that does not until a permitted caller asks. Releasing the operator kill does not enable the app or clear its own kill. Stable errors: AGENT_POLICY_INVALID, AGENT_POLICY_REVISION_CONFLICT, IDEMPOTENCY_CONFLICT. */
|
|
4800
4913
|
cpSetCrowdyStudioAgentAppKill: CrowdyStudioAgentPolicy;
|
|
4801
|
-
/** Operator only (is_operator or is_super_admin). Patch Management platform Agentic Studio policy and global emergency kill. SIDE EFFECTS: the published kill takes precedence over every app setting, revision increments, a sanitized append-only audit event is written,
|
|
4914
|
+
/** Operator only (is_operator or is_super_admin). Patch Management platform Agentic Studio policy and global emergency kill. SIDE EFFECTS: the published kill takes precedence over every app setting, the revision increments, and a sanitized append-only audit event is written. NOTHING IS FANNED OUT TO APPS: Game API pulls crowdy.studio-agent-policy/1 per app, so a platform change reaches an app that already holds a replica within about a minute (refreshAfter is two thirds of a 60s validity) and reaches an app with no replica only when a permitted caller next asks about it. Game API must fail closed if the envelope is missing, malformed, or stale. Narrowing the platform lists narrows every app immediately on its next read, including apps that expressed no narrowing of their own. Hard ZDR/collection/body-retention rules and platform-funded/no-wallet pilot funding cannot be loosened. Stable errors: AGENT_POLICY_INVALID, AGENT_POLICY_REVISION_CONFLICT, IDEMPOTENCY_CONFLICT. */
|
|
4802
4915
|
cpSetCrowdyStudioAgentPlatformPolicy: CrowdyStudioAgentPolicy;
|
|
4803
4916
|
/** Create a new access tier (a free/paid bundle of runtime permissions) for an app. Requires the 'manage_access_tiers' permission on the app (input.appId); super admins bypass. SIDE EFFECTS: validates the tier's permission keys against runtimePermissions and notifies the game API so Buddy sees the new tier. Does NOT grant the tier to any user. */
|
|
4804
4917
|
createAccessTier: AppAccessTier;
|
|
@@ -4914,8 +5027,6 @@ export type Mutation = {
|
|
|
4914
5027
|
deleteTeamRole: Scalars['Boolean']['output'];
|
|
4915
5028
|
/** DESTRUCTIVE: deletes the authenticated user’s per-app state row for `appId` and returns the deleted row. Requires a valid game token; acts only on the caller’s own state. Throws NotFound when no row exists. */
|
|
4916
5029
|
deleteUserAppState: UserAppState;
|
|
4917
|
-
/** DEV ONLY bypass sign-in: returns a session for the given email without email/social verification. Active only when DEV_AUTH_BYPASS is enabled; throws (FORBIDDEN) otherwise. Never enabled in production. */
|
|
4918
|
-
devLogin: AuthResponse;
|
|
4919
5030
|
/** Close the UDP proxy session and socket for this game token. Unsubscribing from udpNotifications does not disconnect; use this mutation (or rely on server inactivity timeout). */
|
|
4920
5031
|
disconnectUdpProxy: Scalars['Boolean']['output'];
|
|
4921
5032
|
/** Exchange a one-time portal authorization code (with the matching PKCE verifier) for an app-scoped gameplay token. Public (the code + verifier authorize the call); called by the destination game at its own origin so the game never sees the player's session token. */
|
|
@@ -5090,6 +5201,8 @@ export type Mutation = {
|
|
|
5090
5201
|
revokeOrgToken: Scalars['Boolean']['output'];
|
|
5091
5202
|
/** Reverts every voxel edit made by `userId` in `appId` between `from` and `to`, returning one RollbackVoxelEventResult per affected voxel (`applied` tells you whether each was actually changed). DEFAULTS to dryRun=true, which only PREVIEWS the planned reversions without writing; pass dryRun=false to actually apply them (DESTRUCTIVE — mutates world state). Requires a valid bearer token AND the `manage_apps` permission on the org that owns `appId` (super admins bypass). */
|
|
5092
5203
|
rollbackVoxelUpdates: Array<RollbackVoxelEventResult>;
|
|
5204
|
+
/** OPERATOR ONLY. Runs the shared-usage billing tick once. It still bills only the last CLOSED clock hour — it will not charge an open hour. Use this to prove a closed-hour debit without waiting for the ~60s cron. Backdating usage rows is a local-test fixture, not something this mutation does on a live tier. */
|
|
5205
|
+
runSharedUsageBillingTick: Scalars['Boolean']['output'];
|
|
5093
5206
|
/** Send an actor (player/NPC) state update for spatial replication to nearby chunks. Requires a bearer game token; opens a UDP proxy session automatically if none exists. Returns Boolean! that is true only when the datagram was ACCEPTED FOR SENDING to the game server — it does NOT confirm the world applied the update. There is NO separate per-request success response: the game server fans the update out to every client in the target chunk INCLUDING the sender, so you observe your own applied update as an ActorUpdateNotification carrying the same sequenceNumber (ActorUpdateResponse is legacy and is never emitted). Failures arrive ASYNCHRONOUSLY as a GenericErrorResponse; both are correlated by the request sequenceNumber (correlation only — not an idempotency key; the server does not dedupe replays). Subscribe to udpNotifications before sending so the self-notification/error is not missed. */
|
|
5094
5207
|
sendActorUpdate: Scalars['Boolean']['output'];
|
|
5095
5208
|
/** Send a spatial voice/audio packet, fanned out to nearby actors as a ClientAudioNotification. Requires a bearer game token; voice may additionally be gated by a runtime/grid permission for the region — if the caller lacks it the game server responds asynchronously with a GenericErrorResponse (errorCode UNAUTHORIZED). Opens a UDP proxy session automatically if none exists. Returns Boolean! that is true only when the datagram was ACCEPTED FOR SENDING — NOT that it was delivered; the sender receives no echo, only errors (GenericErrorResponse, correlated by sequenceNumber) on udpNotifications. sequenceNumber is correlation only, not an idempotency key. */
|
|
@@ -5124,11 +5237,13 @@ export type Mutation = {
|
|
|
5124
5237
|
setAppVisibility: App;
|
|
5125
5238
|
/** Enables or disables off-session auto-billing for an org and updates its thresholds. When enabled and the wallet falls to lowWaterThresholdCents, the saved payment method is charged rechargeAmountCents (requires setupSharedPaymentMethod first). Pass limitCents=null for no per-period cap. Requires the 'manage_billing' org permission. */
|
|
5126
5239
|
setAutoBilling: OrgAutoBilling;
|
|
5240
|
+
/** OPERATOR ONLY. Sets a metered dimension's price, the UNIT that price is quoted in, its free allowances, or any combination, and returns the new row alongside the values that moved. THIS IS THE ONLY SANCTIONED WAY TO CHANGE A PRICE OR A UNIT: the schema seeds use ON CONFLICT DO NOTHING, so a rate reaches a tier once at install and a unit corrected in the declaration never reaches a tier that already exists. Refuses an unknown or unmetered metric (a rate for a dimension nothing meters bills nobody while appearing configured), refuses a negative price, refuses unitLabel without unitQuantity (which would restate the rate card while the arithmetic kept the old divisor), and refuses a call that would change nothing. A unit change that also moves the money needs acknowledgeRepricing: true, so restating a price and cutting it cannot be confused. NOT RETROACTIVE: charges already written are history and the tick is idempotent per closed hour, so a new rate applies to hours billed from now on. Takes effect within about a minute — both billing ticks reload the card on every run, so no restart is needed. */
|
|
5241
|
+
setBillingRate: SetRateCardResult;
|
|
5127
5242
|
/** Replace a member's channel roles with the given set (not additive — roles not listed are removed). Requires the 'manage_roles' channel permission (app admins bypass). Re-pushes the member's effective send permission to Buddy so their ability to post updates immediately. */
|
|
5128
5243
|
setChannelMemberRoles: GroupMember;
|
|
5129
5244
|
/** Set who may create channels in an app and the default membership policy for new channels. Requires app-admin ('manage_apps'). Affects future channel creation only, not existing channels. */
|
|
5130
5245
|
setChannelPolicy: AppGroupPolicy;
|
|
5131
|
-
/** Create or patch an app's Agentic Crowdy Studio policy. Requires 'manage_compute'. Omitted values stay unchanged; first creation starts disabled, killed, and deny-all.
|
|
5246
|
+
/** Create or patch an app's Agentic Crowdy Studio policy. Requires 'manage_compute'. Omitted values stay unchanged; first creation starts disabled, killed, and deny-all. A model/tool/mode/risk list naming anything outside the platform allowlist is REFUSED with AGENT_POLICY_INVALID quoting the platform's current list, rather than silently reduced; a list you do send is stored exactly as sent and can only narrow, and omitting it entirely means 'no narrowing', which inherits the platform's list live on every read. Numeric and retention values are still clamped down to platform limits. Locked ZDR/collection/body-retention rules and the operator app kill cannot be changed. SIDE EFFECTS: increments Management's publication revision and appends a sanitized audit event. NOTHING IS PUSHED TO GAME API: its runtime pulls crowdy.studio-agent-policy/1, obtaining a replica the first time a permitted caller asks about an app that has none, and re-pulling an existing replica once it passes refreshAfter (two thirds of its 60s validity). A change therefore reaches enforcement within about a minute for an app already in use, and not at all until someone asks for one that is not. Stable errors: AGENT_POLICY_INVALID, AGENT_POLICY_REVISION_CONFLICT, IDEMPOTENCY_CONFLICT. */
|
|
5132
5247
|
setCrowdyStudioAgentPolicy: CrowdyStudioAgentPolicy;
|
|
5133
5248
|
/** Sets the per-user early-access override flag, forcing early access on or off regardless of the global free-play window. Requires a super-admin bearer game token (and the management API enabled). */
|
|
5134
5249
|
setEarlyAccessOverride: User;
|
|
@@ -5138,6 +5253,8 @@ export type Mutation = {
|
|
|
5138
5253
|
setListingPricing: Scalars['Boolean']['output'];
|
|
5139
5254
|
/** Super-admin only. Flip users.is_operator to grant or revoke control-plane / operator access. */
|
|
5140
5255
|
setOperator: User;
|
|
5256
|
+
/** OPERATOR ONLY. Sets or clears an organization billing exemption. When true, org-wallet debits and money-driven runtime denials are skipped; usage is still metered and every waived amount is written to org_billing_waivers. Does not waive player-wallet charges, failure breakers, or the per-minute compute budget. reason is required when setting true. SIDE EFFECT: re-evaluates the runtime gate for every shared app in the org, so clearing the exemption re-denies immediately instead of waiting for the next hourly tick. */
|
|
5257
|
+
setOrgBillingExempt: BillingExemptOrgType;
|
|
5141
5258
|
/** Super admin only. Used to freeze/unfreeze orgs platform-wide. SIDE EFFECT: sets organizations.status, which gates the org's platform access. */
|
|
5142
5259
|
setOrgStatus: Organization;
|
|
5143
5260
|
/** Configure the caller's player-wallet auto-recharge: enable/disable, per-period ceiling, recharge amount, and low-water threshold. Enabling requires a vaulted payment method. */
|
|
@@ -5537,9 +5654,6 @@ export type MutationDeleteTeamRoleArgs = {
|
|
|
5537
5654
|
export type MutationDeleteUserAppStateArgs = {
|
|
5538
5655
|
appId: Scalars['BigInt']['input'];
|
|
5539
5656
|
};
|
|
5540
|
-
export type MutationDevLoginArgs = {
|
|
5541
|
-
input: DevLoginInput;
|
|
5542
|
-
};
|
|
5543
5657
|
export type MutationExchangePortalCodeArgs = {
|
|
5544
5658
|
input: ExchangePortalCodeInput;
|
|
5545
5659
|
};
|
|
@@ -5915,6 +6029,9 @@ export type MutationSetAutoBillingArgs = {
|
|
|
5915
6029
|
orgId: Scalars['BigInt']['input'];
|
|
5916
6030
|
rechargeAmountCents?: InputMaybe<Scalars['BigInt']['input']>;
|
|
5917
6031
|
};
|
|
6032
|
+
export type MutationSetBillingRateArgs = {
|
|
6033
|
+
input: SetRateCardInput;
|
|
6034
|
+
};
|
|
5918
6035
|
export type MutationSetChannelMemberRolesArgs = {
|
|
5919
6036
|
input: SetMemberRolesInput;
|
|
5920
6037
|
};
|
|
@@ -5938,6 +6055,11 @@ export type MutationSetOperatorArgs = {
|
|
|
5938
6055
|
userId: Scalars['BigInt']['input'];
|
|
5939
6056
|
value: Scalars['Boolean']['input'];
|
|
5940
6057
|
};
|
|
6058
|
+
export type MutationSetOrgBillingExemptArgs = {
|
|
6059
|
+
exempt: Scalars['Boolean']['input'];
|
|
6060
|
+
orgId: Scalars['BigInt']['input'];
|
|
6061
|
+
reason: Scalars['String']['input'];
|
|
6062
|
+
};
|
|
5941
6063
|
export type MutationSetOrgStatusArgs = {
|
|
5942
6064
|
orgId: Scalars['BigInt']['input'];
|
|
5943
6065
|
status: Scalars['String']['input'];
|
|
@@ -6801,7 +6923,7 @@ export declare enum PlayerFaultCode {
|
|
|
6801
6923
|
PlatformError = "PLATFORM_ERROR",
|
|
6802
6924
|
/** A metered allowance is spent and does not return on its own. */
|
|
6803
6925
|
QuotaExhausted = "QUOTA_EXHAUSTED",
|
|
6804
|
-
/** This caller is asking too often. `retryAfterMs` is
|
|
6926
|
+
/** This caller is asking too often. It arrives ONLY as a thrown error, never in band on a result, and `extensions.retryAfterMs` carries the wait. That number is the milliseconds REMAINING in the current fixed window at the moment the refusal was built, not a fixed backoff, so a second refusal inside the same window carries a smaller number: treat it as a deadline from receipt and do not reuse a cached one. */
|
|
6805
6927
|
RateLimited = "RATE_LIMITED",
|
|
6806
6928
|
/** A breaker is open or an operator switch is off for this subject. */
|
|
6807
6929
|
TemporarilyDisabled = "TEMPORARILY_DISABLED",
|
|
@@ -6816,7 +6938,11 @@ export declare enum PlayerFaultCode {
|
|
|
6816
6938
|
/** This app is served from another datacenter. The error extensions carry `gameApiUrl`; move there and retry. */
|
|
6817
6939
|
WrongDatacenter = "WRONG_DATACENTER"
|
|
6818
6940
|
}
|
|
6819
|
-
/**
|
|
6941
|
+
/**
|
|
6942
|
+
* Why an invocation failed, in the only vocabulary a player may be shown: a stable code, whose problem it is, and whether repeating the identical call could succeed. It carries no message, no engine name and no internal detail by design — blame attribution is the platform's job and presentation is the game's.
|
|
6943
|
+
*
|
|
6944
|
+
* IT CARRIES NO TIMING, AND NOTHING THAT NEEDS TIMING ARRIVES HERE. A refusal that can tell you how long to wait — `RATE_LIMITED` above all — is THROWN, with `extensions.retryAfterMs`, and never returned in band on a result. So `retryable: true` here means "try again", not "try again after N milliseconds", and a client with nothing but this object is right to use its own backoff. `expression-fault.classifier.spec.ts` holds that split rather than leaving it to how the code happens to be arranged.
|
|
6945
|
+
*/
|
|
6820
6946
|
export type PlayerFaultInfo = {
|
|
6821
6947
|
__typename?: 'PlayerFaultInfo';
|
|
6822
6948
|
/** Whose problem this is. The one question a game cannot answer for itself. */
|
|
@@ -6964,7 +7090,7 @@ export type PlayerWalletTransaction = {
|
|
|
6964
7090
|
referenceId: Maybe<Scalars['String']['output']>;
|
|
6965
7091
|
/** Transaction id. */
|
|
6966
7092
|
transactionId: Scalars['BigInt']['output'];
|
|
6967
|
-
/**
|
|
7093
|
+
/** What produced this entry. The complete set of values this API writes: "topup" (credit from a completed checkout, positive), "auto_recharge" (off-session automatic recharge, positive), "payout_credit" (marketplace seller payout, positive), "refund" (marketplace refund returned to the buyer, positive), "usage_debit" (hourly player-compute metered charge for one closed clock hour, negative), "purchase" (marketplace purchase, negative), "adjustment" (operator or dispute-clawback correction, signed). */
|
|
6968
7094
|
transactionType: Scalars['String']['output'];
|
|
6969
7095
|
/** The owning player user id. */
|
|
6970
7096
|
userId: Scalars['BigInt']['output'];
|
|
@@ -7253,7 +7379,7 @@ export type Query = {
|
|
|
7253
7379
|
appsConnection: AppsConnection;
|
|
7254
7380
|
/** All apps belonging to an organization, identified by the org's slug, regardless of visibility or status (includes drafts and archived). Requires authentication; intended for org dashboards. Ordered newest-first. Returns an empty list for an unknown slug. */
|
|
7255
7381
|
appsForOrg: Array<App>;
|
|
7256
|
-
/** The federated sign-in providers currently enabled (e.g. ['google']). Use one with socialLoginStart.
|
|
7382
|
+
/** The federated sign-in providers currently enabled (e.g. ['google']). Use one with socialLoginStart. */
|
|
7257
7383
|
availableLoginProviders: Array<Scalars['String']['output']>;
|
|
7258
7384
|
/** Fetches a single avatar by id. Requires a valid game token. Owner-aware: the owner receives full state; non-owners receive a public copy with `privateState` stripped (null). Throws NotFound if the id does not exist. State blobs are base64-encoded binary. */
|
|
7259
7385
|
avatar: Avatar;
|
|
@@ -7263,6 +7389,10 @@ export type Query = {
|
|
|
7263
7389
|
avatarAppStates: Array<AppAvatarState>;
|
|
7264
7390
|
/** Bulk-fetches actors by a list of 32-character ASCII uuids in one round-trip. Requires a valid game token. PUBLIC-STATE ONLY: `privateState` is stripped (null) for every result regardless of ownership. Unknown uuids are silently omitted. Use this to resolve many actors at once; use `actor` for a single owner-scoped fetch. */
|
|
7265
7391
|
batchLookupActors: Array<Actor>;
|
|
7392
|
+
/** OPERATOR ONLY. Every organization currently marked billing_exempt. An exemption nobody can enumerate is an exemption that outlives its reason. */
|
|
7393
|
+
billingExemptOrgs: Array<BillingExemptOrgType>;
|
|
7394
|
+
/** OPERATOR ONLY. The metered rate card for a scope: every priced dimension with its unit, price and hourly free allowance. SHARED is organization usage billed to the org wallet as "shared_usage"; PLAYER is player compute billed to the player wallet as "usage_debit". A dimension priced at 0 is metered but not charged. Read-only. */
|
|
7395
|
+
billingRateCard: Array<RateCardEntryType>;
|
|
7266
7396
|
/** Fetch one channel by id. Errors if the id is not a channel. */
|
|
7267
7397
|
channel: Group;
|
|
7268
7398
|
/** List the members of a channel (the subscriber set, including pending requests), each with their status and roles. */
|
|
@@ -7303,11 +7433,13 @@ export type Query = {
|
|
|
7303
7433
|
computeTemplates: Array<ComputeTemplateInfo>;
|
|
7304
7434
|
/** Operator only (is_operator). The stored platform ceilings for the per-app WASM compute policy (the knobs computeSetPolicy clamps against). Null fields mean no operator override: game-api uses its COMPUTE_PLATFORM_MAX_* env var, then the code default. Read-only. */
|
|
7305
7435
|
cpComputePlatformCeilings: CpComputePlatformCeilings;
|
|
7436
|
+
/** Operator only (is_operator or is_super_admin). What the ANSWERING ck-api instance carries for Agentic Studio: allowlisted models with their pinned micro-USD prices, the implemented crowdy.agent-tools/1 tools with risk classes, and the complete mode and risk-class value sets a policy may draw from. It is deployed configuration read from that one process, not stored policy and not a fleet-wide claim, so it reports which instance and datacenter answered. A platform policy may name a model or tool absent here: the write succeeds, the value is stored and echoed back, and no run can use it. */
|
|
7437
|
+
cpCrowdyStudioAgentCatalog: CrowdyStudioAgentCatalog;
|
|
7306
7438
|
/** Operator only (is_operator or is_super_admin). Read the platform Agentic Studio enablement, global emergency kill, model/tool/mode/risk allowlists, budget ceilings, retention/privacy policy, pilot funding seam, timestamps, and revision. No provider credential or request body is stored or returned. */
|
|
7307
7439
|
cpCrowdyStudioAgentPlatformPolicy: CrowdyStudioAgentPolicy;
|
|
7308
7440
|
/** Return every effective TURN, SESSION, and PLAYER_DAY request/token/reasoning/cost/tool-round/wall-clock/tool-call/compile dimension with reserved, consumed, and non-negative remaining values. The pilot is platform-funded and this owner/app query never debits a wallet. */
|
|
7309
7441
|
crowdyStudioAgentBudget: AgentBudget;
|
|
7310
|
-
/** Read Management's fail-closed Agentic Crowdy Studio publication: platform enable/kill, per-app operator kill, app enable/kill,
|
|
7442
|
+
/** Read Management's fail-closed Agentic Crowdy Studio publication: platform enable/kill, per-app operator kill, app enable/kill, the resolved model/tool/mode/risk lists (models and modes are the platform/app intersection; a tool or risk list the app left empty is inherited from the platform whole, because empty at a layer that can only narrow means no narrowing), minimum budgets/retention, locked privacy, and platform-funded billing seam. Requires 'view_compute_diagnostics'. This is the source publication, not proof of current runtime enforcement: Game API must hold a fresh crowdy.studio-agent-policy/1 replica and independently enforce it; missing/stale/malformed replica or an empty model/mode intersection must disable the agent. */
|
|
7311
7443
|
crowdyStudioAgentEffectivePolicy: CrowdyStudioAgentPolicy;
|
|
7312
7444
|
/** Replay ordered durable typed events with seq greater than afterSeq. Requires the app-scoped owner and use_studio_agent. Use this query to fill subscription gaps; results are ascending, at-least-once safe, default 100, maximum 200. */
|
|
7313
7445
|
crowdyStudioAgentHistory: AgentEventConnection;
|
|
@@ -7371,6 +7503,8 @@ export type Query = {
|
|
|
7371
7503
|
gameModelFlow: GmFlowTimeline;
|
|
7372
7504
|
/** Fetch one studio-defined function by name. Requires app-admin ('manage_apps'). */
|
|
7373
7505
|
gameModelFunction: GmFunction;
|
|
7506
|
+
/** State of the per-function circuit breaker on the player-invoke path (gameModelInvoke) for one app, plus the mode and thresholds the answering instance is running. In the default 'shadow' mode nothing is refused and shadowRefusals counts what enforcement would have refused, so an open circuit means the function has been failing rather than that players are being blocked. A function that has never failed has no row and is absent. Requires the org 'view_compute_diagnostics' permission. */
|
|
7507
|
+
gameModelFunctionCircuits: GmFunctionBreakerStatus;
|
|
7374
7508
|
/** List studio-defined functions for an app, optionally filtered to those attached to a container type. Requires app-admin ('manage_apps'). */
|
|
7375
7509
|
gameModelFunctions: Array<GmFunction>;
|
|
7376
7510
|
/** Read the app's game-model runtime policy (session creation policy + default participant role). Requires app-admin ('manage_apps'). */
|
|
@@ -7543,7 +7677,7 @@ export type Query = {
|
|
|
7543
7677
|
quotasForOrg: Array<ServiceQuota>;
|
|
7544
7678
|
/** Lists all valid runtime permission keys (e.g. "access", "teleport", "update_voxel_data", "use_voice_chat") that may be assigned to an access tier permissionKeys. PUBLIC: no authentication required. Ordered by the permission bit index. */
|
|
7545
7679
|
runtimePermissions: Array<Scalars['String']['output']>;
|
|
7546
|
-
/** Pick a low-load game server for a native (direct-UDP) client to connect to: returns a random server from the least-loaded ~20% (by client count) of ReadyForClients servers to spread load,
|
|
7680
|
+
/** Pick a low-load game server for a native (direct-UDP) client to connect to: returns a random server from the least-loaded ~20% (by client count) of ReadyForClients servers to spread load, always CO-LOCATED with the datacenter that holds the data for this app (all rows for one app live in a single datacenter). If that datacenter has no healthy Buddy this REFUSES with NO_LOCAL_BUDDY rather than returning one elsewhere: every gameplay write for the session would otherwise cross datacenters, which is invisible because each write still succeeds. Requires a bearer game token; as a side effect it authorizes that token’s P2P session with the chosen Buddy so the native client’s spatial datagrams are accepted. Connect the native client to the returned ip4 and clientPort. Browser clients should instead use the UDP proxy (connectUdpProxy / udpNotifications) and do not need this. */
|
|
7547
7681
|
serverWithLeastClients: ServerStatus;
|
|
7548
7682
|
/** @deprecated Legacy monthly app-slot subscription catalog. New shared publishes use wallet usage billing only. */
|
|
7549
7683
|
sharedEnvPlans: Array<SharedEnvPlan>;
|
|
@@ -7724,6 +7858,9 @@ export type QueryAvatarAppStatesArgs = {
|
|
|
7724
7858
|
export type QueryBatchLookupActorsArgs = {
|
|
7725
7859
|
input: BatchActorLookupInput;
|
|
7726
7860
|
};
|
|
7861
|
+
export type QueryBillingRateCardArgs = {
|
|
7862
|
+
scope: RateScope;
|
|
7863
|
+
};
|
|
7727
7864
|
export type QueryChannelArgs = {
|
|
7728
7865
|
groupId: Scalars['BigInt']['input'];
|
|
7729
7866
|
};
|
|
@@ -7941,6 +8078,11 @@ export type QueryGameModelFunctionArgs = {
|
|
|
7941
8078
|
appId: Scalars['BigInt']['input'];
|
|
7942
8079
|
name: Scalars['String']['input'];
|
|
7943
8080
|
};
|
|
8081
|
+
export type QueryGameModelFunctionCircuitsArgs = {
|
|
8082
|
+
appId: Scalars['BigInt']['input'];
|
|
8083
|
+
limit?: InputMaybe<Scalars['Int']['input']>;
|
|
8084
|
+
name?: InputMaybe<Scalars['String']['input']>;
|
|
8085
|
+
};
|
|
7944
8086
|
export type QueryGameModelFunctionsArgs = {
|
|
7945
8087
|
appId: Scalars['BigInt']['input'];
|
|
7946
8088
|
containerTypeName?: InputMaybe<Scalars['String']['input']>;
|
|
@@ -8259,6 +8401,45 @@ export type QueryWalletTransactionsConnectionArgs = {
|
|
|
8259
8401
|
first?: InputMaybe<Scalars['Int']['input']>;
|
|
8260
8402
|
orgId: Scalars['BigInt']['input'];
|
|
8261
8403
|
};
|
|
8404
|
+
/** One priced dimension: its rate and, where it has one, its hourly free allowance. A dimension with a price of 0 is metered but not charged. */
|
|
8405
|
+
export type RateCardEntryType = {
|
|
8406
|
+
__typename?: 'RateCardEntryType';
|
|
8407
|
+
/** ISO currency code. USD today. */
|
|
8408
|
+
currency: Scalars['String']['output'];
|
|
8409
|
+
/** Operator note on the seed row; null when unset. */
|
|
8410
|
+
description: Maybe<Scalars['String']['output']>;
|
|
8411
|
+
/** Raw metric units free per clock hour before anything is charged, as a BigInt decimal string. Null when this dimension has no allowance row, which for a priced dimension means it bills from the first unit. */
|
|
8412
|
+
freePerHour: Maybe<Scalars['BigInt']['output']>;
|
|
8413
|
+
/** Raw metric units free per UTC calendar month, as a BigInt decimal string. On the PLAYER card this is the pooled monthly trial budget per (player, app), and player_wasm_compute_units is its canonical key. Null when this dimension has no monthly allowance. */
|
|
8414
|
+
freePerMonth: Maybe<Scalars['BigInt']['output']>;
|
|
8415
|
+
/** The metered dimension, e.g. "graphql_recv_ops" or "player_wasm_compute_units". Matches a key the billing tick aggregates. */
|
|
8416
|
+
metric: Scalars['String']['output'];
|
|
8417
|
+
/** Cents charged per unitQuantity raw units, above the free allowance. Fractional values are permitted (the column is NUMERIC(20,6)). 0 means metered but not charged. */
|
|
8418
|
+
priceCents: Scalars['Float']['output'];
|
|
8419
|
+
/** Which card this row is on. */
|
|
8420
|
+
scope: RateScope;
|
|
8421
|
+
/** Human unit this price is quoted in, e.g. "GiB" or "M units". Display only; the arithmetic uses unitQuantity. */
|
|
8422
|
+
unitLabel: Scalars['String']['output'];
|
|
8423
|
+
/** How many raw metric units one priceCents charge covers, as a BigInt decimal string. A price of 15 with unitQuantity 1073741824 is 15 cents per GiB. */
|
|
8424
|
+
unitQuantity: Scalars['BigInt']['output'];
|
|
8425
|
+
};
|
|
8426
|
+
/** One field that moved, with the value it held before. Reported so a price change is auditable from the response rather than reconstructed afterwards. */
|
|
8427
|
+
export type RateChangeType = {
|
|
8428
|
+
__typename?: 'RateChangeType';
|
|
8429
|
+
/** One of "priceCents", "unitLabel", "unitQuantity", "freePerHour" or "freePerMonth". */
|
|
8430
|
+
field: Scalars['String']['output'];
|
|
8431
|
+
metric: Scalars['String']['output'];
|
|
8432
|
+
/** The value before this call, as a decimal string. "none" when there was no allowance row. */
|
|
8433
|
+
previous: Scalars['String']['output'];
|
|
8434
|
+
scope: RateScope;
|
|
8435
|
+
/** The value after this call, as a decimal string. */
|
|
8436
|
+
updated: Scalars['String']['output'];
|
|
8437
|
+
};
|
|
8438
|
+
/** Which rate card. SHARED prices organization metered usage for shared-environment apps (billed hourly to the org wallet as "shared_usage"). PLAYER prices player compute (billed hourly to the player wallet as "usage_debit"). */
|
|
8439
|
+
export declare enum RateScope {
|
|
8440
|
+
Player = "PLAYER",
|
|
8441
|
+
Shared = "SHARED"
|
|
8442
|
+
}
|
|
8262
8443
|
/** Realtime lifecycle event delivered on the udpNotifications subscription. It is a control frame — it carries no appId, so it is never dropped by the per-app fan-out filter. Branch on `code`; use `retryable` to decide whether retrying can succeed. Most codes report that a session could not be opened or correctly scoped and are TERMINAL: the subscription completes immediately after emitting one, so the client must fix the cause and resubscribe. The exception is SERVER_DRAINING, which arrives mid-stream on a healthy subscription and does NOT end it — see that code below. */
|
|
8263
8444
|
export type RealtimeConnectionEvent = {
|
|
8264
8445
|
__typename?: 'RealtimeConnectionEvent';
|
|
@@ -8303,8 +8484,6 @@ export type RequestLoginLinkInput = {
|
|
|
8303
8484
|
/** Result of requesting a magic link. */
|
|
8304
8485
|
export type RequestLoginLinkResult = {
|
|
8305
8486
|
__typename?: 'RequestLoginLinkResult';
|
|
8306
|
-
/** DEV ONLY: when DEV_AUTH_BYPASS is enabled (so no email is delivered), the one-time token to pass to completeLoginLink. Always null in production. */
|
|
8307
|
-
devToken: Maybe<Scalars['String']['output']>;
|
|
8308
8487
|
/** Always true (does not reveal whether the email exists). */
|
|
8309
8488
|
sent: Scalars['Boolean']['output'];
|
|
8310
8489
|
};
|
|
@@ -8938,13 +9117,13 @@ export type SetContainerPropertyInput = {
|
|
|
8938
9117
|
};
|
|
8939
9118
|
/** Patch an app's Agentic Studio policy. Requires manage_compute. Omitted fields stay unchanged; all supplied authority and limits are clamped to platform policy. */
|
|
8940
9119
|
export type SetCrowdyStudioAgentAppPolicyInput = {
|
|
8941
|
-
/** Replacement exact model allowlist (max 64).
|
|
9120
|
+
/** Replacement exact model allowlist (max 64). On an APP patch every id must already be in the platform allowlist or the whole write is refused with AGENT_POLICY_INVALID naming that list; values are never silently dropped. On the PLATFORM patch this list IS the ceiling. Empty denies all models at either layer. */
|
|
8942
9121
|
allowedModelIds?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
8943
|
-
/** Replacement mode allowlist
|
|
9122
|
+
/** Replacement mode allowlist. On an APP patch every mode must already be in the platform allowlist or the whole write is refused with AGENT_POLICY_INVALID naming that list. Empty denies every mode at either layer; there is no inherit-on-empty for modes. */
|
|
8944
9123
|
allowedModes?: InputMaybe<Array<CrowdyStudioAgentMode>>;
|
|
8945
|
-
/** Replacement risk-class allowlist
|
|
9124
|
+
/** Replacement risk-class allowlist. On an APP patch every class must already be in the platform allowlist or the whole write is refused with AGENT_POLICY_INVALID naming that list, and what you do send is stored exactly as sent; OMIT the field to express no narrowing, which inherits the platform list live on every read. On the PLATFORM patch this list is the ceiling and empty denies every class. */
|
|
8946
9125
|
allowedRiskClasses?: InputMaybe<Array<CrowdyStudioAgentRiskClass>>;
|
|
8947
|
-
/** Replacement exact logical tool-name allowlist (max 256).
|
|
9126
|
+
/** Replacement exact logical tool-name allowlist (max 256). On an APP patch every name must already be in the platform allowlist or the whole write is refused with AGENT_POLICY_INVALID naming that list, and what you do send is stored exactly as sent; OMIT the field to express no narrowing, which inherits the platform list live on every read. Sending an empty array on an APP patch clears a narrowing and is therefore also "no narrowing", not "deny all". On the PLATFORM patch this list is the ceiling and empty denies every tool. */
|
|
8948
9127
|
allowedToolNames?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
8949
9128
|
/** App whose policy is changed. */
|
|
8950
9129
|
appId: Scalars['BigInt']['input'];
|
|
@@ -8984,13 +9163,13 @@ export type SetCrowdyStudioAgentOperatorAppKillInput = {
|
|
|
8984
9163
|
};
|
|
8985
9164
|
/** Operator-only platform policy patch. Omitted values stay unchanged; hard v1 privacy and retention maxima still apply. */
|
|
8986
9165
|
export type SetCrowdyStudioAgentPlatformPolicyInput = {
|
|
8987
|
-
/** Replacement exact model allowlist (max 64).
|
|
9166
|
+
/** Replacement exact model allowlist (max 64). On an APP patch every id must already be in the platform allowlist or the whole write is refused with AGENT_POLICY_INVALID naming that list; values are never silently dropped. On the PLATFORM patch this list IS the ceiling. Empty denies all models at either layer. */
|
|
8988
9167
|
allowedModelIds?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
8989
|
-
/** Replacement mode allowlist
|
|
9168
|
+
/** Replacement mode allowlist. On an APP patch every mode must already be in the platform allowlist or the whole write is refused with AGENT_POLICY_INVALID naming that list. Empty denies every mode at either layer; there is no inherit-on-empty for modes. */
|
|
8990
9169
|
allowedModes?: InputMaybe<Array<CrowdyStudioAgentMode>>;
|
|
8991
|
-
/** Replacement risk-class allowlist
|
|
9170
|
+
/** Replacement risk-class allowlist. On an APP patch every class must already be in the platform allowlist or the whole write is refused with AGENT_POLICY_INVALID naming that list, and what you do send is stored exactly as sent; OMIT the field to express no narrowing, which inherits the platform list live on every read. On the PLATFORM patch this list is the ceiling and empty denies every class. */
|
|
8992
9171
|
allowedRiskClasses?: InputMaybe<Array<CrowdyStudioAgentRiskClass>>;
|
|
8993
|
-
/** Replacement exact logical tool-name allowlist (max 256).
|
|
9172
|
+
/** Replacement exact logical tool-name allowlist (max 256). On an APP patch every name must already be in the platform allowlist or the whole write is refused with AGENT_POLICY_INVALID naming that list, and what you do send is stored exactly as sent; OMIT the field to express no narrowing, which inherits the platform list live on every read. Sending an empty array on an APP patch clears a narrowing and is therefore also "no narrowing", not "deny all". On the PLATFORM patch this list is the ceiling and empty denies every tool. */
|
|
8994
9173
|
allowedToolNames?: InputMaybe<Array<Scalars['String']['input']>>;
|
|
8995
9174
|
/** Enable or disable this policy layer. */
|
|
8996
9175
|
enabled?: InputMaybe<Scalars['Boolean']['input']>;
|
|
@@ -9153,6 +9332,34 @@ export type SetQuotaInput = {
|
|
|
9153
9332
|
/** Scope the rule to this access tier (BigInt as a decimal string). */
|
|
9154
9333
|
tierId?: InputMaybe<Scalars['BigInt']['input']>;
|
|
9155
9334
|
};
|
|
9335
|
+
export type SetRateCardInput = {
|
|
9336
|
+
/** Required when a unit change also changes the money. Restating 15c per GiB as 1.396984c per 100 MB is the same price and needs nothing; changing 20c per 100 MB to 20c per GiB-month is a 7841x cut and must be stated deliberately. The mutation refuses rather than guessing which one you meant. */
|
|
9337
|
+
acknowledgeRepricing?: InputMaybe<Scalars['Boolean']['input']>;
|
|
9338
|
+
/** New hourly free allowance in raw metric units, as a BigInt decimal string. Must be >= 0. Omit to leave the allowance unchanged. */
|
|
9339
|
+
freePerHour?: InputMaybe<Scalars['BigInt']['input']>;
|
|
9340
|
+
/** New monthly free allowance in raw metric units, as a BigInt decimal string. Must be >= 0. On the PLAYER card with metric player_wasm_compute_units this is the pooled monthly TRIAL BUDGET per (player, app) — the only sanctioned way to change it on a live tier. Omit to leave it unchanged. */
|
|
9341
|
+
freePerMonth?: InputMaybe<Scalars['BigInt']['input']>;
|
|
9342
|
+
/** The metered dimension to reprice. Refused unless the platform actually meters it: a rate for an unmetered metric bills nobody while appearing configured. */
|
|
9343
|
+
metric: Scalars['String']['input'];
|
|
9344
|
+
/** New price in cents per unitQuantity raw units. Must be >= 0; 0 means meter but do not charge. Omit to leave the price unchanged. Fractional values are accepted (the column is NUMERIC(20,6)). */
|
|
9345
|
+
priceCents?: InputMaybe<Scalars['Float']['input']>;
|
|
9346
|
+
/** Why this price is changing. Required: a rate change with no stated reason is not auditable after the fact. Recorded in the operator log with the before and after values. */
|
|
9347
|
+
reason: Scalars['String']['input'];
|
|
9348
|
+
/** Which card to edit. */
|
|
9349
|
+
scope: RateScope;
|
|
9350
|
+
/** New human unit this price is quoted in, e.g. "GiB" or "GiB-mo". Must be supplied together with unitQuantity: a label on its own restates the rate card while the arithmetic keeps the old divisor. Omit both to leave the unit unchanged. */
|
|
9351
|
+
unitLabel?: InputMaybe<Scalars['String']['input']>;
|
|
9352
|
+
/** New number of raw metric units one priceCents charge covers, as a BigInt decimal string. Must be > 0 and supplied together with unitLabel. Needed because every rate seed is ON CONFLICT DO NOTHING, so a unit corrected in the declaration never reaches a tier that is already installed. */
|
|
9353
|
+
unitQuantity?: InputMaybe<Scalars['BigInt']['input']>;
|
|
9354
|
+
};
|
|
9355
|
+
/** The result of setting a rate: the new row and what moved. */
|
|
9356
|
+
export type SetRateCardResult = {
|
|
9357
|
+
__typename?: 'SetRateCardResult';
|
|
9358
|
+
/** One entry per field that changed. Never empty: a call that would change nothing is refused rather than reported as a successful no-op. */
|
|
9359
|
+
changes: Array<RateChangeType>;
|
|
9360
|
+
/** The dimension as it now stands. */
|
|
9361
|
+
entry: RateCardEntryType;
|
|
9362
|
+
};
|
|
9156
9363
|
/** Set or clear the current-turn user of a session. */
|
|
9157
9364
|
export type SetSessionTurnInput = {
|
|
9158
9365
|
/** The app (tenant) that owns the session. */
|
|
@@ -10194,7 +10401,7 @@ export type WalletTransaction = {
|
|
|
10194
10401
|
referenceId: Maybe<Scalars['String']['output']>;
|
|
10195
10402
|
/** Unique transaction id (BigInt as a decimal string). */
|
|
10196
10403
|
transactionId: Scalars['BigInt']['output'];
|
|
10197
|
-
/** What produced this transaction.
|
|
10404
|
+
/** What produced this transaction. The complete set of values this API writes: "topup" (wallet credit from a completed checkout, positive), "admin_credit" (operator credit applied without a payment provider, positive), "auto_recharge" (off-session automatic wallet recharge, positive), "shared_usage" (hourly shared-environment metered charge for one closed clock hour, negative), "agent_usage" (Crowdy Studio agent run charged at provider cost, negative), "reserved_throughput" (monthly or prorated reserved egress capacity, negative), "markup_payout" (the app developer's markup on a player's compute bill, credited to the org in the same transaction as the player debit that produced it, positive). No other value is written; earlier versions of this description also listed "usage" and "environment_usage", neither of which was ever produced. */
|
|
10198
10405
|
transactionType: Scalars['String']['output'];
|
|
10199
10406
|
/** Wallet this transaction belongs to (BigInt as a decimal string). */
|
|
10200
10407
|
walletId: Scalars['BigInt']['output'];
|
|
@@ -10262,6 +10469,8 @@ export type WasmComputeStat = {
|
|
|
10262
10469
|
/** Aggregate compute activity for an app over a recent window: throughput, failure rate, fuel, egress, and a per-module breakdown. */
|
|
10263
10470
|
export type WasmComputeStats = {
|
|
10264
10471
|
__typename?: 'WasmComputeStats';
|
|
10472
|
+
/** The instant through which these totals are complete. Activity is counted from per-minute usage rollups that each instance buffers in memory and writes every few seconds, so entry calls made after this instant are NOT included yet. Read it before concluding anything from a zero: `totalRuns: 0` with an `aggregatedThrough` a few seconds in the past means "nothing aggregated yet", not "nothing ran". Poll until `aggregatedThrough` is later than the run you are looking for. */
|
|
10473
|
+
aggregatedThrough: Scalars['DateTime']['output'];
|
|
10265
10474
|
/** Average run duration in microseconds. */
|
|
10266
10475
|
avgDurationUs: Scalars['Int']['output'];
|
|
10267
10476
|
/** Per-module breakdown. */
|
|
@@ -10274,7 +10483,7 @@ export type WasmComputeStats = {
|
|
|
10274
10483
|
totalEgressMsgs: Scalars['BigInt']['output'];
|
|
10275
10484
|
/** Total fuel consumed in the window. */
|
|
10276
10485
|
totalFuelUsed: Scalars['BigInt']['output'];
|
|
10277
|
-
/** Total
|
|
10486
|
+
/** Total entry calls (ticks + invocations) in the window, complete through `aggregatedThrough`. */
|
|
10278
10487
|
totalRuns: Scalars['Int']['output'];
|
|
10279
10488
|
/** The window size in minutes. */
|
|
10280
10489
|
windowMinutes: Scalars['Int']['output'];
|