@crowdedkingdoms/crowdyjs 17.14.0-dev.1 → 18.0.1-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.
Files changed (289) hide show
  1. package/MIGRATION.md +129 -1
  2. package/README.md +97 -164
  3. package/dist/crowdy-client.d.ts +12 -31
  4. package/dist/crowdy-client.d.ts.map +1 -1
  5. package/dist/crowdy-client.js +15 -37
  6. package/dist/crowdy-dsh/bridge.d.ts.map +1 -1
  7. package/dist/crowdy-dsh/bridge.js +3 -6
  8. package/dist/crowdy-studio/controller.d.ts +34 -59
  9. package/dist/crowdy-studio/controller.d.ts.map +1 -1
  10. package/dist/crowdy-studio/controller.js +96 -225
  11. package/dist/crowdy-studio/diagnostics.d.ts +3 -12
  12. package/dist/crowdy-studio/diagnostics.d.ts.map +1 -1
  13. package/dist/crowdy-studio/dom-shell.d.ts +2 -4
  14. package/dist/crowdy-studio/dom-shell.d.ts.map +1 -1
  15. package/dist/crowdy-studio/dom-shell.js +16 -49
  16. package/dist/crowdy-studio/embed/hud-layer.d.ts +1 -2
  17. package/dist/crowdy-studio/embed/hud-layer.d.ts.map +1 -1
  18. package/dist/crowdy-studio/embed/panel.d.ts +3 -13
  19. package/dist/crowdy-studio/embed/panel.d.ts.map +1 -1
  20. package/dist/crowdy-studio/embed/panel.js +3 -6
  21. package/dist/crowdy-studio/index.d.ts +1 -3
  22. package/dist/crowdy-studio/index.d.ts.map +1 -1
  23. package/dist/crowdy-studio/index.js +0 -2
  24. package/dist/crowdy-studio/models.d.ts +3 -4
  25. package/dist/crowdy-studio/models.d.ts.map +1 -1
  26. package/dist/crowdy-studio/starter-projects.d.ts +8 -12
  27. package/dist/crowdy-studio/starter-projects.d.ts.map +1 -1
  28. package/dist/crowdy-studio/starter-projects.js +12 -103
  29. package/dist/domains/appAccess.d.ts +14 -1
  30. package/dist/domains/appAccess.d.ts.map +1 -1
  31. package/dist/domains/appAccess.js +37 -1
  32. package/dist/domains/apps.d.ts +1 -10
  33. package/dist/domains/apps.d.ts.map +1 -1
  34. package/dist/domains/apps.js +1 -16
  35. package/dist/domains/host.d.ts +3 -3
  36. package/dist/domains/host.js +3 -3
  37. package/dist/domains/hosting.d.ts +0 -6
  38. package/dist/domains/hosting.d.ts.map +1 -1
  39. package/dist/domains/hosting.js +1 -16
  40. package/dist/domains/marketplace.d.ts +9 -70
  41. package/dist/domains/marketplace.d.ts.map +1 -1
  42. package/dist/domains/marketplace.js +9 -120
  43. package/dist/domains/organizations.d.ts +1 -9
  44. package/dist/domains/organizations.d.ts.map +1 -1
  45. package/dist/domains/organizations.js +1 -15
  46. package/dist/domains/payments.d.ts +5 -48
  47. package/dist/domains/payments.d.ts.map +1 -1
  48. package/dist/domains/payments.js +5 -57
  49. package/dist/domains/playerWallet.d.ts +6 -12
  50. package/dist/domains/playerWallet.d.ts.map +1 -1
  51. package/dist/domains/playerWallet.js +6 -21
  52. package/dist/domains/quotas.d.ts +20 -7
  53. package/dist/domains/quotas.d.ts.map +1 -1
  54. package/dist/domains/quotas.js +15 -6
  55. package/dist/domains/users.d.ts +7 -74
  56. package/dist/domains/users.d.ts.map +1 -1
  57. package/dist/domains/users.js +7 -105
  58. package/dist/errors.d.ts +7 -13
  59. package/dist/errors.d.ts.map +1 -1
  60. package/dist/errors.js +6 -10
  61. package/dist/generated/graphql.d.ts +955 -8272
  62. package/dist/generated/graphql.d.ts.map +1 -1
  63. package/dist/generated/graphql.js +5 -329
  64. package/dist/grid-mods/exec-client-halves.d.ts +19 -3
  65. package/dist/grid-mods/exec-client-halves.d.ts.map +1 -1
  66. package/dist/grid-mods/exec-client-halves.js +17 -2
  67. package/dist/grid-mods/grid-host-calls.d.ts +29 -17
  68. package/dist/grid-mods/grid-host-calls.d.ts.map +1 -1
  69. package/dist/grid-mods/grid-host-calls.js +40 -46
  70. package/dist/grid-mods/mod-runtime.d.ts +18 -11
  71. package/dist/grid-mods/mod-runtime.d.ts.map +1 -1
  72. package/dist/grid-mods/mod-runtime.js +4 -2
  73. package/dist/grid-scope.d.ts +0 -189
  74. package/dist/grid-scope.d.ts.map +1 -1
  75. package/dist/grid-scope.js +0 -70
  76. package/dist/index.d.ts +12 -18
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +10 -16
  79. package/dist/kit/actions.d.ts +5 -9
  80. package/dist/kit/actions.d.ts.map +1 -1
  81. package/dist/kit/actions.js +5 -9
  82. package/dist/kit/index.d.ts +2 -33
  83. package/dist/kit/index.d.ts.map +1 -1
  84. package/dist/kit/index.js +1 -32
  85. package/dist/kit/kit.d.ts +8 -208
  86. package/dist/kit/kit.d.ts.map +1 -1
  87. package/dist/kit/kit.js +5 -163
  88. package/dist/kit/social.d.ts +1 -3
  89. package/dist/kit/social.d.ts.map +1 -1
  90. package/dist/kit/social.js +1 -3
  91. package/dist/kit/wire.d.ts +16 -5
  92. package/dist/kit/wire.d.ts.map +1 -1
  93. package/dist/kit/wire.js +19 -5
  94. package/dist/live-coding/assets/browser-authoring-index.json +1 -1
  95. package/dist/live-coding/assets/manifest.json +1 -1
  96. package/dist/live-coding/browser-authoring-index.generated.d.ts.map +1 -1
  97. package/dist/live-coding/browser-authoring-index.generated.js +1496 -4386
  98. package/dist/live-coding/rust-analysis.d.ts.map +1 -1
  99. package/dist/live-coding/rust-analysis.js +30 -34
  100. package/dist/player-runtime/client-host-calls.d.ts +8 -0
  101. package/dist/player-runtime/client-host-calls.d.ts.map +1 -0
  102. package/dist/player-runtime/client-host-calls.js +28 -0
  103. package/dist/player-runtime/glue-runtime.d.ts +24 -20
  104. package/dist/player-runtime/glue-runtime.d.ts.map +1 -1
  105. package/dist/player-runtime/glue-runtime.js +26 -55
  106. package/dist/player-runtime/glue-sab.d.ts +2 -2
  107. package/dist/player-runtime/glue-sab.js +2 -2
  108. package/dist/player-runtime/player-code-broker.d.ts +70 -43
  109. package/dist/player-runtime/player-code-broker.d.ts.map +1 -1
  110. package/dist/player-runtime/player-code-broker.js +159 -64
  111. package/dist/player-runtime/player-glue-worker.d.ts +8 -9
  112. package/dist/player-runtime/player-glue-worker.d.ts.map +1 -1
  113. package/dist/player-runtime/player-glue-worker.js +26 -11
  114. package/dist/stores/inbox.d.ts +1 -1
  115. package/dist/stores/inbox.d.ts.map +1 -1
  116. package/dist/stores/index.d.ts +0 -11
  117. package/dist/stores/index.d.ts.map +1 -1
  118. package/dist/stores/index.js +0 -4
  119. package/dist/stores/session.d.ts +0 -2
  120. package/dist/stores/session.d.ts.map +1 -1
  121. package/package.json +1 -1
  122. package/dist/crowdy-studio/model-lint-log.d.ts +0 -76
  123. package/dist/crowdy-studio/model-lint-log.d.ts.map +0 -1
  124. package/dist/crowdy-studio/model-lint-log.js +0 -93
  125. package/dist/crowdy-studio/model-lint.d.ts +0 -61
  126. package/dist/crowdy-studio/model-lint.d.ts.map +0 -1
  127. package/dist/crowdy-studio/model-lint.js +0 -45
  128. package/dist/domains/compute.d.ts +0 -208
  129. package/dist/domains/compute.d.ts.map +0 -1
  130. package/dist/domains/compute.js +0 -274
  131. package/dist/domains/controlPlane.d.ts +0 -38
  132. package/dist/domains/controlPlane.d.ts.map +0 -1
  133. package/dist/domains/controlPlane.js +0 -43
  134. package/dist/domains/gameModel.d.ts +0 -1174
  135. package/dist/domains/gameModel.d.ts.map +0 -1
  136. package/dist/domains/gameModel.js +0 -1333
  137. package/dist/domains/playerCompute.d.ts +0 -91
  138. package/dist/domains/playerCompute.d.ts.map +0 -1
  139. package/dist/domains/playerCompute.js +0 -136
  140. package/dist/domains/playerModel.d.ts +0 -20
  141. package/dist/domains/playerModel.d.ts.map +0 -1
  142. package/dist/domains/playerModel.js +0 -54
  143. package/dist/kit/abilities.d.ts +0 -66
  144. package/dist/kit/abilities.d.ts.map +0 -1
  145. package/dist/kit/abilities.js +0 -71
  146. package/dist/kit/blueprints/combat.d.ts +0 -81
  147. package/dist/kit/blueprints/combat.d.ts.map +0 -1
  148. package/dist/kit/blueprints/combat.js +0 -357
  149. package/dist/kit/blueprints/core.d.ts +0 -222
  150. package/dist/kit/blueprints/core.d.ts.map +0 -1
  151. package/dist/kit/blueprints/core.js +0 -185
  152. package/dist/kit/blueprints/decks.d.ts +0 -50
  153. package/dist/kit/blueprints/decks.d.ts.map +0 -1
  154. package/dist/kit/blueprints/decks.js +0 -163
  155. package/dist/kit/blueprints/economy.d.ts +0 -88
  156. package/dist/kit/blueprints/economy.d.ts.map +0 -1
  157. package/dist/kit/blueprints/economy.js +0 -533
  158. package/dist/kit/blueprints/guild.d.ts +0 -51
  159. package/dist/kit/blueprints/guild.d.ts.map +0 -1
  160. package/dist/kit/blueprints/guild.js +0 -50
  161. package/dist/kit/blueprints/index.d.ts +0 -23
  162. package/dist/kit/blueprints/index.d.ts.map +0 -1
  163. package/dist/kit/blueprints/index.js +0 -22
  164. package/dist/kit/blueprints/inventory.d.ts +0 -84
  165. package/dist/kit/blueprints/inventory.d.ts.map +0 -1
  166. package/dist/kit/blueprints/inventory.js +0 -257
  167. package/dist/kit/blueprints/leaderboards.d.ts +0 -49
  168. package/dist/kit/blueprints/leaderboards.d.ts.map +0 -1
  169. package/dist/kit/blueprints/leaderboards.js +0 -126
  170. package/dist/kit/blueprints/liveops.d.ts +0 -42
  171. package/dist/kit/blueprints/liveops.d.ts.map +0 -1
  172. package/dist/kit/blueprints/liveops.js +0 -170
  173. package/dist/kit/blueprints/locks.d.ts +0 -82
  174. package/dist/kit/blueprints/locks.d.ts.map +0 -1
  175. package/dist/kit/blueprints/locks.js +0 -155
  176. package/dist/kit/blueprints/loot.d.ts +0 -90
  177. package/dist/kit/blueprints/loot.d.ts.map +0 -1
  178. package/dist/kit/blueprints/loot.js +0 -229
  179. package/dist/kit/blueprints/matches.d.ts +0 -84
  180. package/dist/kit/blueprints/matches.d.ts.map +0 -1
  181. package/dist/kit/blueprints/matches.js +0 -349
  182. package/dist/kit/blueprints/moderation.d.ts +0 -32
  183. package/dist/kit/blueprints/moderation.d.ts.map +0 -1
  184. package/dist/kit/blueprints/moderation.js +0 -140
  185. package/dist/kit/blueprints/npcs.d.ts +0 -78
  186. package/dist/kit/blueprints/npcs.d.ts.map +0 -1
  187. package/dist/kit/blueprints/npcs.js +0 -125
  188. package/dist/kit/blueprints/plots.d.ts +0 -63
  189. package/dist/kit/blueprints/plots.d.ts.map +0 -1
  190. package/dist/kit/blueprints/plots.js +0 -151
  191. package/dist/kit/blueprints/progression.d.ts +0 -68
  192. package/dist/kit/blueprints/progression.d.ts.map +0 -1
  193. package/dist/kit/blueprints/progression.js +0 -324
  194. package/dist/kit/blueprints/quests.d.ts +0 -72
  195. package/dist/kit/blueprints/quests.d.ts.map +0 -1
  196. package/dist/kit/blueprints/quests.js +0 -285
  197. package/dist/kit/blueprints/worldsim.d.ts +0 -91
  198. package/dist/kit/blueprints/worldsim.d.ts.map +0 -1
  199. package/dist/kit/blueprints/worldsim.js +0 -468
  200. package/dist/kit/combat.d.ts +0 -141
  201. package/dist/kit/combat.d.ts.map +0 -1
  202. package/dist/kit/combat.js +0 -196
  203. package/dist/kit/decks.d.ts +0 -157
  204. package/dist/kit/decks.d.ts.map +0 -1
  205. package/dist/kit/decks.js +0 -186
  206. package/dist/kit/director.d.ts +0 -88
  207. package/dist/kit/director.d.ts.map +0 -1
  208. package/dist/kit/director.js +0 -86
  209. package/dist/kit/economy.d.ts +0 -289
  210. package/dist/kit/economy.d.ts.map +0 -1
  211. package/dist/kit/economy.js +0 -427
  212. package/dist/kit/engine.d.ts +0 -48
  213. package/dist/kit/engine.d.ts.map +0 -1
  214. package/dist/kit/engine.js +0 -113
  215. package/dist/kit/features.d.ts +0 -60
  216. package/dist/kit/features.d.ts.map +0 -1
  217. package/dist/kit/features.js +0 -65
  218. package/dist/kit/instances.d.ts +0 -52
  219. package/dist/kit/instances.d.ts.map +0 -1
  220. package/dist/kit/instances.js +0 -60
  221. package/dist/kit/inventory.d.ts +0 -129
  222. package/dist/kit/inventory.d.ts.map +0 -1
  223. package/dist/kit/inventory.js +0 -200
  224. package/dist/kit/leaderboards.d.ts +0 -86
  225. package/dist/kit/leaderboards.d.ts.map +0 -1
  226. package/dist/kit/leaderboards.js +0 -133
  227. package/dist/kit/liveops.d.ts +0 -112
  228. package/dist/kit/liveops.d.ts.map +0 -1
  229. package/dist/kit/liveops.js +0 -183
  230. package/dist/kit/loot.d.ts +0 -128
  231. package/dist/kit/loot.d.ts.map +0 -1
  232. package/dist/kit/loot.js +0 -160
  233. package/dist/kit/matches.d.ts +0 -301
  234. package/dist/kit/matches.d.ts.map +0 -1
  235. package/dist/kit/matches.js +0 -458
  236. package/dist/kit/matchmaking.d.ts +0 -57
  237. package/dist/kit/matchmaking.d.ts.map +0 -1
  238. package/dist/kit/matchmaking.js +0 -59
  239. package/dist/kit/minigames.d.ts +0 -30
  240. package/dist/kit/minigames.d.ts.map +0 -1
  241. package/dist/kit/minigames.js +0 -38
  242. package/dist/kit/mobs.d.ts +0 -90
  243. package/dist/kit/mobs.d.ts.map +0 -1
  244. package/dist/kit/mobs.js +0 -98
  245. package/dist/kit/moderation.d.ts +0 -73
  246. package/dist/kit/moderation.d.ts.map +0 -1
  247. package/dist/kit/moderation.js +0 -103
  248. package/dist/kit/movement.d.ts +0 -78
  249. package/dist/kit/movement.d.ts.map +0 -1
  250. package/dist/kit/movement.js +0 -103
  251. package/dist/kit/notifications.d.ts +0 -45
  252. package/dist/kit/notifications.d.ts.map +0 -1
  253. package/dist/kit/notifications.js +0 -67
  254. package/dist/kit/npcs.d.ts +0 -226
  255. package/dist/kit/npcs.d.ts.map +0 -1
  256. package/dist/kit/npcs.js +0 -141
  257. package/dist/kit/objects.d.ts +0 -116
  258. package/dist/kit/objects.d.ts.map +0 -1
  259. package/dist/kit/objects.js +0 -119
  260. package/dist/kit/pets.d.ts +0 -85
  261. package/dist/kit/pets.d.ts.map +0 -1
  262. package/dist/kit/pets.js +0 -96
  263. package/dist/kit/plots.d.ts +0 -85
  264. package/dist/kit/plots.d.ts.map +0 -1
  265. package/dist/kit/plots.js +0 -113
  266. package/dist/kit/progression.d.ts +0 -181
  267. package/dist/kit/progression.d.ts.map +0 -1
  268. package/dist/kit/progression.js +0 -265
  269. package/dist/kit/quests.d.ts +0 -171
  270. package/dist/kit/quests.d.ts.map +0 -1
  271. package/dist/kit/quests.js +0 -237
  272. package/dist/kit/racing.d.ts +0 -85
  273. package/dist/kit/racing.d.ts.map +0 -1
  274. package/dist/kit/racing.js +0 -99
  275. package/dist/kit/shared.d.ts +0 -73
  276. package/dist/kit/shared.d.ts.map +0 -1
  277. package/dist/kit/shared.js +0 -101
  278. package/dist/kit/telemetry.d.ts +0 -66
  279. package/dist/kit/telemetry.d.ts.map +0 -1
  280. package/dist/kit/telemetry.js +0 -133
  281. package/dist/kit/territory.d.ts +0 -97
  282. package/dist/kit/territory.d.ts.map +0 -1
  283. package/dist/kit/territory.js +0 -114
  284. package/dist/kit/worldsim.d.ts +0 -263
  285. package/dist/kit/worldsim.d.ts.map +0 -1
  286. package/dist/kit/worldsim.js +0 -268
  287. package/dist/stores/model.d.ts +0 -81
  288. package/dist/stores/model.d.ts.map +0 -1
  289. package/dist/stores/model.js +0 -163
