crowdypy 0.16.0.dev1__tar.gz → 0.17.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.
Files changed (594) hide show
  1. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/MIGRATION.md +21 -3
  2. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/PKG-INFO +4 -2
  3. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/README.md +3 -1
  4. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/docs/compatibility.md +1 -1
  5. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/docs/parity-matrix.md +7 -4
  6. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/OrgManagedPlayerSettings.graphql +7 -0
  7. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/pyproject.toml +9 -9
  8. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/schema.gql +83 -26
  9. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/__init__.py +8 -0
  10. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_generated/enums.py +1 -1
  11. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_generated/inputs.py +1 -1
  12. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_generated/operations.py +3 -3
  13. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/admin.py +1 -1
  14. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/managed_players.py +17 -6
  15. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/organizations.py +2 -2
  16. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/portal.py +11 -5
  17. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_version.py +1 -1
  18. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/admin.py +1 -1
  19. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/managed_players.py +17 -6
  20. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/organizations.py +2 -2
  21. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/portal.py +11 -5
  22. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/errors.py +16 -0
  23. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/player_host/schemas.v1.json +2 -2
  24. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/fixtures/player-host.v1.json +2 -2
  25. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/domains/test_managed_players.py +35 -1
  26. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_sdk_audience.py +1 -1
  27. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tools/parity/classifications.toml +1 -0
  28. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/uv.lock +1 -1
  29. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/CMakeLists.txt +1 -1
  30. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/PROVENANCE.md +1 -1
  31. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/admin.hpp +16 -6
  32. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/portal.hpp +7 -4
  33. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/generated/enums.hpp +2 -2
  34. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/generated/operations.hpp +16 -2
  35. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/errors.hpp +14 -0
  36. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/package.json +6 -6
  37. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/crowdy-studio-diagnostics.v1.json +2 -2
  38. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/crowdyjs-studio-layout.v1.json +2 -2
  39. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/.gitattributes +0 -0
  40. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/.gitignore +0 -0
  41. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/.gitleaks.toml +0 -0
  42. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/AGENTS.md +0 -0
  43. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/CMakeLists.txt +0 -0
  44. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/LICENSE +0 -0
  45. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/SECURITY.md +0 -0
  46. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/benchmarks/README.md +0 -0
  47. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/benchmarks/bench_replication.py +0 -0
  48. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/docs/e2e-coverage.md +0 -0
  49. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/licenses/OpenSSL-LICENSE.txt +0 -0
  50. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/native/common.hpp +0 -0
  51. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/native/module.cpp +0 -0
  52. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/native/replication.hpp +0 -0
  53. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/native/replication_binding.cpp +0 -0
  54. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/native/session_binding.cpp +0 -0
  55. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/native/voice_binding.cpp +0 -0
  56. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/native/wire_binding.cpp +0 -0
  57. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/actors/Actor.graphql +0 -0
  58. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/actors/Actors.graphql +0 -0
  59. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/actors/BatchLookupActors.graphql +0 -0
  60. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/actors/CreateActor.graphql +0 -0
  61. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/actors/DeleteActor.graphql +0 -0
  62. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/actors/UpdateActor.graphql +0 -0
  63. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/actors/UpdateActorState.graphql +0 -0
  64. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/AppAccessTiers.graphql +0 -0
  65. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/AppFeatures.graphql +0 -0
  66. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/AppGrantMemberCandidates.graphql +0 -0
  67. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/AppUserAccessByApp.graphql +0 -0
  68. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/ArchiveAccessTier.graphql +0 -0
  69. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/ClaimFreeAppAccess.graphql +0 -0
  70. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/CreateAccessTier.graphql +0 -0
  71. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/DefineAppFeature.graphql +0 -0
  72. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/GrantAppAccess.graphql +0 -0
  73. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/GrantMyAppAccess.graphql +0 -0
  74. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/GrantTierFeature.graphql +0 -0
  75. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/MyAppAccess.graphql +0 -0
  76. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/RevokeAppAccess.graphql +0 -0
  77. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/RevokeTierFeature.graphql +0 -0
  78. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/RuntimePermissions.graphql +0 -0
  79. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/SuspendAppAccess.graphql +0 -0
  80. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/TierFeatures.graphql +0 -0
  81. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/appAccess/UpdateAccessTier.graphql +0 -0
  82. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/App.graphql +0 -0
  83. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/AppBySlug.graphql +0 -0
  84. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/AppDiscovery.graphql +0 -0
  85. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/AppsForOrg.graphql +0 -0
  86. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/ArchiveApp.graphql +0 -0
  87. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/CodeAdmissions.graphql +0 -0
  88. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/CreateApp.graphql +0 -0
  89. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/MarketplaceApps.graphql +0 -0
  90. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/MyApps.graphql +0 -0
  91. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/PlaceableDatacenters.graphql +0 -0
  92. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/apps/UpdateApp.graphql +0 -0
  93. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/auth/Logout.graphql +0 -0
  94. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/auth/LogoutAllDevices.graphql +0 -0
  95. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/avatars/Avatars.graphql +0 -0
  96. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/billing/AppBudget.graphql +0 -0
  97. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/billing/AppBudgets.graphql +0 -0
  98. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/billing/SetAppBudget.graphql +0 -0
  99. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/billing/WalletBalance.graphql +0 -0
  100. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/billing/WalletTransactions.graphql +0 -0
  101. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/AddChannelMember.graphql +0 -0
  102. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/BanChannelMember.graphql +0 -0
  103. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/Channel.graphql +0 -0
  104. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/ChannelMembers.graphql +0 -0
  105. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/ChannelPolicy.graphql +0 -0
  106. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/ChannelRoles.graphql +0 -0
  107. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/Channels.graphql +0 -0
  108. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/CreateChannel.graphql +0 -0
  109. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/CreateChannelRole.graphql +0 -0
  110. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/DeleteChannel.graphql +0 -0
  111. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/DeleteChannelRole.graphql +0 -0
  112. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/JoinChannel.graphql +0 -0
  113. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/LeaveChannel.graphql +0 -0
  114. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/MyChannels.graphql +0 -0
  115. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/RemoveChannelMember.graphql +0 -0
  116. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/RequestToJoinChannel.graphql +0 -0
  117. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/SetChannelMemberRoles.graphql +0 -0
  118. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/SetChannelPolicy.graphql +0 -0
  119. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/UnbanChannelMember.graphql +0 -0
  120. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/UpdateChannel.graphql +0 -0
  121. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/channels/UpdateChannelRole.graphql +0 -0
  122. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/chunks/GetChunk.graphql +0 -0
  123. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/chunks/GetChunkLods.graphql +0 -0
  124. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/chunks/GetChunksByDistance.graphql +0 -0
  125. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/chunks/GetVoxelList.graphql +0 -0
  126. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/chunks/UpdateChunk.graphql +0 -0
  127. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/chunks/UpdateChunkLods.graphql +0 -0
  128. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/chunks/UpdateChunkState.graphql +0 -0
  129. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/crowdyStudio/CrowdyStudio.graphql +0 -0
  130. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/exec/Exec.graphql +0 -0
  131. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/gameApps/GameApps.graphql +0 -0
  132. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/grids/CreateGridChannel.graphql +0 -0
  133. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/grids/GridChannels.graphql +0 -0
  134. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/grids/MintGridToken.graphql +0 -0
  135. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/host/Host.graphql +0 -0
  136. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/inputLog/InputLogMessages.graphql +0 -0
  137. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/inputLog/InputLogSessions.graphql +0 -0
  138. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/AppManagedPlayerMods.graphql +0 -0
  139. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/DeleteManagedPlayer.graphql +0 -0
  140. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/EndManagedPlayerSessions.graphql +0 -0
  141. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/ManagedPlayer.graphql +0 -0
  142. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/ManagedPlayerFields.graphql +0 -0
  143. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/ManagedPlayers.graphql +0 -0
  144. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/OrgSigningKeyFields.graphql +0 -0
  145. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/OrgSigningKeys.graphql +0 -0
  146. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/ProvisionManagedPlayers.graphql +0 -0
  147. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/RegisterOrgSigningKey.graphql +0 -0
  148. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/RevokeOrgSigningKey.graphql +0 -0
  149. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/SetAppManagedPlayerMods.graphql +0 -0
  150. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/managedPlayers/UpdateManagedPlayer.graphql +0 -0
  151. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/marketplace/Marketplace.graphql +0 -0
  152. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/CreateOrgRole.graphql +0 -0
  153. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/CreateOrgToken.graphql +0 -0
  154. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/CreateOrganization.graphql +0 -0
  155. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/DeleteOrgRole.graphql +0 -0
  156. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/InviteOrgMember.graphql +0 -0
  157. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/MemberRoles.graphql +0 -0
  158. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/MyOrganizations.graphql +0 -0
  159. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/OrgMembers.graphql +0 -0
  160. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/OrgPermissions.graphql +0 -0
  161. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/OrgRoles.graphql +0 -0
  162. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/OrgTokens.graphql +0 -0
  163. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/Organization.graphql +0 -0
  164. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/OrganizationBySlug.graphql +0 -0
  165. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/RemoveOrgMember.graphql +0 -0
  166. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/RevokeOrgToken.graphql +0 -0
  167. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/UpdateOrgMemberRoles.graphql +0 -0
  168. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/UpdateOrgRole.graphql +0 -0
  169. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/organizations/UpdateOrgToken.graphql +0 -0
  170. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/payments/CapturePaypalCheckout.graphql +0 -0
  171. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/payments/CreateCheckout.graphql +0 -0
  172. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/payments/MyCheckouts.graphql +0 -0
  173. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/platform/PlatformConfig.graphql +0 -0
  174. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/playerWallet/PlayerWallet.graphql +0 -0
  175. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/quotas/DeleteQuota.graphql +0 -0
  176. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/quotas/EffectiveQuota.graphql +0 -0
  177. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/quotas/QuotasForApp.graphql +0 -0
  178. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/quotas/QuotasForOrg.graphql +0 -0
  179. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/quotas/SetQuota.graphql +0 -0
  180. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/serverStatus/ActiveGraphQLServers.graphql +0 -0
  181. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/serverStatus/GameClientBootstrap.graphql +0 -0
  182. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/serverStatus/GraphqlServers.graphql +0 -0
  183. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/serverStatus/ServerWithLeastClients.graphql +0 -0
  184. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/serverStatus/VersionInfo.graphql +0 -0
  185. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/sharedEnvironment/SharedEnvironment.graphql +0 -0
  186. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/state/DeleteUserAppState.graphql +0 -0
  187. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/state/UpdateUserAppState.graphql +0 -0
  188. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/state/UserAppState.graphql +0 -0
  189. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/state/UserAppStates.graphql +0 -0
  190. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/AddTeamMember.graphql +0 -0
  191. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/BanTeamMember.graphql +0 -0
  192. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/CreateTeam.graphql +0 -0
  193. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/CreateTeamRole.graphql +0 -0
  194. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/DeleteTeam.graphql +0 -0
  195. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/DeleteTeamRole.graphql +0 -0
  196. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/JoinTeam.graphql +0 -0
  197. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/LeaveTeam.graphql +0 -0
  198. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/MyTeams.graphql +0 -0
  199. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/RemoveTeamMember.graphql +0 -0
  200. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/RequestToJoinTeam.graphql +0 -0
  201. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/SetTeamMemberRoles.graphql +0 -0
  202. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/SetTeamPolicy.graphql +0 -0
  203. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/Team.graphql +0 -0
  204. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/TeamMembers.graphql +0 -0
  205. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/TeamPolicy.graphql +0 -0
  206. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/TeamRoles.graphql +0 -0
  207. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/Teams.graphql +0 -0
  208. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/UnbanTeamMember.graphql +0 -0
  209. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/UpdateTeam.graphql +0 -0
  210. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teams/UpdateTeamRole.graphql +0 -0
  211. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/teleport/TeleportRequest.graphql +0 -0
  212. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/usage/AppGraphqlOperations.graphql +0 -0
  213. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/usage/AppUsageSummary.graphql +0 -0
  214. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/usage/PlayerPulse.graphql +0 -0
  215. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/users/DeleteMyAccount.graphql +0 -0
  216. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/users/FreePlayWindow.graphql +0 -0
  217. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/users/Me.graphql +0 -0
  218. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/users/PlayerProfile.graphql +0 -0
  219. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/users/UpdateGamertag.graphql +0 -0
  220. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/users/UpdateUserState.graphql +0 -0
  221. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/users/User.graphql +0 -0
  222. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/voxels/ListVoxelUpdatesByDistance.graphql +0 -0
  223. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/voxels/ListVoxels.graphql +0 -0
  224. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/voxels/RollbackVoxelUpdates.graphql +0 -0
  225. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/voxels/UpdateVoxel.graphql +0 -0
  226. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/operations/voxels/VoxelUpdateHistory.graphql +0 -0
  227. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/_pins.py +0 -0
  228. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/ci/assert_default_origin.py +0 -0
  229. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/ci/build_openssl.sh +0 -0
  230. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/ci/check_content_policy.py +0 -0
  231. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/ci/check_pin_tiers.py +0 -0
  232. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/ci/cibw_before_all_linux.sh +0 -0
  233. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/ci/resolve-release-tier.sh +0 -0
  234. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/ci/resolve-release-tier.test.sh +0 -0
  235. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/ci/resolve_pypi_version.py +0 -0
  236. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/ci/stamp_version.py +0 -0
  237. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/ci/verify_artifacts.py +0 -0
  238. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/codegen.py +0 -0
  239. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/schema_drift.py +0 -0
  240. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/schema_sync.py +0 -0
  241. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/unasync.py +0 -0
  242. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/scripts/vendor_crowdycpp.py +0 -0
  243. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_concurrency.py +0 -0
  244. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_default_origin.py +0 -0
  245. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_generated/__init__.py +0 -0
  246. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_grid.py +0 -0
  247. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_native.pyi +0 -0
  248. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_operation.py +0 -0
  249. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/__init__.py +0 -0
  250. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/client.py +0 -0
  251. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/__init__.py +0 -0
  252. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/_base.py +0 -0
  253. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/actors.py +0 -0
  254. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/app_access.py +0 -0
  255. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/apps.py +0 -0
  256. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/auth.py +0 -0
  257. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/avatars.py +0 -0
  258. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/billing.py +0 -0
  259. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/channels.py +0 -0
  260. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/chunks.py +0 -0
  261. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/crowdy_studio.py +0 -0
  262. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/crowdy_studio_agent.py +0 -0
  263. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/crowdy_studio_github.py +0 -0
  264. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/discovery.py +0 -0
  265. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/exec.py +0 -0
  266. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/game_apps.py +0 -0
  267. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/grids.py +0 -0
  268. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/host.py +0 -0
  269. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/input_log.py +0 -0
  270. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/marketplace.py +0 -0
  271. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/payments.py +0 -0
  272. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/platform.py +0 -0
  273. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/player_wallet.py +0 -0
  274. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/quotas.py +0 -0
  275. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/server_status.py +0 -0
  276. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/shared_environment.py +0 -0
  277. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/state.py +0 -0
  278. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/teams.py +0 -0
  279. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/teleport.py +0 -0
  280. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/udp.py +0 -0
  281. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/usage.py +0 -0
  282. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/users.py +0 -0
  283. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/domains/voxels.py +0 -0
  284. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/graphql.py +0 -0
  285. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/grid_scope.py +0 -0
  286. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/__init__.py +0 -0
  287. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/actions.py +0 -0
  288. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/kit.py +0 -0
  289. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/mirror.py +0 -0
  290. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/__init__.py +0 -0
  291. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/arenas.py +0 -0
  292. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/encounters.py +0 -0
  293. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/instances.py +0 -0
  294. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/leaderboards.py +0 -0
  295. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/market.py +0 -0
  296. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/matchmaking.py +0 -0
  297. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/minigames.py +0 -0
  298. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/npcs.py +0 -0
  299. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/player.py +0 -0
  300. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/presence.py +0 -0
  301. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/racing.py +0 -0
  302. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/sessions.py +0 -0
  303. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/tables.py +0 -0
  304. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/tactics.py +0 -0
  305. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/territory.py +0 -0
  306. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/modules/world.py +0 -0
  307. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/protocol.py +0 -0
  308. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/realtime.py +0 -0
  309. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/runtime.py +0 -0
  310. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/social.py +0 -0
  311. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/store.py +0 -0
  312. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/topology.py +0 -0
  313. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/kit/wire.py +0 -0
  314. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/rediscover.py +0 -0
  315. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/stores.py +0 -0
  316. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/_sync/world.py +0 -0
  317. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/auth_state.py +0 -0
  318. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/client.py +0 -0
  319. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/codecs.py +0 -0
  320. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/datacenter_redirect.py +0 -0
  321. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/__init__.py +0 -0
  322. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/_base.py +0 -0
  323. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/actors.py +0 -0
  324. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/app_access.py +0 -0
  325. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/apps.py +0 -0
  326. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/auth.py +0 -0
  327. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/avatars.py +0 -0
  328. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/billing.py +0 -0
  329. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/channels.py +0 -0
  330. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/chunks.py +0 -0
  331. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/crowdy_studio.py +0 -0
  332. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/crowdy_studio_agent.py +0 -0
  333. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/crowdy_studio_github.py +0 -0
  334. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/discovery.py +0 -0
  335. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/exec.py +0 -0
  336. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/game_apps.py +0 -0
  337. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/grids.py +0 -0
  338. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/host.py +0 -0
  339. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/input_log.py +0 -0
  340. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/marketplace.py +0 -0
  341. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/payments.py +0 -0
  342. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/platform.py +0 -0
  343. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/player_wallet.py +0 -0
  344. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/quotas.py +0 -0
  345. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/server_status.py +0 -0
  346. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/shared_environment.py +0 -0
  347. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/state.py +0 -0
  348. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/teams.py +0 -0
  349. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/teleport.py +0 -0
  350. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/udp.py +0 -0
  351. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/usage.py +0 -0
  352. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/users.py +0 -0
  353. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/domains/voxels.py +0 -0
  354. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/enums.py +0 -0
  355. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/estate.py +0 -0
  356. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/exec_gateway.py +0 -0
  357. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/graphql.py +0 -0
  358. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/grid_scope.py +0 -0
  359. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/inputs.py +0 -0
  360. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/__init__.py +0 -0
  361. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/actions.py +0 -0
  362. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/kit.py +0 -0
  363. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/mirror.py +0 -0
  364. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/__init__.py +0 -0
  365. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/arenas.py +0 -0
  366. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/encounters.py +0 -0
  367. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/instances.py +0 -0
  368. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/leaderboards.py +0 -0
  369. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/market.py +0 -0
  370. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/matchmaking.py +0 -0
  371. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/minigames.py +0 -0
  372. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/npcs.py +0 -0
  373. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/player.py +0 -0
  374. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/presence.py +0 -0
  375. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/racing.py +0 -0
  376. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/sessions.py +0 -0
  377. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/tables.py +0 -0
  378. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/tactics.py +0 -0
  379. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/territory.py +0 -0
  380. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/modules/world.py +0 -0
  381. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/protocol.py +0 -0
  382. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/realtime.py +0 -0
  383. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/runtime.py +0 -0
  384. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/social.py +0 -0
  385. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/store.py +0 -0
  386. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/topology.py +0 -0
  387. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/kit/wire.py +0 -0
  388. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/lb_cookie.py +0 -0
  389. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/media.py +0 -0
  390. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/pkce.py +0 -0
  391. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/player_host/__init__.py +0 -0
  392. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/player_host/agent_errors.py +0 -0
  393. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/player_host/agent_types.py +0 -0
  394. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/player_host/json_schema.py +0 -0
  395. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/player_host/schemas.py +0 -0
  396. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/player_host/types.py +0 -0
  397. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/py.typed +0 -0
  398. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/rediscover.py +0 -0
  399. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/replication.py +0 -0
  400. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/session.py +0 -0
  401. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/stores.py +0 -0
  402. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/studio/__init__.py +0 -0
  403. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/studio/client_tick_interval.py +0 -0
  404. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/studio/controller.py +0 -0
  405. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/studio/diagnostics.py +0 -0
  406. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/studio/github_new_repo.py +0 -0
  407. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/studio/layout.py +0 -0
  408. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/studio/models.py +0 -0
  409. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/studio/starter_projects.py +0 -0
  410. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/subscriptions.py +0 -0
  411. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/sync.py +0 -0
  412. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/utils.py +0 -0
  413. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/wire.py +0 -0
  414. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/src/crowdypy/world.py +0 -0
  415. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/conftest.py +0 -0
  416. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/e2e/__init__.py +0 -0
  417. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/e2e/conftest.py +0 -0
  418. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/e2e/test_e2e_identity.py +0 -0
  419. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/e2e/test_e2e_input_log.py +0 -0
  420. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/e2e/test_e2e_open_grid_exec_gateway.py +0 -0
  421. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/e2e/test_e2e_ranged_channel.py +0 -0
  422. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/e2e/test_e2e_replication.py +0 -0
  423. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/e2e/test_e2e_studio.py +0 -0
  424. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/e2e/test_e2e_world.py +0 -0
  425. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/e2e/test_e2e_world_data.py +0 -0
  426. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/fixtures/README.md +0 -0
  427. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/fixtures/binary-wire-fixtures.json +0 -0
  428. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/fixtures/exec-client-frames.json +0 -0
  429. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/fixtures/kit-protocol.json +0 -0
  430. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/fixtures/voice-frames.json +0 -0
  431. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/__init__.py +0 -0
  432. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/domains/__init__.py +0 -0
  433. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/domains/test_crowdycpp_roots.py +0 -0
  434. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/domains/test_input_log_reads.py +0 -0
  435. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/domains/test_org_domains.py +0 -0
  436. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/domains/test_social_domains.py +0 -0
  437. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/domains/test_studio_exec_domains.py +0 -0
  438. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/domains/test_world_domains.py +0 -0
  439. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_check_pin_tiers.py +0 -0
  440. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_core.py +0 -0
  441. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_durable_stores.py +0 -0
  442. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_estate_moves.py +0 -0
  443. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_exec_gateway.py +0 -0
  444. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_fixture_provenance.py +0 -0
  445. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_grid_scope.py +0 -0
  446. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_kit.py +0 -0
  447. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_kit_protocol.py +0 -0
  448. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_lazy_exports.py +0 -0
  449. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_player_host.py +0 -0
  450. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_refusals.py +0 -0
  451. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_release_versions.py +0 -0
  452. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_replication.py +0 -0
  453. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_studio_controller.py +0 -0
  454. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_studio_diagnostics.py +0 -0
  455. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_studio_layout.py +0 -0
  456. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_subscriptions.py +0 -0
  457. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_transport.py +0 -0
  458. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_udp_api.py +0 -0
  459. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_voice_frames.py +0 -0
  460. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_wire.py +0 -0
  461. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tests/unit/test_world_session.py +0 -0
  462. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tools/e2e/provision.py +0 -0
  463. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tools/fixtures/player_host.mjs +0 -0
  464. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/tools/parity/parity.py +0 -0
  465. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/LICENSE +0 -0
  466. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/cmake/CheckPublicHeaders.cmake +0 -0
  467. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/cmake/CrowdyCPPConfig.cmake.in +0 -0
  468. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/cmake/CrowdyFindOpus.cmake +0 -0
  469. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/cmake/studio_layout_fixture.hpp.in +0 -0
  470. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/client.hpp +0 -0
  471. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/base64.hpp +0 -0
  472. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/bytes.hpp +0 -0
  473. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/clock.hpp +0 -0
  474. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/crypto.hpp +0 -0
  475. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/logger.hpp +0 -0
  476. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/result.hpp +0 -0
  477. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/spsc.hpp +0 -0
  478. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/core/uuid.hpp +0 -0
  479. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/crowdy.hpp +0 -0
  480. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/default_origin.hpp +0 -0
  481. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/auth.hpp +0 -0
  482. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/crowdy_studio.hpp +0 -0
  483. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/crowdy_studio_agent.hpp +0 -0
  484. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/crowdy_studio_github.hpp +0 -0
  485. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/discovery.hpp +0 -0
  486. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/domain_base.hpp +0 -0
  487. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/exec.hpp +0 -0
  488. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/game_apps.hpp +0 -0
  489. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/grids.hpp +0 -0
  490. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/groups.hpp +0 -0
  491. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/marketplace.hpp +0 -0
  492. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/player_wallet.hpp +0 -0
  493. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/realtime_control.hpp +0 -0
  494. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/server_status.hpp +0 -0
  495. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/types.hpp +0 -0
  496. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/users.hpp +0 -0
  497. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/domains/world_data.hpp +0 -0
  498. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/async_scope.hpp +0 -0
  499. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/auth_state.hpp +0 -0
  500. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/cancel.hpp +0 -0
  501. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/datacenter_redirect.hpp +0 -0
  502. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/dispatcher.hpp +0 -0
  503. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/estate.hpp +0 -0
  504. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/graphql_client.hpp +0 -0
  505. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/http.hpp +0 -0
  506. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/json.hpp +0 -0
  507. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/rediscover.hpp +0 -0
  508. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/subscription_client.hpp +0 -0
  509. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/graphql/websocket.hpp +0 -0
  510. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/actions.hpp +0 -0
  511. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/economy.hpp +0 -0
  512. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/genres.hpp +0 -0
  513. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/kit.hpp +0 -0
  514. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/mirror.hpp +0 -0
  515. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/modules.hpp +0 -0
  516. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/protocol.hpp +0 -0
  517. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/realtime.hpp +0 -0
  518. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/runtime.hpp +0 -0
  519. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/social.hpp +0 -0
  520. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/topology.hpp +0 -0
  521. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/kit/wire.hpp +0 -0
  522. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/media/opus.hpp +0 -0
  523. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/media/video_frames.hpp +0 -0
  524. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/media/voice_frames.hpp +0 -0
  525. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/player_host/adapter.hpp +0 -0
  526. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/player_host/player_host.hpp +0 -0
  527. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/player_host/schemas.hpp +0 -0
  528. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/player_host/types.hpp +0 -0
  529. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/replication/connection.hpp +0 -0
  530. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/replication/session_provider.hpp +0 -0
  531. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/replication/types.hpp +0 -0
  532. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/replication/udp_socket.hpp +0 -0
  533. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/chunk_store.hpp +0 -0
  534. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/codec.hpp +0 -0
  535. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/durable.hpp +0 -0
  536. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/keys.hpp +0 -0
  537. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/stores.hpp +0 -0
  538. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/session/world_session.hpp +0 -0
  539. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/controller.hpp +0 -0
  540. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/diagnostics.hpp +0 -0
  541. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/editor.hpp +0 -0
  542. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/github.hpp +0 -0
  543. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/github_layout.hpp +0 -0
  544. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/integration.hpp +0 -0
  545. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/layout.hpp +0 -0
  546. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/models.hpp +0 -0
  547. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/studio/runtime.hpp +0 -0
  548. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/wire/codec.hpp +0 -0
  549. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/wire/protocol.hpp +0 -0
  550. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/include/crowdy/world.hpp +0 -0
  551. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/client.cpp +0 -0
  552. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/core/base64.cpp +0 -0
  553. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/core/clock.cpp +0 -0
  554. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/core/crypto_default_unavailable.cpp +0 -0
  555. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/core/crypto_openssl.cpp +0 -0
  556. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/core/crypto_unavailable.cpp +0 -0
  557. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/core/logger.cpp +0 -0
  558. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/core/uuid.cpp +0 -0
  559. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/domains/exec.cpp +0 -0
  560. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/async_transport.cpp +0 -0
  561. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/auth_state.cpp +0 -0
  562. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/error_extensions.hpp +0 -0
  563. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/errors.cpp +0 -0
  564. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/graphql_client.cpp +0 -0
  565. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/http_curl.cpp +0 -0
  566. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/http_none.cpp +0 -0
  567. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/json.cpp +0 -0
  568. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/subscription_client.cpp +0 -0
  569. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/websocket_curl.cpp +0 -0
  570. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/graphql/websocket_none.cpp +0 -0
  571. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/kit/economy.cpp +0 -0
  572. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/kit/genres.cpp +0 -0
  573. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/kit/mirror.cpp +0 -0
  574. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/kit/modules.cpp +0 -0
  575. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/kit/protocol.cpp +0 -0
  576. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/kit/runtime.cpp +0 -0
  577. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/kit/topology.cpp +0 -0
  578. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/media/opus.cpp +0 -0
  579. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/player_host/schemas.cpp +0 -0
  580. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/player_host/types.cpp +0 -0
  581. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/replication/connection.cpp +0 -0
  582. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/replication/socket_errors.hpp +0 -0
  583. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/replication/udp_socket.cpp +0 -0
  584. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/session/world_session.cpp +0 -0
  585. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/studio/diagnostics.cpp +0 -0
  586. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/studio/editor.cpp +0 -0
  587. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/src/studio/integration.cpp +0 -0
  588. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/third_party/yyjson/LICENSE +0 -0
  589. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/third_party/yyjson/yyjson.c +0 -0
  590. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/third_party/yyjson/yyjson.h +0 -0
  591. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/exec-client-frames.json +0 -0
  592. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/exec-gateway-cases.json +0 -0
  593. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/kit-protocol.json +0 -0
  594. {crowdypy-0.16.0.dev1 → crowdypy-0.17.0.dev1}/vendor/CrowdyCPP/tools/parity/fixtures/voice-frames.json +0 -0
