@kradle/challenges-sdk 0.12.0 → 0.13.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 (85) hide show
  1. package/CHANGELOG.md +67 -1
  2. package/LLM_README.md +285 -192
  3. package/MIGRATION-0.13.md +109 -0
  4. package/README.md +97 -88
  5. package/dist/engine.d.ts +8 -0
  6. package/dist/engine.d.ts.map +1 -0
  7. package/dist/engine.js +17 -0
  8. package/dist/engine.js.map +1 -0
  9. package/dist/index.d.ts +19 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +42 -16
  12. package/dist/index.js.map +1 -1
  13. package/dist/runtime/builder.d.ts +32 -0
  14. package/dist/runtime/builder.d.ts.map +1 -0
  15. package/dist/runtime/builder.js +357 -0
  16. package/dist/runtime/builder.js.map +1 -0
  17. package/dist/runtime/errors.d.ts +61 -0
  18. package/dist/runtime/errors.d.ts.map +1 -0
  19. package/dist/runtime/errors.js +71 -0
  20. package/dist/runtime/errors.js.map +1 -0
  21. package/dist/runtime/reducer.d.ts +205 -0
  22. package/dist/runtime/reducer.d.ts.map +1 -0
  23. package/dist/runtime/reducer.js +2025 -0
  24. package/dist/runtime/reducer.js.map +1 -0
  25. package/dist/runtime/rules.d.ts +29 -0
  26. package/dist/runtime/rules.d.ts.map +1 -0
  27. package/dist/runtime/rules.js +23 -0
  28. package/dist/runtime/rules.js.map +1 -0
  29. package/dist/runtime/sandbox.d.ts +2 -1
  30. package/dist/runtime/sandbox.d.ts.map +1 -1
  31. package/dist/runtime/sandbox.js +7 -4
  32. package/dist/runtime/sandbox.js.map +1 -1
  33. package/dist/runtime/time.d.ts +33 -0
  34. package/dist/runtime/time.d.ts.map +1 -0
  35. package/dist/runtime/time.js +53 -0
  36. package/dist/runtime/time.js.map +1 -0
  37. package/dist/runtime/types.d.ts +963 -0
  38. package/dist/runtime/types.d.ts.map +1 -0
  39. package/dist/runtime/types.js +25 -0
  40. package/dist/runtime/types.js.map +1 -0
  41. package/dist/runtime/wire.d.ts +858 -0
  42. package/dist/runtime/wire.d.ts.map +1 -0
  43. package/dist/runtime/wire.js +28 -0
  44. package/dist/runtime/wire.js.map +1 -0
  45. package/dist/runtime/world.d.ts +58 -3
  46. package/dist/runtime/world.d.ts.map +1 -1
  47. package/dist/runtime/world.js +12 -0
  48. package/dist/runtime/world.js.map +1 -1
  49. package/dist/structures.d.ts +119 -0
  50. package/dist/structures.d.ts.map +1 -0
  51. package/dist/structures.js +279 -0
  52. package/dist/structures.js.map +1 -0
  53. package/dist/test/harness.d.ts +133 -29
  54. package/dist/test/harness.d.ts.map +1 -1
  55. package/dist/test/harness.js +191 -66
  56. package/dist/test/harness.js.map +1 -1
  57. package/dist/test/helpers.d.ts +3 -2
  58. package/dist/test/helpers.d.ts.map +1 -1
  59. package/dist/test/helpers.js +2 -2
  60. package/dist/test/helpers.js.map +1 -1
  61. package/package.json +30 -7
  62. package/dist/runtime/examples/capture-the-flag.d.ts +0 -33
  63. package/dist/runtime/examples/capture-the-flag.d.ts.map +0 -1
  64. package/dist/runtime/examples/capture-the-flag.js +0 -79
  65. package/dist/runtime/examples/capture-the-flag.js.map +0 -1
  66. package/dist/runtime/examples/climb.d.ts +0 -34
  67. package/dist/runtime/examples/climb.d.ts.map +0 -1
  68. package/dist/runtime/examples/climb.js +0 -54
  69. package/dist/runtime/examples/climb.js.map +0 -1
  70. package/dist/runtime/examples/four-bridges.d.ts +0 -107
  71. package/dist/runtime/examples/four-bridges.d.ts.map +0 -1
  72. package/dist/runtime/examples/four-bridges.js +0 -294
  73. package/dist/runtime/examples/four-bridges.js.map +0 -1
  74. package/dist/runtime/examples/herding.d.ts +0 -59
  75. package/dist/runtime/examples/herding.d.ts.map +0 -1
  76. package/dist/runtime/examples/herding.js +0 -181
  77. package/dist/runtime/examples/herding.js.map +0 -1
  78. package/dist/runtime/examples/skywars.d.ts +0 -116
  79. package/dist/runtime/examples/skywars.d.ts.map +0 -1
  80. package/dist/runtime/examples/skywars.js +0 -253
  81. package/dist/runtime/examples/skywars.js.map +0 -1
  82. package/dist/runtime/sdk.d.ts +0 -1038
  83. package/dist/runtime/sdk.d.ts.map +0 -1
  84. package/dist/runtime/sdk.js +0 -1271
  85. package/dist/runtime/sdk.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Fake = exports.Game = exports.canonical = void 0;
