@crowdedkingdoms/crowdyjs 17.11.0-dev.1 → 17.13.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/MIGRATION.md CHANGED
@@ -1,3 +1,59 @@
1
+ # 17.13.0 ck-exec observability
2
+
3
+ Additive (dev-tier preview; ck-api `v2.22.0`).
4
+
5
+ - `client.exec.endpointStats(appId, { nodeType?, sinceMinutes? })` returns `ExecEndpointStat[]`:
6
+ per endpoint (`nodeType`, `method`) the `calls`, `appErrors`, `busy`, `denied`,
7
+ `deadlineExceeded`, `otherErrors` and `timedCalls` in the window, `latencyMsAvg` /
8
+ `latencyMsMax` over the timed calls (null when none), and `firstMinute` / `lastMinute`.
9
+ - `client.exec.logs(appId, { flow })` keeps only one flow's lines, and every `ExecLogLine` (also
10
+ from `modLogs`) has `flow`: 32 lowercase hex digits, or null for a line written outside a call.
11
+ - `ExecVersion` has `manifestJson` and `manifest` (`ExecManifest`, parsed), null when the
12
+ version's row is gone; a type's spawn seed is its size, `seed_bytes`.
13
+ - `CrowdyExecError.rateLimited` and `retryAfterMs`. A call over a player's limit (120 per 10 s
14
+ per app and host) is refused `Busy` with a message starting `rate limited`; wait
15
+ `retryAfterMs` before calling again. The SDK never retries `Busy` itself.
16
+ - Now exported: `ExecLogLine`, `ExecLogsOptions`, `ExecInstance`, `ExecVersion`, `ExecManifest`,
17
+ `ExecManifestType`, `ExecAppStatus`, `ExecEndpointStat`, `ExecEndpointStatsOptions`.
18
+
19
+ # 17.13.0 Crowdy Studio runs SERVER code on ck-exec by default
20
+
21
+ **A behaviour change for embedders; no signature is removed.** The platform is switching
22
+ legacy player compute off (the game API answers `ENGINE_SWITCHED_OFF`, HTTP 503), so
23
+ Crowdy Studio's SERVER target moves to ck-exec mods, which 17.12.0 offered behind an option.
24
+
25
+ - **`createCrowdyStudioEmbed` / `CrowdyStudioEmbed`: `serverEngine` now defaults to
26
+ `'ck-exec'` when `client.exec` is present** (every `CrowdyClient`), and to
27
+ `'player-compute'` only for a client without it. An embed that passed nothing now builds
28
+ and runs SERVER code as the grid's mod. Pass `serverEngine: 'player-compute'` to keep the
29
+ legacy engine until it is removed; `'ck-exec'` without `exec` is refused at mount, as
30
+ before.
31
+ - **`CrowdyStudioController` and `mountCrowdyStudio` take `serverEngine` too**, defaulting
32
+ to `'ck-exec'` when `mods` is given and `'player-compute'` otherwise, so a direct caller
33
+ keeps its engine until it passes `mods: client.exec`. `CrowdyStudioState.serverEngine`
34
+ says which one runs.
35
+ - **On ck-exec a new project's SERVER target is the mod starter.** `createProject` asks
36
+ `mods.modStarter(appId)` (`execModStarter`) and uses its `ckx-sdk` crate, with the Cargo
37
+ package named for the project, instead of the legacy `crowdy-compute-sdk` crate; the
38
+ server module name fits a mod's (48 characters, starting with a letter) and a full-stack
39
+ project records pairing `NONE`, since a mod has no client pairing. The CLIENT crate is
40
+ unchanged. `createCrowdyStudioStarterProject` takes the starter as `modStarter`.
41
+ - **Invoke, Logs, Runs and the budget line follow the engine.** On ck-exec, Invoke calls the
42
+ mod's endpoint (default `state`, JSON arguments sent as MessagePack) over one exec
43
+ connection, and the result is the decoded reply as JSON; Logs are the mod's `ctx.log`
44
+ lines (`modLogs`; `CrowdyStudioRun.level` is set and the text is `errorMessage`); Runs
45
+ stay empty (ck-exec keeps no run records); player compute usage is read only for a
46
+ project with a CLIENT target, whose compiles still spend it.
47
+ - **`CrowdyStudioMods` gained `modStarter`, `modLogs` and `connect`.** Pass `client.exec`;
48
+ a hand-written stand-in needs those three as well.
49
+ - **The mod build sends only the crate**: `Cargo.toml`, `README.md` and `src/**/*.rs`
50
+ (grid program assets such as `programs/*.js` stay in the project), and a server module
51
+ name that starts with a digit builds as crate `mod-<name>`.
52
+
53
+ Existing projects keep their files: a project created on the legacy engine has a
54
+ `crowdy-compute-sdk` crate, which a mod build refuses. Start a new project, or replace its
55
+ SERVER `Cargo.toml` and `src/lib.rs` with the mod starter's.
56
+
1
57
  # CrowdyJS v17.7 — grid-scoped parity (DN-10)