@@ -3,11 +3,29 @@
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.17.0
7
+
8
+ CrowdyJS 18.17.0 and CrowdyCPP 0.69.0. Additive. ck-api v2.53.0 serves org-managed players on
9
+ dev, test and prod, and refuses an organization's managed sign-ins (both ways), refreshes and
10
+ provisioning with `ORG_LEGAL_ACCEPTANCE_REQUIRED` until an admin of the organization accepts
11
+ the Org-Managed Players Addendum in Studio.
12
+
13
+ - **`crowdypy.errors.org_legal_acceptance_required_of`** reads that refusal
14
+ (`ORG_LEGAL_ACCEPTANCE_REQUIRED_CODE`). Neither the player nor the organization's server can
15
+ fix it, so do not retry.
16
+ - **`client.managed_players.settings(org_id)`** also returns `termsVersion`, `termsUrl`,
17
+ `termsAccepted`, `termsAcceptedVersion`, `termsAcceptedAt`, `termsAcceptedByUserId` and
18
+ `viewerMayAcceptTerms`.
19
+ - **Fix:** `crowdypy.domains.portal.is_legal_acceptance_required_error` no longer matches the
20
+ organization's code by its message: a managed player has no clickwrap to show.
21
+ - No wrapper for `acceptManagedPlayerTerms`, as in CrowdyJS and CrowdyCPP: it binds the
22
+ organization, so a person accepts it in Studio.
23
+
6
24
  ## 0.16.0
