@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
package/MIGRATION.md CHANGED
@@ -1,46 +1,68 @@
1
- # Unpublished next-major migration local Rust authoring (BREAKING)
2
-
3
- This migration is implemented on the feature branch but is **not versioned or
4
- published yet**.
5
-
6
- `mountLiveCodingIDE` no longer connects to the WSS authoring service. Remove
7
- `languageServiceUrl` and `appToken` from every call:
1
+ # CrowdyJS v11Crowdy Studio rename (BREAKING)
2
+
3
+ Version 11 removes the previous Mod Studio names completely. There are no
4
+ compatibility exports, client properties, package subpaths, GraphQL operations,
5
+ schema types, or CSS aliases.
6
+
7
+ Rename imports and API access:
8
+
9
+ - `@crowdedkingdoms/crowdyjs/mod-studio` →
10
+ `@crowdedkingdoms/crowdyjs/crowdy-studio`
11
+ - `mountModStudio` → `mountCrowdyStudio`
12
+ - `ModStudioController` → `CrowdyStudioController`
13
+ - `MountModStudioOptions` → `MountCrowdyStudioOptions`
14
+ - `ModStudioHandle` → `CrowdyStudioHandle`
15
+ - every other public `ModStudio*` model, error, diagnostic, and editor type →
16
+ its `CrowdyStudio*` equivalent
17
+ - `modStudioFileKey`, `modStudioFileUri`, and `normalizeModStudioPath` →
18
+ `crowdyStudioFileKey`, `crowdyStudioFileUri`, and
19
+ `normalizeCrowdyStudioPath`
20
+ - `client.playerCodeProjects` → `client.crowdyStudio`
21
+ - `PlayerCodeProjectsAPI` → `CrowdyStudioAPI`
22
+ - CSS classes under `ck-mod-studio*` → `ck-crowdy-studio*`
23
+
24
+ The matching Game API schema is required. Its project roots changed from
25
+ `playerCodeProjects`, `playerCodeProject`, `playerCodeProjectCreate`,
26
+ `playerCodeProjectSave`, `playerCodeLibraryFiles`, `playerCodeLibrarySave`,
27
+ `playerCodeCommonFiles`, and `playerCodeProjectImportFile` to the corresponding
28
+ `crowdyStudio*` roots. Project, library, common-file, input, and enum schema
29
+ types likewise use `CrowdyStudio` in place of `PlayerCode`.
8
30
 
9
31
  ```ts
10
- // Before
11
- mountLiveCodingIDE(host, {
12
- // ...normal live-coding options...
13
- languageServiceUrl: import.meta.env.VITE_AUTHORING_LSP_URL,
14
- appToken: () => game.session.getToken(),
15
- });
16
-
17
- // After
18
- mountLiveCodingIDE(host, {
19
- // ...normal live-coding options...
32
+ import { mountCrowdyStudio } from '@crowdedkingdoms/crowdyjs/crowdy-studio';
33
+
34
+ const studio = await mountCrowdyStudio(host, {
35
+ projectProvider: game.crowdyStudio,
36
+ playerCompute: game.playerCompute,
37
+ playerWallet: identity.playerWallet,
38
+ appId,
39
+ gridId,
40
+ grid,
41
+ workerUrl: playerCodeGlueWorkerUrl,
42
+ onHostCall,
20
43
  });
21
44
  ```
22
45
 