2
58
 
3
59
  **Additive, plus one coordinated break.** `17.7.0` (2026-09-22), on top of the
package/README.md CHANGED
@@ -704,6 +704,18 @@ exec.onReconnect((host) => console.log('moved to', host));
704
704
  without a global `WebSocket` (Node before 22), pass one: `{ WebSocket }` from the `ws` package.
705
705
  - A refused call throws `CrowdyExecError`: `status` is the platform's (`AppError` carries the
706
706
  handler's own message; `Busy`, `Moved`, `Unavailable` and `RateLimited` are `retryable`).
707
+ The SDK does not retry `Busy`. A gateway refuses a player's calls over 120 per 10 s (per app
708
+ and host) as `Busy` with `rateLimited` true and `retryAfterMs` set; wait that long before
709
+ calling again, since calling sooner is refused again:
710
+
711
+ ```ts
712
+ try {
713
+ await exec.call('arena', 'm1', 'hit');
714
+ } catch (e) {
715
+ if (e instanceof CrowdyExecError && e.rateLimited) await new Promise((r) => setTimeout(r, e.retryAfterMs ?? 1_000));
716
+ else throw e;
717
+ }
718
+ ```
707
719
  - When the host goes away, the connection asks for a host again, reconnects and renews every
708
720
  subscription; a call caught by it, or answered `Moved`, is tried once more.
709
721
  - `ExecConnection.open(gatewayUrl, token)` connects with a connect token you already have
@@ -711,6 +723,13 @@ exec.onReconnect((host) => console.log('moved to', host));
711
723
  - `client.exec.deploy({ appId, root, types })` takes each node type's compiled module
712
724
  (`wasm: Uint8Array`) with its manifest fields, sends each distinct module once, and makes
713
725
  the version active.
726
+ - Operating it (`view_compute_diagnostics`): `logs(appId, { nodeType, key, maxLevel, flow })`,
727
+ where each line's `flow` is the call it was written in, so `logs(appId, { flow })` follows
728
+ one client call through every hub and host; `versions(appId)` with each version's
729
+ `manifestJson` and parsed `manifest` (a spawn seed shows as `seed_bytes`);
730
+ `endpointStats(appId, { nodeType, sinceMinutes })`, calls per endpoint by outcome (`calls`,
731
+ `appErrors`, `busy`, `denied`, `deadlineExceeded`, `otherErrors`) with latency over
732
+ `timedCalls` (default the last 60 minutes, at most 7 days).
714
733
 
715
734
  Integers above 2^53 decode as `number` and lose precision unless you pass
716
735
  `{ decode: { useBigInt64: true } }`. The wire format is in the
@@ -786,7 +805,7 @@ import { createCrowdyStudioEmbed } from '@crowdedkingdoms/crowdyjs/crowdy-studio
786
805
  import workerUrl from '@crowdedkingdoms/crowdyjs/player-glue-worker?worker&url';
787
806
 