7
25
 
8
- CrowdyJS 18.16.0 and CrowdyCPP 0.68.0. Additive, and served on the dev tier only (every other
9
- tier answers `FEATURE_DISABLED`): org-managed players, an organization's own players that it
10
- signs in itself.
26
+ CrowdyJS 18.16.0 and CrowdyCPP 0.68.0. Additive, and served on the dev tier only at the time
27
+ (every other tier answered `FEATURE_DISABLED` until ck-api v2.53.0): org-managed players, an
28
+ organization's own players that it signs in itself.
11
29
 
12
30
  - **`client.portal.adopt_app_token(response)`** holds the app token the organization's server
13
31
  minted with its org token (`mintManagedPlayerToken`) and returns it as an
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crowdypy
3
- Version: 0.16.0.dev1
3
+ Version: 0.17.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,7 +51,9 @@ 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.16.0: org-managed players (dev only).** An organization that runs its own accounts signs its players in itself: its server mints a player's app token with an org token, or its sign-in service signs an assertion. A device holds the first with `client.portal.adopt_app_token(response)` (it refuses an org token, which stays on the organization's server; there is no org-token mint wrapper) or trades the second with `client.portal.exchange_managed_player_assertion(app_id, assertion)`, and gives the result to `client.set_app_token`. `client.managed_players` is the organization's administration. CrowdyJS 18.16.0 and CrowdyCPP 0.68.0. See [MIGRATION.md](MIGRATION.md).
54
+ **v0.17.0: the Org-Managed Players Addendum.** ck-api v2.53.0 serves org-managed players on every tier, once an admin of the organization has accepted the addendum in Studio; until then its sign-ins and refreshes answer `ORG_LEGAL_ACCEPTANCE_REQUIRED`, which `crowdypy.errors.org_legal_acceptance_required_of` reads, and `client.managed_players.settings(org_id)` says where the organization stands. CrowdyJS 18.17.0 and CrowdyCPP 0.69.0. See [MIGRATION.md](MIGRATION.md).
55
+
56
+ **v0.16.0: org-managed players.** An organization that runs its own accounts signs its players in itself: its server mints a player's app token with an org token, or its sign-in service signs an assertion. A device holds the first with `client.portal.adopt_app_token(response)` (it refuses an org token, which stays on the organization's server; there is no org-token mint wrapper) or trades the second with `client.portal.exchange_managed_player_assertion(app_id, assertion)`, and gives the result to `client.set_app_token`. `client.managed_players` is the organization's administration. CrowdyJS 18.16.0 and CrowdyCPP 0.68.0. See [MIGRATION.md](MIGRATION.md).
55
57
 