23
- The replacement is a lazy browser module worker. It uses local
24
- `web-tree-sitter`/Rust-grammar WASM assets and never receives a credential or
25
- opens a language-service connection. Consumers must:
26
-
27
- - remove consumer-side monaco-vscode initialization workarounds;
28
- - use a bundler that emits module workers and dependency `.wasm` assets, or pass
29
- `languageWorkerFactory` for their asset pipeline;
30
- - remove authoring-LSP URL environment variables and token plumbing;
31
- - consume the embedded game-generated platform index by default (no runtime
32
- fetch or BWF option plumbing); and
33
- - keep the textarea behavior as the only fallback. There is no server fallback.
34
-
35
- The Monaco adapter still speaks LSP 3.17 over a standard `vscode-jsonrpc`
36
- Worker `MessageConnection`. `monaco-languageclient` was removed because its
37
- current package hard-depends on `vscode-ws-jsonrpc`; direct Monaco providers
38
- adapt completion/hover/symbol/definition calls to the standard message
39
- connection without restoring that WSS dependency.
40
-
41
- The `@crowdedkingdoms/crowdyjs/live-coding` subpath now exports the IDE,
42
- platform-index loader/types, VFS limits, and worker transport. The package
43
- version intentionally remains unchanged until the coordinated major release.
46
+ Provider behavior, optimistic saves, target permissions, the credential-free
47
+ worker, full-stack deploy ordering, and stop semantics are unchanged.
48
+
49
+ # CrowdyJS v10 — project-first authoring (historical)
50
+
51
+ Version 10 replaced the session-only live-coding API with cloud projects. It
52
+ removed `mountLiveCodingIDE`, `mountLiveCoding`, `LiveCodingController`,
53
+ `MountLiveCodingOptions`, `PLAYER_CODE_TEMPLATES`, `templateById`, the
54
+ `moduleName` and `draftByDefault` mount options, and the
55
+ `@crowdedkingdoms/crowdyjs/live-coding` package subpath.
56
+
57
+ Projects introduced one shared optimistic revision for SERVER and CLIENT files,
58
+ project metadata and module names, personal-library/common-file imports, atomic
59
+ autosave, and explicit **Test draft**, **Deploy live**, and **Stop project**
60
+ actions. Full-stack deployment was ordered CLIENT compile → SERVER compile →
61
+ `setRequires` SERVER enable exact-version CLIENT artifact hot-swap.
62
+
63
+ The browser Rust worker remained credential-free and server-free. Monaco used
64
+ target-prefixed URIs for cross-file language features and retained the
65
+ target/file-aware textarea fallback.
44
66
 
45
67
  # CrowdyJS v8.10 Notes
46
68
 