788
807
  const studio = createCrowdyStudioEmbed({
789
- client: game, // CrowdyClient: crowdyStudio, playerCompute, playerWallet, crowdyStudioGitHub
808
+ client: game, // CrowdyClient: crowdyStudio, exec, playerCompute, playerWallet, crowdyStudioGitHub
790
809
  appId,
791
810
  gameName: 'My Game',
792
811
  suppressGameplayInput: () => pauseInput(),
@@ -809,6 +828,17 @@ fullscreen modal on narrow screens. For custom chrome, call
809
828
  `new CrowdyStudioController(options)`. New games should start SERVER-only.
810
829
  Untrusted HUD payloads always render as text, never HTML.
811
830
 
831
+ **The SERVER target runs as a ck-exec mod.** The embed's `serverEngine` defaults to
832
+ `'ck-exec'` when the client has `exec` (a `CrowdyClient` always does): a new project's
833
+ SERVER target starts from the platform's mod starter (`client.exec.modStarter(appId)`, a
834
+ `ckx-sdk` crate), Test draft and Deploy live build it with `modBuild` and deploy it to the
835
+ grid as the mod `mod:<server module name>`, Invoke calls one of its endpoints (`state` by
836
+ default) over an exec connection, and Logs shows its `ctx.log` lines. The CLIENT target is
837
+ unchanged. `mountCrowdyStudio` and the controller take the same `serverEngine` with
838
+ `mods: client.exec`; without `mods` they stay on legacy player compute, and
839
+ `serverEngine: 'player-compute'` keeps it explicitly. The platform is switching legacy
840
+ player compute off, so that option lasts only until it is removed.
841
+
812
842
  See [Crowdy Studio & player client mods](https://docs.crowdedkingdoms.com/crowdyjs/player-client-mods)
813
843
  and [Embed Crowdy Studio in your game](https://docs.crowdedkingdoms.com/crowdyjs/crowdy-studio-embed).
814
844
 
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/crowdy-dsh/bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/crowdy-dsh/bridge.ts"],"names":[],"mappings":"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"}
@@ -490,6 +490,8 @@ function clampLimit(value, fallback) {
490
490
  return Math.max(1, Math.min(400, Math.floor(value)));
491
491
  }
492
492
  function formatRunLine(run) {
493
+ if (run.level)
494
+ return `${run.startedAt} ${run.moduleName} ${run.level}: ${run.errorMessage ?? ''}`;
493
495
  const status = run.success ? 'ok' : 'FAILED';
494
496
  const error = run.errorMessage ? ` — ${run.errorMessage}` : '';
495
497
  return `${run.startedAt} ${run.moduleName} ${run.triggerSource} ${status} ${Math.round(run.durationUs / 1000)}ms fuel=${run.fuelUsed}${error}`;
@@ -1,4 +1,5 @@
1
1
  import { type PlayerCodeBrokerOptions, type PlayerCodeGridBounds } from '../player-runtime/player-code-broker.js';
2
+ import type { ExecAPI } from '../domains/exec.js';
2
3
  import type { PlayerComputeAPI } from '../domains/playerCompute.js';
3
4
  import type { PlayerWalletAPI } from '../domains/playerWallet.js';
4
5
  import { type CrowdyStudioDiagnostic } from './diagnostics.js';
@@ -62,7 +63,13 @@ export interface CrowdyStudioRun {
62
63
  fuelUsed: string;
63
64
  success: boolean;
64
65
  errorMessage?: string | null;
66
+ /**
67
+ * Set on a ck-exec mod's log line (`ctx.log`), whose text is `errorMessage` at every level;
68
+ * such a line has no duration or fuel.
69
+ */
70
+ level?: CrowdyStudioLogLevel;
65
71
  }
72
+ export type CrowdyStudioLogLevel = 'error' | 'warn' | 'info' | 'debug';
66
73
  export interface CrowdyStudioInvokeResult {
67
74
  resultBase64?: string | null;
68
75
  resultJson?: string | null;
@@ -70,6 +77,8 @@ export interface CrowdyStudioInvokeResult {
70
77
  durationUs?: number;
71
78
  }
72
79
  export interface CrowdyStudioState {
80
+ /** What runs the SERVER target; fixed for the controller's life. */
81
+ serverEngine: CrowdyStudioServerEngine;
73
82
  projects: readonly CrowdyStudioProjectSummary[];
74
83
  project: CrowdyStudioProject | null;
75
84
  personalLibraryFiles: readonly CrowdyStudioReferenceFile[];
@@ -99,13 +108,33 @@ export interface CrowdyStudioState {
99
108
  }
100
109
  export type CrowdyStudioPlayerCompute = Pick<PlayerComputeAPI, 'deploy' | 'versions' | 'setEnabled' | 'setRequires' | 'artifactBytes' | 'usage' | 'runs' | 'logs' | 'invoke'>;
101
110
  export type CrowdyStudioPlayerWallet = Pick<PlayerWalletAPI, 'balance'>;
111
+ /**
112
+ * What runs the SERVER target: `'ck-exec'`, a mod on the grid (`mods`), or `'player-compute'`,
113
+ * legacy player compute, which the platform is switching off and will remove.
114
+ */
115
+ export type CrowdyStudioServerEngine = 'player-compute' | 'ck-exec';
116
+ /**
117
+ * ck-exec mods (`client.exec`): the SERVER target of a new project starts from the mod
118
+ * starter, builds the project's server crate and runs it as the grid's mod, and the Invoke
119
+ * and Logs panels call and read that mod, in place of legacy player compute. The CLIENT
120
+ * target is unchanged.
121
+ */
122
+ export type CrowdyStudioMods = Pick<ExecAPI, 'modStarter' | 'modBuild' | 'modBuildStatus' | 'modDeploy' | 'modSetEnabled' | 'modLogs' | 'connect'>;
102
123
  export interface CrowdyStudioBroker {
103
124
  start(bytes: ArrayBuffer): Promise<void>;
104
125
  stop(): void;
105
126
  }
106
127
  export interface CrowdyStudioControllerOptions {
107
128
  projectProvider: CrowdyStudioProjectProvider;
129
+ /** Legacy player compute: the CLIENT target's compiles, and the SERVER target's with `'player-compute'`. */
108
130
  playerCompute: CrowdyStudioPlayerCompute;
131
+ /** Run the SERVER target as a ck-exec mod (see {@link CrowdyStudioMods}). */
132
+ mods?: CrowdyStudioMods;
133
+ /**
134
+ * Defaults to `'ck-exec'` when `mods` is given, else `'player-compute'`. `'ck-exec'` needs
135
+ * `mods`; `'player-compute'` keeps the legacy engine even when `mods` is given.
136
+ */
137
+ serverEngine?: CrowdyStudioServerEngine;
109
138
  playerWallet?: CrowdyStudioPlayerWallet;
110
139
  /**
111
140
  * GitHub repository card (bring-your-own repo). Optional: without it the
@@ -183,6 +212,8 @@ export declare class CrowdyStudioController {
183
212
  private readonly surfaceTimers;
184
213
  private pageVisible;
185
214
  private destroyed;
215
+ private readonly mods;
216
+ private modConnection;
186
217
  constructor(options: CrowdyStudioControllerOptions);
187
218
  getState(): CrowdyStudioState;
188
219
  subscribe(listener: (state: CrowdyStudioState) => void): () => void;
@@ -293,13 +324,26 @@ export declare class CrowdyStudioController {
293
324
  deployLivePlan(plan: CrowdyStudioDeploymentPlan, agentOperation?: number): Promise<CrowdyStudioDeployResult>;
294
325
  private deployProject;
295
326
  private compileTarget;
327
+ /**
328
+ * The SERVER target as a ck-exec mod: the project's server crate files, built on the
329
+ * platform, then deployed to this grid (switched off until {@link enableServer}). Other
330
+ * project files, such as grid program assets, are not part of the crate.
331
+ */
332
+ private buildMod;
296
333
  private recordBuild;
297
334
  private enableServer;
335
+ private setServerEnabled;
298
336
  private runClient;
299
337
  stopProject(): Promise<CrowdyStudioStopResult>;
300
338
  invoke(exportName: string, paramsJson?: string, agentOperation?: number): Promise<CrowdyStudioInvokeResult>;
301
339
  setSurfaceVisible(surface: CrowdyStudioPolledSurface, visible: boolean): void;
302
340
  setPageVisible(visible: boolean): void;
341
+ /**
342
+ * The mod's endpoint `method` with `paramsJson` as its arguments, through one exec
343
+ * connection to the mod (`mod:<name>`, keyed by the grid) that later calls reuse.
344
+ */
345
+ private callMod;
346
+ private closeModConnection;
303
347
  refreshSurface(surface: CrowdyStudioPolledSurface): Promise<void>;
304
348
  destroy(): void;
305
349
  private performSaveLoop;
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/crowdy-studio/controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/crowdy-studio/controller.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,11 @@ import { githubNewRepositoryUrl, githubRepositorySlug } from './github/new-repo.
5
5
  import { cloneCrowdyStudioProject, crowdyStudioFileKey, normalizeCrowdyStudioPath, projectTargets, CrowdyStudioOfflineError, CrowdyStudioRevisionConflictError, } from './models.js';
6
6
  import { parseClientTickIntervalMs } from './client-tick-interval.js';
7
7
  import { createCrowdyStudioStarterProject, } from './starter-projects.js';
8
+ /** As ck-exec's mod names. */
9
+ const MOD_NAME = /^[a-z0-9_-]{1,48}$/;
10
+ /** As a ck-exec build's crate names. */
11
+ const CRATE_NAME = /^[a-z][a-z0-9_-]{0,63}$/;
12
+ const LOG_LEVELS = ['error', 'warn', 'info', 'debug'];
8
13
  class OperationCancelledError extends Error {
9
14
  }
10
15
  /**
@@ -16,6 +21,7 @@ export class CrowdyStudioController {
16
21
  constructor(options) {
17
22
  this.options = options;
18
23
  this.state = {
24
+ serverEngine: 'player-compute',
19
25
  projects: [],
20
26
  project: null,
21
27
  personalLibraryFiles: [],
@@ -53,8 +59,15 @@ export class CrowdyStudioController {
53
59
  this.surfaceTimers = new Map();
54
60
  this.pageVisible = true;
55
61
  this.destroyed = false;
62
+ this.modConnection = null;
56
63
  // ----- GitHub repository card ------------------------------------------
57
64
  this.githubStatusGeneration = 0;
65
+ const serverEngine = options.serverEngine ?? (options.mods ? 'ck-exec' : 'player-compute');
66
+ if (serverEngine === 'ck-exec' && !options.mods) {
67
+ throw new Error("serverEngine 'ck-exec' needs the mods option (client.exec)");
68
+ }
69
+ this.mods = serverEngine === 'ck-exec' ? options.mods : null;
70
+ this.state = { ...this.state, serverEngine };
58
71
  if (options.onStateChange)
59
72
  this.listeners.add(options.onStateChange);
60
73
  }
@@ -184,9 +197,13 @@ export class CrowdyStudioController {
184
197
  if (this.state.project && !(await this.saveNow())) {
185
198
  throw new Error('Resolve or retry the current project save before creating another');
186
199
  }
200
+ const modStarter = this.mods && projectTargets(options.kind).includes('SERVER')
201
+ ? await this.mods.modStarter(this.options.appId)
202
+ : undefined;
187
203
  const input = createCrowdyStudioStarterProject({
188
204
  ...options,
189
205
  ...this.scope(),
206
+ ...(modStarter ? { modStarter } : {}),
190
207
  });
191
208
  const project = await this.options.projectProvider.createProject(input);
192
209
  this.installProject(project);
@@ -252,6 +269,7 @@ export class CrowdyStudioController {
252
269
  this.stopSurfacePolling();
253
270
  this.broker?.stop();
254
271
  this.broker = null;
272
+ this.closeModConnection();
255
273
  this.clearSaveTimers();
256
274
  this.editGeneration = 0;
257
275
  this.persistedGeneration = 0;
@@ -887,15 +905,18 @@ export class CrowdyStudioController {
887
905
  };
888
906
  }
889
907
  this.checkOperation(operation);
890
- const requiredClientName = project.metadata.pairingPreference === 'REQUIRED'
891
- ? client.name
892
- : null;
893
- await this.options.playerCompute.setRequires({
894
- ...this.scope(),
895
- serverName: server.name,
896
- requiredClientName,
897
- });
898
- this.checkOperation(operation);
908
+ // A mod has no client pairing: its players call it by name.
909
+ if (!this.mods) {
910
+ const requiredClientName = project.metadata.pairingPreference === 'REQUIRED'
911
+ ? client.name
912
+ : null;
913
+ await this.options.playerCompute.setRequires({
914
+ ...this.scope(),
915
+ serverName: server.name,
916
+ requiredClientName,
917
+ });
918
+ this.checkOperation(operation);
919
+ }
899
920
  await this.enableServer(server.name, operation);
900
921
  await this.runClient(client, operation);
901
922
  }
@@ -961,6 +982,9 @@ export class CrowdyStudioController {
961
982
  message: `Submitting ${name}`,
962
983
  },
963
984
  });
985
+ if (target === 'SERVER' && this.mods) {
986
+ return this.buildMod(name, files, operation);
987
+ }
964
988
  // The server resolves the source from the project itself: the saved
965
989
  // files at the project revision, or — for a GITHUB project — the rust at
966
990
  // the commit the mirror is at. No file bodies travel with a deploy.
@@ -1010,6 +1034,56 @@ export class CrowdyStudioController {
1010
1034
  });
1011
1035
  return null;
1012
1036
  }
1037
+ /**
1038
+ * The SERVER target as a ck-exec mod: the project's server crate files, built on the
1039
+ * platform, then deployed to this grid (switched off until {@link enableServer}). Other
1040
+ * project files, such as grid program assets, are not part of the crate.
1041
+ */
1042
+ async buildMod(name, files, operation) {
1043
+ const mods = this.mods;
1044
+ if (!MOD_NAME.test(name)) {
1045
+ throw new Error(`The server module name '${name}' must be 1-48 lowercase letters, digits, - or _ to run as a mod`);
1046
+ }
1047
+ const { appId, gridId } = this.scope();
1048
+ const queued = await mods.modBuild(appId, {
1049
+ name: CRATE_NAME.test(name) ? name : `mod-${name}`,
1050
+ files: files
1051
+ .filter((file) => isModCrateFile(file.path))
1052
+ .map((file) => ({ path: file.path, content: file.content })),
1053
+ });
1054
+ this.checkOperation(operation);
1055
+ const limit = this.options.compilePollLimit ?? 60;
1056
+ const pollMs = this.options.compilePollMs ?? 1500;
1057
+ for (let attempt = 0; attempt < limit; attempt++) {
1058
+ const b = await mods.modBuildStatus(appId, queued.buildId);
1059
+ this.checkOperation(operation);
1060
+ if (b.status === 'succeeded') {
1061
+ this.recordBuild('SERVER', b.log ?? '');
1062
+ const mod = await mods.modDeploy(appId, gridId, name, b.buildId);
1063
+ this.checkOperation(operation);
1064
+ return { target: 'SERVER', name, versionId: String(mod.version) };
1065
+ }
1066
+ if (b.status === 'failed') {
1067
+ this.recordBuild('SERVER', b.log ?? 'Compilation failed without output');
1068
+ this.update({
1069
+ runtime: {
1070
+ phase: 'COMPILE_FAILED',
1071
+ target: 'SERVER',
1072
+ message: `${name} failed to compile`,
1073
+ },
1074
+ });
1075
+ return null;
1076
+ }
1077
+ await this.sleep(pollMs);
1078
+ this.checkOperation(operation);
1079
+ }
1080
+ const timeout = `Compilation timed out after ${limit} polls`;
1081
+ this.recordBuild('SERVER', timeout);
1082
+ this.update({
1083
+ runtime: { phase: 'COMPILE_FAILED', target: 'SERVER', message: timeout },
1084
+ });
1085
+ return null;
1086
+ }
1013
1087
  recordBuild(target, log) {
1014
1088
  const section = `## ${target}\n${log || 'Compiled successfully.'}`;
1015
1089
  const authoritativeDiagnostics = [
@@ -1028,12 +1102,20 @@ export class CrowdyStudioController {
1028
1102
  this.update({
1029
1103
  runtime: { phase: 'ENABLING', target: 'SERVER', message: `Enabling ${name}` },
1030
1104
  });
1105
+ await this.setServerEnabled(name, true);
1106
+ this.checkOperation(operation);
1107
+ }
1108
+ async setServerEnabled(name, enabled) {
1109
+ if (this.mods) {
1110
+ const { appId, gridId } = this.scope();
1111
+ await this.mods.modSetEnabled(appId, gridId, name, enabled);
1112
+ return;
1113
+ }
1031
1114
  await this.options.playerCompute.setEnabled({
1032
1115
  ...this.scope(),
1033
1116
  name,
1034
- enabled: true,
1117
+ enabled,
1035
1118
  });
1036
- this.checkOperation(operation);
1037
1119
  }
1038
1120
  async runClient(compiled, operation) {
1039
1121
  if (!this.canTarget('CLIENT', 'run')) {
@@ -1091,11 +1173,7 @@ export class CrowdyStudioController {
1091
1173
  if (projectTargets(project.kind).includes('SERVER')) {
1092
1174
  serverStopped = false;
1093
1175
  try {
1094
- await this.options.playerCompute.setEnabled({
1095
- ...this.scope(),
1096
- name: moduleNameFor(project, 'SERVER'),
1097
- enabled: false,
1098
- });
1176
+ await this.setServerEnabled(moduleNameFor(project, 'SERVER'), false);
1099
1177
  serverStopped = true;
1100
1178
  }
1101
1179
  catch (error) {
@@ -1123,6 +1201,12 @@ export class CrowdyStudioController {
1123
1201
  if (!projectTargets(project.kind).includes('SERVER')) {
1124
1202
  throw new Error('Invoke requires a SERVER target');
1125
1203
  }
1204
+ if (this.mods) {
1205
+ const result = await this.callMod(moduleNameFor(project, 'SERVER'), exportName.trim() || 'state', paramsJson);
1206
+ this.checkAgentOperation(agentOperation);
1207
+ this.update({ invokeResult: result });
1208
+ return result;
1209
+ }
1126
1210
  const result = await this.options.playerCompute.invoke({
1127
1211
  ...this.scope(),
1128
1212
  moduleName: moduleNameFor(project, 'SERVER'),
@@ -1155,10 +1239,64 @@ export class CrowdyStudioController {
1155
1239
  else
1156
1240
  this.stopSurfacePolling();
1157
1241
  }
1242
+ /**
1243
+ * The mod's endpoint `method` with `paramsJson` as its arguments, through one exec
1244
+ * connection to the mod (`mod:<name>`, keyed by the grid) that later calls reuse.
1245
+ */
1246
+ async callMod(name, method, paramsJson) {
1247
+ const text = paramsJson?.trim();
1248
+ let args = null;
1249
+ if (text) {
1250
+ try {
1251
+ args = JSON.parse(text);
1252
+ }
1253
+ catch {
1254
+ throw new Error('The call arguments must be JSON');
1255
+ }
1256
+ }
1257
+ if (this.modConnection?.name !== name) {
1258
+ this.closeModConnection();
1259
+ const connection = this.mods.connect(this.options.appId, {
1260
+ nodeType: modNodeType(name),
1261
+ key: this.options.gridId,
1262
+ });
1263
+ connection.catch(() => {
1264
+ if (this.modConnection?.connection === connection)
1265
+ this.modConnection = null;
1266
+ });
1267
+ this.modConnection = { name, connection };
1268
+ }
1269
+ const connection = await this.modConnection.connection;
1270
+ const started = Date.now();
1271
+ const value = await connection.call(modNodeType(name), this.options.gridId, method, args);
1272
+ return {
1273
+ resultJson: JSON.stringify(value ?? null, (_key, v) => typeof v === 'bigint' ? v.toString() : v),
1274
+ durationUs: (Date.now() - started) * 1000,
1275
+ };
1276
+ }
1277
+ closeModConnection() {
1278
+ const open = this.modConnection;
1279
+ this.modConnection = null;
1280
+ void open?.connection.then((connection) => connection.close(), () => { });
1281
+ }
1158
1282
  async refreshSurface(surface) {
1159
1283
  if (!this.state.project)
1160
1284
  return;
1161
1285
  const serverName = this.state.project.metadata.serverModuleName;
1286
+ if (this.mods && surface !== 'usage') {
1287
+ // ck-exec records no runs; a mod's log is its own `ctx.log` lines.
1288
+ if (surface === 'runs') {
1289
+ this.update({ runs: [] });
1290
+ return;
1291
+ }
1292
+ const lines = serverName?.trim()
1293
+ ? await this.mods.modLogs(this.options.appId, this.options.gridId, serverName.trim(), {
1294
+ limit: 50,
1295
+ })
1296
+ : [];
1297
+ this.update({ logs: lines.map((line) => modLogRow(serverName.trim(), line)) });
1298
+ return;
1299
+ }
1162
1300
  if (surface === 'runs') {
1163
1301
  this.update({
1164
1302
  runs: await this.options.playerCompute.runs({
@@ -1180,11 +1318,15 @@ export class CrowdyStudioController {
1180
1318
  });
1181
1319
  return;
1182
1320
  }
1321
+ // Player compute's units and compile quota: with a mod, only a CLIENT target spends them.
1322
+ const legacyUsage = !this.mods || projectTargets(this.state.project.kind).includes('CLIENT');
1183
1323
  const [usage, wallet] = await Promise.all([
1184
- this.options.playerCompute.usage({ appId: this.options.appId }),
1324
+ legacyUsage
1325
+ ? this.options.playerCompute.usage({ appId: this.options.appId })
1326
+ : Promise.resolve(null),
1185
1327
  this.options.playerWallet?.balance() ?? Promise.resolve(null),
1186
1328
  ]);
1187
- this.update({ usage: normalizeUsage(usage), wallet });
1329
+ this.update({ usage: usage ? normalizeUsage(usage) : null, wallet });
1188
1330
  }
1189
1331
  destroy() {
1190
1332
  if (this.destroyed)
@@ -1195,6 +1337,7 @@ export class CrowdyStudioController {
1195
1337
  this.stopSurfacePolling();
1196
1338
  this.broker?.stop();
1197
1339
  this.broker = null;
1340
+ this.closeModConnection();
1198
1341
  this.listeners.clear();
1199
1342
  this.humanEditListeners.clear();
1200
1343
  }
@@ -1440,6 +1583,30 @@ function sameFileRef(a, b) {
1440
1583
  function compareProjectFile(a, b) {
1441
1584
  return crowdyStudioFileKey(a.target, a.path).localeCompare(crowdyStudioFileKey(b.target, b.path));
1442
1585
  }
1586
+ /** The node type players call a mod by, as `execModType`. */
1587
+ function modNodeType(name) {
1588
+ return `mod:${name}`;
1589
+ }
1590
+ /** What a mod build takes: `Cargo.toml`, `README.md` and Rust under `src/`. */
1591
+ function isModCrateFile(path) {
1592
+ return (path === 'Cargo.toml' ||
1593
+ path === 'README.md' ||
1594
+ (path.startsWith('src/') && path.endsWith('.rs')));
1595
+ }
1596
+ function modLogRow(moduleName, line) {
1597
+ const level = LOG_LEVELS[line.level] ?? 'debug';
1598
+ return {
1599
+ runId: line.id,
1600
+ moduleName,
1601
+ triggerSource: level,
1602
+ startedAt: line.at,
1603
+ durationUs: 0,
1604
+ fuelUsed: '0',
1605
+ success: level !== 'error',
1606
+ errorMessage: line.text,
1607
+ level,
1608
+ };
1609
+ }
1443
1610
  function moduleNameFor(project, target) {
1444
1611
  const name = target === 'SERVER'
1445
1612
  ? project.metadata.serverModuleName
@@ -1 +1 @@
1
- {"version":3,"file":"dom-shell.d.ts","sourceRoot":"","sources":["../../src/crowdy-studio/dom-shell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dom-shell.d.ts","sourceRoot":"","sources":["../../src/crowdy-studio/dom-shell.ts"],"names":[],"mappings":"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"}