56
58
  **v0.15.0: a voxel edit that waits for the server, and opcode 140 from `client.udp`.** `chunks.set_voxel(..., optimistic=False)` changes nothing locally until the server's echo of the edit arrives; `client.udp.send_generic_spatial` sends an app-defined spatial message. CrowdyJS 18.15.0 and CrowdyCPP 0.67.4. See [MIGRATION.md](MIGRATION.md).
57
59
 
@@ -11,7 +11,9 @@ 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.16.0: org-managed players (dev only).** An organization that runs its own accounts signs its players in itself: its server mints a player's app token with an org token, or its sign-in service signs an assertion. A device holds the first with `client.portal.adopt_app_token(response)` (it refuses an org token, which stays on the organization's server; there is no org-token mint wrapper) or trades the second with `client.portal.exchange_managed_player_assertion(app_id, assertion)`, and gives the result to `client.set_app_token`. `client.managed_players` is the organization's administration. CrowdyJS 18.16.0 and CrowdyCPP 0.68.0. See [MIGRATION.md](MIGRATION.md).
14
+ **v0.17.0: the Org-Managed Players Addendum.** ck-api v2.53.0 serves org-managed players on every tier, once an admin of the organization has accepted the addendum in Studio; until then its sign-ins and refreshes answer `ORG_LEGAL_ACCEPTANCE_REQUIRED`, which `crowdypy.errors.org_legal_acceptance_required_of` reads, and `client.managed_players.settings(org_id)` says where the organization stands. CrowdyJS 18.17.0 and CrowdyCPP 0.69.0. See [MIGRATION.md](MIGRATION.md).
15
+
16
+ **v0.16.0: org-managed players.** An organization that runs its own accounts signs its players in itself: its server mints a player's app token with an org token, or its sign-in service signs an assertion. A device holds the first with `client.portal.adopt_app_token(response)` (it refuses an org token, which stays on the organization's server; there is no org-token mint wrapper) or trades the second with `client.portal.exchange_managed_player_assertion(app_id, assertion)`, and gives the result to `client.set_app_token`. `client.managed_players` is the organization's administration. CrowdyJS 18.16.0 and CrowdyCPP 0.68.0. See [MIGRATION.md](MIGRATION.md).
15
17
 
16
18
  **v0.15.0: a voxel edit that waits for the server, and opcode 140 from `client.udp`.** `chunks.set_voxel(..., optimistic=False)` changes nothing locally until the server's echo of the edit arrives; `client.udp.send_generic_spatial` sends an app-defined spatial message. CrowdyJS 18.15.0 and CrowdyCPP 0.67.4. See [MIGRATION.md](MIGRATION.md).
17
19
 