package/README.md CHANGED
@@ -32,11 +32,14 @@ CrowdyJS v4 targets browsers by default and uses native `fetch`, `WebSocket`, `c
32
32
  >
33
33
  > **Player-code authoring DX:** `playerCompute.setRequires`,
34
34
  > `marketplace.trustGridAuthor`, self-authored `gridClientMods` fields, and
35
- > attachment-keyed client artifact fetches require the 2026-07-22 authoring-DX
36
- > migration. `mountLiveCodingIDE` lazy-loads Monaco plus a browser-native Rust
37
- > language worker. Authoring sends no token and opens no server connection; if
38
- > Monaco, Worker, or the local WASM assets are unavailable, it preserves the
39
- > dependency-free textarea fallback.
35
+ > version-keyed client artifact fetches require the 2026-07-22 authoring-DX
36
+ > migration. The v11 `mountCrowdyStudio` surface is project-first: cloud project
37
+ > revisions, target-scoped files, atomic autosave, and explicit draft/live/stop
38
+ > orchestration. Its Rust language worker receives source plus the committed
39
+ > platform index only—never a credential and never a server connection.
40
+ > CrowdyJS 11 requires the matching Crowdy Studio Game API schema; the previous
41
+ > package subpath, exports, client property, GraphQL roots, and schema types were
42
+ > removed without aliases.
40
43
 
41
44
  > **v8.10 inventory authority:** generated craft/barter transactions work on
42
45
  > existing Model servers. Compute-refereed durable commits require Compute SDK
@@ -66,7 +69,7 @@ together whenever the public GraphQL surface changes; `npm run check:schema`
66
69
  detects drift in CI/release work.
67
70
 
68
71
  The browser authoring index follows the same boundary. `npm run build` validates
69
- only the committed `src/live-coding/assets/browser-authoring-index.json` and its
72
+ only the committed internal `src/live-coding/assets/browser-authoring-index.json` and its
70
73
  generated TypeScript copy; it never discovers or reads a sibling game-api
71
74
  checkout. Coordinated maintainers compare an explicitly supplied exporter path:
72
75
 
@@ -140,6 +143,7 @@ If `managementUrl` is omitted, the SDK falls back to `httpUrl` for backwards-com
140
143
  | `client.gameModel` | Abstract game model: containers, properties, functions (incl. model-driven `notify_*` effects), sessions, and **automations / NPCs** (`upsertAutomation`, `runAutomation`, `automationRuns`, `automationStats`, …). |
141
144
  | `client.compute` | **Compute Modules** — server-side Rust/WASM logic: author + deploy source (`upsertModule`, `deployVersion`, `waitForCompile`), triggers + policy, synchronous `invoke`, and monitoring (`moduleRuns`, `moduleStats`, `moduleLogs`, `appDiagnostics`). Modules run server-only; see [Compute Modules docs](https://docs.crowdedkingdoms.com/game-api/compute-modules). |
142
145
  | `client.playerCompute` | Player-authored SERVER/CLIENT Rust/WASM bound to player-owned grids: deploy source, activate/deactivate, list modules/versions, and delete self-authored modules. |
146
+ | `client.crowdyStudio` | Cloud project, personal-library, and common-file APIs for Crowdy Studio: target-scoped files, metadata/module names, pairing preference, optimistic revisions, copy-by-value imports, and atomic metadata/file saves. Generated operations are pinned to the committed merged SDL. |
143
147
  | `client.playerModel` | Player-owned flexible model containers and grid-confined automations (`containers`, `createContainer`, `setProperty`, `automations`, `createAutomation`, …). |
144
148
  | `client.marketplace` | Player-code store/install/consent flows plus player-authorized grid claims: `claimGridOwnership` preserves the existing-grid policy flow, while `claimGridChunk` atomically creates and owns one chunk under `SELF_CLAIM` and `releaseClaimedGrid` releases an eligible owner-created claim. |
145
149
  | `client.udp` | UDP proxy subscriptions + spatial mutations (`sendActorUpdate`, `sendVoxelUpdate`, `sendAudioPacket`, `sendTextPacket`, `sendClientEvent`). |
@@ -147,38 +151,28 @@ If `managementUrl` is omitted, the SDK falls back to `httpUrl` for backwards-com
147
151
  | `client.refreshGameplayToken()` | Safely rotates an active game client's app token: disconnects the old-token UDP proxy, refreshes/stores the token, and opens the new-token proxy while existing realtime handlers resubscribe in place. |
148
152
  | `client.world(appId)` | Higher-level helpers for browser games (`actor.join`, `actor.sendState`, `actor.sendText`). |
149
153
 
150
- `PlayerCodeBroker` is the P1 page-side browser security skeleton: it transfers
154
+ `PlayerCodeBroker` transfers
151
155
  compiled client artifacts to a platform-owned worker, keeps tokens on the page,
152
156
  allow-lists host calls, and locally clamps chunk-targeted effects to the owned
153
- grid before the normal SDK path reaches server authorization. P3 adds the
154
- platform worker glue/live-coding presentation UI.
155
-
156
- ## Browser Rust live-coding IDE
157
-
158
- `mountLiveCodingIDE` creates one Monaco editor and one module Web Worker. The
159
- worker runs `web-tree-sitter` with the pinned VS Code Rust grammar asset and a
160
- bounded in-memory workspace. It implements LSP initialize/shutdown, full/incremental
161
- document sync, diagnostics, completion, hover, document symbols, and definitions
162
- within the open workspace. It does not run rustc or rust-analyzer, and deploys
163
- still use the platform compiler.
164
-
165
- The mount initializes the required monaco-vscode base/editor services once
166
- before creating any editor. Consumers must not provide a separate Monaco
167
- initialization workaround; concurrent mounts share services but receive
168
- isolated model roots, and destroyed roots are reusable by later mounts.
169
-
170
- The worker speaks the LSP 3.17 subset above over a standard
171
- `vscode-jsonrpc` `MessageConnection` and Worker `MessageReader`/`MessageWriter`.
172
- Small direct Monaco providers adapt editor actions to that connection.
173
- `monaco-languageclient` is intentionally absent: its current release hard-depends
174
- on the forbidden `vscode-ws-jsonrpc` WSS adapter and boots a much larger VS Code
175
- service stack. Removing it does not replace LSP with ad-hoc messages.
157
+ grid before the normal SDK path reaches server authorization. Crowdy Studio
158
+ hot-swaps only the exact version-keyed artifact returned after a successful
159
+ CLIENT compile.
160
+
161
+ ## Crowdy Studio
162
+
163
+ `mountCrowdyStudio` is the project-first SERVER/CLIENT Rust authoring surface. A
164
+ project has one cloud revision, target-scoped files, project metadata, separate
165
+ server/client module names, and a pairing preference. Full-stack edits autosave
166
+ as one optimistic-concurrency write; the UI renders **Saving**, **Saved**,
167
+ **Conflict**, or **Offline**, with retry and conflict-resolution actions.
176
168
 
177
169
  ```ts