@@ -1,5 +1,5 @@
1
1
  import type { ExecAPI, ExecClientCapabilitySummary, ExecGridClientMod } from '../domains/exec.js';
2
- import { type PlayerCodeBrokerOptions, type PlayerCodeGridBounds, type PlayerCodeHostCall, type PlayerCodePresentation } from '../player-runtime/player-code-broker.js';
2
+ import { type PlayerCodeBrokerOptions, type PlayerCodeGridBounds, type PlayerCodeHostCall, type PlayerCodeLogLine, type PlayerCodePresentation } from '../player-runtime/player-code-broker.js';
3
3
  /** The grid a player stands in: its id and chunk box. */
4
4
  export type ExecClientHalvesGrid = PlayerCodeGridBounds & {
5
5
  gridId: string;
@@ -48,6 +48,10 @@ export interface ExecClientHalfError {
48
48
  export interface ExecClientHalfBroker {
49
49
  start(artifact: ArrayBuffer): Promise<void>;
50
50
  stop(): void;
51
+ /** `PlayerCodeBroker.invoke`: the module's `handle_invoke`. */
52
+ invoke?(payload: Uint8Array, options?: {
53
+ timeoutMs?: number;
54
+ }): Promise<Uint8Array>;
51
55
  }
52
56
  export interface ExecClientHalvesOptions {
53
57
  exec: Pick<ExecAPI, 'gridClientMods' | 'consentClientMod' | 'trustAuthor' | 'modClientArtifactBytes'>;
@@ -60,6 +64,11 @@ export interface ExecClientHalvesOptions {
60
64
  */
61
65
  onHostCall: (call: PlayerCodeHostCall, mod: ExecGridClientMod) => Promise<unknown>;
62
66
  onPresentation?: (presentation: PlayerCodePresentation, mod: ExecGridClientMod) => void;
67
+ /**
68
+ * Each CLIENT half's `crowdy::log` lines, bounded by the broker (see
69
+ * `PlayerCodeBrokerOptions.onLog`). The text is the mod author's: render it as text.
70
+ */
71
+ onLog?: (line: PlayerCodeLogLine, mod: ExecGridClientMod) => void;
63
72
  /**
64
73
  * Asks the player about CLIENT halves they neither consented to nor trust the author of; true
65
74
  * consents. Without it, only what the player already agreed to runs. A declined question is
@@ -100,8 +109,7 @@ export interface ExecClientHalvesOptions {
100
109
  * that filled the cache; consent and trust are the listing's, on every refresh.
101
110
  *
102
111
  * `NOT_FOUND` (not served to this player now) and `RATE_LIMITED` hold that CLIENT half back for
103
- * a while instead of fetching on every refresh. The legacy grid-attached client mods
104
- * (`marketplace.gridClientMods`) are not this runner's.
112
+ * a while instead of fetching on every refresh.
105
113
  */
106
114
  export declare class ExecClientHalves {
107
115
  private readonly options;
@@ -123,6 +131,14 @@ export declare class ExecClientHalves {
123
131
  * when the grid's CLIENT halves cannot be listed, and what runs keeps running.
124
132
  */
125
133
  refresh(): Promise<void>;
134
+ /**
135
+ * Calls the `handle_invoke` export of the running CLIENT half of mod `modId` with `payload`
136
+ * and resolves with its reply bytes (see `PlayerCodeBroker.invoke`). Rejects when that CLIENT
137
+ * half is not running.
138
+ */
139
+ invoke(modId: string, payload: Uint8Array, options?: {
140
+ timeoutMs?: number;
141
+ }): Promise<Uint8Array>;
126
142
  /** Stops every CLIENT half and leaves the grid; the module cache stays. */
127
143
  stop(): void;
128
144
  private reconcile;
@@ -1 +1 @@
1
- {"version":3,"file":"exec-client-halves.d.ts","sourceRoot":"","sources":["../../src/grid-mods/exec-client-halves.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exec-client-halves.d.ts","sourceRoot":"","sources":["../../src/grid-mods/exec-client-halves.ts"],"names":[],"mappings":"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"}
@@ -30,8 +30,7 @@ function refusal(error) {
30
30
  * that filled the cache; consent and trust are the listing's, on every refresh.
31
31
  *
32
32
  * `NOT_FOUND` (not served to this player now) and `RATE_LIMITED` hold that CLIENT half back for
33
- * a while instead of fetching on every refresh. The legacy grid-attached client mods
34
- * (`marketplace.gridClientMods`) are not this runner's.
33
+ * a while instead of fetching on every refresh.
35
34
  */
36
35
  export class ExecClientHalves {
37
36
  constructor(options) {
@@ -74,6 +73,21 @@ export class ExecClientHalves {
74
73
  this.inFlight = { generation, done };
75
74
  return done;
76
75
  }
76
+ /**
77
+ * Calls the `handle_invoke` export of the running CLIENT half of mod `modId` with `payload`
78
+ * and resolves with its reply bytes (see `PlayerCodeBroker.invoke`). Rejects when that CLIENT
79
+ * half is not running.
80
+ */
81
+ invoke(modId, payload, options) {
82
+ const worker = this.workers.get(modId);
83
+ if (!worker?.started) {
84
+ return Promise.reject(new Error(`the CLIENT half of mod ${modId} is not running`));
85
+ }
86
+ if (!worker.broker.invoke) {
87
+ return Promise.reject(new Error('this broker cannot invoke its module'));
88
+ }
89
+ return worker.broker.invoke(payload, options);
90
+ }
77
91
  /** Stops every CLIENT half and leaves the grid; the module cache stays. */
78
92
  stop() {
79
93
  this.stopAll('stopped');
@@ -262,6 +276,7 @@ export class ExecClientHalves {
262
276
  consentedHostCalls: consented.filter((fn) => served.includes(fn)),
263
277
  onHostCall: (call) => this.options.onHostCall(call, mod),
264
278
  onPresentation: (presentation) => this.options.onPresentation?.(presentation, mod),
279
+ ...(this.options.onLog ? { onLog: (line) => this.options.onLog?.(line, mod) } : {}),
265
280
  onCircuitOpen: () => {
266
281
  if (this.workers.get(mod.modId)?.broker !== broker)
267
282
  return;
@@ -1,19 +1,32 @@
1
- import type { GridScope } from '../grid-scope.js';
1
+ import type { GridChunk, GridScope } from '../grid-scope.js';
2
2
  import type { PlayerCodeHostCall } from '../player-runtime/player-code-broker.js';
3
+ import type { AvatarsAPI } from '../domains/avatars.js';
3
4
  import type { ChunksAPI } from '../domains/chunks.js';
4
5
  import type { VoxelsAPI } from '../domains/voxels.js';
5
6
  import type { StateAPI } from '../domains/state.js';
6
- import type { GameModelAPI } from '../domains/gameModel.js';
7
7
  /**
8
- * Game-local fast paths. A game that already holds the world in memory (a
9
- * chunk store, an actor store) answers reads from there instead of a round
10
- * trip; anything it leaves out falls through to the server path.
8
+ * Game-local fast paths and knowledge. A game that already holds the world in memory (a chunk
9
+ * store, an actor store) answers reads from there instead of a round trip; anything it leaves
10
+ * out falls through to the server path. The calls only the game can answer (`actors_list*`,
11
+ * `avatar_state_get`, `grid_permission_check`, `pointer_clicks`) are refused without their
12
+ * hook.
11
13
  */
12
14
  export interface GridHostLocal {
13
15
  chunkVoxels?(x: bigint, y: bigint, z: bigint): {
14
16
  voxelsBase64: string | null;
15
17
  } | null;
16
18
  actorsInChunk?(x: bigint, y: bigint, z: bigint): Array<Record<string, unknown>>;
19
+ /**
20
+ * The chunk of the avatar's live actor, from the game's actor store, or null when the game
21
+ * sees none. `avatar_state_get` answers only for an avatar whose actor is inside the grid.
22
+ */
23
+ avatarChunk?(avatarId: string): GridChunk | null | undefined | Promise<GridChunk | null | undefined>;
24
+ /**
25
+ * The runtime permission keys the visiting player holds on this grid, as the game knows them
26
+ * (where Crowdy Studio's `targetPermissions` come from). `grid_permission_check` answers from
27
+ * these, for that player and this grid only; the server still enforces the permissions.
28
+ */
29
+ gridPermissionKeys?(): Iterable<string> | Promise<Iterable<string>>;
17
30
  setVoxel?(input: {
18
31
  chunk: {
19
32
  x: number;
@@ -36,15 +49,15 @@ export interface GridHostCallsOptions {
36
49
  chunks: ChunksAPI;
37
50
  voxels: VoxelsAPI;
38
51
  state: StateAPI;
39
- gameModel: GameModelAPI;
52
+ /** For `avatar_state_get`, a public read (`avatarAppState`). */
53
+ avatars?: Pick<AvatarsAPI, 'appState'>;
40
54
  };
41
55
  local?: GridHostLocal;
42
56
  /**
43
- * Let mods call Studio model functions as the player (`model_invoke`, the
44
- * ordinary player authority path). Off by default: a game opts in when its
45
- * functions are meant to be scriptable by visitors' mods.
57
+ * The visiting player's user id. `grid_permission_check` answers only about them, so without
58
+ * it the call is refused.
46
59
  */
47
- allowModelInvoke?: boolean;
60
+ userId?: string;
48
61
  /**
49
62
  * Channels a mod may post to. Default: the grid's own channels only (the
50
63
  * server rule for grid code). A game may widen it to channels the player
@@ -60,13 +73,12 @@ export declare class GridHostCallRefused extends Error {
60
73
  constructor(fn: string, reason?: string);
61
74
  }
62
75
  /**
63
- * The page-side answer to every CLIENT host call in the platform catalog,
64
- * through ordinary CrowdyJS confined to one grid (DN-10 §4). Hand the result
65
- * to `PlayerCodeBroker({ onHostCall })`; the broker has already applied the
66
- * allowlist, rate caps and chunk clamps, and answers `grid_info`, `emit_event`,
67
- * `hud_set` and `overlay_draw` itself. A ck-exec CLIENT half (`engine:
68
- * 'ck-exec'`) reaches only the crowdy-client-sdk calls: the model and sessions
69
- * cases below serve legacy CLIENT modules until 18.0.
76
+ * The page-side answer to a CLIENT half's host calls (`EXEC_CLIENT_HOST_CALLS`,
77
+ * what crowdy-client-sdk wraps), through ordinary CrowdyJS confined to one grid
78
+ * (DN-10 §4). Hand the result to `PlayerCodeBroker({ onHostCall })`; the broker
79
+ * has already applied the allowlist, the player's consent, rate caps and chunk
80
+ * clamps, and answers `grid_info`, `emit_event`, `hud_set` and `overlay_draw`
81
+ * itself.
70
82
  */
71
83
  export declare function createGridHostCalls(options: GridHostCallsOptions): (call: PlayerCodeHostCall) => Promise<unknown>;
72
84
  //# sourceMappingURL=grid-host-calls.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"grid-host-calls.d.ts","sourceRoot":"","sources":["../../src/grid-mods/grid-host-calls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG;QAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACtF,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChF,QAAQ,CAAC,CAAC,KAAK,EAAE;QACf,KAAK,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC3C,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrB,kBAAkB,CAAC,IAAI,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,oBAAoB;IACnC,yEAAyE;IACzE,KAAK,EAAE,SAAS,CAAC;IACjB,wEAAwE;IACxE,MAAM,EAAE;QACN,MAAM,EAAE,SAAS,CAAC;QAClB,MAAM,EAAE,SAAS,CAAC;QAClB,KAAK,EAAE,QAAQ,CAAC;QAChB,SAAS,EAAE,YAAY,CAAC;KACzB,CAAC;IACF,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,sEAAsE;AACtE,qBAAa,mBAAoB,SAAQ,KAAK;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM;gBAAV,EAAE,EAAE,MAAM,EAAE,MAAM,SAA+B;CAIvE;AAID;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,oBAAoB,GAC5B,CAAC,IAAI,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,CA+KhD"}
1
+ {"version":3,"file":"grid-host-calls.d.ts","sourceRoot":"","sources":["../../src/grid-mods/grid-host-calls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG;QAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACtF,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChF;;;OAGG;IACH,WAAW,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACrG;;;;OAIG;IACH,kBAAkB,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACpE,QAAQ,CAAC,CAAC,KAAK,EAAE;QACf,KAAK,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC3C,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrB,kBAAkB,CAAC,IAAI,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,oBAAoB;IACnC,yEAAyE;IACzE,KAAK,EAAE,SAAS,CAAC;IACjB,wEAAwE;IACxE,MAAM,EAAE;QACN,MAAM,EAAE,SAAS,CAAC;QAClB,MAAM,EAAE,SAAS,CAAC;QAClB,KAAK,EAAE,QAAQ,CAAC;QAChB,gEAAgE;QAChE,OAAO,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;KACxC,CAAC;IACF,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,sEAAsE;AACtE,qBAAa,mBAAoB,SAAQ,KAAK;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM;gBAAV,EAAE,EAAE,MAAM,EAAE,MAAM,SAA+B;CAIvE;AAID;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,oBAAoB,GAC5B,CAAC,IAAI,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,CA6JhD"}
@@ -8,13 +8,12 @@ export class GridHostCallRefused extends Error {
8
8
  }
9
9
  const SPATIAL_KINDS = new Set(['actor', 'client_event', 'server_event', 'text']);
10
10
  /**
11
- * The page-side answer to every CLIENT host call in the platform catalog,
12
- * through ordinary CrowdyJS confined to one grid (DN-10 §4). Hand the result
13
- * to `PlayerCodeBroker({ onHostCall })`; the broker has already applied the
14
- * allowlist, rate caps and chunk clamps, and answers `grid_info`, `emit_event`,
15
- * `hud_set` and `overlay_draw` itself. A ck-exec CLIENT half (`engine:
16
- * 'ck-exec'`) reaches only the crowdy-client-sdk calls: the model and sessions
17
- * cases below serve legacy CLIENT modules until 18.0.
11
+ * The page-side answer to a CLIENT half's host calls (`EXEC_CLIENT_HOST_CALLS`,
12
+ * what crowdy-client-sdk wraps), through ordinary CrowdyJS confined to one grid
13
+ * (DN-10 §4). Hand the result to `PlayerCodeBroker({ onHostCall })`; the broker
14
+ * has already applied the allowlist, the player's consent, rate caps and chunk
15
+ * clamps, and answers `grid_info`, `emit_event`, `hud_set` and `overlay_draw`
16
+ * itself.
18
17
  */
19
18
  export function createGridHostCalls(options) {
20
19
  const { scope, client, local } = options;
@@ -134,44 +133,35 @@ export function createGridHostCalls(options) {
134
133
  }
135
134
  return scope.channels.send(channelId, uuid(args), String(args.payloadBase64 ?? ''));
136
135
  }
137
- case 'container_create':
138
- return scope.model.create({
139
- typeKey: typeof args.typeName === 'string' ? args.typeName : undefined,
140
- displayName: typeof args.displayName === 'string' ? args.displayName : undefined,
141
- stateJson: JSON.stringify(args.state ?? args.properties ?? {}),
142
- });
143
- case 'container_get':
144
- return scope.model.container(String(args.containerId));
145
- case 'container_get_by_key':
146
- // Binding keys are a server game-model concept. Grid containers have none.
147
- throw new GridHostCallRefused(fn, 'server-only');
148
- case 'container_get_batch': {
149
- const ids = Array.isArray(args.containerIds) ? args.containerIds.slice(0, 32) : [];
150
- const found = await Promise.all(ids.map((id) => scope.model.container(String(id)).catch(() => null)));
151
- return found.filter((c) => c != null);
136
+ case 'avatar_state_get': {
137
+ const avatarId = decimalId(args.avatarId);
138
+ if (!avatarId)
139
+ throw new GridHostCallRefused(fn, 'needs an avatar id');
140
+ if (!local?.avatarChunk || !client.avatars)
141
+ throw new GridHostCallRefused(fn);
142
+ const at = await local.avatarChunk(avatarId);
143
+ if (!at || !scope.contains(at)) {
144
+ throw new GridHostCallRefused(fn, 'names an avatar with no live actor in this grid');
145
+ }
146
+ return client.avatars.appState(appId, avatarId);
152
147
  }
153
- case 'containers_list':
154
- return scope.model.containers();
155
- case 'container_delete':
156
- return scope.model.delete(String(args.containerId));
157
- case 'property_set':
158
- return scope.model.set({
159
- containerId: String(args.containerId),
160
- propertyKey: String(args.key),
161
- valueJson: JSON.stringify(args.value ?? null),
162
- });
163
- case 'model_invoke':
164
- if (!options.allowModelInvoke)
148
+ case 'grid_permission_check': {
149
+ const player = decimalId(options.userId);
150
+ if (!local?.gridPermissionKeys || !player)
165
151
  throw new GridHostCallRefused(fn);
166
- return client.gameModel.invoke({
167
- appId,
168
- functionName: String(args.functionName),
169
- selfContainerId: String(args.selfContainerId),
170
- paramsJson: JSON.stringify(args.params ?? {}),
171
- ...(typeof args.sessionId === 'string' ? { sessionId: args.sessionId } : {}),
172
- });
173
- case 'sessions_list':
174
- return scope.sessions.list(typeof args.status === 'string' ? { status: args.status } : {});
152
+ const gridId = decimalId(args.gridId);
153
+ if (!gridId || gridId !== decimalId(scope.gridId)) {
154
+ throw new GridHostCallRefused(fn, 'names another grid');
155
+ }
156
+ if (decimalId(args.userId) !== player) {
157
+ throw new GridHostCallRefused(fn, 'asks about another player');
158
+ }
159
+ const key = args.permissionKey;
160
+ if (typeof key !== 'string' || !PERMISSION_KEY.test(key)) {
161
+ throw new GridHostCallRefused(fn, 'needs a permission key');
162
+ }
163
+ return new Set(await local.gridPermissionKeys()).has(key);
164
+ }
175
165
  case 'user_state_get':
176
166
  return client.state.getOne(appId);
177
167
  case 'user_state_set':
@@ -184,13 +174,17 @@ export function createGridHostCalls(options) {
184
174
  throw new GridHostCallRefused(fn);
185
175
  return local.drainPointerClicks();
186
176
  default:
187
- // edge_*, grid_state_*, avatar_state_get and grid_permission_check have
188
- // no browser GraphQL surface yet: the server host answers them for
189
- // SERVER mods.
190
177
  throw new GridHostCallRefused(fn);
191
178
  }
192
179
  };
193
180
  }
181
+ /** As the runtime permission keys (`runtimePermissions`): lowercase, digits and `_`. */
182
+ const PERMISSION_KEY = /^[a-z][a-z0-9_]{0,63}$/;
183
+ /** A positive decimal id (BigInt as a decimal string, or a safe integer), normalized; else null. */
184
+ function decimalId(value) {
185
+ const text = typeof value === 'string' ? value : typeof value === 'number' && Number.isSafeInteger(value) ? String(value) : '';
186
+ return /^[1-9][0-9]{0,19}$/.test(text) ? text : null;
187
+ }
194
188
  function coords(x, y, z) {
195
189
  return [BigInt(x), BigInt(y), BigInt(z)];
196
190
  }
@@ -1,23 +1,23 @@
1
- import { type PlayerCodeEngine, type PlayerCodePresentation } from '../player-runtime/player-code-broker.js';
1
+ import { type PlayerCodeEngine, type PlayerCodeLogLine, type PlayerCodePresentation } from '../player-runtime/player-code-broker.js';
2
2
  import type { GridProgramPort } from '../grid-program/protocol.js';
3
3
  import type { GridScope } from '../grid-scope.js';
4
4
  import { type GridHostCallsOptions, type GridHostLocal } from './grid-host-calls.js';
5
5
  /**
6
- * A Rust CLIENT mod: platform-built WASM run in the tokenless glue worker. A ck-exec mod's
7
- * CLIENT half is `engine: 'ck-exec'` with the `digest`, `fuelPerDispatch`, `tickIntervalMs` and
8
- * summary host calls of `exec.modClientArtifactBytes` (`ExecClientHalves` runs a whole grid's).
6
+ * A ck-exec mod's CLIENT half: platform-built WASM run in the tokenless glue worker, with the
7
+ * `digest` (as `artifactHash`), `fuelPerDispatch`, `tickIntervalMs` and summary host calls of
8
+ * `exec.modClientArtifactBytes` (`ExecClientHalves` runs a whole grid's).
9
9
  */
10
10
  export interface WasmGridModSpec {
11
11
  kind: 'wasm';
12
12
  moduleName: string;
13
13
  artifact: ArrayBuffer;
14
- artifactHash?: string;
15
- fuelPerDispatch?: bigint;
14
+ artifactHash: string;
15
+ fuelPerDispatch: bigint;
16
16
  tickIntervalMs?: number;
17
- /** Default `'player-compute'`, a legacy CLIENT module. */
17
+ /** `'ck-exec'`, the only engine. */
18
18
  engine?: PlayerCodeEngine;
19
- /** A CLIENT half's `capabilitySummary.hostFunctions`; required with `engine: 'ck-exec'`. */
20
- consentedHostCalls?: readonly string[];
19
+ /** The CLIENT half's `capabilitySummary.hostFunctions` the player consented to. */
20
+ consentedHostCalls: readonly string[];
21
21
  /** The platform glue worker URL (`@crowdedkingdoms/crowdyjs/player-glue-worker`). */
22
22
  workerUrl: string | URL;
23
23
  }
@@ -40,18 +40,25 @@ export interface StartGridModOptions {
40
40
  graphqlUrl?: string;
41
41
  graphqlWsUrl?: string;
42
42
  local?: GridHostLocal;
43
- allowModelInvoke?: boolean;
43
+ /** Forwarded to `createGridHostCalls`: the visiting player, for `grid_permission_check`. */
44
+ userId?: string;
44
45
  onPresentation?: (presentation: PlayerCodePresentation) => void;
46
+ /** A CLIENT half's `crowdy::log` lines, bounded by the broker. Render them as text. */
47
+ onLog?: (line: PlayerCodeLogLine) => void;
45
48
  onStopped?: (reason: string) => void;
46
49
  }
47
50
  export interface RunningGridMod {
48
51
  kind: GridModSpec['kind'];
49
52
  moduleName: string;
50
53
  stop(): void;
54
+ /** A CLIENT half's `handle_invoke` (`PlayerCodeBroker.invoke`); absent for a grid program. */
55
+ invoke?(payload: Uint8Array, options?: {
56
+ timeoutMs?: number;
57
+ }): Promise<Uint8Array>;
51
58
  }
52
59
  /**
53
60
  * One way to run player code inside a grid, whatever it is written in (DN-10
54
- * §4-5). Rust CLIENT mods get the full client host catalog through
61
+ * §4-5). A ck-exec CLIENT half gets the host calls it was consented through
55
62
  * {@link createGridHostCalls}; JS grid programs get real CrowdyJS through a
56
63
  * grid-token relay. Both are confined to `scope`'s grid, locally for UX and by
57
64
  * the server for authority.
@@ -1 +1 @@
1
- {"version":3,"file":"mod-runtime.d.ts","sourceRoot":"","sources":["../../src/grid-mods/mod-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC5B,MAAM,yCAAyC,CAAC;AAEjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,4FAA4F;IAC5F,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,qFAAqF;IACrF,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC;CACzB;AAED,uEAAuE;AACvE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,IAAI,EAAE,eAAe,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,kBAAkB,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,WAAW,CAAC;IAClB,qFAAqF;IACrF,KAAK,EAAE,SAAS,CAAC;IACjB,iEAAiE;IACjE,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACvC,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAChE,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,IAAI,IAAI,CAAC;CACd;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,cAAc,CAAC,CA6CzB"}
1
+ {"version":3,"file":"mod-runtime.d.ts","sourceRoot":"","sources":["../../src/grid-mods/mod-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC5B,MAAM,yCAAyC,CAAC;AAEjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oCAAoC;IACpC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,mFAAmF;IACnF,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,qFAAqF;IACrF,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC;CACzB;AAED,uEAAuE;AACvE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,IAAI,EAAE,eAAe,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,kBAAkB,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,WAAW,CAAC;IAClB,qFAAqF;IACrF,KAAK,EAAE,SAAS,CAAC;IACjB,iEAAiE;IACjE,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACvC,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,4FAA4F;IAC5F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAChE,uFAAuF;IACvF,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC1C,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,IAAI,IAAI,CAAC;IACb,8FAA8F;IAC9F,MAAM,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACrF;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,cAAc,CAAC,CA+CzB"}
@@ -3,7 +3,7 @@ import { hostGridProgram } from '../grid-program/host.js';
3
3
  import { createGridHostCalls, } from './grid-host-calls.js';
4
4
  /**
5
5
  * One way to run player code inside a grid, whatever it is written in (DN-10
6
- * §4-5). Rust CLIENT mods get the full client host catalog through
6
+ * §4-5). A ck-exec CLIENT half gets the host calls it was consented through
7
7
  * {@link createGridHostCalls}; JS grid programs get real CrowdyJS through a
8
8
  * grid-token relay. Both are confined to `scope`'s grid, locally for UX and by
9
9
  * the server for authority.
@@ -27,9 +27,10 @@ export async function startGridMod(options) {
27
27
  scope,
28
28
  client: options.client,
29
29
  local: options.local,
30
- allowModelInvoke: options.allowModelInvoke,
30
+ ...(options.userId !== undefined ? { userId: options.userId } : {}),
31
31
  }),
32
32
  onPresentation: options.onPresentation,
33
+ onLog: options.onLog,
33
34
  onCircuitOpen: (reason) => options.onStopped?.(reason),
34
35
  });
35
36
  await broker.start(spec.artifact);
@@ -37,6 +38,7 @@ export async function startGridMod(options) {
37
38
  kind: 'wasm',
38
39
  moduleName: spec.moduleName,
39
40
  stop: () => broker.stop(),
41
+ invoke: (payload, invokeOptions) => broker.invoke(payload, invokeOptions),
40
42
  };
41
43
  }
42
44
  if (!options.graphqlUrl || !options.graphqlWsUrl) {
@@ -1,11 +1,6 @@
1
1
  import type { GridsAPI, GridChannel, GridToken } from './domains/grids.js';
2
- import type { GameModelAPI } from './domains/gameModel.js';
3
- import type { PlayerModelAPI } from './domains/playerModel.js';
4
- import type { PlayerComputeAPI } from './domains/playerCompute.js';
5
2
  import type { ChannelsAPI } from './domains/channels.js';
6
3
  import type { UdpAPI } from './domains/udp.js';
7
- import type { MarketplaceAPI } from './domains/marketplace.js';
8
- import type { GameModelCreateSessionMutationVariables, PlayerComputeDeployMutationVariables, PlayerModelCreateContainerMutationVariables, PlayerModelSetPropertyMutationVariables } from './generated/graphql.js';
9
4
  /** A chunk address as CrowdyJS passes it on the wire (decimal strings). */
10
5
  export interface GridChunk {
11
6
  x: string | number | bigint;
@@ -27,12 +22,8 @@ export interface GridBox {
27
22
  /** The domain clients a GridScope binds (a CrowdyClient satisfies this). */
28
23
  export interface GridScopeClients {
29
24
  grids: GridsAPI;
30
- gameModel: GameModelAPI;
31
- playerModel: PlayerModelAPI;
32
- playerCompute: PlayerComputeAPI;
33
25
  channels: ChannelsAPI;
34
26
  udp: UdpAPI;
35
- marketplace: MarketplaceAPI;
36
27
  }
37
28
  /** Thrown locally, before any request, when a call would leave the grid. */
38
29
  export declare class GridScopeError extends Error {
@@ -102,186 +93,6 @@ export declare class GridScope {
102
93
  leave: (channelId: string) => Promise<boolean>;
103
94
  send: (channelId: string, uuid: string, payloadBase64: string) => Promise<boolean>;
104
95
  };
105
- /** Sessions hosted inside this grid (games within the game). */
106
- readonly sessions: {
107
- list: (options?: {
108
- status?: string;
109
- limit?: number;
110
- }) => Promise<{
111
- __typename?: "GmSession";
112
- sessionId: string;
113
- appId: string;
114
- name: string | null;
115
- status: string;
116
- createdByUserId: string | null;
117
- currentTurnUserId: string | null;
118
- metadataJson: string;
119
- admission: string;
120
- maxParticipants: number | null;
121
- participantCount: number;
122
- hostUserId: string | null;
123
- hostTerm: number;
124
- revision: string;
125
- endedAt: string | null;
126
- endReason: string | null;
127
- createdAt: string;
128
- presence: string;
129
- gridId: string | null;
130
- seededContainerCount: number | null;
131
- }[]>;
132
- create: (input?: Omit<GameModelCreateSessionMutationVariables["input"], "appId" | "gridId">) => Promise<{
133
- __typename?: "GmSession";
134
- sessionId: string;
135
- appId: string;
136
- name: string | null;
137
- status: string;
138
- createdByUserId: string | null;
139
- currentTurnUserId: string | null;
140
- metadataJson: string;
141
- admission: string;
142
- maxParticipants: number | null;
143
- participantCount: number;
144
- hostUserId: string | null;
145
- hostTerm: number;
146
- revision: string;
147
- endedAt: string | null;
148
- endReason: string | null;
149
- createdAt: string;
150
- presence: string;
151
- gridId: string | null;
152
- seededContainerCount: number | null;
153
- }>;
154
- join: (sessionId: string, options?: {
155
- role?: string;
156
- actorUuid?: string;
157
- }) => Promise<{
158
- __typename?: "GmSessionParticipant";
159
- sessionId: string;
160
- userId: string;
161
- role: string;
162
- state: string;
163
- incarnation: number;
164
- actorUuid: string | null;
165
- joinedAt: string;
166
- leftAt: string | null;
167
- leftReason: string | null;
168
- }>;
169
- leave: (sessionId: string, incarnation: number) => Promise<{
170
- __typename?: "GmSessionParticipant";
171
- sessionId: string;
172
- userId: string;
173
- role: string;
174
- state: string;
175
- incarnation: number;
176
- actorUuid: string | null;
177
- joinedAt: string;
178
- leftAt: string | null;
179
- leftReason: string | null;
180
- }>;
181
- };
182
- /** The player-tier Game Model of this grid. */
183
- readonly model: {
184
- containers: () => Promise<{
185
- __typename?: "PlayerModelContainer";
186
- containerId: string;
187
- appId: string;
188
- gridId: string;
189
- ownerUserId: string;
190
- typeKey: string;
191
- displayName: string | null;
192
- stateJson: string;
193
- propertiesJson: string;
194
- createdAt: string;
195
- updatedAt: string;
196
- }[]>;
197
- container: (containerId: string) => Promise<{
198
- __typename?: "PlayerModelContainer";
199
- containerId: string;
200
- appId: string;
201
- gridId: string;
202
- ownerUserId: string;
203
- typeKey: string;
204
- displayName: string | null;
205
- stateJson: string;
206
- propertiesJson: string;
207
- createdAt: string;
208
- updatedAt: string;
209
- } | null>;
210
- create: (input: Omit<PlayerModelCreateContainerMutationVariables["input"], "appId" | "gridId">) => Promise<{
211
- __typename?: "PlayerModelContainer";
212
- containerId: string;
213
- appId: string;
214
- gridId: string;
215
- ownerUserId: string;
216
- typeKey: string;
217
- displayName: string | null;
218
- stateJson: string;
219
- propertiesJson: string;
220
- createdAt: string;
221
- updatedAt: string;
222
- }>;
223
- set: (input: Omit<PlayerModelSetPropertyMutationVariables["input"], "appId" | "gridId">) => Promise<{
224
- __typename?: "PlayerModelContainer";
225
- containerId: string;
226
- appId: string;
227
- gridId: string;
228
- ownerUserId: string;
229
- typeKey: string;
230
- displayName: string | null;
231
- stateJson: string;
232
- propertiesJson: string;
233
- createdAt: string;
234
- updatedAt: string;
235
- }>;
236
- delete: (containerId: string) => Promise<boolean>;
237
- };
238
- /** Player compute on this grid (SERVER/CLIENT modules). */
239
- readonly compute: {
240
- deploy: (input: Omit<PlayerComputeDeployMutationVariables["input"], "appId" | "gridId">) => Promise<{
241
- __typename?: "PlayerWasmModuleVersion";
242
- versionId: string;
243
- moduleId: string;
244
- versionNo: number;
245
- target: import("./index.js").PlayerComputeTarget;
246
- sourceFilesJson: string | null;
247
- openSource: boolean;
248
- compileStatus: string;
249
- compileLog: string | null;
250
- compiledSizeBytes: string | null;
251
- projectId: string | null;
252
- sourceRevision: string | null;
253
- githubCommitSha: string | null;
254
- createdAt: string;
255
- }>;
256
- invoke: (moduleName: string, exportName: string, params?: unknown) => Promise<{
257
- __typename?: "PlayerComputeInvokeResult";
258
- resultBase64: string;
259
- resultJson: string | null;
260
- fuelUsed: string;
261
- durationUs: number;
262
- }>;
263
- /** @deprecated Superseded by `client.exec.gridClientMods(appId, gridId)`; removed in 18.0. */
264
- clientMods: () => Promise<{
265
- __typename?: "GridClientMod";
266
- attachmentId: string;
267
- listingId: string | null;
268
- listingName: string;
269
- versionId: string | null;
270
- sourceKind: string;
271
- authorKind: import("./generated/graphql.js").PlayerCodeOwnerKind;
272
- authorRef: string;
273
- serverVersionId: string | null;
274
- clientVersionId: string | null;
275
- clientArtifactHash: string;
276
- gridId: string;
277
- capabilitySummaryJson: string;
278
- capabilityHash: string;
279
- authorCapabilitySummaryJson: string;
280
- authorCapabilityHash: string;
281
- callerConsented: boolean;
282
- callerTrustsAuthor: boolean;
283
- }[]>;
284
- };
285
96
  /**
286
97
  * Replication that ORIGINATES in the grid. Each send checks its chunk
287
98
  * locally, then goes out as the ordinary udp call; reach still follows
@@ -1 +1 @@
1
- {"version":3,"file":"grid-scope.d.ts","sourceRoot":"","sources":["../src/grid-scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grid-scope.d.ts","sourceRoot":"","sources":["../src/grid-scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,2EAA2E;AAC3E,MAAM,WAAW,SAAS;IACxB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC5B,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC5B,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,IAAI,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,WAAW,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,4EAA4E;AAC5E,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;GASG;AACH,qBAAa,SAAS;IAIlB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM;IALzB,OAAO,CAAC,GAAG,CAAiB;gBAGT,OAAO,EAAE,gBAAgB,EACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACvB,GAAG,CAAC,EAAE,OAAO;IAKf,uEAAuE;IACvE,IAAI,MAAM,IAAI,OAAO,GAAG,IAAI,CAE3B;IAED,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAgBnC,6EAA6E;IAC7E,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAatC,mEAAmE;IAC7D,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAqBxD,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ;oBACL,OAAO,CAAC,WAAW,EAAE,CAAC;uBAGxB,MAAM,YACH;YAAE,WAAW,CAAC,EAAE,MAAM,CAAC;YAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAAC,cAAc,CAAC,EAAE,OAAO,CAAA;SAAE;;;;;;;;;;;;;;0BAQtE,MAAM;;;;;;;;0BAkCim+jB,CAAC;;;;;;;;2BAjCvm+jB,MAAM;0BACP,MAAM,QAAQ,MAAM,iBAAiB,MAAM;MAM7D;IAEF;;;;OAIG;IACH,QAAQ,CAAC,IAAI;6BACU,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;6BAIvD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;sBAI9D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;6BAI/C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;MAI5E;CACH"}