3
+ exports.Fake = exports.Game = exports.defaultPosition = exports.canonical = void 0;
4
4
  exports.sandboxed = sandboxed;
5
5
  // A stand-in arena for tests. It feeds events, collects actions, keeps the event
6
6
  // log, and checks on every reduction that the reducer is pure, deterministic, and
@@ -8,7 +8,22 @@ exports.sandboxed = sandboxed;
8
8
  // throws plain errors, so it runs under node:test, vitest, bun test or jest.
9
9
  const node_fs_1 = require("node:fs");
10
10
  const sandbox_registry_js_1 = require("../runtime/sandbox-registry.js");
11
- const sdk_js_1 = require("../runtime/sdk.js");
11
+ const time_js_1 = require("../runtime/time.js");
12
+ const wire_js_1 = require("../runtime/wire.js");
13
+ const world_js_1 = require("../runtime/world.js");
14
+ /** `isActive` is a non-enumerable getter the reducer re-attaches after a JSON round trip; the harness does the same. */
15
+ function attachDerived(state) {
16
+ for (const p of Object.values(state.players)) {
17
+ Object.defineProperty(p, "isActive", {
18
+ get() {
19
+ return !this.eliminated;
20
+ },
21
+ enumerable: false,
22
+ configurable: true,
23
+ });
24
+ }
25
+ return state;
26
+ }
12
27
  /** JSON with sorted keys, so key order never counts as a difference. */
13
28
  const canonical = (v) => JSON.stringify(v, (_k, x) => x && typeof x === "object" && !Array.isArray(x) ? Object.fromEntries(Object.entries(x).sort()) : x);
14
29
  exports.canonical = canonical;
@@ -58,14 +73,22 @@ async function sandboxed(challenge) {
58
73
  }
59
74
  return loaded;
60
75
  }
76
+ /** Where `begin` puts a participant without an `at`: a row along x, two blocks apart. */
77
+ const defaultPosition = (index) => ({ x: index * 2, y: -60, z: 0 });
78
+ exports.defaultPosition = defaultPosition;
79
+ /** A fake engine around one challenge: feeds events, keeps the state, records the actions. */
61
80
  class Game {
62
81
  challenge;
63
- state;
82
+ /** The whole reducer state: the SDK's fields, the players, the votes, the mirror. */
83
+ reducerState;
84
+ /** Every event dispatched so far. */
64
85
  log = [];
86
+ /** Every action returned so far. */
65
87
  actions = [];
88
+ /** The actions of the last dispatch. */
66
89
  last = [];
67
- /** The harness's tick step, a test setting: server ticks arrive in steps of 4 here (the arena sends every 2 ticks by default). */
68
- step = 4;
90
+ /** The harness's tick step, a test setting. The arena sends every server tick, so the default is 1. */
91
+ step = 1;
69
92
  attempts = 0;
70
93
  /** The state this game started from: `init()`, or the checkpoint of `resume`. `replay` starts here. */
71
94
  origin;
@@ -74,14 +97,37 @@ class Game {
74
97
  constructor(challenge, state) {
75
98
  this.challenge = challenge;
76
99
  requireBundleUnderTheCommand(challenge);
77
- this.state = (state ?? challenge.init());
78
- this.origin = JSON.stringify(this.state);
100
+ this.reducerState = attachDerived(state ?? challenge.init());
101
+ this.origin = JSON.stringify(this.reducerState);
102
+ }
103
+ /** The shared challenge data (`g.state` in a rule). */
104
+ get state() {
105
+ return this.reducerState.game;
106
+ }
107
+ /** The current phase; `null` before the first entry and without phases. */
108
+ get phase() {
109
+ return this.reducerState.phase;
110
+ }
111
+ /** The run's stage. */
112
+ get status() {
113
+ return this.reducerState.status;
79
114
  }
115
+ /** One participant's reducer record: observations, `state`, `score`. */
116
+ participant(name) {
117
+ const p = this.reducerState.players[name];
118
+ if (!p)
119
+ throw new Error(`"${name}" is not a participant (roster: ${Object.keys(this.reducerState.players).join(", ")})`);
120
+ return p;
121
+ }
122
+ /** One reduction. Asserts that `reduce` did not mutate its input. */
80
123
  dispatch(event) {
81
- const before = JSON.stringify(this.state);
82
- const a = this.challenge.reduce(this.state, event);
83
- assertEqual(JSON.stringify(this.state), before, "reduce() mutated its input state");
84
- this.state = JSON.parse(JSON.stringify(a.state)); // a checkpoint is a JSON string
124
+ const before = JSON.stringify(this.reducerState);
125
+ const a = this.challenge.reduce(this.reducerState, event);
126
+ assertEqual(JSON.stringify(this.reducerState), before, "reduce() mutated its input state");
127
+ // The arena posts the actions to its main thread: a value the structured clone refuses (a Proxy
128
+ // view, a function) would kill the run there, so the harness refuses it here.
129
+ structuredClone(a.actions);
130
+ this.reducerState = attachDerived(JSON.parse(JSON.stringify(a.state))); // a checkpoint is a JSON string
85
131
  this.log.push(event);
86
132
  this.last = a.actions;
87
133
  this.actions.push(...a.actions);
@@ -89,29 +135,30 @@ class Game {
89
135
  }
90
136
  /** Ticks in steps of `step`, and lands exactly on `serverTick` (the last step is shorter when needed). */
91
137
  tickTo(serverTick) {
92
- for (let t = this.state.tick + this.step; t <= serverTick; t += this.step)
138
+ for (let t = this.reducerState.tick + this.step; t <= serverTick; t += this.step)
93
139
  this.dispatch({ type: "tick", serverTick: t });
94
- if (this.state.tick < serverTick)
140
+ if (this.reducerState.tick < serverTick)
95
141
  this.dispatch({ type: "tick", serverTick });
96
142
  }
143
+ /** Advances `n` engine steps of `step` ticks each. */
97
144
  tick(n = 1) {
98
- this.tickTo(this.state.tick + n * this.step);
145
+ this.tickTo(this.reducerState.tick + n * this.step);
99
146
  }
100
147
  /** Advance by a duration: "35s", "2m", or ticks. */
101
148
  after(d) {
102
- this.tickTo(this.state.tick + (0, sdk_js_1.toTicks)(d));
149
+ this.tickTo(this.reducerState.tick + (0, time_js_1.toTicks)(d));
103
150
  }
104
151
  /** Advance until `d` after game start. */
105
152
  at(d) {
106
- this.tickTo(this.state.startTick + (0, sdk_js_1.toTicks)(d));
153
+ this.tickTo(this.reducerState.startTick + (0, time_js_1.toTicks)(d));
107
154
  }
108
155
  /**
109
- * run_started, every join, the first tick, and the setup confirmation when the
110
- * challenge has a setup. A roster entry is a role (`{ alice: "climber" }`), or the
111
- * role with the player's position and sample fields (`{ alice: { role: "climber",
112
- * at: { x: 0, y: -60, z: 0 } } }`): the first tick then carries that sample, so
113
- * `start` and the setup see the position, as they do in the arena. Without `at`
114
- * the position stays null until the first `moveTo`.
156
+ * run_started, every join, the first tick with every participant's position, and the setup
157
+ * confirmations when the challenge has a setup. A roster entry is a role (`{ alice: "climber" }`),
158
+ * or the role with the player's position and sample fields (`{ alice: { role: "climber",
159
+ * at: { x: 0, y: -60, z: 0 } } }`). Without `at` a participant gets `defaultPosition(i)`, so the
160
+ * initializers and `start` see a position, as they do in the arena. `positions: false` sends no
161
+ * sample: the run stays in CONNECTING until a test moves every player.
115
162
  */
116
163
  begin(seed, participants, opts = {}) {
117
164
  const entries = Object.entries(participants).map(([name, entry]) => [name, typeof entry === "string" ? { role: entry } : entry]);
@@ -120,40 +167,60 @@ class Game {
120
167
  seed,
121
168
  participants: entries.map(([name, e]) => ({ name, role: e.role })),
122
169
  params: opts.params ?? {},
123
- capabilities: opts.capabilities ?? sdk_js_1.ALL_CAPABILITIES,
170
+ capabilities: opts.capabilities ?? wire_js_1.ALL_CAPABILITIES,
124
171
  locations: opts.locations,
125
172
  markers: opts.markers,
126
173
  });
127
174
  for (const [name] of entries)
128
175
  this.dispatch({ type: "player_joined", name });
129
- // Every entry that carries a sample field (a position, a game mode, health...) goes into the first tick.
130
- const samples = entries
131
- .filter(([, e]) => Object.keys(e).length > 1)
132
- .map(([name, { role: _role, at, ...rest }]) => ({ name, participant: true, pos: at, ...rest }));
133
- if (samples.length > 0)
134
- this.dispatch({ type: "tick", serverTick: this.state.tick + this.step, players: samples });
135
- else
136
- this.tick();
137
- if (this.of("batch").some((b) => b.id === "setup")) {
138
- const ok = opts.setupOk ?? true;
176
+ if (opts.positions === false)
177
+ return this;
178
+ const samples = entries.map(([name, { role: _role, at, ...rest }], i) => ({
179
+ name,
180
+ participant: true,
181
+ pos: at ?? (0, exports.defaultPosition)(i),
182
+ ...rest,
183
+ }));
184
+ this.dispatch({ type: "tick", serverTick: this.reducerState.tick + this.step, players: samples });
185
+ this.confirmSetup(opts.setupOk ?? true);
186
+ return this;
187
+ }
188
+ /** Answers every pending setup batch in order (each confirmation may send the next one), from the reducer state. */
189
+ confirmSetup(ok = true) {
190
+ for (let guard = 0; guard < 1000; guard++) {
191
+ const setup = this.reducerState.setup;
192
+ if (this.reducerState.status !== "SETUP" || !setup)
193
+ return;
139
194
  this.dispatch({
140
195
  type: "effect_result",
141
- id: "setup",
196
+ id: `setup:${setup.confirmed}`,
142
197
  ok,
143
198
  detail: ok ? undefined : "fill #3 failed: unknown block",
199
+ failed: ok ? undefined : [{ index: 3, detail: "unknown block" }],
144
200
  });
201
+ if (!ok)
202
+ return;
145
203
  }
146
- return this;
204
+ throw new Error("confirmSetup: 1000 confirmations and the run is still in SETUP");
205
+ }
206
+ /** Answers a named batch (`g.batch(name, ...)`): the engine ran it, with the failed effects listed. */
207
+ batchResult(name, ok, failed = []) {
208
+ const id = Object.entries(this.reducerState.batches).find(([, n]) => n === name)?.[0];
209
+ if (!id)
210
+ throw new Error(`no pending batch named "${name}"`);
211
+ this.dispatch({ type: "effect_result", id, ok, failed, detail: failed[0]?.detail });
147
212
  }
213
+ /** A scripted participant. */
148
214
  player(name) {
149
215
  return new Fake(this, name);
150
216
  }
217
+ /** A custom server event, with its JSON data. */
151
218
  custom(name, data, player) {
152
219
  return this.dispatch({ type: "custom", name, player, data });
153
220
  }
154
221
  /** Loads the chunks that cover `box` into the mirror: `block` inside the box, air around it. */
155
222
  terrain(box, block, minY = -64, height = 384) {
156
- const { lo, hi } = (0, sdk_js_1.bounds)(box);
223
+ const { lo, hi } = (0, world_js_1.bounds)(box);
157
224
  const out = [];
158
225
  for (let cx = lo.x >> 4; cx <= hi.x >> 4; cx++) {
159
226
  for (let cz = lo.z >> 4; cz <= hi.z >> 4; cz++) {
@@ -189,16 +256,33 @@ class Game {
189
256
  }
190
257
  return out;
191
258
  }
259
+ /** Loads an all-air chunk column at chunk coordinates (`cx`, `cz`). */
260
+ loadChunk(cx, cz, minY = -64) {
261
+ return this.dispatch({ type: "chunk", x: cx, z: cz, minY, sections: [] });
262
+ }
263
+ /** The engine unloaded a chunk: its blocks and containers leave the mirror. */
264
+ unloadChunk(cx, cz) {
265
+ return this.dispatch({ type: "chunk_unloaded", x: cx, z: cz });
266
+ }
192
267
  /** Blocks changed on the server, by anyone or anything. */
193
268
  setBlocks(changes) {
194
269
  return this.dispatch({ type: "blocks_changed", changes });
195
270
  }
271
+ /** The engine filled a box (the plugin's own fill). */
272
+ fillBlocks(from, to, block) {
273
+ return this.dispatch({ type: "blocks_filled", from, to, block });
274
+ }
275
+ /** A non-player entity appeared. */
196
276
  spawnEntity(id, type, at, extra = {}) {
197
277
  return this.dispatch({ type: "entity_spawned", id, entity: type, at, ...extra });
198
278
  }
279
+ /** An entity's reported fields changed. */
280
+ changeEntity(id, fields) {
281
+ return this.dispatch({ type: "entity_changed", id, ...fields });
282
+ }
199
283
  /** Entities moved: they arrive with the next tick, so this advances one engine step. */
200
284
  moveEntities(moves) {
201
- return this.dispatch({ type: "tick", serverTick: this.state.tick + this.step, entities: moves });
285
+ return this.dispatch({ type: "tick", serverTick: this.reducerState.tick + this.step, entities: moves });
202
286
  }
203
287
  /**
204
288
  * One engine tick with several samples at once: participants' positions and
@@ -208,22 +292,23 @@ class Game {
208
292
  sample(players, entities) {
209
293
  return this.dispatch({
210
294
  type: "tick",
211
- serverTick: this.state.tick + this.step,
295
+ serverTick: this.reducerState.tick + this.step,
212
296
  players: players.map((p) => ({ participant: true, ...p })),
213
297
  entities,
214
298
  });
215
299
  }
300
+ /** An entity left the world. */
216
301
  removeEntity(id, cause = "removed", killer) {
217
302
  return this.dispatch({ type: "entity_removed", id, cause, killer });
218
303
  }
219
304
  /**
220
- * The contents of a declared container, as the engine reports them: `items` is the whole
221
- * content (item to count), laid out one item per slot. `by` names the player who had it open;
222
- * `initial` marks the first snapshot (no handler fires for it).
305
+ * A container's contents as the engine reports them: `items` is the whole content (item id to
306
+ * count), one item per slot. `by` names the player who moved the items when the engine is certain;
307
+ * `initial` marks the first snapshot (no handler fires); `removed` reports the block gone.
223
308
  */
224
309
  container(at, items, opts = {}) {
225
310
  const key = `${Math.floor(at.x)},${Math.floor(at.y)},${Math.floor(at.z)}`;
226
- const known = Object.keys(this.state.containers?.[key]?.slots ?? {});
311
+ const known = Object.keys(this.reducerState.containers[key]?.slots ?? {});
227
312
  const slots = [];
228
313
  let slot = 0;
229
314
  for (const [item, count] of Object.entries(items)) {
@@ -240,9 +325,10 @@ class Game {
240
325
  type: "container",
241
326
  at: { ...at },
242
327
  block: opts.block ?? "minecraft:chest",
243
- slots,
328
+ slots: opts.removed ? [] : slots,
244
329
  by: opts.by,
245
330
  initial: opts.initial,
331
+ removed: opts.removed,
246
332
  });
247
333
  }
248
334
  /** A game mode change reported by the engine (the `gamemode` event). */
@@ -253,10 +339,14 @@ class Game {
253
339
  other(name, sample) {
254
340
  return this.dispatch({
255
341
  type: "tick",
256
- serverTick: this.state.tick + this.step,
342
+ serverTick: this.reducerState.tick + this.step,
257
343
  players: [{ name, participant: false, ...sample }],
258
344
  });
259
345
  }
346
+ /** The engine refused one effect. */
347
+ effectFailed(kind, detail, effect, batch) {
348
+ return this.dispatch({ type: "effect_failed", kind, detail, effect, batch });
349
+ }
260
350
  /**
261
351
  * The engine's answer to a walk: the last one requested, or the last one for
262
352
  * `player` (or with `id`) when several are in flight. A walk that was already
@@ -303,6 +393,24 @@ class Game {
303
393
  said() {
304
394
  return this.effectsAll("announce").map((e) => e.message);
305
395
  }
396
+ /** The `game_over` action, once the game ended. */
397
+ result() {
398
+ return this.all("game_over")[0];
399
+ }
400
+ /** Every log line of the run. */
401
+ logs() {
402
+ return this.all("log");
403
+ }
404
+ /** The last value of every metric, global (`""` player key) and per player. */
405
+ metrics() {
406
+ const out = {};
407
+ for (const m of this.all("metric")) {
408
+ const key = m.player ?? "";
409
+ out[key] = out[key] ?? {};
410
+ out[key][m.name] = m.value;
411
+ }
412
+ return out;
413
+ }
306
414
  /**
307
415
  * The same log through the same reducer instance, from the state this game
308
416
  * started with (`init()`, or the checkpoint of `resume`), gives the same final
@@ -318,22 +426,25 @@ class Game {
318
426
  s = r.state;
319
427
  actions.push(...r.actions);
320
428
  }
321
- assertEqual((0, exports.canonical)(s), (0, exports.canonical)(this.state), "replay: final state differs");
429
+ assertEqual((0, exports.canonical)(s), (0, exports.canonical)(this.reducerState), "replay: final state differs");
322
430
  assertEqual((0, exports.canonical)(actions), (0, exports.canonical)(this.actions), "replay: actions differ");
323
431
  }
432
+ /** The state as a JSON string; `Game.resume` continues from it. */
324
433
  checkpoint() {
325
- return JSON.stringify(this.state);
434
+ return JSON.stringify(this.reducerState);
326
435
  }
436
+ /** A game that continues from a checkpoint, as the arena does after a worker restart. */
327
437
  static resume(challenge, json) {
328
438
  return new Game(challenge, JSON.parse(json));
329
439
  }
440
+ /** A fresh attempt id for a vote or give request. */
330
441
  nextAttempt() {
331
442
  return `attempt:${++this.attempts}`;
332
443
  }
333
444
  /** The slot a fake player's item occupies: the one the state shows, else the next free one, for this game only. */
334
445
  slotFor(name, item) {
335
- const slots = (this.state.players[name]?.slots ?? {});
336
- const held = Object.entries(slots).find(([, s]) => s?.item === item);
446
+ const slots = this.reducerState.players[name]?.slots ?? {};
447
+ const held = Object.entries(slots).find(([, s]) => s?.id === item);
337
448
  if (held)
338
449
  return Number(held[0]);
339
450
  const mine = this.slots.get(name) ?? new Map();
@@ -363,50 +474,61 @@ class Fake {
363
474
  this.g = g;
364
475
  this.name = name;
365
476
  }
366
- moveTo(to, extrema) {
367
- const prev = this.g.state.players[this.name]?.pos;
477
+ /** One position sample, as one server tick would carry it. */
478
+ moveTo(to) {
479
+ const prev = this.g.reducerState.players[this.name]?.pos;
368
480
  const pos = { x: prev?.x ?? 0, z: prev?.z ?? 0, ...to };
369
- return this.g.dispatch({
370
- type: "player_moved",
371
- name: this.name,
372
- to: pos,
373
- maxY: extrema?.maxY ?? pos.y,
374
- minY: extrema?.minY ?? pos.y,
375
- });
481
+ return this.g.dispatch({ type: "player_moved", name: this.name, to: pos });
376
482
  }
377
- vote(voteId, option) {
483
+ /** A vote request, as the arena forwards it. `round` stamps the round the arena saw; default: the current one. */
484
+ vote(voteId, option, round) {
378
485
  const attemptId = this.g.nextAttempt();
379
- this.g.dispatch({ type: "vote_attempt", attemptId, name: this.name, voteId, option });
486
+ const stamped = round ?? this.g.reducerState.votes[voteId]?.round;
487
+ this.g.dispatch({ type: "vote_attempt", attemptId, name: this.name, voteId, option, round: stamped });
380
488
  const d = this.g.of("vote_decision").find((x) => x.attemptId === attemptId);
381
489
  if (!d)
382
490
  throw new Error(`no vote_decision for ${attemptId}`);
383
491
  return { accepted: d.accepted, feedback: d.feedback };
384
492
  }
493
+ /** A public chat line. */
385
494
  says(text) {
386
495
  return this.g.dispatch({ type: "chat", from: this.name, text });
387
496
  }
497
+ /** An arm swing: a mining or attack attempt. */
388
498
  swings(animation = "swing") {
389
499
  return this.g.dispatch({ type: "animation", name: this.name, animation });
390
500
  }
501
+ /** Damage taken; `attacker` names another participant. */
391
502
  hurt(amount, cause, attacker) {
392
503
  return this.g.dispatch({ type: "player_damaged", name: this.name, amount, cause, attacker });
393
504
  }
505
+ /** A death; `killer` names another participant. */
394
506
  dies(cause = "fall", killer) {
395
507
  return this.g.dispatch({ type: "player_died", name: this.name, cause, killer });
396
508
  }
509
+ /** A respawn after a death. */
397
510
  respawns() {
398
511
  return this.g.dispatch({ type: "player_respawned", name: this.name });
399
512
  }
513
+ /** The player connected. */
514
+ joins() {
515
+ return this.g.dispatch({ type: "player_joined", name: this.name });
516
+ }
517
+ /** The player disconnected. */
518
+ leaves() {
519
+ return this.g.dispatch({ type: "player_left", name: this.name });
520
+ }
521
+ /** An item picked up from the ground. */
400
522
  picksUp(item, count = 1, at = { x: 0, y: 0, z: 0 }) {
401
523
  return this.g.dispatch({ type: "item_picked_up", name: this.name, item, count, at });
402
524
  }
403
525
  /** The player's inventory now holds `count` of `item`: one slot per item name, in this game. */
404
- has(item, count) {
526
+ setInventory(item, count, meta = {}) {
405
527
  const slot = this.g.slotFor(this.name, item);
406
528
  return this.g.dispatch({
407
529
  type: "inventory",
408
530
  name: this.name,
409
- slots: [count > 0 ? { slot, item, count } : { slot }],
531
+ slots: [count > 0 ? { slot, item, count, ...meta } : { slot }],
410
532
  });
411
533
  }
412
534
  /** Walks into the declared zone (its first corner); the SDK derives the edge. */
@@ -415,18 +537,21 @@ class Fake {
415
537
  return this.moveTo({ x: box.from.x + 0.5, y: box.from.y, z: box.from.z + 0.5 });
416
538
  }
417
539
  /** Walks 100 blocks under the declared zone's first corner. */
418
- leaves(zone) {
540
+ exits(zone) {
419
541
  const box = this.zone(zone);
420
542
  return this.moveTo({ x: box.from.x + 0.5, y: box.from.y - 100, z: box.from.z + 0.5 });
421
543
  }
544
+ /** A right-click on a block; `item` is what the hand held. */
422
545
  uses(block, at, item) {
423
546
  return this.g.dispatch({ type: "block_used", name: this.name, at, block, item });
424
547
  }
425
- breaks(block, at) {
426
- return this.g.dispatch({ type: "block_broken", name: this.name, at, block });
548
+ /** Breaks the block: the engine reports the state that was there and what is there now (air by default). */
549
+ breaks(block, at, after = "minecraft:air") {
550
+ return this.g.dispatch({ type: "block_broken", name: this.name, at, block, after });
427
551
  }
428
- places(block, at) {
429
- return this.g.dispatch({ type: "block_placed", name: this.name, at, block });
552
+ /** Places the block: the engine reports the placed state and the one it replaced (air by default). */
553
+ places(block, at, replaced = "minecraft:air") {
554
+ return this.g.dispatch({ type: "block_placed", name: this.name, at, block, replaced });
430
555
  }
431
556
  zone(zone) {
432
557
  const zones = this.g.challenge.zones;
@@ -1 +1 @@
1
- {"version":3,"file":"harness.js","sourceRoot":"","sources":["../../src/test/harness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness.js","sourceRoot":"","sources":["../../src/test/harness.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
- import type { AnyChallenge, Vec3 } from "../runtime/sdk.js";
1
+ import type { AnyChallenge } from "../runtime/builder.js";
2
+ import type { Vec3 } from "../runtime/wire.js";
2
3
  import type { Game } from "./harness.js";
3
- /** The last reported score per player. */
4
+ /** The reported score per player. */
4
5
  export declare function scores(g: Game<AnyChallenge>): Record<string, number>;
5
6
  /** Whether `a` is within `blocks` of `b` on each axis, x and z (a square, not a radius; the height is ignored). */
6
7
  export declare const near: (a: Vec3, b: Vec3, blocks: number) => boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/test/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,0CAA0C;AAC1C,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEpE;AAED,mHAAmH;AACnH,eAAO,MAAM,IAAI,GAAI,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,QAAQ,MAAM,KAAG,OACO,CAAC"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/test/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,qCAAqC;AACrC,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEpE;AAED,mHAAmH;AACnH,eAAO,MAAM,IAAI,GAAI,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,QAAQ,MAAM,KAAG,OACO,CAAC"}
@@ -2,9 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.near = void 0;
4
4
  exports.scores = scores;
5
- /** The last reported score per player. */
5
+ /** The reported score per player. */
6
6
  function scores(g) {
7
- return Object.fromEntries(Object.entries(g.state.players).map(([name, p]) => [name, p.score]));
7
+ return Object.fromEntries(Object.entries(g.reducerState.players).map(([name, p]) => [name, p.score]));
8
8
  }
9
9
  /** Whether `a` is within `blocks` of `b` on each axis, x and z (a square, not a radius; the height is ignored). */
10
10
  const near = (a, b, blocks) => Math.abs(a.x - b.x) <= blocks && Math.abs(a.z - b.z) <= blocks;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/test/helpers.ts"],"names":[],"mappings":";;;AAIA,wBAEC;AAHD,0CAA0C;AAC1C,SAAgB,MAAM,CAAC,CAAqB;IAC3C,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChG,CAAC;AAED,mHAAmH;AAC5G,MAAM,IAAI,GAAG,CAAC,CAAO,EAAE,CAAO,EAAE,MAAc,EAAW,EAAE,CACjE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;AADnD,QAAA,IAAI,QAC+C"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/test/helpers.ts"],"names":[],"mappings":";;;AAKA,wBAEC;AAHD,qCAAqC;AACrC,SAAgB,MAAM,CAAC,CAAqB;IAC3C,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvG,CAAC;AAED,mHAAmH;AAC5G,MAAM,IAAI,GAAG,CAAC,CAAO,EAAE,CAAO,EAAE,MAAc,EAAW,EAAE,CACjE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;AADnD,QAAA,IAAI,QAC+C"}