178
- import { mountLiveCodingIDE } from '@crowdedkingdoms/crowdyjs/live-coding';
170
+ import { mountCrowdyStudio } from '@crowdedkingdoms/crowdyjs/crowdy-studio';
179
171
 
180
- const handle = await mountLiveCodingIDE(host, {
172
+ const studio = await mountCrowdyStudio(host, {
173
+ projectProvider: game.crowdyStudio,
181
174
  playerCompute: game.playerCompute,
175
+ playerWallet: identity.playerWallet,
182
176
  appId,
183
177
  gridId,
184
178
  grid,
@@ -186,26 +180,68 @@ const handle = await mountLiveCodingIDE(host, {
186
180
  onHostCall,
187
181
  });
188
182
 
189
- // Terminates the language worker and the player-code runtime.
190
- handle.destroy();
183
+ // Stops editor/runtime polling, the Rust worker, and any client broker owned
184
+ // by this mount. It does not implicitly disable a deliberately live server.
185
+ studio.destroy();
191
186
  ```
192
187
 
193
- Modern bundlers must preserve `new Worker(new URL(..., import.meta.url),
194
- { type: 'module' })` and package `.wasm` assets. If a host needs custom worker
195
- loading (tests, a strict CSP, or a bespoke asset pipeline), pass
196
- `languageWorkerFactory: () => new Worker(yourUrl, { type: 'module' })`.
197
- `languageServiceUrl` and `appToken` are not IDE options; no server fallback
198
- exists.
199
-
200
- The embedded platform index is a byte-identical copy of the game export
201
- (`schemaVersion: 2`, Rust 1.97.1, SDK 0.1.5, ABI 0, 725 symbols, content hash
202
- `3f5f39d4…18ffb`). Its strict top-level fields are `schemaVersion`,
203
- `rustVersion`, `sdkVersion`, `abiVersion`, `contentHash`, `crates`, and
204
- `symbols`; every crate records its bounded `name`, `version`, and source hash,
205
- and each symbol has exactly `module`, `name`, `kind`, `signature`, and `docs`.
206
- BWF uses this embedded default and does not fetch or pass the artifact at runtime.
207
- `platformIndex` remains injectable for tests or coordinated future indexes;
208
- schema or unknown-field failures intentionally fall back to the textarea.
188
+ Use `new CrowdyStudioController(options)` for a custom/headless presentation. Its
189
+ public edits are file operations (`addFile`, `renameFile`, `deleteFile`,
190
+ `updateFile`) and project settings—there is no session-only source blob, fixed
191
+ module name, or template JSON API. The deploy conversion to the Game API's
192
+ legacy `sourceFilesJson` input happens only inside the controller's
193
+ `playerCompute.deploy` call.
194
+
195
+ The built-in UI provides a project switcher/new-project wizard
196
+ (server/client/full-stack), target explorer, personal library/common files,
197
+ tabs, settings, Problems/Build/Logs/Runs/Invoke panels, and explicit **Test
198
+ draft**, **Deploy live**, and **Stop project** actions. Full-stack deployment is
199
+ ordered: save once compile CLIENT compile SERVER set/clear the pairing
200
+ requirement only after both compiles enable SERVER hot-swap the exact
201
+ version-keyed CLIENT artifact. Partial compile failures never write a new
202
+ requirement. Stop always attempts both server disable and client/poll cleanup
203
+ and reports each failure.
204
+
205
+ Monaco uses target-prefixed model URIs (`.../server/Cargo.toml` and
206
+ `.../client/Cargo.toml`) and opens every loaded project/library/common Rust file
207
+ in one bounded local worker workspace. Completion, hover, symbols, and
208
+ definition therefore work across loaded files; lifecycle snippets and hover
209
+ notes distinguish SERVER platform execution from CLIENT broker host calls.
210
+ Local tree-sitter markers are labeled advisory. Platform rustc output is parsed
211
+ separately into authoritative path/line/column markers and remains visible in
212
+ Build.
213
+
214
+ The Rust worker receives source files and the strict embedded platform index
215
+ only. It receives no credential, opens no socket/fetch path, and never falls
216
+ back to a server language service. If Monaco, Worker, a WASM asset, or a custom
217
+ platform index fails, the same Crowdy Studio mount keeps project/target tabs and
218
+ uses one file-aware textarea—never a raw JSON blob.
219
+
220
+ Modern bundlers must preserve module workers and package `.wasm` assets. Custom
221
+ pipelines can pass `languageWorkerFactory` and `editorWorkerFactory`. The
222
+ embedded index remains the byte-identical game export (`schemaVersion: 2`, Rust
223
+ 1.97.1, SDK 0.1.5, ABI 0, 725 symbols, content hash
224
+ `3f5f39d4…18ffb`).
225
+
226
+ ### Game API project contract
227
+
228
+ `CrowdyStudioAPI` implements the transport-neutral
229
+ `CrowdyStudioProjectProvider`; generated GraphQL types remain inside the adapter.
230
+ The committed merged schema and generated operations cover:
231
+
232
+ - `crowdyStudioProjects(appId)` / `crowdyStudioProject(appId, projectId)`
233
+ - `crowdyStudioProjectCreate(input)`
234
+ - `crowdyStudioProjectSave(input)` for one atomic metadata/file delta
235
+ - `crowdyStudioLibraryFiles(appId)` / `crowdyStudioLibrarySave(input)`
236
+ - `crowdyStudioCommonFiles(appId)`
237
+ - `crowdyStudioProjectImportFile(input)` for copy-by-value imports
238
+
239
+ The adapter maps the API's `PAIRED | INDEPENDENT | SERVER_ONLY | CLIENT_ONLY`
240
+ presentation enum to Crowdy Studio's runtime-oriented project kind and
241
+ `REQUIRED | OPTIONAL | NONE` setting. A stale expected `revision` arrives as
242
+ `CONFLICT` with `CROWDY_STUDIO_REVISION_CONFLICT` in the message and becomes a
243
+ `CrowdyStudioRevisionConflictError` with the latest cloud project when that
244
+ follow-up read succeeds.
209
245
 
210
246
  | `createWorldSession(client, appId, config)` (from `@crowdedkingdoms/crowdyjs/stores`) | World Stores: opt-in, SDK-managed game state — typed codecs (`structCodec` binary DSL), your own actor with a 5 Hz send loop (`session.self`), a remote-actor registry with lanes/history/staleness (`session.actors`), attributed send errors (`session.errors`), a chunk/voxel cache with realtime merge + worldgen write-back (`session.chunks`), channel/direct-message inboxes + a typed event router, host tracking, typed save/avatar state, and a game-model container mirror. Only configured stores exist (compile-time + runtime); unimported stores tree-shake away. |
211
247
  | `client.kit(appId)` | Game Kit: ready-made mappings of game concepts onto the game model — `kit.inventory`, `kit.objects` (lockable doors/chests with custom permissions), `kit.npcs`, `kit.plots` (buy/rent land with transactional, replication-enforced grid grants), and the genre layers `kit.economy` (wallets/shops/trades/market), `kit.progression` (xp/skills/achievements/rating), `kit.loot`, `kit.quests`, `kit.combat`, `kit.matches` (session lobbies/turns/scores with notify-to-pull channels), `kit.decks` (hidden hands), `kit.worldsim` (clock/nodes/crops/waves), `kit.social` (parties/guilds/chat over teams+channels), `kit.leaderboards`, `kit.features` (tier gates), and the engine-aware helpers `kit.mobs` (refereed attacks, defs/slots, contact-damage parsing), `kit.pets` (adopt/summon/dismiss/rename), `kit.instances` (private world slices, seeded runs), `kit.director` (encounter runs), `kit.matchmaking` (queues/proposals/rating), `kit.minigames` (invoke-loop wrapper), `kit.economy.orderBook` (escrowed bid/ask market), engine paths on `kit.matches`/`kit.decks`/`kit.leaderboards`, `kit.quests` tutorial sequencing, `kit.engines` (compute capability detection) with `kit/wire` (the engine pose codec, `engineLanes()`, and the 77/90/91/92/93 event parsers) — plus blueprint builders + `kit.deploy(...)` for the admin "load the rules" step. |
@@ -59,6 +59,7 @@ import { UdpAPI } from './domains/udp.js';
59
59
  import { GameModelAPI } from './domains/gameModel.js';
60
60
  import { ComputeAPI } from './domains/compute.js';
61
61
  import { PlayerComputeAPI } from './domains/playerCompute.js';
62
+ import { CrowdyStudioAPI } from './domains/crowdyStudio.js';
62
63
  import { PlayerWalletAPI } from './domains/playerWallet.js';
63
64
  import { MarketplaceAPI } from './domains/marketplace.js';
64
65
  import { PlayerModelAPI } from './domains/playerModel.js';
@@ -197,6 +198,8 @@ export declare class CrowdyClient {
197
198
  readonly compute: ComputeAPI;
198
199
  /** Player-authored Rust/WASM bound to player-owned grids. */
199
200
  readonly playerCompute: PlayerComputeAPI;
201
+ /** Crowdy Studio cloud projects, libraries, and common source files. */
202
+ readonly crowdyStudio: CrowdyStudioAPI;
200
203
  /** P4a marketplace (free mode): store, installs, consent, claim flows. */
201
204
  readonly marketplace: MarketplaceAPI;
202
205
  /** Player wallet, spend caps, hourly usage charges, and player policy (P2). */
@@ -1 +1 @@
1
- {"version":3,"file":"crowdy-client.d.ts","sourceRoot":"","sources":["../src/crowdy-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crowdy-client.d.ts","sourceRoot":"","sources":["../src/crowdy-client.ts"],"names":[],"mappings":"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"}
@@ -58,6 +58,7 @@ import { UdpAPI } from './domains/udp.js';
58
58
  import { GameModelAPI } from './domains/gameModel.js';
59
59
  import { ComputeAPI } from './domains/compute.js';
60
60
  import { PlayerComputeAPI } from './domains/playerCompute.js';
61
+ import { CrowdyStudioAPI } from './domains/crowdyStudio.js';
61
62
  import { PlayerWalletAPI } from './domains/playerWallet.js';
62
63
  import { MarketplaceAPI } from './domains/marketplace.js';
63
64
  import { PlayerModelAPI } from './domains/playerModel.js';
@@ -120,6 +121,7 @@ export class CrowdyClient {
120
121
  });
121
122
  this.compute = new ComputeAPI(this.graphql);
122
123
  this.playerCompute = new PlayerComputeAPI(this.graphql);
124
+ this.crowdyStudio = new CrowdyStudioAPI(this.graphql);
123
125
  this.playerWallet = new PlayerWalletAPI(this.management);
124
126
  this.marketplace = new MarketplaceAPI(this.graphql, this.management);
125
127
  this.playerModel = new PlayerModelAPI(this.graphql);
@@ -0,0 +1,188 @@
1
+ import { type PlayerCodeBrokerOptions, type PlayerCodeGridBounds } from '../player-runtime/player-code-broker.js';
2
+ import type { PlayerComputeAPI } from '../domains/playerCompute.js';
3
+ import type { PlayerWalletAPI } from '../domains/playerWallet.js';
4
+ import { type CrowdyStudioDiagnostic } from './diagnostics.js';
5
+ import { type CrowdyStudioFileRef, type CrowdyStudioPairingPreference, type CrowdyStudioProject, type CrowdyStudioProjectMetadata, type CrowdyStudioProjectProvider, type CrowdyStudioProjectSummary, type CrowdyStudioReferenceFile, type CrowdyStudioSaveState, type CrowdyStudioTarget } from './models.js';
6
+ import { type CrowdyStudioNewProjectOptions } from './starter-projects.js';
7
+ export type CrowdyStudioPhase = 'IDLE' | 'TESTING_DRAFT' | 'DEPLOYING_LIVE' | 'COMPILING' | 'ENABLING' | 'RUNNING' | 'COMPILE_FAILED' | 'STOPPING' | 'STOPPED' | 'PARTIAL_FAILURE' | 'ERROR';
8
+ export type CrowdyStudioPolledSurface = 'runs' | 'logs' | 'usage';
9
+ export interface CrowdyStudioRuntimeStatus {
10
+ phase: CrowdyStudioPhase;
11
+ target?: CrowdyStudioTarget;
12
+ message?: string;
13
+ }
14
+ export interface CrowdyStudioUsageSnapshot {
15
+ hourUnitsUsed: string;
16
+ dayUnitsUsed: string;
17
+ unitsPerHour: string | null;
18
+ unitsPerDay: string | null;
19
+ compilesThisHour: number;
20
+ maxCompilesPerHour: number;
21
+ gateStatus: string;
22
+ gateReason: string | null;
23
+ }
24
+ export interface CrowdyStudioWalletSnapshot {
25
+ balanceCents: string;
26
+ currency: string;
27
+ }
28
+ export interface CrowdyStudioRun {
29
+ runId: string;
30
+ moduleName: string;
31
+ triggerSource: string;
32
+ startedAt: string;
33
+ durationUs: number;
34
+ fuelUsed: string;
35
+ success: boolean;
36
+ errorMessage?: string | null;
37
+ }
38
+ export interface CrowdyStudioInvokeResult {
39
+ resultBase64?: string | null;
40
+ resultJson?: string | null;
41
+ fuelUsed?: string;
42
+ durationUs?: number;
43
+ }
44
+ export interface CrowdyStudioState {
45
+ projects: readonly CrowdyStudioProjectSummary[];
46
+ project: CrowdyStudioProject | null;
47
+ personalLibraryFiles: readonly CrowdyStudioReferenceFile[];
48
+ commonFiles: readonly CrowdyStudioReferenceFile[];
49
+ openFiles: readonly CrowdyStudioFileRef[];
50
+ activeFile: CrowdyStudioFileRef | null;
51
+ saveState: CrowdyStudioSaveState;
52
+ saveMessage?: string;
53
+ runtime: CrowdyStudioRuntimeStatus;
54
+ buildOutput: string;
55
+ authoritativeDiagnostics: readonly CrowdyStudioDiagnostic[];
56
+ localDiagnostics: readonly CrowdyStudioDiagnostic[];
57
+ runs: readonly CrowdyStudioRun[];
58
+ logs: readonly CrowdyStudioRun[];
59
+ usage: CrowdyStudioUsageSnapshot | null;
60
+ wallet: CrowdyStudioWalletSnapshot | null;
61
+ invokeResult: CrowdyStudioInvokeResult | null;
62
+ }
63
+ export type CrowdyStudioPlayerCompute = Pick<PlayerComputeAPI, 'deploy' | 'versions' | 'setEnabled' | 'setRequires' | 'artifactBytes' | 'usage' | 'runs' | 'logs' | 'invoke'>;
64
+ export type CrowdyStudioPlayerWallet = Pick<PlayerWalletAPI, 'balance'>;
65
+ export interface CrowdyStudioBroker {
66
+ start(bytes: ArrayBuffer): Promise<void>;
67
+ stop(): void;
68
+ }
69
+ export interface CrowdyStudioControllerOptions {
70
+ projectProvider: CrowdyStudioProjectProvider;
71
+ playerCompute: CrowdyStudioPlayerCompute;
72
+ playerWallet?: CrowdyStudioPlayerWallet;
73
+ appId: string;
74
+ gridId: string;
75
+ initialProjectId?: string;
76
+ /** Required only when a project has a CLIENT target. */
77
+ grid?: PlayerCodeGridBounds;
78
+ /** Platform-owned glue worker; required only for CLIENT execution. */
79
+ workerUrl?: string | URL;
80
+ /** Page-side allow-listed host-call router; required only for CLIENT execution. */
81
+ onHostCall?: PlayerCodeBrokerOptions['onHostCall'];
82
+ onPresentation?: PlayerCodeBrokerOptions['onPresentation'];
83
+ /** Host-visible effective permissions; server authorization remains final. */
84
+ targetPermissions?: Partial<Record<CrowdyStudioTarget, {
85
+ canWrite: boolean;
86
+ canRun: boolean;
87
+ }>>;
88
+ clientTickIntervalMs?: number;
89
+ autosaveMs?: number;
90
+ retryMs?: number;
91
+ compilePollMs?: number;
92
+ compilePollLimit?: number;
93
+ monitorPollMs?: number;
94
+ sleep?: (ms: number) => Promise<void>;
95
+ brokerFactory?: (options: PlayerCodeBrokerOptions) => CrowdyStudioBroker;
96
+ isOnline?: () => boolean;
97
+ onStateChange?: (state: CrowdyStudioState) => void;
98
+ }
99
+ export interface CrowdyStudioStopResult {
100
+ serverStopped: boolean | null;
101
+ clientStopped: boolean | null;
102
+ failures: string[];
103
+ }
104
+ /**
105
+ * Headless project-first Crowdy Studio driver. It owns optimistic project saves,
106
+ * file CRUD, deployment ordering, runtime polling, and client hot swaps; the
107
+ * DOM mount is only a view over this state.
108
+ */
109
+ export declare class CrowdyStudioController {
110
+ private readonly options;
111
+ private state;
112
+ private readonly listeners;
113
+ private autosaveTimer;
114
+ private retryTimer;
115
+ private savePromise;
116
+ private editGeneration;
117
+ private persistedGeneration;
118
+ private conflictRemote;
119
+ private broker;
120
+ private operationGeneration;
121
+ private readonly visibleSurfaces;
122
+ private readonly surfaceTimers;
123
+ private pageVisible;
124
+ private destroyed;
125
+ constructor(options: CrowdyStudioControllerOptions);
126
+ getState(): CrowdyStudioState;
127
+ subscribe(listener: (state: CrowdyStudioState) => void): () => void;
128
+ canTarget(target: CrowdyStudioTarget, action: 'write' | 'run'): boolean;
129
+ initialize(): Promise<void>;
130
+ createProject(options: Omit<CrowdyStudioNewProjectOptions, 'appId' | 'gridId'>): Promise<CrowdyStudioProject>;
131
+ switchProject(projectId: string): Promise<void>;
132
+ private loadProject;
133
+ private installProject;
134
+ openFile(ref: CrowdyStudioFileRef): void;
135
+ closeFile(ref: CrowdyStudioFileRef): void;
136
+ fileContent(ref: CrowdyStudioFileRef): string;
137
+ addFile(target: CrowdyStudioTarget, path: string, content?: string): void;
138
+ renameFile(target: CrowdyStudioTarget, path: string, nextPath: string): void;
139
+ deleteFile(target: CrowdyStudioTarget, path: string): void;
140
+ importReferenceFile(reference: CrowdyStudioReferenceFile, destinationPath?: string): Promise<void>;
141
+ saveProjectFileToLibrary(target: CrowdyStudioTarget, path: string, title?: string): Promise<CrowdyStudioReferenceFile>;
142
+ updateFile(target: CrowdyStudioTarget, path: string, content: string): void;
143
+ updateSettings(patch: Partial<Pick<CrowdyStudioProjectMetadata, 'name' | 'description' | 'serverModuleName' | 'clientModuleName' | 'pairingPreference'>>): void;
144
+ setPairingPreference(preference: CrowdyStudioPairingPreference): void;
145
+ setLocalDiagnostics(diagnostics: readonly CrowdyStudioDiagnostic[]): void;
146
+ /**
147
+ * Flush all edits in one optimistic-concurrency save. If edits arrive while
148
+ * the request is in flight, a second atomic save follows with the new
149
+ * revision instead of overwriting local content with the earlier response.
150
+ */
151
+ saveNow(): Promise<boolean>;
152
+ retrySave(): Promise<boolean>;
153
+ acceptRemoteConflict(): Promise<void>;
154
+ overwriteConflict(): Promise<boolean>;
155
+ testDraft(): Promise<void>;
156
+ deployLive(): Promise<void>;
157
+ private deployProject;
158
+ private compileTarget;
159
+ private recordBuild;
160
+ private enableServer;
161
+ private runClient;
162
+ stopProject(): Promise<CrowdyStudioStopResult>;
163
+ invoke(exportName: string, paramsJson?: string): Promise<CrowdyStudioInvokeResult>;
164
+ setSurfaceVisible(surface: CrowdyStudioPolledSurface, visible: boolean): void;
165
+ setPageVisible(visible: boolean): void;
166
+ refreshSurface(surface: CrowdyStudioPolledSurface): Promise<void>;
167
+ destroy(): void;
168
+ private performSaveLoop;
169
+ private markEdited;
170
+ private scheduleRetry;
171
+ private scheduleSurfacePoll;
172
+ private restartVisibleSurfacePolling;
173
+ private stopSurfacePolling;
174
+ private clearSurfaceTimer;
175
+ private clearSaveTimers;
176
+ private clearTimer;
177
+ private clientRuntimeOptions;
178
+ private checkOperation;
179
+ private sleep;
180
+ private requireProject;
181
+ private requireFile;
182
+ private assertProjectTarget;
183
+ private scope;
184
+ private setRuntime;
185
+ private update;
186
+ private ensureAlive;
187
+ }
188
+ //# sourceMappingURL=controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/crowdy-studio/controller.ts"],"names":[],"mappings":"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"}