@crowdedkingdoms/crowdyjs 9.0.0 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/MIGRATION.md +60 -38
  2. package/README.md +86 -50
  3. package/dist/crowdy-client.d.ts +3 -0
  4. package/dist/crowdy-client.d.ts.map +1 -1
  5. package/dist/crowdy-client.js +2 -0
  6. package/dist/crowdy-studio/controller.d.ts +188 -0
  7. package/dist/crowdy-studio/controller.d.ts.map +1 -0
  8. package/dist/crowdy-studio/controller.js +915 -0
  9. package/dist/crowdy-studio/diagnostics.d.ts +22 -0
  10. package/dist/crowdy-studio/diagnostics.d.ts.map +1 -0
  11. package/dist/crowdy-studio/diagnostics.js +141 -0
  12. package/dist/crowdy-studio/dom-shell.d.ts +55 -0
  13. package/dist/crowdy-studio/dom-shell.d.ts.map +1 -0
  14. package/dist/crowdy-studio/dom-shell.js +527 -0
  15. package/dist/crowdy-studio/editor.d.ts +17 -0
  16. package/dist/crowdy-studio/editor.d.ts.map +1 -0
  17. package/dist/crowdy-studio/editor.js +1 -0
  18. package/dist/crowdy-studio/index.d.ts +10 -0
  19. package/dist/crowdy-studio/index.d.ts.map +1 -0
  20. package/dist/crowdy-studio/index.js +9 -0
  21. package/dist/crowdy-studio/models.d.ts +149 -0
  22. package/dist/crowdy-studio/models.d.ts.map +1 -0
  23. package/dist/crowdy-studio/models.js +62 -0
  24. package/dist/crowdy-studio/monaco-editor.d.ts +16 -0
  25. package/dist/crowdy-studio/monaco-editor.d.ts.map +1 -0
  26. package/dist/crowdy-studio/monaco-editor.js +548 -0
  27. package/dist/crowdy-studio/mount.d.ts +17 -0
  28. package/dist/crowdy-studio/mount.d.ts.map +1 -0
  29. package/dist/crowdy-studio/mount.js +86 -0
  30. package/dist/crowdy-studio/starter-projects.d.ts +11 -0
  31. package/dist/crowdy-studio/starter-projects.d.ts.map +1 -0
  32. package/dist/crowdy-studio/starter-projects.js +102 -0
  33. package/dist/crowdy-studio/styles.d.ts +2 -0
  34. package/dist/crowdy-studio/styles.d.ts.map +1 -0
  35. package/dist/crowdy-studio/styles.js +14 -0
  36. package/dist/crowdy-studio/textarea-editor.d.ts +8 -0
  37. package/dist/crowdy-studio/textarea-editor.d.ts.map +1 -0
  38. package/dist/crowdy-studio/textarea-editor.js +71 -0
  39. package/dist/domains/crowdyStudio.d.ts +27 -0
  40. package/dist/domains/crowdyStudio.d.ts.map +1 -0
  41. package/dist/domains/crowdyStudio.js +301 -0
  42. package/dist/domains/playerCompute.d.ts +1 -1
  43. package/dist/domains/playerCompute.js +1 -1
  44. package/dist/generated/graphql.d.ts +792 -7
  45. package/dist/generated/graphql.d.ts.map +1 -1
  46. package/dist/generated/graphql.js +57 -0
  47. package/dist/index.d.ts +3 -5
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +3 -5
  50. package/dist/kit/npcs.d.ts.map +1 -1
  51. package/dist/kit/social.d.ts.map +1 -1
  52. package/dist/live-coding/rust-analysis.d.ts.map +1 -1
  53. package/dist/live-coding/rust-analysis.js +64 -1
  54. package/dist/live-coding/worker-transport.d.ts +3 -0
  55. package/dist/live-coding/worker-transport.d.ts.map +1 -1
  56. package/dist/live-coding/worker-transport.js +13 -0
  57. package/package.json +4 -4
  58. package/dist/live-coding/ide.d.ts +0 -23
  59. package/dist/live-coding/ide.d.ts.map +0 -1
  60. package/dist/live-coding/ide.js +0 -514
  61. package/dist/live-coding/index.d.ts +0 -8
  62. package/dist/live-coding/index.d.ts.map +0 -1
  63. package/dist/live-coding/index.js +0 -7
  64. package/dist/live-coding/live-coding-controller.d.ts +0 -75
  65. package/dist/live-coding/live-coding-controller.d.ts.map +0 -1
  66. package/dist/live-coding/live-coding-controller.js +0 -141
  67. package/dist/live-coding/mount.d.ts +0 -26
  68. package/dist/live-coding/mount.d.ts.map +0 -1
  69. package/dist/live-coding/mount.js +0 -108
  70. package/dist/live-coding/templates.d.ts +0 -17
  71. package/dist/live-coding/templates.d.ts.map +0 -1
  72. package/dist/live-coding/templates.js +0 -59
@@ -1013,7 +1013,7 @@ export type CksBuddyHealth = {
1013
1013
  /** Timestamp of the last server_status heartbeat (game DB). */
1014
1014
  updatedAt: Maybe<Scalars['DateTime']['output']>;
1015
1015
  };