@@ -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.16.0`
8
+ - CrowdyPy `0.17.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.16.0` at `d398e24658a50abb118f956c8c9a07d94ae5c53e`
8
- - CrowdyCPP (native core): `0.68.0` at `bb240e625b44b56721c0937cd4c515180860f79f`
7
+ - CrowdyJS: `18.17.0` at `05c2f28b72ebde4c487c7bb52e07d11466bc64cc`
8
+ - CrowdyCPP (native core): `0.69.0` at `96c859cdf7972686f3325489c01b8a49161dd664`
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: 1384
14
+ - Covered: 1386
15
15
  - Portable gap: 0
16
16
  - Native equivalent: 46
17
- - Browser exclusion: 115
17
+ - Browser exclusion: 116
18
18
  - Deprecated roots: 2
19
19
  - Unclassified: 0
20
20
 
@@ -23,6 +23,7 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
23
23
  | Field | Status |
24
24
  |---|---|
25
25
  | `mutation.abandonGamePublish` | browser exclusion — publishes and administers browser game bundles on the Crowdy Games web host; a Python client has no bundle to publish |
26
+ | `mutation.acceptManagedPlayerTerms` | browser exclusion — an organization admin's acceptance of the Org-Managed Players Addendum, a clickwrap made in Studio; no SDK wraps it |
26
27
  | `mutation.actorHeartbeat` | covered |
27
28
  | `mutation.addChannelMember` | covered |
28
29
  | `mutation.addTeamMember` | covered |
@@ -1477,6 +1478,7 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
1477
1478
  | `MAX_VIDEO_FRAGMENTS` | covered |
1478
1479
  | `MAX_VIDEO_FRAGMENT_BODY_BYTES` | covered |
1479
1480
  | `MAX_VOICE_FRAME_BYTES` | covered |
1481
+ | `ORG_LEGAL_ACCEPTANCE_REQUIRED_CODE` | covered |
1480
1482
  | `PLAYER_CODE_INVOKE_MAX_BYTES` | browser exclusion — page-side broker for player WASM in the browser glue Web Worker (worker lifecycle, host-call allowlists, rate caps, watchdogs) |
1481
1483
  | `PLAYER_CODE_LOG_LINES_PER_SECOND` | browser exclusion — page-side broker for player WASM in the browser glue Web Worker (worker lifecycle, host-call allowlists, rate caps, watchdogs) |
1482
1484
  | `PLAYER_CODE_LOG_MAX_CHARS` | browser exclusion — page-side broker for player WASM in the browser glue Web Worker (worker lifecycle, host-call allowlists, rate caps, watchdogs) |
@@ -1555,6 +1557,7 @@ Generated by `tools/parity/parity.py`; do not edit by hand. Classifications live
1555
1557
  | `managedPlayerNotAllowedOf` | covered |
1556
1558
  | `moveFromError` | covered |
1557
1559
  | `moveFromErrors` | covered |
1560
+ | `orgLegalAcceptanceRequiredOf` | covered |
1558
1561
  | `packMessageBundle` | native equivalent — the same codec, CrowdyCPP's, through crowdypy.wire: crowdypy.wire.bundle |
1559
1562
  | `parseFuelBudget` | browser exclusion — glue that instantiates player WASM inside the browser Web Worker (CLIENT ABI imports, ck_fuel, watchdog) |
1560
1563
  | `parseRelayFrame` | native equivalent — the same codec, CrowdyCPP's, through crowdypy.wire: crowdypy.wire.parse_datagram (a relay frame is one datagram) |
@@ -7,5 +7,12 @@ query OrgManagedPlayerSettings($orgId: BigInt!) {
7
7
  mintsPerMinute
8
8
  defaultSessionTtlSeconds
9
9
  maxSessionTtlSeconds
10
+ termsVersion
11
+ termsUrl
12
+ termsAccepted
13
+ termsAcceptedVersion
14
+ termsAcceptedAt
15
+ termsAcceptedByUserId
16
+ viewerMayAcceptTerms
10
17
  }
11
18
  }
@@ -4,7 +4,7 @@ build-backend = "scikit_build_core.build"
4
4
 
5
5
  [project]
6
6
  name = "crowdypy"
7
- version = "0.16.0.dev1"
7
+ version = "0.17.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.16.0"
123
- commit = "d398e24658a50abb118f956c8c9a07d94ae5c53e"
122
+ version = "18.17.0"
123
+ commit = "05c2f28b72ebde4c487c7bb52e07d11466bc64cc"
124
124
 
125
125
  [tool.crowdypy.crowdycpp]
126
- version = "0.68.0"
127
- tag = "dev/v0.68.0"
128
- commit = "bb240e625b44b56721c0937cd4c515180860f79f"
129
- tree-sha256 = "c6db73f54cba1c738d6bdad7a5c586369518a38ca4be39385957c6653d740dab"
126
+ version = "0.69.0"
127
+ tag = "dev/v0.69.0"
128
+ commit = "96c859cdf7972686f3325489c01b8a49161dd664"
129
+ tree-sha256 = "b2e302e5d2e8967d7325dda2fb14a46c162fa1d69ce2b3c149f85fa8c5eeca82"
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 = "6f8f1547097b47f8cc41bf46dcb4c791d285c8192e8239155b791c7734847b6f"
135
- operations-sha256 = "4b415e08c48e2113ddfcfd90a111d25793d5b64ad95a339f1d0aca60b1201c56"
134
+ schema-sha256 = "261902653e100cc5701c32580d07b5ae401e28fa547a0712fa71429fb24df188"
135
+ operations-sha256 = "32e2c43ac1bd00ec9c05902d524e82727cf560a88330f207704059a7a8a96189"
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.
@@ -1087,7 +1087,7 @@ type OrgToken {
1087
1087
  """Optional human-readable label."""
1088
1088
  label: String
1089
1089
  """
1090
- What the token may do: 'players:mint' (sign the org's managed players in, mintManagedPlayerToken) and 'players:manage' (provision, list, rename, disable, sign out and delete them). A token with no scope can do nothing. Org tokens authenticate on dev only for now.
1090
+ What the token may do: 'players:mint' (sign the org's managed players in, mintManagedPlayerToken) and 'players:manage' (provision, list, rename, disable, sign out and delete them). A token with no scope can do nothing.
1091
1091
  """
1092
1092
  scopes: [String!]!
1093
1093
  """
@@ -1349,7 +1349,7 @@ type App {
1349
1349
  """
1350
1350
  org: Organization
1351
1351
  """
1352
- Whether the organization lets its org-managed players build and run mods (and use the Studio agent) in this app, paying for their mod compute, egress, storage and model tokens itself. False by default, and false wherever org-managed players are off (they are on dev only). Set with setAppManagedPlayerMods (manage_billing). Players with a Crowded Kingdoms account are unaffected.
1352
+ Whether the organization lets its org-managed players build and run mods (and use the Studio agent) in this app, paying for their mod compute, egress, storage and model tokens itself. False by default, and false on a tier that does not serve org-managed players. Set with setAppManagedPlayerMods (manage_billing). Players with a Crowded Kingdoms account are unaffected.
1353
1353
  """
1354
1354
  managedPlayerModsEnabled: Boolean!
1355
1355
  }
@@ -1600,7 +1600,7 @@ type ServerVersionInfo {
1600
1600
  }
1601
1601
 
1602
1602
  """
1603
- A player an organization signs in itself (an org-managed player): a Crowded Kingdoms user with no email, password or wallet, known to the org by its own id. Dev only for now.
1603
+ A player an organization signs in itself (an org-managed player): a Crowded Kingdoms user with no email, password or wallet, known to the org by its own id.
1604
1604
  """
1605
1605
  type ManagedPlayer {
1606
1606
  """
@@ -1644,7 +1644,7 @@ type ProvisionManagedPlayersResult {
1644
1644
  }
1645
1645
 
1646
1646
  """
1647
- An organization's org-managed player settings. Set by a Crowded Kingdoms operator; the org reads them.
1647
+ An organization's org-managed player settings, and where it stands on the Org-Managed Players Addendum. A Crowded Kingdoms operator sets the settings; an admin of the organization accepts the addendum.
1648
1648
  """
1649
1649
  type OrgManagedPlayerSettings {
1650
1650
  orgId: BigInt!
@@ -1664,10 +1664,32 @@ type OrgManagedPlayerSettings {
1664
1664
  defaultSessionTtlSeconds: Int!
1665
1665
  """The longest sign-in the org may ask for (seconds)."""
1666
1666
  maxSessionTtlSeconds: Int!
1667
+ """
1668
+ The current version of the Org-Managed Players Addendum, which an admin of the organization accepts (acceptManagedPlayerTerms) before its players are created or signed in.
1669
+ """
1670
+ termsVersion: String!
1671
+ """Where the current addendum is published."""
1672
+ termsUrl: String!
1673
+ """
1674
+ Whether the organization has accepted the current version. Until it has, its managed players are neither created nor signed in and their app tokens do not refresh (ORG_LEGAL_ACCEPTANCE_REQUIRED).
1675
+ """
1676
+ termsAccepted: Boolean!
1677
+ """
1678
+ The version the organization accepted most recently, or null if it never accepted one.
1679
+ """
1680
+ termsAcceptedVersion: String
1681
+ """When it accepted that version."""
1682
+ termsAcceptedAt: DateTime
1683
+ """The user id of the admin who accepted that version."""
1684
+ termsAcceptedByUserId: BigInt
1685
+ """
1686
+ Whether the signed-in user may accept the addendum for this organization: an admin of it, by the organization's own grant (a super admin's or an operator's access does not count).
1687
+ """
1688
+ viewerMayAcceptTerms: Boolean!
1667
1689
  }
1668
1690
 
1669
1691
  """
1670
- The public half of a key an organization signs its players' sign-in assertions with (exchangeManagedPlayerAssertion). Only public keys are stored. Dev only for now.
1692
+ The public half of a key an organization signs its players' sign-in assertions with (exchangeManagedPlayerAssertion). Only public keys are stored.
1671
1693
  """
1672
1694
  type OrgSigningKey {
1673
1695
  """The key’s id here."""
@@ -7122,13 +7144,16 @@ type Query {
7122
7144
  """
7123
7145
  versionInfo: ServerVersionInfo!
7124
7146
  """
7125
- Dev only. The organization's managed players, by user id. `search` matches the start of the external id (exactly) or of the gamertag (any case). An org token with players:manage, or an org admin with manage_players.
7147
+ The organization's managed players, by user id. `search` matches the start of the external id (exactly) or of the gamertag (any case). An org token with players:manage, or an org admin with manage_players.
7126
7148
  """
7127
7149
  managedPlayers(
7128
7150
  """
7129
7151
  The organization (BigInt as a decimal string). With an org token, the token's own.
7130
7152
  """
7131
7153
  orgId: BigInt!
7154
+ """
7155
+ Matches the start of an externalId (exactly) or of a gamertag (any case).
7156
+ """
7132
7157
  search: String
7133
7158
  """Page size, 1-200 (default 50)."""
7134
7159
  first: Int
@@ -7136,23 +7161,30 @@ type Query {
7136
7161
  after: String
7137
7162
  ): ManagedPlayersPage!
7138
7163
  """
7139
- Dev only. One managed player by the id your organization knows it by, or null. An org token with players:manage, or an org admin with manage_players.
7164
+ One managed player by the id your organization knows it by, or null. An org token with players:manage, or an org admin with manage_players.
7140
7165
  """
7141
7166
  managedPlayer(
7142
7167
  """
7143
7168
  The organization (BigInt as a decimal string). With an org token, the token's own.
7144
7169
  """
7145
7170
  orgId: BigInt!
7171
+ """The id your organization knows the player by."""
7146
7172
  externalId: String!
7147
7173
  ): ManagedPlayer
7148
7174
  """
7149
- Dev only. The organization's org-managed player settings: whether it may sign its own players in, its cap, sign-in rate and sign-in lifetimes, and how many players it holds. Requires manage_players on the org (super-admins and operators bypass).
7175
+ The organization's org-managed player settings: whether it may sign its own players in, its cap, sign-in rate and sign-in lifetimes, how many players it holds, and whether it has accepted the current Org-Managed Players Addendum. Requires manage_players on the org (super-admins and operators bypass).
7150
7176
  """
7151
- orgManagedPlayerSettings(orgId: BigInt!): OrgManagedPlayerSettings!
7177
+ orgManagedPlayerSettings(
7178
+ """The organization (BigInt as a decimal string)."""
7179
+ orgId: BigInt!
7180
+ ): OrgManagedPlayerSettings!
7152
7181
  """
7153
- Dev only. The organization's signing keys for player assertions, newest first, revoked ones included. Requires manage_players on the org.
7182
+ The organization's signing keys for player assertions, newest first, revoked ones included. Requires manage_players on the org.
7154
7183
  """
7155
- orgSigningKeys(orgId: BigInt!): [OrgSigningKey!]!
7184
+ orgSigningKeys(
7185
+ """The organization (BigInt as a decimal string)."""
7186
+ orgId: BigInt!
7187
+ ): [OrgSigningKey!]!
7156
7188
  """
7157
7189
  A hosted third-party game by slug, or null when the slug is unclaimed. PUBLIC: the first-party shell at https://<games host>/<slug>/ calls this before sign-in to learn the contentOrigin it frames. Returns DISABLED and TAKEN_DOWN games too (with their status) so the shell can say why. Null when the tier does not host third-party games.
7158
7190
  """
@@ -8969,7 +9001,7 @@ type Mutation {
8969
9001
  input: ReinstateOrganizationInput!
8970
9002
  ): OrgRetirementType! @requiresPermission(scope: "operator", permission: "is_operator")
8971
9003
  """
8972
- Mints a new org token (it starts with `cko_`) and returns the plaintext exactly once - save it, since subsequent queries only show metadata. An org token is the organization's SERVER credential for its org-managed players (dev only for now): with scope 'players:mint' its server signs the org's own players in (mintManagedPlayerToken), with 'players:manage' it manages them; `appIds` limits it to some of the org's apps. Never put one in a game client or a web page: a request with an Origin header is refused. Requires the 'manage_tokens' permission on the target org (super admins bypass).
9004
+ Mints a new org token (it starts with `cko_`) and returns the plaintext exactly once - save it, since subsequent queries only show metadata. An org token is the organization's SERVER credential for its org-managed players: with scope 'players:mint' its server signs the org's own players in (mintManagedPlayerToken), with 'players:manage' it manages them; `appIds` limits it to some of the org's apps. Never put one in a game client or a web page: a request with an Origin header is refused. Requires the 'manage_tokens' permission on the target org (super admins bypass).
8973
9005
  """
8974
9006
  createOrgToken(input: CreateOrgTokenInput!): OrgTokenWithSecret! @requiresPermission(scope: "org", permission: "manage_tokens", scopeArg: "input.orgId")
8975
9007
  """
@@ -9152,57 +9184,82 @@ type Mutation {
9152
9184
  """
9153
9185
  setAppClientSettings(input: SetAppClientSettingsInput!): PortalConsentState!
9154
9186
  """
9155
- ORG TOKEN ONLY, dev only. Sign one of your organization's own players in and get its app-scoped gameplay token, the same token mintAppToken returns: hand `token` (and the URLs) to the player's device, which plays with it exactly as with any app token and refreshes it with refreshAppToken. Call from your server with `Authorization: Bearer cko_...` (scope players:mint); a request with an Origin header is refused. The player is created on its first sign-in (no email, password or wallet), and each sign-in lasts `sessionTtlSeconds` (default and maximum: the org's settings): after it the device comes back to you. The app must be one of your organization's apps (and in the token's app list, if it has one). Free tiers grant access automatically; a paid tier needs grantAppAccess.
9187
+ ORG TOKEN ONLY. Sign one of your organization's own players in and get its app-scoped gameplay token, the same token mintAppToken returns: hand `token` (and the URLs) to the player's device, which plays with it exactly as with any app token and refreshes it with refreshAppToken. Call from your server with `Authorization: Bearer cko_...` (scope players:mint); a request with an Origin header is refused. The player is created on its first sign-in (no email, password or wallet), and each sign-in lasts `sessionTtlSeconds` (default and maximum: the org's settings): after it the device comes back to you. The app must be one of your organization's apps (and in the token's app list, if it has one). Free tiers grant access automatically; a paid tier needs grantAppAccess. Refused with ORG_LEGAL_ACCEPTANCE_REQUIRED until an admin of the organization has accepted the current Org-Managed Players Addendum.
9156
9188
  """
9157
9189
  mintManagedPlayerToken(input: MintManagedPlayerTokenInput!): AppTokenResponse!
9158
9190
  """
9159
- Dev only. Create managed players ahead of their first sign-in, up to 500 a call in one write (creating a player is a cluster-wide commit, so a large import goes in batches). A player that exists is left as it is. An org token with players:manage, or an org admin with manage_players.
9191
+ Create managed players ahead of their first sign-in, up to 500 a call in one write (creating a player is a cluster-wide commit, so a large import goes in batches). A player that exists is left as it is. Refused with ORG_LEGAL_ACCEPTANCE_REQUIRED until the organization has accepted the current Org-Managed Players Addendum. An org token with players:manage, or an org admin with manage_players.
9160
9192
  """
9161
9193
  provisionManagedPlayers(input: ProvisionManagedPlayersInput!): ProvisionManagedPlayersResult!
9162
9194
  """
9163
- Dev only. Rename a managed player, or disable or enable it. Disabling ends every session it has now (realtime and ck-exec included) and refuses its sign-ins; enabling lifts only a disable the org set. An org token with players:manage, or an org admin with manage_players.
9195
+ Rename a managed player, or disable or enable it. Disabling ends every session it has now (realtime and ck-exec included) and refuses its sign-ins; enabling lifts only a disable the org set. An org token with players:manage, or an org admin with manage_players.
9164
9196
  """
9165
9197
  updateManagedPlayer(input: UpdateManagedPlayerInput!): ManagedPlayer!
9166
9198
  """
9167
- Dev only. Sign a managed player out everywhere: its sessions and app tokens end, and so do its realtime and ck-exec connections. It can sign in again (use updateManagedPlayer to stop that). False when it held no session. An org token with players:manage, or an org admin with manage_players.
9199
+ Sign a managed player out everywhere: its sessions and app tokens end, and so do its realtime and ck-exec connections. It can sign in again (use updateManagedPlayer to stop that). False when it held no session. An org token with players:manage, or an org admin with manage_players.
9168
9200
  """
9169
9201
  endManagedPlayerSessions(
9170
9202
  """
9171
9203
  The organization (BigInt as a decimal string). With an org token, the token's own.
9172
9204
  """
9173
9205
  orgId: BigInt!
9206
+ """The id your organization knows the player by."""
9174
9207
  externalId: String!
9175
9208
  ): Boolean!
9176
9209
  """
9177
- Dev only. Delete a managed player: its sessions end and its row is anonymized, as an account deletion is. Signing the same external id in again creates a new player. False when there was no such player. An org token with players:manage, or an org admin with manage_players.
9210
+ Delete a managed player: its sessions end and its row is anonymized, as an account deletion is. Signing the same external id in again creates a new player. False when there was no such player. An org token with players:manage, or an org admin with manage_players.
9178
9211
  """
9179
9212
  deleteManagedPlayer(
9180
9213
  """
9181
9214
  The organization (BigInt as a decimal string). With an org token, the token's own.
9182
9215
  """
9183
9216
  orgId: BigInt!
9217
+ """The id your organization knows the player by."""
9184
9218
  externalId: String!
9185
9219
  ): Boolean!
9186
9220
  """
9187
- OPERATOR ONLY, dev only. Enable or disable an organization's org-managed players and set its limits. Disabling refuses new sign-ins; sessions already running last until they lapse (end them with endManagedPlayerSessions).
9221
+ OPERATOR ONLY. Enable or disable an organization's org-managed players and set its limits. Disabling refuses new sign-ins; sessions already running last until they lapse (end them with endManagedPlayerSessions). Enabling does not accept the addendum: an admin of the organization does that (acceptManagedPlayerTerms).
9188
9222
  """
9189
9223
  setOrgManagedPlayerSettings(input: SetOrgManagedPlayerSettingsInput!): OrgManagedPlayerSettings! @requiresPermission(scope: "operator", permission: "is_operator")
9190
9224
  """
9191
- Dev only. Register the PUBLIC half of a key your organization signs its players' sign-in assertions with (exchangeManagedPlayerAssertion): its kid, algorithm (EdDSA, ES256 or RS256), the JWK, the iss your assertions carry and, if your identity provider sets its own, their aud. The private key never leaves your systems. Requires manage_players on the org.
9225
+ SESSION ONLY, an admin of the organization (its own admin grant: a super admin's or an operator's access does not stand in). Accept the Org-Managed Players Addendum on the organization's behalf, the version orgManagedPlayerSettings names as termsVersion (read it at termsUrl). Until the organization has accepted the current version, its managed players are neither created nor signed in (ORG_LEGAL_ACCEPTANCE_REQUIRED). A version that is not the current one is refused with CONFLICT; accepting the current one again changes nothing. Studio asks for it on the organization's Players tab.
9226
+ """
9227
+ acceptManagedPlayerTerms(
9228
+ """The organization (BigInt as a decimal string)."""
9229
+ orgId: BigInt!
9230
+ """
9231
+ The addendum version the admin read and accepts: termsVersion from orgManagedPlayerSettings.
9232
+ """
9233
+ version: String!
9234
+ ): OrgManagedPlayerSettings! @requiresPermission(scope: "org", permission: "admin", scopeArg: "orgId")
9235
+ """
9236
+ Register the PUBLIC half of a key your organization signs its players' sign-in assertions with (exchangeManagedPlayerAssertion): its kid, algorithm (EdDSA, ES256 or RS256), the JWK, the iss your assertions carry and, if your identity provider sets its own, their aud. The private key never leaves your systems. Requires manage_players on the org.
9192
9237
  """
9193
9238
  registerOrgSigningKey(input: RegisterOrgSigningKeyInput!): OrgSigningKey!
9194
9239
  """
9195
- Dev only. Revoke a signing key: assertions it signed are refused from now on (sessions already signed in run until they lapse; end them with endManagedPlayerSessions). False when there was no such active key. Requires manage_players on the org.
9240
+ Revoke a signing key: assertions it signed are refused from now on (sessions already signed in run until they lapse; end them with endManagedPlayerSessions). False when there was no such active key. Requires manage_players on the org.
9196
9241
  """
9197
- revokeOrgSigningKey(orgId: BigInt!, keyId: BigInt!): Boolean!
9242
+ revokeOrgSigningKey(
9243
+ """The organization (BigInt as a decimal string)."""
9244
+ orgId: BigInt!
9245
+ """The key to revoke (OrgSigningKey.keyId)."""
9246
+ keyId: BigInt!
9247
+ ): Boolean!
9198
9248
  """
9199
- Dev only. Exchange an assertion your organization signed for one of its players for that player's app-scoped gameplay token (the same token mintManagedPlayerToken returns). Public: the signature is the credential, so a game client calls it directly, from a browser on your registered origin or natively. The assertion must name a registered, active key (header kid) and carry iss and aud as registered (aud defaults to ck:app:<appId>), sub (your id for the player), iat, exp at most 300 seconds after iat, and a jti never used before for this app; optionally gamertag. The player is created on its first sign-in. Refusals are ASSERTION_REJECTED with extensions.reason.
9249
+ Exchange an assertion your organization signed for one of its players for that player's app-scoped gameplay token (the same token mintManagedPlayerToken returns). Public: the signature is the credential, so a game client calls it directly, from a browser on your registered origin or natively. The assertion must name a registered, active key (header kid) and carry iss and aud as registered (aud defaults to ck:app:<appId>), sub (your id for the player), iat, exp at most 300 seconds after iat, and a jti never used before for this app; optionally gamertag. The player is created on its first sign-in. Refusals are ASSERTION_REJECTED with extensions.reason; a valid assertion is refused with ORG_LEGAL_ACCEPTANCE_REQUIRED until an admin of the organization has accepted the current Org-Managed Players Addendum.
9200
9250
  """
9201
9251
  exchangeManagedPlayerAssertion(input: ExchangeManagedPlayerAssertionInput!): AppTokenResponse!
9202
9252
  """
9203
- Dev only. Let the organization's org-managed players build and run mods (and use the Studio agent) in this app, or stop them. The organization pays for what they use: their mod compute and egress as its own compute, their project storage as the app's, their model tokens from the org wallet. Turning it off pauses their mods within a minute and refuses new builds. Requires manage_billing on the app's organization. Returns the new setting.
9253
+ Let the organization's org-managed players build and run mods (and use the Studio agent) in this app, or stop them. The organization pays for what they use: their mod compute and egress as its own compute, their project storage as the app's, their model tokens from the org wallet. Turning it off pauses their mods within a minute and refuses new builds. Requires manage_billing on the app's organization. Returns the new setting.
9204
9254
  """
9205
- setAppManagedPlayerMods(appId: BigInt!, enabled: Boolean!): Boolean! @requiresPermission(scope: "app", permission: "manage_billing", scopeArg: "appId")
9255
+ setAppManagedPlayerMods(
9256
+ """An app of your organization (BigInt as a decimal string)."""
9257
+ appId: BigInt!
9258
+ """
9259
+ True: the organization pays for its managed players' mods in this app. False: their mods are refused and switched off.
9260
+ """
9261
+ enabled: Boolean!
9262
+ ): Boolean! @requiresPermission(scope: "app", permission: "manage_billing", scopeArg: "appId")
9206
9263
  """
9207
9264
  Claim the hosting slug for an app (idempotent; the same app re-claiming its slug is a no-op, a different slug MOVES the game). Registers https://<games host>/<slug>/ and https://<slug>.<content host> as the app's redirect URIs and sets launch_url to the former. Requires manage_apps on the app and a SESSION token. Refuses a slug that is not a DNS label, is reserved, or belongs to another app (HOSTED_SLUG_UNAVAILABLE), and answers CONTENT_HOSTING_DISABLED on a tier without a content CDN.
9208
9265
  """
@@ -10927,11 +10984,11 @@ input CreateOrgTokenInput {
10927
10984
  """Optional expiry timestamp; omit for a non-expiring token."""
10928
10985
  expiresAt: DateTime
10929
10986
  """
10930
- What the token may do: 'players:mint' and/or 'players:manage' (org-managed players, dev only). Omit for a token with no scope, which can do nothing.
10987
+ What the token may do: 'players:mint' and/or 'players:manage' (org-managed players). Omit for a token with no scope, which can do nothing.
10931
10988
  """
10932
10989
  scopes: [String!]
10933
10990
  """
10934
- Limit the token to these apps of the organization; omit for every app (org-managed players, dev only).
10991
+ Limit the token to these apps of the organization; omit for every app (org-managed players).
10935
10992
  """
10936
10993
  appIds: [BigInt!]
10937
10994
  }
@@ -60,6 +60,7 @@ _LAZY: dict[str, str] = {
60
60
  "ASSERTION_REJECTED_CODE": "crowdypy.errors",
61
61
  "GROUP_MEMBER_BANNED_CODE": "crowdypy.errors",
62
62
  "MANAGED_PLAYER_NOT_ALLOWED_CODE": "crowdypy.errors",
63
+ "ORG_LEGAL_ACCEPTANCE_REQUIRED_CODE": "crowdypy.errors",
63
64
  "WRONG_DATACENTER_CODE": "crowdypy.errors",
64
65
  "CrowdyAccessRefusal": "crowdypy.errors",
65
66
  "CrowdyAccountBlocked": "crowdypy.errors",
@@ -85,6 +86,7 @@ _LAZY: dict[str, str] = {
85
86
  "app_paused_of": "crowdypy.errors",
86
87
  "group_member_banned_of": "crowdypy.errors",
87
88
  "managed_player_not_allowed_of": "crowdypy.errors",
89
+ "org_legal_acceptance_required_of": "crowdypy.errors",
88
90
  "is_app_paused": "crowdypy.errors",
89
91
  "player_fault_of": "crowdypy.errors",
90
92
  # sessions, tokens, routing
@@ -432,6 +434,9 @@ if TYPE_CHECKING:
432
434
  from crowdypy.errors import (
433
435
  MANAGED_PLAYER_NOT_ALLOWED_CODE as MANAGED_PLAYER_NOT_ALLOWED_CODE,
434
436
  )
437
+ from crowdypy.errors import (
438
+ ORG_LEGAL_ACCEPTANCE_REQUIRED_CODE as ORG_LEGAL_ACCEPTANCE_REQUIRED_CODE,
439
+ )
435
440
  from crowdypy.errors import (
436
441
  WRONG_DATACENTER_CODE as WRONG_DATACENTER_CODE,
437
442
  )
@@ -510,6 +515,9 @@ if TYPE_CHECKING:
510
515
  from crowdypy.errors import (
511
516
  managed_player_not_allowed_of as managed_player_not_allowed_of,
512
517
  )
518
+ from crowdypy.errors import (
519
+ org_legal_acceptance_required_of as org_legal_acceptance_required_of,
520
+ )
513
521
  from crowdypy.errors import (
514
522
  player_fault_of as player_fault_of,
515
523
  )
@@ -1,6 +1,6 @@
1
1
  """GENERATED by scripts/codegen.py from schema.gql. Do not edit.
2
2
 
3
- schema.gql sha256: 6f8f1547097b47f8cc41bf46dcb4c791d285c8192e8239155b791c7734847b6f
3
+ schema.gql sha256: 261902653e100cc5701c32580d07b5ae401e28fa547a0712fa71429fb24df188
4
4
  """
5
5
 
6
6
  from enum import StrEnum
@@ -4,7 +4,7 @@ Every GraphQL input object as a msgspec Struct. Attributes are snake_case and en
4
4
  under their GraphQL names; an attribute left at UNSET is omitted from the request,
5
5
  which is how the API tells 'not provided' from an explicit null.
6
6
 
7
- schema.gql sha256: 6f8f1547097b47f8cc41bf46dcb4c791d285c8192e8239155b791c7734847b6f
7
+ schema.gql sha256: 261902653e100cc5701c32580d07b5ae401e28fa547a0712fa71429fb24df188
8
8
  """
9
9
 
10
10
  from __future__ import annotations
@@ -1,7 +1,7 @@
1
1
  """GENERATED by scripts/codegen.py from schema.gql and operations/. Do not edit.
2
2
 
3
- schema.gql sha256: 6f8f1547097b47f8cc41bf46dcb4c791d285c8192e8239155b791c7734847b6f
4
- operations/ sha256: 4b415e08c48e2113ddfcfd90a111d25793d5b64ad95a339f1d0aca60b1201c56
3
+ schema.gql sha256: 261902653e100cc5701c32580d07b5ae401e28fa547a0712fa71429fb24df188
4
+ operations/ sha256: 32e2c43ac1bd00ec9c05902d524e82727cf560a88330f207704059a7a8a96189
5
5
  """
6
6
 
7
7
  from crowdypy._operation import Operation
@@ -1500,7 +1500,7 @@ ORG_MANAGED_PLAYER_SETTINGS = Operation(
1500
1500
  name='OrgManagedPlayerSettings',
1501
1501
  kind='query',
1502
1502
  root_fields=('orgManagedPlayerSettings',),
1503
- document='query OrgManagedPlayerSettings($orgId: BigInt!) {\n orgManagedPlayerSettings(orgId: $orgId) {\n orgId\n enabled\n maxPlayers\n playerCount\n mintsPerMinute\n defaultSessionTtlSeconds\n maxSessionTtlSeconds\n }\n}',
1503
+ document='query OrgManagedPlayerSettings($orgId: BigInt!) {\n orgManagedPlayerSettings(orgId: $orgId) {\n orgId\n enabled\n maxPlayers\n playerCount\n mintsPerMinute\n defaultSessionTtlSeconds\n maxSessionTtlSeconds\n termsVersion\n termsUrl\n termsAccepted\n termsAcceptedVersion\n termsAcceptedAt\n termsAcceptedByUserId\n viewerMayAcceptTerms\n }\n}',
1504
1504
  )
1505
1505
 
1506
1506
  # organizations/OrgMembers.graphql
@@ -30,7 +30,7 @@ class AdminAPI:
30
30
 
31
31
  #: Organizations, members, RBAC roles and org API tokens.
32
32
  organizations: OrganizationsAPI
33
- #: Org-managed players (dev only): the organization's own players and signing keys.
33
+ #: Org-managed players: the organization's own players and signing keys.
34
34
  managed_players: ManagedPlayersAPI
35
35
  #: The app registry, routing and player-code admission policy.
36
36
  apps: AppsAPI
@@ -1,6 +1,6 @@
1
1
  # GENERATED by scripts/unasync.py from src/crowdypy/domains/managed_players.py. Do not edit.
2
- """Org-managed players (dev only): an organization's own players, signed in by the
3
- organization instead of with a Crowded Kingdoms password.
2
+ """Org-managed players: an organization's own players, signed in by the organization instead
3
+ of with a Crowded Kingdoms password.
4
4
 
5
5
  The organization vouches for a player in one of two ways, and either ends in the player's own
6
6
  app token: its server mints it with an org token (the ``mintManagedPlayerToken`` mutation,
@@ -12,8 +12,15 @@ it stays on the organization's server.
12
12
 
13
13
  The methods here are the organization's administration: an org admin's session with
14
14
  ``manage_players`` (from the organization's server, an org token with ``players:manage`` also
15
- works for the six player operations). Every field answers ``FEATURE_DISABLED`` outside the dev
16
- tier.
15
+ works for the six player operations).
16
+
17
+ The Org-Managed Players Addendum (ck-api v2.53.0): before any of the organization's players is
18
+ created or signed in, an admin of the organization accepts it in Studio. Until then sign-ins
19
+ (both ways), refreshes and :meth:`ManagedPlayersAPI.provision` answer
20
+ ``ORG_LEGAL_ACCEPTANCE_REQUIRED`` (:func:`crowdypy.errors.org_legal_acceptance_required_of`);
21
+ :meth:`ManagedPlayersAPI.settings` says where the organization stands. This SDK has no wrapper
22
+ for the acceptance, on purpose: it binds the organization, so a person makes it, in Studio. A
23
+ tier that does not serve org-managed players answers ``FEATURE_DISABLED`` to every field.
17
24
  """
18
25
 
19
26
  from __future__ import annotations
@@ -79,7 +86,8 @@ class ManagedPlayersAPI(Domain):
79
86
  ) -> dict[str, Any]:
80
87
  """Create players ahead of their first sign-in, up to 500 a call (much faster than first
81
88
  sign-ins one at a time: pre-provision before a launch). A player that already exists is
82
- left as it is and counted in ``existing``."""
89
+ left as it is and counted in ``existing``. Refused with ``ORG_LEGAL_ACCEPTANCE_REQUIRED``
90
+ until the organization has accepted the current Org-Managed Players Addendum."""
83
91
  result: dict[str, Any] = self._request(
84
92
  ops.PROVISION_MANAGED_PLAYERS, {"input": input}
85
93
  )
@@ -114,7 +122,10 @@ class ManagedPlayersAPI(Domain):
114
122
 
115
123
  def settings(self, org_id: str | int) -> dict[str, Any]:
116
124
  """Whether an operator turned managed players on for the organization, and its limits:
117
- the player cap, sign-ins per minute and the session lengths. Read-only here."""
125
+ the player cap, sign-ins per minute and the session lengths. Also where it stands on
126
+ the Org-Managed Players Addendum: ``termsVersion``, ``termsUrl``, ``termsAccepted``,
127
+ the latest acceptance, and ``viewerMayAcceptTerms`` (whether the signed-in user is an
128
+ admin of the organization who may accept it, in Studio). Read-only here."""
118
129
  result: dict[str, Any] = self._request(
119
130
  ops.ORG_MANAGED_PLAYER_SETTINGS, {"orgId": bigint(org_id)}
120
131
  )
@@ -110,8 +110,8 @@ class OrganizationsAPI(Domain):
110
110
  """Permanently deactivate an org token. Needs ``manage_tokens``.
111
111
 
112
112
  Irreversible. ``False`` when there is no such token. ``end_sessions`` also ends every
113
- session the token signed org-managed players in with (dev only), so their devices stop
114
- now rather than at their sessions' end.
113
+ session the token signed org-managed players in with, so their devices stop now rather
114
+ than at their sessions' end.
115
115
  """
116
116
  variables: dict[str, Any] = {"orgTokenId": bigint(org_token_id)}
117
117
  if end_sessions: