@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 +56 -0
- package/README.md +31 -1
- package/dist/crowdy-dsh/bridge.d.ts.map +1 -1
- package/dist/crowdy-dsh/bridge.js +2 -0
- package/dist/crowdy-studio/controller.d.ts +44 -0
- package/dist/crowdy-studio/controller.d.ts.map +1 -1
- package/dist/crowdy-studio/controller.js +185 -18
- package/dist/crowdy-studio/dom-shell.d.ts.map +1 -1
- package/dist/crowdy-studio/dom-shell.js +13 -8
- package/dist/crowdy-studio/embed/panel.d.ts +11 -1
- package/dist/crowdy-studio/embed/panel.d.ts.map +1 -1
- package/dist/crowdy-studio/embed/panel.js +6 -0
- package/dist/crowdy-studio/index.d.ts +2 -2
- package/dist/crowdy-studio/index.d.ts.map +1 -1
- package/dist/crowdy-studio/models.d.ts +1 -1
- package/dist/crowdy-studio/starter-projects.d.ts +14 -0
- package/dist/crowdy-studio/starter-projects.d.ts.map +1 -1
- package/dist/crowdy-studio/starter-projects.js +55 -5
- package/dist/domains/exec.d.ts +131 -6
- package/dist/domains/exec.d.ts.map +1 -1
- package/dist/domains/exec.js +156 -4
- package/dist/errors.d.ts +3 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/generated/graphql.d.ts +600 -0
- package/dist/generated/graphql.d.ts.map +1 -1
- package/dist/generated/graphql.js +33 -2
- package/dist/grid-scope.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/kit/npcs.d.ts.map +1 -1
- package/dist/kit/social.d.ts.map +1 -1
- package/package.json +1 -1
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
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
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
|
|
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.
|
|
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
|
-
|
|
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":"AAAA,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EACL,sBAAsB,EAIvB,MAAM,aAAa,CAAC;AAuCrB;;;;;;;GAOG;AACH;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,kDAAkD;IAClD,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/B,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,2BAA2B;IAC1C,0EAA0E;IAC1E,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,KAAK,cAAc,CAAC;IAClD,qEAAqE;IACrE,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,sBAAsB,KAAK,IAAI,CAAC;CAC5D;AAED,qBAAa,oBAAoB;IAkE7B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAlE/B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAc;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAc;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IACrD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAc;IAC5C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAmB;IACvD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAc;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2C;IACxE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8C;IAC1E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+C;IACzE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAC7C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAa;IAC/C,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,QAAQ,CAAS;gBAGvB,IAAI,EAAE,WAAW,EACA,UAAU,EAAE,sBAAsB,EAClC,YAAY,GAAE,2BAAgC;IA8VjE,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAsCtC,OAAO,IAAI,IAAI;IAiBf,OAAO,CAAC,UAAU;IAmBlB;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAgBhC,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,WAAW;IAsCnB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,UAAU;IA2DlB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,aAAa;IAWrB,wEAAwE;IACxE,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,eAAe;IAyBvB,OAAO,CAAC,cAAc;IA2BtB,OAAO,CAAC,cAAc;IA6CtB,OAAO,CAAC,cAAc;IAuDtB,OAAO,CAAC,kBAAkB;IAyD1B,OAAO,CAAC,gBAAgB;IA4DxB,OAAO,CAAC,UAAU;IA4ClB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,UAAU;IAwBlB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IAmCpB,OAAO,CAAC,cAAc;IAgCtB,OAAO,CAAC,cAAc;IAqDtB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,iBAAiB;YAmBX,GAAG;CAQlB"}
|