1016
- /** Live progress for the active (or most recent failed) deploy/destroy change order, with per-task counts and a retry hint. */
1016
+ /** Progress for the active or most recent deploy/destroy change order, with per-task counts and a retry hint. Durable change orders may expose read-only projected tasks and steps; planned work remains pending until an outcome is observed or inferred. */
1017
1017
  export type CksDeployProgress = {
1018
1018
  __typename?: 'CksDeployProgress';
1019
1019
  /** Redeploy is allowed (failed deploy or stuck order cleared) */
@@ -1035,24 +1035,27 @@ export type CksDeployProgress = {
1035
1035
  tasksSucceeded: Scalars['Int']['output'];
1036
1036
  tasksTotal: Scalars['Int']['output'];
1037
1037
  };
1038
- /** A single step within a deploy/destroy task, with its retry attempt and any error. */
1038
+ /** A single step within a deploy/destroy task. Progress may be recorded directly or exposed as a read-only projection for a durable change order. Planned steps remain pending until an outcome is observed or inferred. */
1039
1039
  export type CksDeployProgressStep = {
1040
1040
  __typename?: 'CksDeployProgressStep';
1041
+ /** Attempt count. For projected progress, 0 means no attempt or outcome has been observed or inferred; 1 means an attempt or outcome has been observed or inferred. */
1041
1042
  attempt: Scalars['Int']['output'];
1042
1043
  error: Maybe<Scalars['String']['output']>;
1043
1044
  id: Scalars['String']['output'];
1044
1045
  kind: Scalars['String']['output'];
1045
1046
  /** Human-readable step label for the org UI */
1046
1047
  label: Scalars['String']['output'];
1048
+ /** Execution status. For projected progress, pending means the step is planned and no terminal outcome is available yet. */
1047
1049
  status: Scalars['String']['output'];
1048
1050
  };
1049
- /** A task in a deploy/destroy pipeline, containing ordered steps. */
1051
+ /** A task in a deploy/destroy pipeline, containing ordered steps. Durable change orders may expose task progress as a read-only projection. */
1050
1052
  export type CksDeployProgressTask = {
1051
1053
  __typename?: 'CksDeployProgressTask';
1052
1054
  error: Maybe<Scalars['String']['output']>;
1053
1055
  id: Scalars['String']['output'];
1054
1056
  kind: Scalars['String']['output'];
1055
1057
  label: Scalars['String']['output'];
1058
+ /** Execution status derived from available step outcomes. Active projected tasks may contain pending steps when exact live state is unavailable. */
1056
1059
  status: Scalars['String']['output'];
1057
1060
  steps: Array<CksDeployProgressStep>;
1058
1061
  };
@@ -1177,9 +1180,9 @@ export type CksEnvironmentDetail = {
1177
1180
  buddyHealth: Maybe<CksBuddyHealth>;
1178
1181
  changeOrders: Array<CksEnvironmentChangeOrder>;
1179
1182
  components: Array<CksEnvironmentComponent>;
1180
- /** Live deploy task/step progress for the active or most recent failed deploy */
1183
+ /** Deploy task/step progress for the active or most recent deploy. Durable change orders may expose read-only projected progress, with planned work pending until an outcome is observed or inferred. */
1181
1184
  deployProgress: Maybe<CksDeployProgress>;
1182
- /** Destroy tear-down progress for game-api and platform change orders */
1185
+ /** Destroy tear-down progress for game-api and platform change orders. Durable change orders may expose read-only projected progress and show planned work as pending. */
1183
1186
  destroyProgress: Array<CksDeployProgress>;
1184
1187
  environment: CksEnvironment;
1185
1188
  outputs: Array<CksEnvironmentOutput>;
@@ -1563,6 +1566,7 @@ export type CpChangeOrder = {
1563
1566
  status: Scalars['String']['output'];
1564
1567
  updatedAt: Scalars['DateTime']['output'];
1565
1568
  };
1569
+ /** Change-order detail with ordered task and step progress. Durable change orders may return read-only projected rows when exact live execution details are unavailable. */
1566
1570
  export type CpChangeOrderDetail = {
1567
1571
  __typename?: 'CpChangeOrderDetail';
1568
1572
  order: CpChangeOrder;
@@ -1713,8 +1717,10 @@ export type CpSetComputePlatformCeilingsInput = {
1713
1717
  /** Max tick rate in Hz per module. > 0; explicit null clears the override; omit to leave unchanged. */
1714
1718
  maxTickHz?: InputMaybe<Scalars['Int']['input']>;
1715
1719
  };
1720
+ /** Operator step progress. Rows may contain recorded execution progress or a read-only projection. Fields unavailable for projected progress remain null. */
1716
1721
  export type CpStepRow = {
1717
1722
  __typename?: 'CpStepRow';
1723
+ /** Attempt indicator. For projected progress, 0 means no attempt or outcome has been observed or inferred; 1 means an attempt or outcome has been observed or inferred. */
1718
1724
  attempt: Scalars['Int']['output'];
1719
1725
  claimedBy: Maybe<Scalars['String']['output']>;
1720
1726
  createdAt: Scalars['DateTime']['output'];
@@ -1730,10 +1736,12 @@ export type CpStepRow = {
1730
1736
  payloadJson: Maybe<Scalars['String']['output']>;
1731
1737
  recheckAt: Maybe<Scalars['DateTime']['output']>;
1732
1738
  startedAt: Maybe<Scalars['DateTime']['output']>;
1739
+ /** Execution status. For projected progress, pending means the step is planned and no terminal outcome is available yet. */
1733
1740
  status: Scalars['String']['output'];
1734
1741
  taskId: Scalars['String']['output'];
1735
1742
  updatedAt: Scalars['DateTime']['output'];
1736
1743
  };
1744
+ /** Operator task progress. Rows may contain recorded execution progress or a read-only projection for a durable change order. */
1737
1745
  export type CpTaskRow = {
1738
1746
  __typename?: 'CpTaskRow';
1739
1747
  changeOrderId: Scalars['String']['output'];
@@ -1748,6 +1756,7 @@ export type CpTaskRow = {
1748
1756
  kind: Scalars['String']['output'];
1749
1757
  ordinal: Scalars['Int']['output'];
1750
1758
  startedAt: Maybe<Scalars['DateTime']['output']>;
1759
+ /** Execution status. For projected progress, pending means the task is planned and no terminal outcome is available yet. */
1751
1760
  status: Scalars['String']['output'];
1752
1761
  updatedAt: Scalars['DateTime']['output'];
1753
1762
  };
@@ -1904,6 +1913,46 @@ export type CreateContainerInput = {
1904
1913
  /** The container type to instantiate. */
1905
1914
  typeName: Scalars['String']['input'];
1906
1915
  };
1916
+ /** Lazily create a private project by copying the authenticated author’s latest source versions from existing self-authored player modules. */
1917
+ export type CreateCrowdyStudioProjectFromModulesInput = {
1918
+ /** App tenant containing the authored modules. */
1919
+ appId: Scalars['BigInt']['input'];
1920
+ /** Existing self-authored CLIENT module name to copy; at least one module name is required. */
1921
+ clientModuleName?: InputMaybe<Scalars['String']['input']>;
1922
+ /** Grid containing the authored modules. Current ownership is not required to recover one’s own source, but deployment is rechecked separately. */
1923
+ gridId: Scalars['BigInt']['input'];
1924
+ /** Optional 24-hour retry key. The operation also returns an already-created active project with the same module affinity. */
1925
+ idempotencyKey?: InputMaybe<Scalars['String']['input']>;
1926
+ /** Optional project name. Omit to derive a bounded name from the imported module name(s). */
1927
+ projectName?: InputMaybe<Scalars['String']['input']>;
1928
+ /** Existing self-authored SERVER module name to copy; at least one module name is required. */
1929
+ serverModuleName?: InputMaybe<Scalars['String']['input']>;
1930
+ };
1931
+ /** Create a private player-owned project, optionally with bounded initial files for either target. */
1932
+ export type CreateCrowdyStudioProjectInput = {
1933
+ /** Supported guest ABI pin; defaults to ABI 0. */
1934
+ abiVersion?: InputMaybe<Scalars['Int']['input']>;
1935
+ /** App tenant. Requires an app-scoped token for this exact app; the project is owned by the authenticated user. */
1936
+ appId: Scalars['BigInt']['input'];
1937
+ /** Optional stable crate-style CLIENT module name. It must differ from the server name. */
1938
+ clientModuleName?: InputMaybe<Scalars['String']['input']>;
1939
+ /** Optional private project description. */
1940
+ description?: InputMaybe<Scalars['String']['input']>;
1941
+ /** Optional grid affinity in the same app. Affinity does not grant deployment permission and survives ownership transfer. */
1942
+ gridId?: InputMaybe<Scalars['BigInt']['input']>;
1943
+ /** Optional retry key. Same user, operation, key, and input replay the first result for 24 hours; changed input returns IDEMPOTENCY_CONFLICT. */
1944
+ idempotencyKey?: InputMaybe<Scalars['String']['input']>;
1945
+ /** Optional initial source files. At most 16 total and at most 8/256 KiB independently per target. */
1946
+ initialFiles?: InputMaybe<Array<CrowdyStudioProjectFileInput>>;
1947
+ /** Player-facing project name. */
1948
+ name: Scalars['String']['input'];
1949
+ /** Optional editor pairing preference; defaults to PAIRED. */
1950
+ pairingPreference?: InputMaybe<CrowdyStudioPairingPreference>;
1951
+ /** Supported crowdy-compute-sdk pin; defaults to the current 0.1.5 authoring pin. */
1952
+ sdkVersion?: InputMaybe<Scalars['String']['input']>;
1953
+ /** Optional stable crate-style SERVER module name. Deployment rechecks current authority. */
1954
+ serverModuleName?: InputMaybe<Scalars['String']['input']>;
1955
+ };
1907
1956
  /** Input for createEnvironment. For dedicated (default) supply the four per-role flavors plus scaling counts; for dev_single supply a single flavor and the per-role/count fields are ignored. */
1908
1957
  export type CreateEnvironmentInput = {
1909
1958
  /** Optional app ids to link to the new environment at creation. Each must be unique; omit or pass an empty list to link none. */
@@ -2098,6 +2147,199 @@ export type CreateUserAppStateInput = {
2098
2147
  /** Per-app user state as base64-encoded binary. Omit or send null to clear it. */
2099
2148
  state?: InputMaybe<Scalars['String']['input']>;
2100
2149
  };
2150
+ /** A Crowdy Studio-curated app-scoped common file at its current immutable published version. Unlike personal source, this content is intentionally readable by app-scoped players. */
2151
+ export type CrowdyStudioCommonFile = {
2152
+ __typename?: 'CrowdyStudioCommonFile';
2153
+ /** App tenant whose players may read this published entry. */
2154
+ appId: Scalars['BigInt']['output'];
2155
+ /** Stable common catalog entry UUID. */
2156
+ commonFileId: Scalars['String']['output'];
2157
+ /** Published UTF-8 source text for this immutable version. */
2158
+ content: Scalars['String']['output'];
2159
+ /** Lowercase SHA-256 digest of the exact UTF-8 content bytes. */
2160
+ contentSha256: Scalars['String']['output'];
2161
+ /** Catalog entry creation timestamp. */
2162
+ createdAt: Scalars['DateTime']['output'];
2163
+ /** Optional Crowdy Studio-authored catalog description. */
2164
+ description: Maybe<Scalars['String']['output']>;
2165
+ /** Safe recommended project destination path. */
2166
+ path: Scalars['String']['output'];
2167
+ /** Timestamp when the current immutable version was published. */
2168
+ publishedAt: Scalars['DateTime']['output'];
2169
+ /** Crowdy Studio user that published the current immutable version. */
2170
+ publishedByUserId: Scalars['BigInt']['output'];
2171
+ /** Stable lowercase URL-safe catalog slug. */
2172
+ slug: Scalars['String']['output'];
2173
+ /** Catalog lifecycle state; ordinary player queries expose only PUBLISHED. */
2174
+ status: CrowdyStudioCommonStatus;
2175
+ /** Normalized Crowdy Studio-curated discovery tags. */
2176
+ tags: Array<Scalars['String']['output']>;
2177
+ /** Compatible project target for this catalog entry. */
2178
+ target: CrowdyStudioTarget;
2179
+ /** Crowdy Studio-authored catalog title. */
2180
+ title: Scalars['String']['output'];
2181
+ /** Timestamp of the latest catalog publication. */
2182
+ updatedAt: Scalars['DateTime']['output'];
2183
+ /** Current immutable content-version UUID. */
2184
+ versionId: Scalars['String']['output'];
2185
+ /** Monotonic immutable version number within the catalog entry. */
2186
+ versionNo: Scalars['BigInt']['output'];
2187
+ };
2188
+ /** Crowdy Studio catalog visibility. Player catalog queries return only published entries. */
2189
+ export declare enum CrowdyStudioCommonStatus {
2190
+ /** Retained for provenance but hidden from new player catalog reads and imports. */
2191
+ Archived = "ARCHIVED",
2192
+ /** Crowdy Studio work in progress; hidden from player common-file queries. */
2193
+ Draft = "DRAFT",
2194
+ /** Available to app-scoped players for reading and copy-by-value import. */
2195
+ Published = "PUBLISHED"
2196
+ }
2197
+ /** How a project file entered the project. Imported content is copied by value; provenance is informational and does not create a live link. */
2198
+ export declare enum CrowdyStudioFileProvenance {
2199
+ /** The owner authored or directly saved this project file. */
2200
+ Authored = "AUTHORED",
2201
+ /** The file was copied from a specific immutable version of the app’s Crowdy Studio-curated common catalog. */
2202
+ Common = "COMMON",
2203
+ /** The file was copied from a specific revision of the owner’s private personal library. */
2204
+ Library = "LIBRARY"
2205
+ }
2206
+ /** The source catalog used for a copy-by-value project file import. */
2207
+ export declare enum CrowdyStudioImportSource {
2208
+ /** Import from an immutable published common-file version in the requested app. */
2209
+ Common = "COMMON",
2210
+ /** Import from a private personal-library file owned by the authenticated caller. */
2211
+ Library = "LIBRARY"
2212
+ }
2213
+ /** A reusable private text file in the authenticated player’s app-scoped personal library. */
2214
+ export type CrowdyStudioLibraryFile = {
2215
+ __typename?: 'CrowdyStudioLibraryFile';
2216
+ /** App tenant that isolates this private library entry. */
2217
+ appId: Scalars['BigInt']['output'];
2218
+ /** Whether this entry is archived and unavailable for new imports. */
2219
+ archived: Scalars['Boolean']['output'];
2220
+ /** Archive timestamp, or null while active. */
2221
+ archivedAt: Maybe<Scalars['DateTime']['output']>;
2222
+ /** Private UTF-8 source text, visible only to the app-scoped owner. */
2223
+ content: Scalars['String']['output'];
2224
+ /** Library entry creation timestamp. */
2225
+ createdAt: Scalars['DateTime']['output'];
2226
+ /** Stable personal-library file UUID. */
2227
+ libraryFileId: Scalars['String']['output'];
2228
+ /** User that exclusively owns this library entry. */
2229
+ ownerUserId: Scalars['BigInt']['output'];
2230
+ /** Safe suggested destination path; imports may choose another safe path. */
2231
+ pathHint: Scalars['String']['output'];
2232
+ /** Monotonic optimistic-concurrency revision. */
2233
+ revision: Scalars['BigInt']['output'];
2234
+ /** Normalized search tags, each lowercase and hyphen-safe. */
2235
+ tags: Array<Scalars['String']['output']>;
2236
+ /** Compatible project target for this reusable file. */
2237
+ target: CrowdyStudioTarget;
2238
+ /** Player-facing library title. */
2239
+ title: Scalars['String']['output'];
2240
+ /** Timestamp of the latest successful library mutation. */
2241
+ updatedAt: Scalars['DateTime']['output'];
2242
+ };
2243
+ /** Editor preference describing how the project presents its server and client targets; it never grants deployment or runtime authority. */
2244
+ export declare enum CrowdyStudioPairingPreference {
2245
+ /** Present only the client-target authoring workflow. */
2246
+ ClientOnly = "CLIENT_ONLY",
2247
+ /** Present server and client sources independently without an implied requirement edge. */
2248
+ Independent = "INDEPENDENT",
2249
+ /** Present server and client sources as two coordinated halves of one Crowdy Studio project. */
2250
+ Paired = "PAIRED",
2251
+ /** Present only the server-target authoring workflow. */
2252
+ ServerOnly = "SERVER_ONLY"
2253
+ }
2254
+ /** A private, revisioned Crowdy Studio project owned by one user in one app. Optional grid affinity and module names are authoring hints only; deployment still rechecks current grid ownership and target-specific permissions. */
2255
+ export type CrowdyStudioProject = {
2256
+ __typename?: 'CrowdyStudioProject';
2257
+ /** Pinned guest ABI version used when constructing deploy input. */
2258
+ abiVersion: Scalars['Int']['output'];
2259
+ /** App tenant that isolates this project and all of its source. */
2260
+ appId: Scalars['BigInt']['output'];
2261
+ /** Whether the project is archived. Archived projects remain private and retained but are read-only until unarchived. */
2262
+ archived: Scalars['Boolean']['output'];
2263
+ /** Archive timestamp, or null while the project is active. */
2264
+ archivedAt: Maybe<Scalars['DateTime']['output']>;
2265
+ /** Stable crate-style CLIENT module name used when the owner chooses to deploy, or null when unassigned. */
2266
+ clientModuleName: Maybe<Scalars['String']['output']>;
2267
+ /** Project creation timestamp. */
2268
+ createdAt: Scalars['DateTime']['output'];
2269
+ /** Optional private project description. */
2270
+ description: Maybe<Scalars['String']['output']>;
2271
+ /** Total file count across both targets; each target is independently capped at eight. */
2272
+ fileCount: Scalars['Int']['output'];
2273
+ /** Private project files ordered by target and path. Bounded to eight files per target. */
2274
+ files: Array<CrowdyStudioProjectFile>;
2275
+ /** Optional grid affinity. It survives a grid transfer and does not itself grant deploy authority. */
2276
+ gridId: Maybe<Scalars['BigInt']['output']>;
2277
+ /** Player-facing project name. */
2278
+ name: Scalars['String']['output'];
2279
+ /** User that exclusively owns and may read or modify this project source. */
2280
+ ownerUserId: Scalars['BigInt']['output'];
2281
+ /** Editor presentation preference for the two source targets. */
2282
+ pairingPreference: CrowdyStudioPairingPreference;
2283
+ /** Stable project UUID. */
2284
+ projectId: Scalars['String']['output'];
2285
+ /** Monotonic project revision required by optimistic metadata, file, import, and archive mutations. */
2286
+ revision: Scalars['BigInt']['output'];
2287
+ /** Pinned crowdy-compute-sdk version used when constructing deploy input. */
2288
+ sdkVersion: Scalars['String']['output'];
2289
+ /** Stable crate-style SERVER module name used when the owner chooses to deploy, or null when unassigned. */
2290
+ serverModuleName: Maybe<Scalars['String']['output']>;
2291
+ /** Total UTF-8 source bytes across both targets, bounded by target and aggregate owner quotas. */
2292
+ totalBytes: Scalars['BigInt']['output'];
2293
+ /** Timestamp of the latest successful project mutation. */
2294
+ updatedAt: Scalars['DateTime']['output'];
2295
+ };
2296
+ /** One private text file in a player-owned project. It is returned only when both app id and authenticated owner match the project. */
2297
+ export type CrowdyStudioProjectFile = {
2298
+ __typename?: 'CrowdyStudioProjectFile';
2299
+ /** Private UTF-8 source text. Grid ownership and Crowdy Studio permissions never override project ownership. */
2300
+ content: Scalars['String']['output'];
2301
+ /** Timestamp when this target/path entry was first created. */
2302
+ createdAt: Scalars['DateTime']['output'];
2303
+ /** Safe compute-source relative path: Cargo.toml or a Rust file below src/. */
2304
+ path: Scalars['String']['output'];
2305
+ /** Copy provenance. Imported bytes remain unchanged if the source catalog entry later changes. */
2306
+ provenance: CrowdyStudioFileProvenance;
2307
+ /** Immutable common-file version UUID copied into this file, or null when common provenance does not apply. */
2308
+ provenanceCommonVersionId: Maybe<Scalars['String']['output']>;
2309
+ /** Private library file UUID used for the copy, or null for authored/common content. */
2310
+ provenanceLibraryFileId: Maybe<Scalars['String']['output']>;
2311
+ /** Library revision copied into this file, or null when library provenance does not apply. */
2312
+ provenanceLibraryRevision: Maybe<Scalars['BigInt']['output']>;
2313
+ /** Monotonic revision of this target/path entry, incremented on every successful upsert. */
2314
+ revision: Scalars['BigInt']['output'];
2315
+ /** Server or client target whose independent 8-file/256-KiB deploy cap includes this file. */
2316
+ target: CrowdyStudioTarget;
2317
+ /** Timestamp of the latest successful content/provenance save. */
2318
+ updatedAt: Scalars['DateTime']['output'];
2319
+ };
2320
+ /** A target/path key removed atomically by crowdyStudioProjectSaveFiles. */
2321
+ export type CrowdyStudioProjectFileDeleteInput = {
2322
+ /** Safe relative path of the file to remove. */
2323
+ path: Scalars['String']['input'];
2324
+ /** Project target containing the file to remove. */
2325
+ target: CrowdyStudioTarget;
2326
+ };
2327
+ /** One direct-authored initial or batch-upsert project file. Paths and UTF-8 bytes are validated against player-compute safety limits. */
2328
+ export type CrowdyStudioProjectFileInput = {
2329
+ /** UTF-8 source text, capped at 64 KiB. */
2330
+ content: Scalars['String']['input'];
2331
+ /** Safe relative path: Cargo.toml or a .rs file below src/, with no traversal segments. */
2332
+ path: Scalars['String']['input'];
2333
+ /** Project target receiving this file. */
2334
+ target: CrowdyStudioTarget;
2335
+ };
2336
+ /** The independently capped source target inside a player-owned Crowdy Studio project. */
2337
+ export declare enum CrowdyStudioTarget {
2338
+ /** Browser-worker Rust that can run only after the caller separately passes current grid ownership and write_client_code deployment checks. */
2339
+ Client = "CLIENT",
2340
+ /** Server-target Rust that can run only after the caller separately passes current grid ownership and write_server_code deployment checks. */
2341
+ Server = "SERVER"
2342
+ }
2101
2343
  /** Define an app feature key. */
2102
2344
  export type DefineAppFeatureInput = {
2103
2345
  /** The app (tenant) defining the feature. */
@@ -3324,7 +3566,7 @@ export type GridOwnership = {
3324
3566
  __typename?: 'GridOwnership';
3325
3567
  /** When this ownership began. */
3326
3568
  acquiredAt: Scalars['DateTime']['output'];
3327
- /** Audit origin of this ownership (for example studio_grant, transfer, or marketplace). */
3569
+ /** Audit origin of this ownership (for example studio_grant, self_claim, self_claim_chunk, transfer, or marketplace). self_claim_chunk identifies a grid created by claimGridChunk and eligible for owner release. */
3328
3570
  acquiredVia: Scalars['String']['output'];
3329
3571
  /** App that contains the grid. */
3330
3572
  appId: Scalars['BigInt']['output'];
@@ -3446,6 +3688,25 @@ export type GroupRole = {
3446
3688
  /** Role display name (unique within the group). */
3447
3689
  roleName: Scalars['String']['output'];
3448
3690
  };
3691
+ /** Copy a private library revision or immutable published common version into a project by value. */
3692
+ export type ImportCrowdyStudioProjectFileInput = {
3693
+ /** App tenant shared by the project and import source. */
3694
+ appId: Scalars['BigInt']['input'];
3695
+ /** Immutable common version UUID; required only for COMMON imports. */
3696
+ commonVersionId?: InputMaybe<Scalars['String']['input']>;
3697
+ /** Optional safe destination path. Omit to use the source entry’s path or path hint. */
3698
+ destinationPath?: InputMaybe<Scalars['String']['input']>;
3699
+ /** Current project revision; the copy and revision increment are atomic. */
3700
+ expectedProjectRevision: Scalars['BigInt']['input'];
3701
+ /** Optional 24-hour retry key. */
3702
+ idempotencyKey?: InputMaybe<Scalars['String']['input']>;
3703
+ /** Caller-owned library file UUID; required only for LIBRARY imports. */
3704
+ libraryFileId?: InputMaybe<Scalars['String']['input']>;
3705
+ /** Destination project UUID. */
3706
+ projectId: Scalars['String']['input'];
3707
+ /** Private LIBRARY or app-curated COMMON source. */
3708
+ source: CrowdyStudioImportSource;
3709
+ };
3449
3710
  export type IngestEnvironmentVersionInput = {
3450
3711
  /** Overwrite an existing version row if one already exists (default false). */
3451
3712
  force?: Scalars['Boolean']['input'];
@@ -3652,6 +3913,26 @@ export type Mutation = {
3652
3913
  createTeam: Group;
3653
3914
  /** Create a custom (non-system) team role granting the given team permission keys. Requires the 'manage_roles' team permission (app admins bypass). Permission keys must be valid team permission keys (group_permission_defs). */
3654
3915
  createTeamRole: GroupRole;
3916
+ /** Publish a new immutable version of an app-scoped Crowdy Studio-curated common file and make it the current player-readable version. Requires an app-scoped token plus the app manage_compute permission. Old versions remain immutable for provenance; an idempotency key is strongly recommended for transport retries. */
3917
+ crowdyStudioCommonPublish: CrowdyStudioCommonFile;
3918
+ /** Create or optimistically update one private personal-library source file. Requires an app-scoped token; ownership is always the authenticated player and cannot be delegated. Safe source paths, 64-KiB content, revision, and configurable bounded aggregate library storage are enforced atomically. */
3919
+ crowdyStudioLibrarySave: CrowdyStudioLibraryFile;
3920
+ /** Archive or restore one caller-owned personal-library file under optimistic revision control. Requires an app-scoped token and exact app/user ownership; archived entries remain retained but cannot be imported until restored. */
3921
+ crowdyStudioLibrarySetArchived: CrowdyStudioLibraryFile;
3922
+ /** Create a private revisioned Crowdy Studio project for the authenticated player, optionally with initial server/client text files. Requires only an app-scoped token for the input app; optional grid affinity is validated but grants no deployment authority. Source paths, per-target deploy caps, and aggregate owner/app storage are enforced atomically. */
3923
+ crowdyStudioProjectCreate: CrowdyStudioProject;
3924
+ /** Lazily create a private project by copying the authenticated author’s latest source from an existing self-authored SERVER module, CLIENT module, or both. Requires an app-scoped token and authorship of every requested module; current grid ownership is deliberately not required for private source recovery after transfer, while any later deploy still rechecks ownership and target permissions. Repeated requests reuse the matching active project. */
3925
+ crowdyStudioProjectCreateFromModules: CrowdyStudioProject;
3926
+ /** Copy one active caller-owned library revision or one immutable published app-common version into a private project by value. Requires an app-scoped token and exact project ownership. The source is re-authorized, content/provenance are snapshotted, project caps and aggregate storage are checked, and the project revision advances atomically. */
3927
+ crowdyStudioProjectImportFile: CrowdyStudioProject;
3928
+ /** Atomically save selected private project metadata and a batch of file upserts/deletes under one expected project revision. Requires an app-scoped token and exact project ownership. No partial metadata or file changes survive validation, target-cap, aggregate-storage, module-binding, or revision failures. */
3929
+ crowdyStudioProjectSave: CrowdyStudioProject;
3930
+ /** Apply a batch of project-file upserts and deletes in one transaction under one expected project revision. Requires an app-scoped token and exact project ownership. No partial writes survive path, manifest, independent 8-file/64-KiB-file/256-KiB-target caps, aggregate storage, or revision failures. */
3931
+ crowdyStudioProjectSaveFiles: CrowdyStudioProject;
3932
+ /** Optimistically save selected private project metadata and increment its monotonic revision. Requires an app-scoped token and exact project ownership. A stale expectedRevision returns CONFLICT; grid affinity remains an authoring hint and never bypasses player-compute deployment checks. */
3933
+ crowdyStudioProjectSaveMetadata: CrowdyStudioProject;
3934
+ /** Archive or restore a private project without deleting any source or provenance, using optimistic revision control. Requires an app-scoped token and exact owner match. Archived projects remain readable by their owner but are read-only until restored. */
3935
+ crowdyStudioProjectSetArchived: CrowdyStudioProject;
3655
3936
  /** Release (settle held order + unfreeze payout) or confirm (uphold) a T11 risk flag. Requires 'manage_compute'. */
3656
3937
  decideCommerceRiskFlag: Scalars['Boolean']['output'];
3657
3938
  /** Approve or deny a pending grid claim request (claim policy APPROVAL). Callable by the app's designated approver users or studio staff holding manage_compute. Approval assigns grid_ownership to the requester. */
@@ -4181,6 +4462,36 @@ export type MutationCreateTeamArgs = {
4181
4462
  export type MutationCreateTeamRoleArgs = {
4182
4463
  input: CreateGroupRoleInput;
4183
4464
  };
4465
+ export type MutationCrowdyStudioCommonPublishArgs = {
4466
+ input: PublishCrowdyStudioCommonFileInput;
4467
+ };
4468
+ export type MutationCrowdyStudioLibrarySaveArgs = {
4469
+ input: SaveCrowdyStudioLibraryFileInput;
4470
+ };
4471
+ export type MutationCrowdyStudioLibrarySetArchivedArgs = {
4472
+ input: SetCrowdyStudioLibraryFileArchivedInput;
4473
+ };
4474
+ export type MutationCrowdyStudioProjectCreateArgs = {
4475
+ input: CreateCrowdyStudioProjectInput;
4476
+ };
4477
+ export type MutationCrowdyStudioProjectCreateFromModulesArgs = {
4478
+ input: CreateCrowdyStudioProjectFromModulesInput;
4479
+ };
4480
+ export type MutationCrowdyStudioProjectImportFileArgs = {
4481
+ input: ImportCrowdyStudioProjectFileInput;
4482
+ };
4483
+ export type MutationCrowdyStudioProjectSaveArgs = {
4484
+ input: SaveCrowdyStudioProjectInput;
4485
+ };
4486
+ export type MutationCrowdyStudioProjectSaveFilesArgs = {
4487
+ input: SaveCrowdyStudioProjectFilesInput;
4488
+ };
4489
+ export type MutationCrowdyStudioProjectSaveMetadataArgs = {
4490
+ input: SaveCrowdyStudioProjectMetadataInput;
4491
+ };
4492
+ export type MutationCrowdyStudioProjectSetArchivedArgs = {
4493
+ input: SetCrowdyStudioProjectArchivedInput;
4494
+ };
4184
4495
  export type MutationDecideCommerceRiskFlagArgs = {
4185
4496
  appId: Scalars['BigInt']['input'];
4186
4497
  flagId: Scalars['String']['input'];
@@ -5813,6 +6124,29 @@ export type PublishAppResult = {
5813
6124
  /** True when the app uses a free org app-slot (under the quota). */
5814
6125
  free: Scalars['Boolean']['output'];
5815
6126
  };
6127
+ /** Publish a new immutable Crowdy Studio-curated common-file version. Requires the app manage_compute permission. */
6128
+ export type PublishCrowdyStudioCommonFileInput = {
6129
+ /** App tenant receiving the common entry; the token and manage_compute permission must cover this app. */
6130
+ appId: Scalars['BigInt']['input'];
6131
+ /** Existing common entry UUID to version; omit to create or version by slug. */
6132
+ commonFileId?: InputMaybe<Scalars['String']['input']>;
6133
+ /** UTF-8 source text for the new immutable version, capped at 64 KiB. */
6134
+ content: Scalars['String']['input'];
6135
+ /** Optional Crowdy Studio-authored catalog description. */
6136
+ description?: InputMaybe<Scalars['String']['input']>;
6137
+ /** Optional 24-hour retry key; strongly recommended to avoid duplicate versions after transport retries. */
6138
+ idempotencyKey?: InputMaybe<Scalars['String']['input']>;
6139
+ /** Safe recommended destination path. */
6140
+ path: Scalars['String']['input'];
6141
+ /** Stable lowercase hyphenated catalog slug. Existing entries cannot change their slug. */
6142
+ slug: Scalars['String']['input'];
6143
+ /** Optional unique lowercase discovery tags; at most 16. */
6144
+ tags?: InputMaybe<Array<Scalars['String']['input']>>;
6145
+ /** Compatible project target for this common file. */
6146
+ target: CrowdyStudioTarget;
6147
+ /** Crowdy Studio-authored catalog title. */
6148
+ title: Scalars['String']['input'];
6149
+ };
5816
6150
  export type PublishEnvironmentReleaseFromGameApiTagInput = {
5817
6151
  /** Overwrite an existing environment version row if it already exists. */
5818
6152
  force?: Scalars['Boolean']['input'];
@@ -5965,7 +6299,7 @@ export type Query = {
5965
6299
  computeTemplates: Array<ComputeTemplateInfo>;
5966
6300
  /** Operator only (is_operator). Most recent operator audit entries, newest first, optionally filtered by environment. */
5967
6301
  cpAudit: Array<CpAuditEntry>;
5968
- /** Operator only (is_operator). One change order with its tasks and steps. Null when the id is not found. */
6302
+ /** Operator only (is_operator). One change order with ordered task and step progress. Durable change orders may return read-only projected rows when exact live execution details are unavailable; planned work remains pending until an outcome is observed or inferred. Null when the id is not found. */
5969
6303
  cpChangeOrder: Maybe<CpChangeOrderDetail>;
5970
6304
  /** Operator only (is_operator). Paginated change orders, optionally filtered by environment. Returns a *Page (rows/total/page/pageSize); page is 1-based. */
5971
6305
  cpChangeOrders: CpChangeOrdersPage;
@@ -5987,6 +6321,14 @@ export type Query = {
5987
6321
  cpUnreleasedGameApiTags: CpUnreleasedGameApiTagsPage;
5988
6322
  /** Operator only (is_operator). Per-minute usage summary for any environment by slug (operator equivalent of environmentUsageSummary, not org-scoped). Read-only. */
5989
6323
  cpUsageSummary: CpUsageSummary;
6324
+ /** List the current immutable versions of published Crowdy Studio-curated common files for one app. Requires an app-scoped token for appId; unlike private player source, this catalog content is intentionally readable by players in that app. Results are bounded and may be filtered by target. */
6325
+ crowdyStudioCommonFiles: Array<CrowdyStudioCommonFile>;
6326
+ /** List the authenticated player’s private reusable Crowdy Studio source files in one app. Requires an app-scoped token for appId; cross-user entries are never visible, including to grid owners or Crowdy Studio operators. The bounded result defaults to 50. */
6327
+ crowdyStudioLibraryFiles: Array<CrowdyStudioLibraryFile>;
6328
+ /** Load one private Crowdy Studio project with all bounded source files. Requires an app-scoped token for appId and exact caller ownership; missing, cross-app, and cross-user ids all return the same NOT_FOUND shape. Grid owners and Crowdy Studio operators receive no source override. */
6329
+ crowdyStudioProject: CrowdyStudioProject;
6330
+ /** List the authenticated player’s private Crowdy Studio projects in one app, newest first. Requires an app-scoped token for appId; every row and source-file read is filtered by both app and caller ownership. The bounded result defaults to 25 and never grants grid deployment authority. */
6331
+ crowdyStudioProjects: Array<CrowdyStudioProject>;
5990
6332
  /** Resolves the single most-specific quota that applies to the given (tierId, appId, orgId, metric) by walking tier -> app -> org -> free-tier defaults and returning the first match; its limitValue/period describe the enforced limit. Returns null if no matching rule and no free-tier default exist for the metric. Requires the 'view_usage' permission on the most-specific scope provided: tierId or appId -> 'view_usage' on the (owning) app; orgId -> 'view_usage' on the org. A metric-only query (no scope ids) resolves the platform free-tier default and only requires an authenticated user. */
5991
6333
  effectiveQuota: Maybe<ServiceQuota>;
5992
6334
  /** OVH datacenters that have at least one customer-priced instance flavor available for customer selection. */
@@ -6491,6 +6833,28 @@ export type QueryCpUsageSummaryArgs = {
6491
6833
  environmentSlug: Scalars['String']['input'];
6492
6834
  since: Scalars['DateTime']['input'];
6493
6835
  };
6836
+ export type QueryCrowdyStudioCommonFilesArgs = {
6837
+ appId: Scalars['BigInt']['input'];
6838
+ limit?: InputMaybe<Scalars['Int']['input']>;
6839
+ offset?: InputMaybe<Scalars['Int']['input']>;
6840
+ target?: InputMaybe<CrowdyStudioTarget>;
6841
+ };
6842
+ export type QueryCrowdyStudioLibraryFilesArgs = {
6843
+ appId: Scalars['BigInt']['input'];
6844
+ includeArchived?: InputMaybe<Scalars['Boolean']['input']>;
6845
+ limit?: InputMaybe<Scalars['Int']['input']>;
6846
+ offset?: InputMaybe<Scalars['Int']['input']>;
6847
+ };
6848
+ export type QueryCrowdyStudioProjectArgs = {
6849
+ appId: Scalars['BigInt']['input'];
6850
+ projectId: Scalars['String']['input'];
6851
+ };
6852
+ export type QueryCrowdyStudioProjectsArgs = {
6853
+ appId: Scalars['BigInt']['input'];
6854
+ includeArchived?: InputMaybe<Scalars['Boolean']['input']>;
6855
+ limit?: InputMaybe<Scalars['Int']['input']>;
6856
+ offset?: InputMaybe<Scalars['Int']['input']>;
6857
+ };
6494
6858
  export type QueryEffectiveQuotaArgs = {
6495
6859
  appId?: InputMaybe<Scalars['BigInt']['input']>;
6496
6860
  metric: Scalars['String']['input'];
@@ -7055,6 +7419,100 @@ export type RollbackVoxelUpdatesInput = {
7055
7419
  /** Id of the user (decimal string) whose edits within the window will be reverted. */
7056
7420
  userId: Scalars['BigInt']['input'];
7057
7421
  };
7422
+ /** Create or optimistically update one private reusable personal-library file. */
7423
+ export type SaveCrowdyStudioLibraryFileInput = {
7424
+ /** App tenant. Requires an app-scoped token; ownership is always the authenticated user. */
7425
+ appId: Scalars['BigInt']['input'];
7426
+ /** Private UTF-8 source text, capped at 64 KiB. */
7427
+ content: Scalars['String']['input'];
7428
+ /** Required current revision when libraryFileId is supplied; omit on create. */
7429
+ expectedRevision?: InputMaybe<Scalars['BigInt']['input']>;
7430
+ /** Optional 24-hour retry key. */
7431
+ idempotencyKey?: InputMaybe<Scalars['String']['input']>;
7432
+ /** Existing library UUID to update; omit to create a new entry. */
7433
+ libraryFileId?: InputMaybe<Scalars['String']['input']>;
7434
+ /** Safe suggested destination path: Cargo.toml or a .rs file below src/. */
7435
+ pathHint: Scalars['String']['input'];
7436
+ /** Optional unique lowercase discovery tags; at most 16, each at most 32 characters. */
7437
+ tags?: InputMaybe<Array<Scalars['String']['input']>>;
7438
+ /** Compatible project target for this reusable file. */
7439
+ target: CrowdyStudioTarget;
7440
+ /** Player-facing library title. */
7441
+ title: Scalars['String']['input'];
7442
+ };
7443
+ /** Atomically upsert and delete a private project’s text files under one expected project revision. */
7444
+ export type SaveCrowdyStudioProjectFilesInput = {
7445
+ /** App tenant that owns the private project. */
7446
+ appId: Scalars['BigInt']['input'];
7447
+ /** Files to remove in the same transaction. A target/path cannot also appear in upserts. */
7448
+ deletes?: InputMaybe<Array<CrowdyStudioProjectFileDeleteInput>>;
7449
+ /** Current project revision used for optimistic concurrency across the entire batch. */
7450
+ expectedRevision: Scalars['BigInt']['input'];
7451
+ /** Optional 24-hour retry key; recommended because a successful batch increments the expected revision. */
7452
+ idempotencyKey?: InputMaybe<Scalars['String']['input']>;
7453
+ /** Project UUID to mutate. */
7454
+ projectId: Scalars['String']['input'];
7455
+ /** Files to insert or replace. The batch commits only if all paths and post-save caps are valid. */
7456
+ upserts?: InputMaybe<Array<CrowdyStudioProjectFileInput>>;
7457
+ };
7458
+ /** Atomically save selected project metadata plus a batch of file upserts/deletes under one expected project revision. Crowdy Studio uses this to persist one coherent full-stack edit. */
7459
+ export type SaveCrowdyStudioProjectInput = {
7460
+ /** New supported ABI pin, or omit to preserve. */
7461
+ abiVersion?: InputMaybe<Scalars['Int']['input']>;
7462
+ /** App tenant that owns the private project. */
7463
+ appId: Scalars['BigInt']['input'];
7464
+ /** New CLIENT module name, explicit null to clear, or omit to preserve. */
7465
+ clientModuleName?: InputMaybe<Scalars['String']['input']>;
7466
+ /** Files to delete in the same transaction. A target/path cannot also appear in upserts. */
7467
+ deletes?: InputMaybe<Array<CrowdyStudioProjectFileDeleteInput>>;
7468
+ /** New private description, explicit null to clear, or omit to preserve. */
7469
+ description?: InputMaybe<Scalars['String']['input']>;
7470
+ /** Current project revision. A stale value returns CONFLICT with CROWDY_STUDIO_REVISION_CONFLICT and applies no metadata or file writes. */
7471
+ expectedRevision: Scalars['BigInt']['input'];
7472
+ /** New optional grid affinity, explicit null to clear, or omit to preserve. Affinity never grants deploy authority. */
7473
+ gridId?: InputMaybe<Scalars['BigInt']['input']>;
7474
+ /** Optional 24-hour retry key; recommended because a successful atomic save increments the expected revision. */
7475
+ idempotencyKey?: InputMaybe<Scalars['String']['input']>;
7476
+ /** New non-empty project name, or omit to preserve. */
7477
+ name?: InputMaybe<Scalars['String']['input']>;
7478
+ /** New editor pairing preference, or omit to preserve. */
7479
+ pairingPreference?: InputMaybe<CrowdyStudioPairingPreference>;
7480
+ /** Project UUID to update. */
7481
+ projectId: Scalars['String']['input'];
7482
+ /** New supported SDK pin, or omit to preserve. */
7483
+ sdkVersion?: InputMaybe<Scalars['String']['input']>;
7484
+ /** New SERVER module name, explicit null to clear, or omit to preserve. */
7485
+ serverModuleName?: InputMaybe<Scalars['String']['input']>;
7486
+ /** Changed or new files to insert/replace. Unmentioned files and their provenance remain unchanged. */
7487
+ upserts?: InputMaybe<Array<CrowdyStudioProjectFileInput>>;
7488
+ };
7489
+ /** Optimistically save selected project metadata. Omitted fields remain unchanged; explicit null clears nullable metadata. */
7490
+ export type SaveCrowdyStudioProjectMetadataInput = {
7491
+ /** New supported ABI pin, or omit to preserve. */
7492
+ abiVersion?: InputMaybe<Scalars['Int']['input']>;
7493
+ /** App tenant that owns the private project. */
7494
+ appId: Scalars['BigInt']['input'];
7495
+ /** New CLIENT module name, explicit null to clear, or omit to preserve. */
7496
+ clientModuleName?: InputMaybe<Scalars['String']['input']>;
7497
+ /** New private description, explicit null to clear, or omit to preserve. */
7498
+ description?: InputMaybe<Scalars['String']['input']>;
7499
+ /** Current project revision. A stale value returns CONFLICT with CROWDY_STUDIO_REVISION_CONFLICT. */
7500
+ expectedRevision: Scalars['BigInt']['input'];
7501
+ /** New optional grid affinity, explicit null to clear, or omit to preserve. Affinity never grants deploy authority. */
7502
+ gridId?: InputMaybe<Scalars['BigInt']['input']>;
7503
+ /** Optional 24-hour retry key; reuse with changed input returns IDEMPOTENCY_CONFLICT. */
7504
+ idempotencyKey?: InputMaybe<Scalars['String']['input']>;
7505
+ /** New project name, or omit to preserve. */
7506
+ name?: InputMaybe<Scalars['String']['input']>;
7507
+ /** New editor pairing preference, or omit to preserve. */
7508
+ pairingPreference?: InputMaybe<CrowdyStudioPairingPreference>;
7509
+ /** Project UUID to update. */
7510
+ projectId: Scalars['String']['input'];
7511
+ /** New supported SDK pin, or omit to preserve. */
7512
+ sdkVersion?: InputMaybe<Scalars['String']['input']>;
7513
+ /** New SERVER module name, explicit null to clear, or omit to preserve. */
7514
+ serverModuleName?: InputMaybe<Scalars['String']['input']>;
7515
+ };
7058
7516
  /** A saved (vaulted) off-session payment method. */
7059
7517
  export type SavedPaymentMethod = {
7060
7518
  __typename?: 'SavedPaymentMethod';
@@ -7448,6 +7906,32 @@ export type SetContainerPropertyInput = {
7448
7906
  /** The value type being written (must match the property definition). */
7449
7907
  valueType: Scalars['String']['input'];
7450
7908
  };
7909
+ /** Optimistically archive or restore one caller-owned personal-library file. */
7910
+ export type SetCrowdyStudioLibraryFileArchivedInput = {
7911
+ /** App tenant that owns the private library entry. */
7912
+ appId: Scalars['BigInt']['input'];
7913
+ /** True to archive; false to make the entry active again. */
7914
+ archived: Scalars['Boolean']['input'];
7915
+ /** Current library revision required for optimistic concurrency. */
7916
+ expectedRevision: Scalars['BigInt']['input'];
7917
+ /** Optional 24-hour retry key. */
7918
+ idempotencyKey?: InputMaybe<Scalars['String']['input']>;
7919
+ /** Personal-library file UUID. */
7920
+ libraryFileId: Scalars['String']['input'];
7921
+ };
7922
+ /** Optimistically archive or unarchive one private project without deleting its files or provenance. */
7923
+ export type SetCrowdyStudioProjectArchivedInput = {
7924
+ /** App tenant that owns the private project. */
7925
+ appId: Scalars['BigInt']['input'];
7926
+ /** True to archive; false to restore the project. */
7927
+ archived: Scalars['Boolean']['input'];
7928
+ /** Current project revision required for optimistic concurrency. */
7929
+ expectedRevision: Scalars['BigInt']['input'];
7930
+ /** Optional 24-hour retry key. */
7931
+ idempotencyKey?: InputMaybe<Scalars['String']['input']>;
7932
+ /** Project UUID to archive or restore. */
7933
+ projectId: Scalars['String']['input'];
7934
+ };
7451
7935
  /** Set the app's game-model runtime policy. */
7452
7936
  export type SetGameModelPolicyInput = {
7453
7937
  /** The app (tenant) whose policy to set. */
@@ -11295,6 +11779,298 @@ export type CpSetComputePlatformCeilingsMutation = {
11295
11779
  updatedByUserId: string | null;
11296
11780
  };
11297
11781
  };
11782
+ export type CrowdyStudioProjectFieldsFragment = {
11783
+ __typename?: 'CrowdyStudioProject';
11784
+ projectId: string;
11785
+ appId: string;
11786
+ ownerUserId: string;
11787
+ gridId: string | null;
11788
+ name: string;
11789
+ description: string | null;
11790
+ serverModuleName: string | null;
11791
+ clientModuleName: string | null;
11792
+ pairingPreference: CrowdyStudioPairingPreference;
11793
+ sdkVersion: string;
11794
+ abiVersion: number;
11795
+ revision: string;
11796
+ archived: boolean;
11797
+ archivedAt: string | null;
11798
+ fileCount: number;
11799
+ totalBytes: string;
11800
+ createdAt: string;
11801
+ updatedAt: string;
11802
+ files: Array<{
11803
+ __typename?: 'CrowdyStudioProjectFile';
11804
+ target: CrowdyStudioTarget;
11805
+ path: string;
11806
+ content: string;
11807
+ revision: string;
11808
+ provenance: CrowdyStudioFileProvenance;
11809
+ provenanceLibraryFileId: string | null;
11810
+ provenanceLibraryRevision: string | null;
11811
+ provenanceCommonVersionId: string | null;
11812
+ createdAt: string;
11813
+ updatedAt: string;
11814
+ }>;
11815
+ };
11816
+ export type CrowdyStudioProjectsQueryVariables = Exact<{
11817
+ appId: Scalars['BigInt']['input'];
11818
+ includeArchived?: InputMaybe<Scalars['Boolean']['input']>;
11819
+ limit?: InputMaybe<Scalars['Int']['input']>;
11820
+ offset?: InputMaybe<Scalars['Int']['input']>;
11821
+ }>;
11822
+ export type CrowdyStudioProjectsQuery = {
11823
+ __typename?: 'Query';
11824
+ crowdyStudioProjects: Array<{
11825
+ __typename?: 'CrowdyStudioProject';
11826
+ projectId: string;
11827
+ gridId: string | null;
11828
+ name: string;
11829
+ serverModuleName: string | null;
11830
+ clientModuleName: string | null;
11831
+ pairingPreference: CrowdyStudioPairingPreference;
11832
+ revision: string;
11833
+ archived: boolean;
11834
+ updatedAt: string;
11835
+ }>;
11836
+ };
11837
+ export type CrowdyStudioProjectQueryVariables = Exact<{
11838
+ appId: Scalars['BigInt']['input'];
11839
+ projectId: Scalars['String']['input'];
11840
+ }>;
11841
+ export type CrowdyStudioProjectQuery = {
11842
+ __typename?: 'Query';
11843
+ crowdyStudioProject: {
11844
+ __typename?: 'CrowdyStudioProject';
11845
+ projectId: string;
11846
+ appId: string;
11847
+ ownerUserId: string;
11848
+ gridId: string | null;
11849
+ name: string;
11850
+ description: string | null;
11851
+ serverModuleName: string | null;
11852
+ clientModuleName: string | null;
11853
+ pairingPreference: CrowdyStudioPairingPreference;
11854
+ sdkVersion: string;
11855
+ abiVersion: number;
11856
+ revision: string;
11857
+ archived: boolean;
11858
+ archivedAt: string | null;
11859
+ fileCount: number;
11860
+ totalBytes: string;
11861
+ createdAt: string;
11862
+ updatedAt: string;
11863
+ files: Array<{
11864
+ __typename?: 'CrowdyStudioProjectFile';
11865
+ target: CrowdyStudioTarget;
11866
+ path: string;
11867
+ content: string;
11868
+ revision: string;
11869
+ provenance: CrowdyStudioFileProvenance;
11870
+ provenanceLibraryFileId: string | null;
11871
+ provenanceLibraryRevision: string | null;
11872
+ provenanceCommonVersionId: string | null;
11873
+ createdAt: string;
11874
+ updatedAt: string;
11875
+ }>;
11876
+ };
11877
+ };
11878
+ export type CrowdyStudioProjectCreateMutationVariables = Exact<{
11879
+ input: CreateCrowdyStudioProjectInput;
11880
+ }>;
11881
+ export type CrowdyStudioProjectCreateMutation = {
11882
+ __typename?: 'Mutation';
11883
+ crowdyStudioProjectCreate: {
11884
+ __typename?: 'CrowdyStudioProject';
11885
+ projectId: string;
11886
+ appId: string;
11887
+ ownerUserId: string;
11888
+ gridId: string | null;
11889
+ name: string;
11890
+ description: string | null;
11891
+ serverModuleName: string | null;
11892
+ clientModuleName: string | null;
11893
+ pairingPreference: CrowdyStudioPairingPreference;
11894
+ sdkVersion: string;
11895
+ abiVersion: number;
11896
+ revision: string;
11897
+ archived: boolean;
11898
+ archivedAt: string | null;
11899
+ fileCount: number;
11900
+ totalBytes: string;
11901
+ createdAt: string;
11902
+ updatedAt: string;
11903
+ files: Array<{
11904
+ __typename?: 'CrowdyStudioProjectFile';
11905
+ target: CrowdyStudioTarget;
11906
+ path: string;
11907
+ content: string;
11908
+ revision: string;
11909
+ provenance: CrowdyStudioFileProvenance;
11910
+ provenanceLibraryFileId: string | null;
11911
+ provenanceLibraryRevision: string | null;
11912
+ provenanceCommonVersionId: string | null;
11913
+ createdAt: string;
11914
+ updatedAt: string;
11915
+ }>;
11916
+ };
11917
+ };
11918
+ export type CrowdyStudioProjectSaveMutationVariables = Exact<{
11919
+ input: SaveCrowdyStudioProjectInput;
11920
+ }>;
11921
+ export type CrowdyStudioProjectSaveMutation = {
11922
+ __typename?: 'Mutation';
11923
+ crowdyStudioProjectSave: {
11924
+ __typename?: 'CrowdyStudioProject';
11925
+ projectId: string;
11926
+ appId: string;
11927
+ ownerUserId: string;
11928
+ gridId: string | null;
11929
+ name: string;
11930
+ description: string | null;
11931
+ serverModuleName: string | null;
11932
+ clientModuleName: string | null;
11933
+ pairingPreference: CrowdyStudioPairingPreference;
11934
+ sdkVersion: string;
11935
+ abiVersion: number;
11936
+ revision: string;
11937
+ archived: boolean;
11938
+ archivedAt: string | null;
11939
+ fileCount: number;
11940
+ totalBytes: string;
11941
+ createdAt: string;
11942
+ updatedAt: string;
11943
+ files: Array<{
11944
+ __typename?: 'CrowdyStudioProjectFile';
11945
+ target: CrowdyStudioTarget;
11946
+ path: string;
11947
+ content: string;
11948
+ revision: string;
11949
+ provenance: CrowdyStudioFileProvenance;
11950
+ provenanceLibraryFileId: string | null;
11951
+ provenanceLibraryRevision: string | null;
11952
+ provenanceCommonVersionId: string | null;
11953
+ createdAt: string;
11954
+ updatedAt: string;
11955
+ }>;
11956
+ };
11957
+ };
11958
+ export type CrowdyStudioLibraryFilesQueryVariables = Exact<{
11959
+ appId: Scalars['BigInt']['input'];
11960
+ includeArchived?: InputMaybe<Scalars['Boolean']['input']>;
11961
+ limit?: InputMaybe<Scalars['Int']['input']>;
11962
+ offset?: InputMaybe<Scalars['Int']['input']>;
11963
+ }>;
11964
+ export type CrowdyStudioLibraryFilesQuery = {
11965
+ __typename?: 'Query';
11966
+ crowdyStudioLibraryFiles: Array<{
11967
+ __typename?: 'CrowdyStudioLibraryFile';
11968
+ libraryFileId: string;
11969
+ appId: string;
11970
+ ownerUserId: string;
11971
+ title: string;
11972
+ pathHint: string;
11973
+ target: CrowdyStudioTarget;
11974
+ tags: Array<string>;
11975
+ content: string;
11976
+ revision: string;
11977
+ archived: boolean;
11978
+ archivedAt: string | null;
11979
+ createdAt: string;
11980
+ updatedAt: string;
11981
+ }>;
11982
+ };
11983
+ export type CrowdyStudioLibrarySaveMutationVariables = Exact<{
11984
+ input: SaveCrowdyStudioLibraryFileInput;
11985
+ }>;
11986
+ export type CrowdyStudioLibrarySaveMutation = {
11987
+ __typename?: 'Mutation';
11988
+ crowdyStudioLibrarySave: {
11989
+ __typename?: 'CrowdyStudioLibraryFile';
11990
+ libraryFileId: string;
11991
+ appId: string;
11992
+ ownerUserId: string;
11993
+ title: string;
11994
+ pathHint: string;
11995
+ target: CrowdyStudioTarget;
11996
+ tags: Array<string>;
11997
+ content: string;
11998
+ revision: string;
11999
+ archived: boolean;
12000
+ archivedAt: string | null;
12001
+ createdAt: string;
12002
+ updatedAt: string;
12003
+ };
12004
+ };
12005
+ export type CrowdyStudioCommonFilesQueryVariables = Exact<{
12006
+ appId: Scalars['BigInt']['input'];
12007
+ target?: InputMaybe<CrowdyStudioTarget>;
12008
+ limit?: InputMaybe<Scalars['Int']['input']>;
12009
+ offset?: InputMaybe<Scalars['Int']['input']>;
12010
+ }>;
12011
+ export type CrowdyStudioCommonFilesQuery = {
12012
+ __typename?: 'Query';
12013
+ crowdyStudioCommonFiles: Array<{
12014
+ __typename?: 'CrowdyStudioCommonFile';
12015
+ commonFileId: string;
12016
+ appId: string;
12017
+ slug: string;
12018
+ title: string;
12019
+ description: string | null;
12020
+ path: string;
12021
+ target: CrowdyStudioTarget;
12022
+ tags: Array<string>;
12023
+ status: CrowdyStudioCommonStatus;
12024
+ versionId: string;
12025
+ versionNo: string;
12026
+ content: string;
12027
+ contentSha256: string;
12028
+ publishedByUserId: string;
12029
+ publishedAt: string;
12030
+ createdAt: string;
12031
+ updatedAt: string;
12032
+ }>;
12033
+ };
12034
+ export type CrowdyStudioProjectImportFileMutationVariables = Exact<{
12035
+ input: ImportCrowdyStudioProjectFileInput;
12036
+ }>;
12037
+ export type CrowdyStudioProjectImportFileMutation = {
12038
+ __typename?: 'Mutation';
12039
+ crowdyStudioProjectImportFile: {
12040
+ __typename?: 'CrowdyStudioProject';
12041
+ projectId: string;
12042
+ appId: string;
12043
+ ownerUserId: string;
12044
+ gridId: string | null;
12045
+ name: string;
12046
+ description: string | null;
12047
+ serverModuleName: string | null;
12048
+ clientModuleName: string | null;
12049
+ pairingPreference: CrowdyStudioPairingPreference;
12050
+ sdkVersion: string;
12051
+ abiVersion: number;
12052
+ revision: string;
12053
+ archived: boolean;
12054
+ archivedAt: string | null;
12055
+ fileCount: number;
12056
+ totalBytes: string;
12057
+ createdAt: string;
12058
+ updatedAt: string;
12059
+ files: Array<{
12060
+ __typename?: 'CrowdyStudioProjectFile';
12061
+ target: CrowdyStudioTarget;
12062
+ path: string;
12063
+ content: string;
12064
+ revision: string;
12065
+ provenance: CrowdyStudioFileProvenance;
12066
+ provenanceLibraryFileId: string | null;
12067
+ provenanceLibraryRevision: string | null;
12068
+ provenanceCommonVersionId: string | null;
12069
+ createdAt: string;
12070
+ updatedAt: string;
12071
+ }>;
12072
+ };
12073
+ };
11298
12074
  export type CreateEnvironmentMutationVariables = Exact<{
11299
12075
  input: CreateEnvironmentInput;
11300
12076
  }>;
@@ -17075,6 +17851,7 @@ export declare const ComputeVersionFieldsFragmentDoc: DocumentNode<ComputeVersio
17075
17851
  export declare const ComputeTriggerFieldsFragmentDoc: DocumentNode<ComputeTriggerFieldsFragment, unknown>;
17076
17852
  export declare const ComputePolicyFieldsFragmentDoc: DocumentNode<ComputePolicyFieldsFragment, unknown>;
17077
17853
  export declare const ComputeRunFieldsFragmentDoc: DocumentNode<ComputeRunFieldsFragment, unknown>;
17854
+ export declare const CrowdyStudioProjectFieldsFragmentDoc: DocumentNode<CrowdyStudioProjectFieldsFragment, unknown>;
17078
17855
  export declare const GridOwnershipFieldsFragmentDoc: DocumentNode<GridOwnershipFieldsFragment, unknown>;
17079
17856
  export declare const GmAutomationFieldsFragmentDoc: DocumentNode<GmAutomationFieldsFragment, unknown>;
17080
17857
  export declare const GmAutomationTriggerFieldsFragmentDoc: DocumentNode<GmAutomationTriggerFieldsFragment, unknown>;
@@ -17222,6 +17999,14 @@ export declare const PublishEnvironmentReleaseFromGameApiTagDocument: DocumentNo
17222
17999
  export declare const YankEnvironmentVersionDocument: DocumentNode<YankEnvironmentVersionMutation, YankEnvironmentVersionMutationVariables>;
17223
18000
  export declare const CpComputePlatformCeilingsDocument: DocumentNode<CpComputePlatformCeilingsQuery, CpComputePlatformCeilingsQueryVariables>;
17224
18001
  export declare const CpSetComputePlatformCeilingsDocument: DocumentNode<CpSetComputePlatformCeilingsMutation, CpSetComputePlatformCeilingsMutationVariables>;
18002
+ export declare const CrowdyStudioProjectsDocument: DocumentNode<CrowdyStudioProjectsQuery, CrowdyStudioProjectsQueryVariables>;
18003
+ export declare const CrowdyStudioProjectDocument: DocumentNode<CrowdyStudioProjectQuery, CrowdyStudioProjectQueryVariables>;
18004
+ export declare const CrowdyStudioProjectCreateDocument: DocumentNode<CrowdyStudioProjectCreateMutation, CrowdyStudioProjectCreateMutationVariables>;
18005
+ export declare const CrowdyStudioProjectSaveDocument: DocumentNode<CrowdyStudioProjectSaveMutation, CrowdyStudioProjectSaveMutationVariables>;
18006
+ export declare const CrowdyStudioLibraryFilesDocument: DocumentNode<CrowdyStudioLibraryFilesQuery, CrowdyStudioLibraryFilesQueryVariables>;
18007
+ export declare const CrowdyStudioLibrarySaveDocument: DocumentNode<CrowdyStudioLibrarySaveMutation, CrowdyStudioLibrarySaveMutationVariables>;
18008
+ export declare const CrowdyStudioCommonFilesDocument: DocumentNode<CrowdyStudioCommonFilesQuery, CrowdyStudioCommonFilesQueryVariables>;
18009
+ export declare const CrowdyStudioProjectImportFileDocument: DocumentNode<CrowdyStudioProjectImportFileMutation, CrowdyStudioProjectImportFileMutationVariables>;
17225
18010
  export declare const CreateEnvironmentDocument: DocumentNode<CreateEnvironmentMutation, CreateEnvironmentMutationVariables>;
17226
18011
  export declare const DestroyEnvironmentDocument: DocumentNode<DestroyEnvironmentMutation, DestroyEnvironmentMutationVariables>;
17227
18012
  export declare const EnvironmentDatacentersDocument: DocumentNode<EnvironmentDatacentersQuery, EnvironmentDatacentersQueryVariables>;