crowdypy 0.10.0.dev1__tar.gz → 0.11.0.dev1__tar.gz
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.
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/MIGRATION.md +25 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/PKG-INFO +8 -1
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/README.md +7 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/docs/compatibility.md +1 -1
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/docs/parity-matrix.md +21 -4
- crowdypy-0.11.0.dev1/operations/channels/BanChannelMember.graphql +16 -0
- crowdypy-0.11.0.dev1/operations/channels/UnbanChannelMember.graphql +3 -0
- crowdypy-0.11.0.dev1/operations/teams/BanTeamMember.graphql +16 -0
- crowdypy-0.11.0.dev1/operations/teams/UnbanTeamMember.graphql +3 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/pyproject.toml +9 -9
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/schema.gql +199 -108
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/__init__.py +24 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_generated/enums.py +1 -1
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_generated/inputs.py +1 -1
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_generated/operations.py +38 -2
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/channels.py +25 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/teams.py +25 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_version.py +1 -1
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/channels.py +25 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/teams.py +25 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/errors.py +34 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/exec_gateway.py +59 -5
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/player_host/schemas.v1.json +2 -2
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/fixtures/player-host.v1.json +2 -2
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/domains/test_social_domains.py +23 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_exec_gateway.py +82 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_refusals.py +34 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tools/parity/classifications.toml +3 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/uv.lock +1 -1
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/CMakeLists.txt +1 -1
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/PROVENANCE.md +1 -1
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/exec.hpp +18 -2
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/groups.hpp +86 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/generated/enums.hpp +2 -2
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/generated/operations.hpp +94 -2
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/errors.hpp +27 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/package.json +6 -6
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/domains/exec.cpp +34 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/graphql/error_extensions.hpp +1 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/crowdy-studio-diagnostics.v1.json +2 -2
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/crowdyjs-studio-layout.v1.json +2 -2
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/.gitattributes +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/.gitignore +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/.gitleaks.toml +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/AGENTS.md +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/CMakeLists.txt +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/LICENSE +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/SECURITY.md +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/benchmarks/README.md +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/benchmarks/bench_replication.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/docs/e2e-coverage.md +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/licenses/OpenSSL-LICENSE.txt +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/native/common.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/native/module.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/native/replication.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/native/replication_binding.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/native/session_binding.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/native/voice_binding.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/native/wire_binding.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/actors/Actor.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/actors/Actors.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/actors/BatchLookupActors.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/actors/CreateActor.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/actors/DeleteActor.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/actors/UpdateActor.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/actors/UpdateActorState.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/appAccess/AppAccessTiers.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/appAccess/AppFeatures.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/appAccess/AppGrantMemberCandidates.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/appAccess/AppUserAccessByApp.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/appAccess/ArchiveAccessTier.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/appAccess/ClaimFreeAppAccess.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/appAccess/CreateAccessTier.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/appAccess/DefineAppFeature.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/appAccess/GrantAppAccess.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/appAccess/GrantMyAppAccess.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/appAccess/GrantTierFeature.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/appAccess/MyAppAccess.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/appAccess/RevokeAppAccess.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/appAccess/RevokeTierFeature.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/appAccess/RuntimePermissions.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/appAccess/SuspendAppAccess.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/appAccess/TierFeatures.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/appAccess/UpdateAccessTier.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/apps/App.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/apps/AppBySlug.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/apps/AppDiscovery.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/apps/AppsForOrg.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/apps/ArchiveApp.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/apps/CodeAdmissions.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/apps/CreateApp.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/apps/MarketplaceApps.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/apps/MyApps.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/apps/PlaceableDatacenters.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/apps/UpdateApp.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/auth/Logout.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/auth/LogoutAllDevices.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/avatars/Avatars.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/billing/AppBudget.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/billing/AppBudgets.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/billing/SetAppBudget.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/billing/WalletBalance.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/billing/WalletTransactions.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/channels/AddChannelMember.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/channels/Channel.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/channels/ChannelMembers.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/channels/ChannelPolicy.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/channels/ChannelRoles.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/channels/Channels.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/channels/CreateChannel.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/channels/CreateChannelRole.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/channels/DeleteChannel.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/channels/DeleteChannelRole.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/channels/JoinChannel.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/channels/LeaveChannel.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/channels/MyChannels.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/channels/RemoveChannelMember.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/channels/RequestToJoinChannel.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/channels/SetChannelMemberRoles.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/channels/SetChannelPolicy.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/channels/UpdateChannel.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/channels/UpdateChannelRole.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/chunks/GetChunk.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/chunks/GetChunkLods.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/chunks/GetChunksByDistance.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/chunks/GetVoxelList.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/chunks/UpdateChunk.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/chunks/UpdateChunkLods.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/chunks/UpdateChunkState.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/crowdyStudio/CrowdyStudio.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/exec/Exec.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/gameApps/GameApps.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/grids/CreateGridChannel.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/grids/GridChannels.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/grids/MintGridToken.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/host/Host.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/inputLog/InputLogMessages.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/inputLog/InputLogSessions.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/marketplace/Marketplace.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/organizations/CreateOrgRole.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/organizations/CreateOrgToken.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/organizations/CreateOrganization.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/organizations/DeleteOrgRole.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/organizations/InviteOrgMember.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/organizations/MemberRoles.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/organizations/MyOrganizations.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/organizations/OrgMembers.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/organizations/OrgPermissions.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/organizations/OrgRoles.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/organizations/OrgTokens.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/organizations/Organization.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/organizations/OrganizationBySlug.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/organizations/RemoveOrgMember.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/organizations/RevokeOrgToken.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/organizations/UpdateOrgMemberRoles.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/organizations/UpdateOrgRole.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/organizations/UpdateOrgToken.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/payments/CapturePaypalCheckout.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/payments/CreateCheckout.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/payments/MyCheckouts.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/platform/PlatformConfig.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/playerWallet/PlayerWallet.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/quotas/DeleteQuota.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/quotas/EffectiveQuota.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/quotas/QuotasForApp.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/quotas/QuotasForOrg.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/quotas/SetQuota.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/serverStatus/ActiveGraphQLServers.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/serverStatus/GameClientBootstrap.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/serverStatus/GraphqlServers.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/serverStatus/ServerWithLeastClients.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/serverStatus/VersionInfo.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/sharedEnvironment/SharedEnvironment.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/state/DeleteUserAppState.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/state/UpdateUserAppState.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/state/UserAppState.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/state/UserAppStates.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/teams/AddTeamMember.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/teams/CreateTeam.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/teams/CreateTeamRole.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/teams/DeleteTeam.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/teams/DeleteTeamRole.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/teams/JoinTeam.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/teams/LeaveTeam.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/teams/MyTeams.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/teams/RemoveTeamMember.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/teams/RequestToJoinTeam.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/teams/SetTeamMemberRoles.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/teams/SetTeamPolicy.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/teams/Team.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/teams/TeamMembers.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/teams/TeamPolicy.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/teams/TeamRoles.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/teams/Teams.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/teams/UpdateTeam.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/teams/UpdateTeamRole.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/teleport/TeleportRequest.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/usage/AppGraphqlOperations.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/usage/AppUsageSummary.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/usage/PlayerPulse.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/users/DeleteMyAccount.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/users/FreePlayWindow.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/users/Me.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/users/PlayerProfile.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/users/UpdateGamertag.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/users/UpdateUserState.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/users/User.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/voxels/ListVoxelUpdatesByDistance.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/voxels/ListVoxels.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/voxels/RollbackVoxelUpdates.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/voxels/UpdateVoxel.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/operations/voxels/VoxelUpdateHistory.graphql +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/scripts/_pins.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/scripts/ci/assert_default_origin.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/scripts/ci/build_openssl.sh +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/scripts/ci/check_content_policy.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/scripts/ci/check_pin_tiers.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/scripts/ci/cibw_before_all_linux.sh +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/scripts/ci/resolve-release-tier.sh +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/scripts/ci/resolve-release-tier.test.sh +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/scripts/ci/resolve_pypi_version.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/scripts/ci/stamp_version.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/scripts/ci/verify_artifacts.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/scripts/codegen.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/scripts/schema_drift.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/scripts/schema_sync.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/scripts/unasync.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/scripts/vendor_crowdycpp.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_concurrency.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_default_origin.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_generated/__init__.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_grid.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_native.pyi +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_operation.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/__init__.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/client.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/__init__.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/_base.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/actors.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/admin.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/app_access.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/apps.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/auth.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/avatars.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/billing.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/chunks.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/crowdy_studio.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/crowdy_studio_agent.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/crowdy_studio_github.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/discovery.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/exec.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/game_apps.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/grids.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/host.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/input_log.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/marketplace.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/organizations.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/payments.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/platform.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/player_wallet.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/portal.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/quotas.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/server_status.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/shared_environment.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/state.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/teleport.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/udp.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/usage.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/users.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/domains/voxels.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/graphql.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/grid_scope.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/kit/__init__.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/kit/actions.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/kit/kit.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/kit/social.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/kit/wire.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/rediscover.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/stores.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/_sync/world.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/auth_state.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/client.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/codecs.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/datacenter_redirect.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/__init__.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/_base.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/actors.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/admin.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/app_access.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/apps.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/auth.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/avatars.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/billing.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/chunks.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/crowdy_studio.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/crowdy_studio_agent.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/crowdy_studio_github.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/discovery.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/exec.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/game_apps.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/grids.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/host.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/input_log.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/marketplace.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/organizations.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/payments.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/platform.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/player_wallet.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/portal.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/quotas.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/server_status.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/shared_environment.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/state.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/teleport.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/udp.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/usage.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/users.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/domains/voxels.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/enums.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/estate.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/graphql.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/grid_scope.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/inputs.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/kit/__init__.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/kit/actions.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/kit/kit.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/kit/social.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/kit/wire.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/lb_cookie.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/media.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/pkce.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/player_host/__init__.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/player_host/agent_errors.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/player_host/agent_types.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/player_host/json_schema.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/player_host/schemas.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/player_host/types.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/py.typed +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/rediscover.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/replication.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/session.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/stores.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/studio/__init__.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/studio/client_tick_interval.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/studio/controller.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/studio/diagnostics.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/studio/github_new_repo.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/studio/layout.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/studio/models.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/studio/starter_projects.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/subscriptions.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/sync.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/utils.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/wire.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/src/crowdypy/world.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/conftest.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/e2e/__init__.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/e2e/conftest.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/e2e/test_e2e_identity.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/e2e/test_e2e_input_log.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/e2e/test_e2e_open_grid_exec_gateway.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/e2e/test_e2e_ranged_channel.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/e2e/test_e2e_replication.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/e2e/test_e2e_studio.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/e2e/test_e2e_world.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/e2e/test_e2e_world_data.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/fixtures/README.md +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/fixtures/binary-wire-fixtures.json +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/fixtures/exec-client-frames.json +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/fixtures/voice-frames.json +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/__init__.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/domains/__init__.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/domains/test_crowdycpp_roots.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/domains/test_input_log_reads.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/domains/test_org_domains.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/domains/test_studio_exec_domains.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/domains/test_world_domains.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_check_pin_tiers.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_core.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_durable_stores.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_estate_moves.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_fixture_provenance.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_grid_scope.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_kit.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_lazy_exports.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_player_host.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_release_versions.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_replication.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_sdk_audience.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_studio_controller.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_studio_diagnostics.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_studio_layout.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_subscriptions.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_transport.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_udp_api.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_voice_frames.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_wire.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tests/unit/test_world_session.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tools/e2e/provision.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tools/fixtures/player_host.mjs +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/tools/parity/parity.py +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/LICENSE +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/cmake/CheckPublicHeaders.cmake +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/cmake/CrowdyCPPConfig.cmake.in +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/cmake/CrowdyFindOpus.cmake +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/cmake/studio_layout_fixture.hpp.in +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/client.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/base64.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/bytes.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/clock.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/crypto.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/logger.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/result.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/spsc.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/uuid.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/crowdy.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/default_origin.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/admin.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/auth.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/crowdy_studio.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/crowdy_studio_agent.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/crowdy_studio_github.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/discovery.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/domain_base.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/game_apps.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/grids.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/marketplace.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/player_wallet.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/portal.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/realtime_control.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/server_status.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/types.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/users.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/world_data.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/async_scope.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/auth_state.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/cancel.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/datacenter_redirect.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/dispatcher.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/estate.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/graphql_client.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/http.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/json.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/rediscover.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/subscription_client.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/websocket.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/actions.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/kit.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/social.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/wire.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/media/opus.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/media/video_frames.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/media/voice_frames.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/player_host/adapter.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/player_host/player_host.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/player_host/schemas.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/player_host/types.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/replication/connection.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/replication/session_provider.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/replication/types.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/replication/udp_socket.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/chunk_store.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/codec.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/durable.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/keys.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/stores.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/world_session.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/controller.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/diagnostics.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/editor.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/github.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/github_layout.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/integration.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/layout.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/models.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/runtime.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/wire/codec.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/wire/protocol.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/include/crowdy/world.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/client.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/core/base64.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/core/clock.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/core/crypto_default_unavailable.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/core/crypto_openssl.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/core/crypto_unavailable.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/core/logger.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/core/uuid.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/graphql/async_transport.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/graphql/auth_state.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/graphql/errors.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/graphql/graphql_client.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/graphql/http_curl.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/graphql/http_none.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/graphql/json.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/graphql/subscription_client.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/graphql/websocket_curl.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/graphql/websocket_none.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/media/opus.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/player_host/schemas.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/player_host/types.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/replication/connection.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/replication/socket_errors.hpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/replication/udp_socket.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/session/world_session.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/studio/diagnostics.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/studio/editor.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/src/studio/integration.cpp +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/third_party/yyjson/LICENSE +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/third_party/yyjson/yyjson.c +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/third_party/yyjson/yyjson.h +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/exec-client-frames.json +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/exec-gateway-cases.json +0 -0
- {crowdypy-0.10.0.dev1 → crowdypy-0.11.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/voice-frames.json +0 -0
|
@@ -3,6 +3,31 @@
|
|
|
3
3
|
CrowdyPy is pre-1.0. Within a minor line, patch releases keep source compatibility; each
|
|
4
4
|
new minor may change the API. Read the section for every minor you skip.
|
|
5
5
|
|
|
6
|
+
## 0.11.0
|
|
7
|
+
|
|
8
|
+
CrowdyJS 18.10.0 and CrowdyCPP 0.63.0. Additive.
|
|
9
|
+
|
|
10
|
+
- **Access that ends ends for good.** ck-exec 0.16 closes a session with code `4403` (now
|
|
11
|
+
`EXEC_CLOSE_ACCESS_ENDED`) and the reason when what it rests on ends: the player's access
|
|
12
|
+
(suspended, revoked, an expired grant), their session (signed out, everywhere too, or the app's
|
|
13
|
+
authorization withdrawn), or the account (blocked). `ExecConnection` and `AsyncExecConnection`
|
|
14
|
+
treat it as final: `on_access_ended(listener)` is called once with the reason, the call in flight
|
|
15
|
+
fails `Denied`, and the connection does not reconnect. Until 0.10.0 it redialed, and the redial
|
|
16
|
+
was refused (HTTP 401 "access ended") after one retry. Tell the player; connect again only once
|
|
17
|
+
they hold access again.
|
|
18
|
+
- **Channel and team bans.** `client.channels.ban(group_id, user_id, reason=None)` /
|
|
19
|
+
`unban(group_id, user_id)` and the same on `client.teams`, with the group's `manage_members`
|
|
20
|
+
permission (never the group's owner, never yourself). A banned user is removed, stops receiving
|
|
21
|
+
the channel, and joining, requesting to join and being added are refused with
|
|
22
|
+
`GROUP_MEMBER_BANNED` until the ban is lifted; leaving or being removed does not lift it.
|
|
23
|
+
- **Two refusal readers.** `account_blocked_of(error)` returns `CrowdyAccountBlocked(blocked_until)`
|
|
24
|
+
for `ACCOUNT_BLOCKED` (a platform operator blocked the account: every request and sign-in is
|
|
25
|
+
refused; `blocked_until` is set for a timed block), and `group_member_banned_of(error)` is `True`
|
|
26
|
+
for `GROUP_MEMBER_BANNED`. Neither is fixed by retrying. `ACCOUNT_BLOCKED_CODE` and
|
|
27
|
+
`GROUP_MEMBER_BANNED_CODE` name the codes.
|
|
28
|
+
- `blockAccount`, `unblockAccount` and `accountBlock` are super-admin operations and are not
|
|
29
|
+
wrapped (`docs/parity-matrix.md`).
|
|
30
|
+
|
|
6
31
|
## 0.10.0
|
|
7
32
|
|
|
8
33
|
CrowdyJS 18.9.0 and CrowdyCPP 0.62.0. Additive, with one floor: every sessions read selects
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: crowdypy
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.11.0.dev1
|
|
4
4
|
Summary: Official Python SDK for Crowded Kingdoms: typed GraphQL clients and a native UDP replication core
|
|
5
5
|
Keywords: crowded-kingdoms,multiplayer,replication,graphql,sdk,udp
|
|
6
6
|
Author: Crowded Kingdoms
|
|
@@ -51,6 +51,13 @@ CrowdyPy follows the [CrowdyJS](https://github.com/CrowdedKingdoms/CrowdyJS) API
|
|
|
51
51
|
client, bound with [nanobind](https://github.com/wjakob/nanobind) and shipped inside the
|
|
52
52
|
wheel. Python never touches a datagram.
|
|
53
53
|
|
|
54
|
+
**v0.11.0: access that ends ends for good, and channel and team bans (CrowdyJS 18.10.0, CrowdyCPP
|
|
55
|
+
0.63.0).** A host's `4403` close (ck-exec 0.16: the player was suspended, revoked, signed out or
|
|
56
|
+
blocked) is final: `ExecConnection.on_access_ended` hears the reason, the call in flight fails
|
|
57
|
+
`Denied`, and the connection does not redial. `client.channels.ban` / `unban` and
|
|
58
|
+
`client.teams.ban` / `unban` manage bans, and `account_blocked_of` / `group_member_banned_of` read
|
|
59
|
+
the two refusals. See [MIGRATION.md](MIGRATION.md).
|
|
60
|
+
|
|
54
61
|
**v0.10.0: the input log says what it lost (CrowdyJS 18.9.0, CrowdyCPP 0.62.0).** Every session
|
|
55
62
|
from `client.input_log.sessions` carries `missingRecords`, the inputs the replication server
|
|
56
63
|
accepted that never reached the log, which needs the Game API release after v2.40.2. Its
|
|
@@ -11,6 +11,13 @@ CrowdyPy follows the [CrowdyJS](https://github.com/CrowdedKingdoms/CrowdyJS) API
|
|
|
11
11
|
client, bound with [nanobind](https://github.com/wjakob/nanobind) and shipped inside the
|
|
12
12
|
wheel. Python never touches a datagram.
|
|
13
13
|
|
|
14
|
+
**v0.11.0: access that ends ends for good, and channel and team bans (CrowdyJS 18.10.0, CrowdyCPP
|
|
15
|
+
0.63.0).** A host's `4403` close (ck-exec 0.16: the player was suspended, revoked, signed out or
|
|
16
|
+
blocked) is final: `ExecConnection.on_access_ended` hears the reason, the call in flight fails
|
|
17
|
+
`Denied`, and the connection does not redial. `client.channels.ban` / `unban` and
|
|
18
|
+
`client.teams.ban` / `unban` manage bans, and `account_blocked_of` / `group_member_banned_of` read
|
|
19
|
+
the two refusals. See [MIGRATION.md](MIGRATION.md).
|
|
20
|
+
|
|
14
21
|
**v0.10.0: the input log says what it lost (CrowdyJS 18.9.0, CrowdyCPP 0.62.0).** Every session
|
|
15
22
|
from `client.input_log.sessions` carries `missingRecords`, the inputs the replication server
|
|
16
23
|
accepted that never reached the log, which needs the Game API release after v2.40.2. Its
|
|
@@ -5,7 +5,7 @@ are in `pyproject.toml` (`[project].version`, `[tool.crowdypy.crowdyjs]`,
|
|
|
5
5
|
`[tool.crowdypy.crowdycpp]`); `tests/unit/test_release_versions.py` refuses this page when
|
|
6
6
|
its version disagrees.
|
|
7
7
|
|
|
8
|
-
- CrowdyPy `0.
|
|
8
|
+
- CrowdyPy `0.11.0`
|
|
9
9
|
- API surface: CrowdyJS (the pinned version and commit in `pyproject.toml`); the generated
|
|
10
10
|
`docs/parity-matrix.md` lists every covered method, every native equivalent and every
|
|
11
11
|
browser exclusion with its reason. The gate is strict: there are no portable gaps, and a
|
|
@@ -4,17 +4,17 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
4
4
|
|
|
5
5
|
## Target
|
|
6
6
|
|
|
7
|
-
- CrowdyJS: `18.
|
|
8
|
-
- CrowdyCPP (native core): `0.
|
|
7
|
+
- CrowdyJS: `18.10.0` at `b3e2de96ae738d272488ca06ab6de2c792aef14f`
|
|
8
|
+
- CrowdyCPP (native core): `0.63.0` at `8682d39ab9cd368996eb35b76e6dfb10b43b7d62`
|
|
9
9
|
- schema.gql identical to CrowdyJS's: yes
|
|
10
10
|
- Gate mode: strict portable parity (every portable gap is release-blocking)
|
|
11
11
|
|
|
12
12
|
## Summary
|
|
13
13
|
|
|
14
|
-
- Covered:
|
|
14
|
+
- Covered: 1080
|
|
15
15
|
- Portable gap: 0
|
|
16
16
|
- Native equivalent: 42
|
|
17
|
-
- Browser exclusion:
|
|
17
|
+
- Browser exclusion: 113
|
|
18
18
|
- Deprecated roots: 2
|
|
19
19
|
- Unclassified: 0
|
|
20
20
|
|
|
@@ -33,8 +33,11 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
33
33
|
| `mutation.assignGridOwnership` | covered |
|
|
34
34
|
| `mutation.assignGroupToGrid` | covered |
|
|
35
35
|
| `mutation.authorizeApp` | covered |
|
|
36
|
+
| `mutation.banChannelMember` | covered |
|
|
37
|
+
| `mutation.banTeamMember` | covered |
|
|
36
38
|
| `mutation.beginGamePublish` | browser exclusion — publishes and administers browser game bundles on the Crowdy Games web host; a Python client has no bundle to publish |
|
|
37
39
|
| `mutation.beginPlayerCardSetup` | covered |
|
|
40
|
+
| `mutation.blockAccount` | browser exclusion — super-admin or operator only; the SDK wraps nothing for platform roles (tooling calls it directly) |
|
|
38
41
|
| `mutation.cancelSharedSubscription` | covered |
|
|
39
42
|
| `mutation.capturePaypalCheckout` | covered |
|
|
40
43
|
| `mutation.changePassword` | covered |
|
|
@@ -220,6 +223,9 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
220
223
|
| `mutation.teleportRequest` | covered |
|
|
221
224
|
| `mutation.transferGridOwnership` | covered |
|
|
222
225
|
| `mutation.transferPlayerCodeListing` | covered |
|
|
226
|
+
| `mutation.unbanChannelMember` | covered |
|
|
227
|
+
| `mutation.unbanTeamMember` | covered |
|
|
228
|
+
| `mutation.unblockAccount` | browser exclusion — super-admin or operator only; the SDK wraps nothing for platform roles (tooling calls it directly) |
|
|
223
229
|
| `mutation.unlinkIdentity` | covered |
|
|
224
230
|
| `mutation.unsuspendAppAccess` | covered |
|
|
225
231
|
| `mutation.updateAccessTier` | covered |
|
|
@@ -244,6 +250,7 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
244
250
|
| `mutation.updateUserState` | covered |
|
|
245
251
|
| `mutation.updateUserType` | browser exclusion — super-admin or operator only; the SDK wraps nothing for platform roles (tooling calls it directly) |
|
|
246
252
|
| `mutation.updateVoxel` | covered |
|
|
253
|
+
| `query.accountBlock` | browser exclusion — super-admin or operator only; the SDK wraps nothing for platform roles (tooling calls it directly) |
|
|
247
254
|
| `query.activeGraphQLServers` | covered |
|
|
248
255
|
| `query.actor` | covered |
|
|
249
256
|
| `query.actors` | covered |
|
|
@@ -618,6 +625,7 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
618
625
|
| `ChannelInbox.onMessage` | covered |
|
|
619
626
|
| `ChannelInbox.send` | covered |
|
|
620
627
|
| `ChannelsAPI.addMember` | covered |
|
|
628
|
+
| `ChannelsAPI.ban` | covered |
|
|
621
629
|
| `ChannelsAPI.create` | covered |
|
|
622
630
|
| `ChannelsAPI.createRole` | covered |
|
|
623
631
|
| `ChannelsAPI.deleteRole` | covered |
|
|
@@ -634,6 +642,7 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
634
642
|
| `ChannelsAPI.roles` | covered |
|
|
635
643
|
| `ChannelsAPI.setMemberRoles` | covered |
|
|
636
644
|
| `ChannelsAPI.setPolicy` | covered |
|
|
645
|
+
| `ChannelsAPI.unban` | covered |
|
|
637
646
|
| `ChannelsAPI.update` | covered |
|
|
638
647
|
| `ChannelsAPI.updateRole` | covered |
|
|
639
648
|
| `ChunkStore.ensureAround` | covered |
|
|
@@ -795,6 +804,7 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
795
804
|
| `ExecConnection.close` | covered |
|
|
796
805
|
| `ExecConnection.connect` | covered |
|
|
797
806
|
| `ExecConnection.host` | covered |
|
|
807
|
+
| `ExecConnection.onAccessEnded` | covered |
|
|
798
808
|
| `ExecConnection.onReconnect` | covered |
|
|
799
809
|
| `ExecConnection.open` | covered |
|
|
800
810
|
| `ExecConnection.ping` | covered |
|
|
@@ -1007,6 +1017,7 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
1007
1017
|
| `StudioLayoutController.subscribe` | covered |
|
|
1008
1018
|
| `StudioLayoutController.toggle` | covered |
|
|
1009
1019
|
| `TeamsAPI.addMember` | covered |
|
|
1020
|
+
| `TeamsAPI.ban` | covered |
|
|
1010
1021
|
| `TeamsAPI.create` | covered |
|
|
1011
1022
|
| `TeamsAPI.createRole` | covered |
|
|
1012
1023
|
| `TeamsAPI.deleteRole` | covered |
|
|
@@ -1023,6 +1034,7 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
1023
1034
|
| `TeamsAPI.roles` | covered |
|
|
1024
1035
|
| `TeamsAPI.setMemberRoles` | covered |
|
|
1025
1036
|
| `TeamsAPI.setPolicy` | covered |
|
|
1037
|
+
| `TeamsAPI.unban` | covered |
|
|
1026
1038
|
| `TeamsAPI.update` | covered |
|
|
1027
1039
|
| `TeamsAPI.updateRole` | covered |
|
|
1028
1040
|
| `TeleportAPI.request` | covered |
|
|
@@ -1080,6 +1092,7 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
1080
1092
|
| `ACCESS_NOT_GRANTED_CODE` | covered |
|
|
1081
1093
|
| `ACCESS_REVOKED_CODE` | covered |
|
|
1082
1094
|
| `ACCESS_SUSPENDED_CODE` | covered |
|
|
1095
|
+
| `ACCOUNT_BLOCKED_CODE` | covered |
|
|
1083
1096
|
| `ACTOR_EXISTS_CODE` | covered |
|
|
1084
1097
|
| `APP_PAUSED_CODE` | covered |
|
|
1085
1098
|
| `APP_UNAVAILABLE_CODE` | covered |
|
|
@@ -1119,6 +1132,7 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
1119
1132
|
| `EXEC_CLIENT_ABI_IMPORTS` | covered |
|
|
1120
1133
|
| `EXEC_CLIENT_ABI_VERSION` | covered |
|
|
1121
1134
|
| `EXEC_CLIENT_HOST_CALLS` | browser exclusion — page-side broker for player WASM in the browser glue Web Worker (worker lifecycle, host-call allowlists, rate caps, watchdogs) |
|
|
1135
|
+
| `EXEC_CLOSE_ACCESS_ENDED` | covered |
|
|
1122
1136
|
| `EXEC_STATUSES` | covered |
|
|
1123
1137
|
| `ExecModScope` | covered |
|
|
1124
1138
|
| `FLAG_GROUNDED` | covered |
|
|
@@ -1130,6 +1144,7 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
1130
1144
|
| `GLUE_INVOKE_REPLY_MAX_BYTES` | browser exclusion — glue that instantiates player WASM inside the browser Web Worker (CLIENT ABI imports, ck_fuel, watchdog) |
|
|
1131
1145
|
| `GLUE_LOG_MAX_BYTES` | browser exclusion — glue that instantiates player WASM inside the browser Web Worker (CLIENT ABI imports, ck_fuel, watchdog) |
|
|
1132
1146
|
| `GLUE_STATE_MAX_BYTES` | browser exclusion — glue that instantiates player WASM inside the browser Web Worker (CLIENT ABI imports, ck_fuel, watchdog) |
|
|
1147
|
+
| `GROUP_MEMBER_BANNED_CODE` | covered |
|
|
1133
1148
|
| `GameKitClient` | covered |
|
|
1134
1149
|
| `GlueRuntime` | browser exclusion — glue that instantiates player WASM inside the browser Web Worker (CLIENT ABI imports, ck_fuel, watchdog) |
|
|
1135
1150
|
| `GraphQLTransport` | native equivalent — pass an httpx.AsyncClient / httpx.Client as http_client= (transport, proxies, HTTP/2, timeouts) |
|
|
@@ -1173,6 +1188,7 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
1173
1188
|
| `WRONG_DATACENTER_CODE` | covered |
|
|
1174
1189
|
| `WireMessageType` | native equivalent — the same codec, CrowdyCPP's, through crowdypy.wire: crowdypy.wire.MessageType |
|
|
1175
1190
|
| `accessRefusalOf` | covered |
|
|
1191
|
+
| `accountBlockedOf` | covered |
|
|
1176
1192
|
| `actorExistsOf` | covered |
|
|
1177
1193
|
| `appPausedOf` | covered |
|
|
1178
1194
|
| `armGlueRequest` | browser exclusion — SharedArrayBuffer + Atomics bridge between the page and the glue Web Worker |
|
|
@@ -1205,6 +1221,7 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
|
|
|
1205
1221
|
| `generateState` | covered |
|
|
1206
1222
|
| `glueDecoder` | browser exclusion — SharedArrayBuffer + Atomics bridge between the page and the glue Web Worker |
|
|
1207
1223
|
| `glueEncoder` | browser exclusion — SharedArrayBuffer + Atomics bridge between the page and the glue Web Worker |
|
|
1224
|
+
| `groupMemberBannedOf` | covered |
|
|
1208
1225
|
| `isAlreadyRegisteredError` | covered |
|
|
1209
1226
|
| `isAppPaused` | covered |
|
|
1210
1227
|
| `isHostedSignInRequiredError` | covered |
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
mutation BanChannelMember($groupId: BigInt!, $userId: BigInt!, $reason: String) {
|
|
2
|
+
banChannelMember(groupId: $groupId, userId: $userId, reason: $reason) {
|
|
3
|
+
groupMemberId
|
|
4
|
+
groupId
|
|
5
|
+
userId
|
|
6
|
+
status
|
|
7
|
+
createdAt
|
|
8
|
+
roles {
|
|
9
|
+
groupRoleId
|
|
10
|
+
roleName
|
|
11
|
+
rank
|
|
12
|
+
isSystem
|
|
13
|
+
permissions
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
mutation BanTeamMember($groupId: BigInt!, $userId: BigInt!, $reason: String) {
|
|
2
|
+
banTeamMember(groupId: $groupId, userId: $userId, reason: $reason) {
|
|
3
|
+
groupMemberId
|
|
4
|
+
groupId
|
|
5
|
+
userId
|
|
6
|
+
status
|
|
7
|
+
createdAt
|
|
8
|
+
roles {
|
|
9
|
+
groupRoleId
|
|
10
|
+
roleName
|
|
11
|
+
rank
|
|
12
|
+
isSystem
|
|
13
|
+
permissions
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -4,7 +4,7 @@ build-backend = "scikit_build_core.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "crowdypy"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.11.0.dev1"
|
|
8
8
|
description = "Official Python SDK for Crowded Kingdoms: typed GraphQL clients and a native UDP replication core"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT AND Apache-2.0"
|
|
@@ -119,20 +119,20 @@ environment = { OPENSSL_ROOT_DIR = "C:/vcpkg/installed/x64-windows-static-md" }
|
|
|
119
119
|
# --------------------------------------------------------------------------------------
|
|
120
120
|
|
|
121
121
|
[tool.crowdypy.crowdyjs]
|
|
122
|
-
version = "18.
|
|
123
|
-
commit = "
|
|
122
|
+
version = "18.10.0"
|
|
123
|
+
commit = "b3e2de96ae738d272488ca06ab6de2c792aef14f"
|
|
124
124
|
|
|
125
125
|
[tool.crowdypy.crowdycpp]
|
|
126
|
-
version = "0.
|
|
127
|
-
tag = "dev/v0.
|
|
128
|
-
commit = "
|
|
129
|
-
tree-sha256 = "
|
|
126
|
+
version = "0.63.0"
|
|
127
|
+
tag = "dev/v0.63.0"
|
|
128
|
+
commit = "8682d39ab9cd368996eb35b76e6dfb10b43b7d62"
|
|
129
|
+
tree-sha256 = "318b0db6138c877a666261fe71d1fc8bb2a644f333f3c927487f435371856c87"
|
|
130
130
|
|
|
131
131
|
# schema.gql and operations/ are CrowdyJS's, copied from the commit pinned above by
|
|
132
132
|
# scripts/schema_sync.py, which records these hashes and re-derives them in CI.
|
|
133
133
|
[tool.crowdypy.graphql]
|
|
134
|
-
schema-sha256 = "
|
|
135
|
-
operations-sha256 = "
|
|
134
|
+
schema-sha256 = "3cdc1b7196de4a006ab595401e7ff09b6549a79e346d43356e2162653e59c43e"
|
|
135
|
+
operations-sha256 = "37b1e06dc4e997bb42506968c50698a184934581a6d94d9471a29d2ce74ff3d3"
|
|
136
136
|
|
|
137
137
|
# The SDL the docs site publishes. scripts/schema_drift.py compares the snapshot against it
|
|
138
138
|
# on a schedule; nothing on the per-commit path reads the network.
|
|
@@ -198,6 +198,132 @@ type GraphQLServer {
|
|
|
198
198
|
updatedAt: DateTime!
|
|
199
199
|
}
|
|
200
200
|
|
|
201
|
+
"""
|
|
202
|
+
A platform-wide block on an account, set by a super-admin. While it holds, every sign-in and every authenticated request is refused with ACCOUNT_BLOCKED, on CK and on Crowd Altar, and every session, realtime connection and ck-exec socket the account had was ended when it was set. The last block stays readable after it is lifted or lapses.
|
|
203
|
+
"""
|
|
204
|
+
type AccountBlock {
|
|
205
|
+
"""The account."""
|
|
206
|
+
userId: BigInt!
|
|
207
|
+
"""Whether the block holds now."""
|
|
208
|
+
blocked: Boolean!
|
|
209
|
+
"""When the last block was set; null if the account was never blocked."""
|
|
210
|
+
blockedAt: DateTime
|
|
211
|
+
"""When it lapses (or was lifted); null while it lasts until lifted."""
|
|
212
|
+
blockedUntil: DateTime
|
|
213
|
+
"""Why, as the super-admin wrote it."""
|
|
214
|
+
reason: String
|
|
215
|
+
"""The super-admin who set it."""
|
|
216
|
+
blockedBy: BigInt
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
"""
|
|
220
|
+
A free or purchasable access tier for an app, bundling a price and the set of runtime permission keys that granted users receive.
|
|
221
|
+
"""
|
|
222
|
+
type AppAccessTier {
|
|
223
|
+
"""Unique numeric id of the tier (primary key)."""
|
|
224
|
+
tierId: BigInt!
|
|
225
|
+
"""Numeric id of the app this tier belongs to."""
|
|
226
|
+
appId: BigInt!
|
|
227
|
+
"""Display name of the tier (e.g. "Free", "Pro")."""
|
|
228
|
+
name: String!
|
|
229
|
+
"""
|
|
230
|
+
Sort order for displaying tiers (ascending); lower values appear first.
|
|
231
|
+
"""
|
|
232
|
+
tierOrder: Float!
|
|
233
|
+
"""True if the tier has no purchase cost."""
|
|
234
|
+
isFree: Boolean!
|
|
235
|
+
"""
|
|
236
|
+
True if this is the app default tier (used for open-by-default / self-service grants). At most one default per app is expected.
|
|
237
|
+
"""
|
|
238
|
+
isDefault: Boolean!
|
|
239
|
+
"""
|
|
240
|
+
Price in the smallest currency unit (cents) for paid tiers; null for free tiers.
|
|
241
|
+
"""
|
|
242
|
+
priceCents: BigInt
|
|
243
|
+
"""ISO 4217 currency code for priceCents (e.g. "usd"); defaults to "usd"."""
|
|
244
|
+
currency: String
|
|
245
|
+
"""
|
|
246
|
+
Billing cadence for recurring tiers (e.g. "month", "year"); null for one-time or free tiers.
|
|
247
|
+
"""
|
|
248
|
+
billingPeriod: String
|
|
249
|
+
"""Optional marketing description of what the tier includes."""
|
|
250
|
+
description: String
|
|
251
|
+
"""
|
|
252
|
+
Runtime permission keys granted to users on this tier (a subset of runtimePermissions), e.g. "access", "teleport", "update_voxel_data", "use_voice_chat", "use_video_chat" (webcam; not granted by default).
|
|
253
|
+
"""
|
|
254
|
+
permissionKeys: [String!]!
|
|
255
|
+
"""
|
|
256
|
+
Tier lifecycle: "active" or "archived" (soft-deleted via archiveAccessTier). Defaults to "active".
|
|
257
|
+
"""
|
|
258
|
+
status: String!
|
|
259
|
+
"""Timestamp when the tier was created."""
|
|
260
|
+
createdAt: DateTime!
|
|
261
|
+
"""Timestamp when the tier was last updated."""
|
|
262
|
+
updatedAt: DateTime!
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
"""
|
|
266
|
+
A user's entitlement to a specific app: whether (and via which tier) they may access it. At most one row per (app, user).
|
|
267
|
+
"""
|
|
268
|
+
type AppUserAccess {
|
|
269
|
+
"""Unique numeric id of this access record (primary key)."""
|
|
270
|
+
appUserAccessId: BigInt!
|
|
271
|
+
"""Numeric id of the app this access applies to."""
|
|
272
|
+
appId: BigInt!
|
|
273
|
+
"""Numeric id of the user this access belongs to."""
|
|
274
|
+
userId: BigInt!
|
|
275
|
+
"""
|
|
276
|
+
Numeric id of the access tier granting this access; null if access was granted without a specific tier.
|
|
277
|
+
"""
|
|
278
|
+
tierId: BigInt
|
|
279
|
+
"""
|
|
280
|
+
Entitlement lifecycle: "active" (currently entitled) or "revoked" (access removed). Only active, non-expired rows grant runtime access. Defaults to "active".
|
|
281
|
+
"""
|
|
282
|
+
status: String!
|
|
283
|
+
"""
|
|
284
|
+
Who granted this access: the granting admin's numeric user id (as a string), or "system" for automatic/free-tier grants.
|
|
285
|
+
"""
|
|
286
|
+
grantedBy: String!
|
|
287
|
+
"""
|
|
288
|
+
External billing subscription id (e.g. Stripe/PayPal) backing a paid grant; null for free or manual grants.
|
|
289
|
+
"""
|
|
290
|
+
subscriptionId: String
|
|
291
|
+
"""
|
|
292
|
+
Optional expiry timestamp; access is treated as inactive once it has passed. Null means the grant does not expire.
|
|
293
|
+
"""
|
|
294
|
+
expiresAt: DateTime
|
|
295
|
+
"""
|
|
296
|
+
A timed suspension: while this time is in the future the player holds no access (a gameplay token is refused with ACCESS_SUSPENDED and realtime sessions end), and access returns by itself once it passes. Null when the player is not suspended. Set with suspendAppAccess, cleared with unsuspendAppAccess.
|
|
297
|
+
"""
|
|
298
|
+
suspendedUntil: DateTime
|
|
299
|
+
"""Timestamp when the access record was first created."""
|
|
300
|
+
createdAt: DateTime!
|
|
301
|
+
"""
|
|
302
|
+
Timestamp when the access record was last updated (e.g. re-granted or revoked).
|
|
303
|
+
"""
|
|
304
|
+
updatedAt: DateTime!
|
|
305
|
+
"""
|
|
306
|
+
The user this access record belongs to. Null if the user could not be loaded.
|
|
307
|
+
"""
|
|
308
|
+
user: User
|
|
309
|
+
"""
|
|
310
|
+
The access tier granted by this record. Null if no tier is associated (tierId is null) or the tier could not be loaded.
|
|
311
|
+
"""
|
|
312
|
+
tier: AppAccessTier
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
"""
|
|
316
|
+
Org member eligible for app access grants. Scoped to the app org; requires manage_access_tiers.
|
|
317
|
+
"""
|
|
318
|
+
type AppGrantMemberCandidate {
|
|
319
|
+
"""Numeric id of the candidate user (use with grantAppAccess)."""
|
|
320
|
+
userId: BigInt!
|
|
321
|
+
"""Email of the candidate, if known."""
|
|
322
|
+
email: String
|
|
323
|
+
"""Gamertag / display handle of the candidate, if set."""
|
|
324
|
+
gamertag: String
|
|
325
|
+
}
|
|
326
|
+
|
|
201
327
|
"""The signed-in identity behind a bearer token."""
|
|
202
328
|
type ActorType {
|
|
203
329
|
"""
|
|
@@ -551,114 +677,6 @@ type AvatarDTO {
|
|
|
551
677
|
createdAt: DateTime!
|
|
552
678
|
}
|
|
553
679
|
|
|
554
|
-
"""
|
|
555
|
-
A free or purchasable access tier for an app, bundling a price and the set of runtime permission keys that granted users receive.
|
|
556
|
-
"""
|
|
557
|
-
type AppAccessTier {
|
|
558
|
-
"""Unique numeric id of the tier (primary key)."""
|
|
559
|
-
tierId: BigInt!
|
|
560
|
-
"""Numeric id of the app this tier belongs to."""
|
|
561
|
-
appId: BigInt!
|
|
562
|
-
"""Display name of the tier (e.g. "Free", "Pro")."""
|
|
563
|
-
name: String!
|
|
564
|
-
"""
|
|
565
|
-
Sort order for displaying tiers (ascending); lower values appear first.
|
|
566
|
-
"""
|
|
567
|
-
tierOrder: Float!
|
|
568
|
-
"""True if the tier has no purchase cost."""
|
|
569
|
-
isFree: Boolean!
|
|
570
|
-
"""
|
|
571
|
-
True if this is the app default tier (used for open-by-default / self-service grants). At most one default per app is expected.
|
|
572
|
-
"""
|
|
573
|
-
isDefault: Boolean!
|
|
574
|
-
"""
|
|
575
|
-
Price in the smallest currency unit (cents) for paid tiers; null for free tiers.
|
|
576
|
-
"""
|
|
577
|
-
priceCents: BigInt
|
|
578
|
-
"""ISO 4217 currency code for priceCents (e.g. "usd"); defaults to "usd"."""
|
|
579
|
-
currency: String
|
|
580
|
-
"""
|
|
581
|
-
Billing cadence for recurring tiers (e.g. "month", "year"); null for one-time or free tiers.
|
|
582
|
-
"""
|
|
583
|
-
billingPeriod: String
|
|
584
|
-
"""Optional marketing description of what the tier includes."""
|
|
585
|
-
description: String
|
|
586
|
-
"""
|
|
587
|
-
Runtime permission keys granted to users on this tier (a subset of runtimePermissions), e.g. "access", "teleport", "update_voxel_data", "use_voice_chat", "use_video_chat" (webcam; not granted by default).
|
|
588
|
-
"""
|
|
589
|
-
permissionKeys: [String!]!
|
|
590
|
-
"""
|
|
591
|
-
Tier lifecycle: "active" or "archived" (soft-deleted via archiveAccessTier). Defaults to "active".
|
|
592
|
-
"""
|
|
593
|
-
status: String!
|
|
594
|
-
"""Timestamp when the tier was created."""
|
|
595
|
-
createdAt: DateTime!
|
|
596
|
-
"""Timestamp when the tier was last updated."""
|
|
597
|
-
updatedAt: DateTime!
|
|
598
|
-
}
|
|
599
|
-
|
|
600
|
-
"""
|
|
601
|
-
A user's entitlement to a specific app: whether (and via which tier) they may access it. At most one row per (app, user).
|
|
602
|
-
"""
|
|
603
|
-
type AppUserAccess {
|
|
604
|
-
"""Unique numeric id of this access record (primary key)."""
|
|
605
|
-
appUserAccessId: BigInt!
|
|
606
|
-
"""Numeric id of the app this access applies to."""
|
|
607
|
-
appId: BigInt!
|
|
608
|
-
"""Numeric id of the user this access belongs to."""
|
|
609
|
-
userId: BigInt!
|
|
610
|
-
"""
|
|
611
|
-
Numeric id of the access tier granting this access; null if access was granted without a specific tier.
|
|
612
|
-
"""
|
|
613
|
-
tierId: BigInt
|
|
614
|
-
"""
|
|
615
|
-
Entitlement lifecycle: "active" (currently entitled) or "revoked" (access removed). Only active, non-expired rows grant runtime access. Defaults to "active".
|
|
616
|
-
"""
|
|
617
|
-
status: String!
|
|
618
|
-
"""
|
|
619
|
-
Who granted this access: the granting admin's numeric user id (as a string), or "system" for automatic/free-tier grants.
|
|
620
|
-
"""
|
|
621
|
-
grantedBy: String!
|
|
622
|
-
"""
|
|
623
|
-
External billing subscription id (e.g. Stripe/PayPal) backing a paid grant; null for free or manual grants.
|
|
624
|
-
"""
|
|
625
|
-
subscriptionId: String
|
|
626
|
-
"""
|
|
627
|
-
Optional expiry timestamp; access is treated as inactive once it has passed. Null means the grant does not expire.
|
|
628
|
-
"""
|
|
629
|
-
expiresAt: DateTime
|
|
630
|
-
"""
|
|
631
|
-
A timed suspension: while this time is in the future the player holds no access (a gameplay token is refused with ACCESS_SUSPENDED and realtime sessions end), and access returns by itself once it passes. Null when the player is not suspended. Set with suspendAppAccess, cleared with unsuspendAppAccess.
|
|
632
|
-
"""
|
|
633
|
-
suspendedUntil: DateTime
|
|
634
|
-
"""Timestamp when the access record was first created."""
|
|
635
|
-
createdAt: DateTime!
|
|
636
|
-
"""
|
|
637
|
-
Timestamp when the access record was last updated (e.g. re-granted or revoked).
|
|
638
|
-
"""
|
|
639
|
-
updatedAt: DateTime!
|
|
640
|
-
"""
|
|
641
|
-
The user this access record belongs to. Null if the user could not be loaded.
|
|
642
|
-
"""
|
|
643
|
-
user: User
|
|
644
|
-
"""
|
|
645
|
-
The access tier granted by this record. Null if no tier is associated (tierId is null) or the tier could not be loaded.
|
|
646
|
-
"""
|
|
647
|
-
tier: AppAccessTier
|
|
648
|
-
}
|
|
649
|
-
|
|
650
|
-
"""
|
|
651
|
-
Org member eligible for app access grants. Scoped to the app org; requires manage_access_tiers.
|
|
652
|
-
"""
|
|
653
|
-
type AppGrantMemberCandidate {
|
|
654
|
-
"""Numeric id of the candidate user (use with grantAppAccess)."""
|
|
655
|
-
userId: BigInt!
|
|
656
|
-
"""Email of the candidate, if known."""
|
|
657
|
-
email: String
|
|
658
|
-
"""Gamertag / display handle of the candidate, if set."""
|
|
659
|
-
gamertag: String
|
|
660
|
-
}
|
|
661
|
-
|
|
662
680
|
type TeleportResponse {
|
|
663
681
|
"""
|
|
664
682
|
True when the teleport is authorized/accepted; false otherwise (inspect errorCode for the reason).
|
|
@@ -6605,6 +6623,13 @@ type Query {
|
|
|
6605
6623
|
query: String
|
|
6606
6624
|
): UsersConnection! @requiresPermission(scope: "super_admin", permission: "is_super_admin")
|
|
6607
6625
|
"""
|
|
6626
|
+
ADMIN: the target account's platform-wide block: whether it holds now, and the last one set (who, when, why, until). Requires a super-admin bearer game token.
|
|
6627
|
+
"""
|
|
6628
|
+
accountBlock(
|
|
6629
|
+
"""Target user id (BigInt as a decimal string)."""
|
|
6630
|
+
userId: BigInt!
|
|
6631
|
+
): AccountBlock! @requiresPermission(scope: "super_admin", permission: "is_super_admin")
|
|
6632
|
+
"""
|
|
6608
6633
|
Lists the avatars owned by `userId`. Requires a valid game token. Owner-aware: when the caller is NOT the owner, each avatar’s `privateState` is stripped (returned null); `publicState` is always included. State blobs are base64-encoded binary.
|
|
6609
6634
|
"""
|
|
6610
6635
|
userAvatars(
|
|
@@ -8383,6 +8408,28 @@ type Mutation {
|
|
|
8383
8408
|
userId: BigInt!
|
|
8384
8409
|
): Boolean! @requiresPermission(scope: "super_admin", permission: "is_super_admin")
|
|
8385
8410
|
"""
|
|
8411
|
+
ADMIN/DESTRUCTIVE: blocks an account platform-wide. Every session and app token it holds is revoked, its realtime sessions and ck-exec sockets (developer sessions too) end in every datacenter, its mods stop, and every later sign-in and request, on CK and on Crowd Altar, is refused with ACCOUNT_BLOCKED until `until` (or until unblockAccount when absent). Not yourself, not a super-admin. Requires a super-admin bearer game token.
|
|
8412
|
+
"""
|
|
8413
|
+
blockAccount(
|
|
8414
|
+
"""Target user id (BigInt as a decimal string)."""
|
|
8415
|
+
userId: BigInt!
|
|
8416
|
+
"""
|
|
8417
|
+
Why (1 to 500 characters). Kept on the account; shown to super-admins, not to the account.
|
|
8418
|
+
"""
|
|
8419
|
+
reason: String!
|
|
8420
|
+
"""
|
|
8421
|
+
When the block lapses by itself (ISO-8601, in the future). Absent: until unblockAccount.
|
|
8422
|
+
"""
|
|
8423
|
+
until: DateTime
|
|
8424
|
+
): AccountBlock! @requiresPermission(scope: "super_admin", permission: "is_super_admin")
|
|
8425
|
+
"""
|
|
8426
|
+
ADMIN: lifts an account block now. Nothing is restored; the account signs in again. The last block stays readable through accountBlock. Requires a super-admin bearer game token.
|
|
8427
|
+
"""
|
|
8428
|
+
unblockAccount(
|
|
8429
|
+
"""Target user id (BigInt as a decimal string)."""
|
|
8430
|
+
userId: BigInt!
|
|
8431
|
+
): AccountBlock! @requiresPermission(scope: "super_admin", permission: "is_super_admin")
|
|
8432
|
+
"""
|
|
8386
8433
|
DESTRUCTIVE self-service: soft-deletes the authenticated caller's OWN account — anonymizes PII and revokes all sessions; wallet, voxel, and donation history stay intact via FK. Acts only on the caller (no target argument). Requires a valid game token.
|
|
8387
8434
|
"""
|
|
8388
8435
|
deleteMyAccount: Boolean!
|
|
@@ -9568,6 +9615,28 @@ type Mutation {
|
|
|
9568
9615
|
userId: BigInt!
|
|
9569
9616
|
): Boolean! @requiresPermission(scope: "group", permission: "manage_members", scopeArg: "groupId")
|
|
9570
9617
|
"""
|
|
9618
|
+
Ban a user from a team: their membership (or a new row, for someone not yet in it) becomes 'banned' and their roles go, and joining, requesting to join and being added are refused with GROUP_MEMBER_BANNED until unbanTeamMember. Leaving or removing does not lift a ban. Requires the 'manage_members' team permission (app admins bypass). Never the team's owner, never yourself.
|
|
9619
|
+
"""
|
|
9620
|
+
banTeamMember(
|
|
9621
|
+
"""The team to ban the user from."""
|
|
9622
|
+
groupId: BigInt!
|
|
9623
|
+
"""The user to ban."""
|
|
9624
|
+
userId: BigInt!
|
|
9625
|
+
"""
|
|
9626
|
+
Why, for the team managers (at most 500 characters). Not shown to the banned user.
|
|
9627
|
+
"""
|
|
9628
|
+
reason: String
|
|
9629
|
+
): GroupMember! @requiresPermission(scope: "group", permission: "manage_members", scopeArg: "groupId")
|
|
9630
|
+
"""
|
|
9631
|
+
Lift a team ban, so the user may join or be added again (nothing is restored). Requires the 'manage_members' team permission (app admins bypass). Returns true if there was a ban.
|
|
9632
|
+
"""
|
|
9633
|
+
unbanTeamMember(
|
|
9634
|
+
"""The team."""
|
|
9635
|
+
groupId: BigInt!
|
|
9636
|
+
"""The banned user."""
|
|
9637
|
+
userId: BigInt!
|
|
9638
|
+
): Boolean! @requiresPermission(scope: "group", permission: "manage_members", scopeArg: "groupId")
|
|
9639
|
+
"""
|
|
9571
9640
|
Replace a member's roles with the given set (not additive — roles not listed are removed). Requires the 'manage_roles' team permission (app admins bypass).
|
|
9572
9641
|
"""
|
|
9573
9642
|
setTeamMemberRoles(
|
|
@@ -9682,6 +9751,28 @@ type Mutation {
|
|
|
9682
9751
|
userId: BigInt!
|
|
9683
9752
|
): Boolean! @requiresPermission(scope: "group", permission: "manage_members", scopeArg: "groupId")
|
|
9684
9753
|
"""
|
|
9754
|
+
Ban a user from a channel: their membership (or a new row, for someone not yet in it) becomes 'banned', their roles go, Buddy stops routing the channel to and from them, and joining, requesting to join and being added are refused with GROUP_MEMBER_BANNED until unbanChannelMember. Leaving or removing does not lift a ban. Requires the 'manage_members' channel permission (app admins bypass). Never the channel's owner, never yourself.
|
|
9755
|
+
"""
|
|
9756
|
+
banChannelMember(
|
|
9757
|
+
"""The channel to ban the user from."""
|
|
9758
|
+
groupId: BigInt!
|
|
9759
|
+
"""The user to ban."""
|
|
9760
|
+
userId: BigInt!
|
|
9761
|
+
"""
|
|
9762
|
+
Why, for the channel managers (at most 500 characters). Not shown to the banned user.
|
|
9763
|
+
"""
|
|
9764
|
+
reason: String
|
|
9765
|
+
): GroupMember! @requiresPermission(scope: "group", permission: "manage_members", scopeArg: "groupId")
|
|
9766
|
+
"""
|
|
9767
|
+
Lift a channel ban, so the user may join or be added again (nothing is restored). Requires the 'manage_members' channel permission (app admins bypass). Returns true if there was a ban.
|
|
9768
|
+
"""
|
|
9769
|
+
unbanChannelMember(
|
|
9770
|
+
"""The channel."""
|
|
9771
|
+
groupId: BigInt!
|
|
9772
|
+
"""The banned user."""
|
|
9773
|
+
userId: BigInt!
|
|
9774
|
+
): Boolean! @requiresPermission(scope: "group", permission: "manage_members", scopeArg: "groupId")
|
|
9775
|
+
"""
|
|
9685
9776
|
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.
|
|
9686
9777
|
"""
|
|
9687
9778
|
setChannelMemberRoles(
|