@kradle/challenges-sdk 0.11.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/CHANGELOG.md +71 -1
  2. package/LLM_README.md +286 -193
  3. package/MIGRATION-0.13.md +109 -0
  4. package/README.md +98 -90
  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 +33 -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 +280 -0
  54. package/dist/test/harness.d.ts.map +1 -0
  55. package/dist/{runtime → test}/harness.js +193 -68
  56. package/dist/test/harness.js.map +1 -0
  57. package/dist/test/helpers.d.ts +8 -0
  58. package/dist/test/helpers.d.ts.map +1 -0
  59. package/dist/test/helpers.js +12 -0
  60. package/dist/test/helpers.js.map +1 -0
  61. package/dist/test/index.d.ts +3 -0
  62. package/dist/test/index.d.ts.map +1 -0
  63. package/dist/{runtime → test}/index.js +3 -1
  64. package/dist/test/index.js.map +1 -0
  65. package/package.json +31 -16
  66. package/dist/runtime/examples/capture-the-flag.d.ts +0 -33
  67. package/dist/runtime/examples/capture-the-flag.d.ts.map +0 -1
  68. package/dist/runtime/examples/capture-the-flag.js +0 -79
  69. package/dist/runtime/examples/capture-the-flag.js.map +0 -1
  70. package/dist/runtime/examples/climb.d.ts +0 -34
  71. package/dist/runtime/examples/climb.d.ts.map +0 -1
  72. package/dist/runtime/examples/climb.js +0 -54
  73. package/dist/runtime/examples/climb.js.map +0 -1
  74. package/dist/runtime/examples/four-bridges.d.ts +0 -107
  75. package/dist/runtime/examples/four-bridges.d.ts.map +0 -1
  76. package/dist/runtime/examples/four-bridges.js +0 -294
  77. package/dist/runtime/examples/four-bridges.js.map +0 -1
  78. package/dist/runtime/examples/herding.d.ts +0 -59
  79. package/dist/runtime/examples/herding.d.ts.map +0 -1
  80. package/dist/runtime/examples/herding.js +0 -181
  81. package/dist/runtime/examples/herding.js.map +0 -1
  82. package/dist/runtime/examples/skywars.d.ts +0 -116
  83. package/dist/runtime/examples/skywars.d.ts.map +0 -1
  84. package/dist/runtime/examples/skywars.js +0 -253
  85. package/dist/runtime/examples/skywars.js.map +0 -1
  86. package/dist/runtime/harness.d.ts +0 -176
  87. package/dist/runtime/harness.d.ts.map +0 -1
  88. package/dist/runtime/harness.js.map +0 -1
  89. package/dist/runtime/index.d.ts +0 -2
  90. package/dist/runtime/index.d.ts.map +0 -1
  91. package/dist/runtime/index.js.map +0 -1
  92. package/dist/runtime/sdk.d.ts +0 -1038
  93. package/dist/runtime/sdk.d.ts.map +0 -1
  94. package/dist/runtime/sdk.js +0 -1271
  95. package/dist/runtime/sdk.js.map +0 -1
@@ -0,0 +1,205 @@
1
+ import { type Duration, type Ticks } from "./time.js";
2
+ import type { BlockSpec, BlockState, ChallengeConfig, Handlers, Outcome, PhaseSpec, StateDecl, World } from "./types.js";
3
+ import type { Action, BlockId, Box, Capability, Effect, EndReason, Event, ItemId, ItemStack, Json, Marker, RuntimeManifest, Status, Vec3 } from "./wire.js";
4
+ import { type Equipment, type WorldState } from "./world.js";
5
+ /** Effects per batch the engine accepts. The setup is split under it. */
6
+ export declare const MAX_BATCH_EFFECTS = 4096;
7
+ /** Blocks one batch may fill in total. The setup is split under it. */
8
+ export declare const MAX_FILL_VOLUME = 32768;
9
+ /** Phase transitions one event may chain (enter requests included). */
10
+ export declare const MAX_TRANSITIONS_PER_EVENT = 8;
11
+ /** A handler set, as one `.on()` call registered it. */
12
+ export type AnyHandlers = Handlers<ChallengeConfig, unknown, Record<string, object>, string, string, string, Record<string, never>>;
13
+ type AnyFn = (...args: unknown[]) => unknown;
14
+ export type AnyPhaseSpec = PhaseSpec<ChallengeConfig, unknown, Record<string, object>, string, string, string, Record<string, never>>;
15
+ export type AnyOutcome = Outcome<ChallengeConfig, unknown, Record<string, object>, string, string, string, Record<string, never>>;
16
+ type AnyVoteRule = {
17
+ options?: readonly string[] | undefined;
18
+ final?: boolean | undefined;
19
+ allowEliminated?: boolean | undefined;
20
+ allowSelf?: boolean | undefined;
21
+ accept?: unknown;
22
+ };
23
+ /** What the builder compiles and locks: the reducer reads only this. */
24
+ export interface Definition {
25
+ config: ChallengeConfig;
26
+ state: StateDecl<ChallengeConfig, unknown, unknown, Record<string, unknown>>;
27
+ life: "single" | "respawn";
28
+ duration: Ticks | undefined;
29
+ world: (Required<Omit<World, "spawn">> & {
30
+ spawn?: Vec3 | undefined;
31
+ }) | null;
32
+ zones: Record<string, Box>;
33
+ timers: readonly string[] | undefined;
34
+ markers: {
35
+ tags: string[];
36
+ within?: Box | undefined;
37
+ } | undefined;
38
+ votes: Record<string, AnyVoteRule>;
39
+ phases: readonly string[];
40
+ initialPhase: string | undefined;
41
+ setup: AnyFn | undefined;
42
+ start: AnyFn | undefined;
43
+ phaseSpecs: Record<string, AnyPhaseSpec>;
44
+ at: Array<{
45
+ at: Duration;
46
+ run: AnyFn;
47
+ }>;
48
+ every: Array<{
49
+ interval: Duration;
50
+ run: AnyFn;
51
+ }>;
52
+ on: AnyHandlers[];
53
+ outcome: AnyOutcome;
54
+ onOver: AnyFn | undefined;
55
+ judgeContext: AnyFn | undefined;
56
+ manifest: RuntimeManifest;
57
+ }
58
+ interface StatePlayer {
59
+ name: string;
60
+ role: string;
61
+ seatNumber: number;
62
+ human: boolean;
63
+ connected: boolean;
64
+ alive: boolean;
65
+ eliminated: boolean;
66
+ deaths: number;
67
+ kills: number;
68
+ score: number;
69
+ pos: Vec3 | null;
70
+ yaw: number;
71
+ pitch: number;
72
+ headYaw: number;
73
+ entityId: number | null;
74
+ uuid: string | null;
75
+ equipment: Equipment;
76
+ invisible: boolean;
77
+ health: number;
78
+ food: number;
79
+ gamemode: "survival" | "creative" | "adventure" | "spectator";
80
+ held: ItemId | null;
81
+ slots: Record<number, ItemStack>;
82
+ inventory: Record<string, number>;
83
+ zones: string[];
84
+ state: Record<string, unknown>;
85
+ /** Set once the first sample of the current connection arrived. */
86
+ sampled: boolean;
87
+ /** Derived: not eliminated. A non-enumerable getter, re-attached after every JSON round trip. */
88
+ readonly isActive: boolean;
89
+ }
90
+ interface VoteState {
91
+ open: boolean;
92
+ round: number;
93
+ cast: Record<string, string>;
94
+ }
95
+ /** The reducer state: plain JSON, except the world mirror (shared by reference, updated by copy). */
96
+ export interface State {
97
+ /** The run's seed, from `run_started`. */
98
+ seed: number;
99
+ /** The generator's state; every draw advances it. */
100
+ rng: number;
101
+ /** The resolved parameter values. */
102
+ params: Record<string, Json>;
103
+ /** What the engine supplies, from `run_started`. */
104
+ capabilities: Capability[];
105
+ /** The declared locations, by name. */
106
+ locations: Record<string, Vec3>;
107
+ /** The tagged entities the engine read before the game. */
108
+ markers: Marker[];
109
+ /** The stage: CONNECTING, SETUP, PLAYING, OVER. */
110
+ status: Status;
111
+ /** True once the state initializers ran. */
112
+ initialized: boolean;
113
+ /** The last server tick seen. */
114
+ tick: number;
115
+ /** Ticks between the last two ticks seen. */
116
+ dt: number;
117
+ /** The tick PLAYING started. */
118
+ startTick: number;
119
+ /** The setup batches still to confirm: the whole list is kept (JSON) until the last confirmation. */
120
+ setup: {
121
+ /** Every batch, in order; the engine gets them one at a time. */
122
+ batches: Effect[][];
123
+ /** How many batches the engine confirmed: the next one to send. */
124
+ confirmed: number;
125
+ /** The tick the pending batch went out. */
126
+ sentTick: number;
127
+ } | null;
128
+ /** The current phase; `null` before the first entry and without phases. */
129
+ phase: string | null;
130
+ /** The tick the current phase was entered. */
131
+ phaseStartTick: number;
132
+ /** How many times the current phase was entered. */
133
+ phaseEntries: number;
134
+ /** The resolved duration of the current phase, in ticks; `null` without one. */
135
+ phaseDuration: number | null;
136
+ /** The `at` steps that already ran, by key. */
137
+ fired: Record<string, true>;
138
+ /** The last tick each `every` step ran, by key. */
139
+ every: Record<string, number>;
140
+ /** The scheduled timers: when each is due, and a generation that guards a reschedule. */
141
+ timers: Record<string, {
142
+ /** The tick the timer fires at. */
143
+ due: number;
144
+ /** The generation of the schedule call that set it; an older reschedule is ignored. */
145
+ gen: number;
146
+ }>;
147
+ /** The last timer generation handed out. */
148
+ nextGen: number;
149
+ /** The participants, by name. */
150
+ players: Record<string, StatePlayer>;
151
+ /** The shared challenge data (`g.state`). */
152
+ game: Record<string, unknown>;
153
+ /** The votes, by id: whether a round is open, its number, the casts. */
154
+ votes: Record<string, VoteState>;
155
+ /** The walks in progress, by request id. */
156
+ walks: Record<string, {
157
+ /** The participant who walks. */
158
+ player: string;
159
+ /** What a failed walk does: a teleport to the destination, or nothing. */
160
+ fallback: "teleport" | "none";
161
+ } & Vec3>;
162
+ /** Pending named batches: transport id to public name. */
163
+ batches: Record<string, string>;
164
+ /** The containers the mirror holds, by "x,y,z": the block and its slots. */
165
+ containers: Record<string, {
166
+ /** The container's block id. */
167
+ block: BlockId;
168
+ /** The stacks, by slot index. */
169
+ slots: Record<number, ItemStack>;
170
+ }>;
171
+ /** The world mirror. */
172
+ world: WorldState;
173
+ /** The next request id (walks, batches). */
174
+ nextId: number;
175
+ /** The winners once the game ended. */
176
+ winners: string[];
177
+ /** The end state once the game ended; `""` before. */
178
+ endState: string;
179
+ /** Why the game ended; `null` while it runs. */
180
+ reason: EndReason | null;
181
+ /** The clock values at the end: `elapsed` and `phaseElapsed` stop there. */
182
+ frozen: {
183
+ /** Ticks from game start to the end. */
184
+ elapsed: number;
185
+ /** Ticks from the last phase entry to the end. */
186
+ phaseElapsed: number;
187
+ } | null;
188
+ }
189
+ /** JSON-only state: no functions, class instances, cycles, shared objects or non-finite numbers. */
190
+ export declare function assertJson(value: unknown, what: string): void;
191
+ /** `minecraft:oak_stairs[facing=east,half=bottom]` -> `{ id, props }`. */
192
+ export declare function parseBlockState(state: BlockId): BlockState;
193
+ /** `{ id, props }` -> `minecraft:oak_stairs[facing=east]`. */
194
+ export declare function blockSpecString(spec: BlockSpec): BlockId;
195
+ /** Splits the setup effects into batches under the engine's limits, in order. */
196
+ export declare function splitBatches(effects: Effect[]): Effect[][];
197
+ export declare function createReducer(def: Definition): {
198
+ init: () => State;
199
+ reduce: (input: State, event: Event) => {
200
+ state: State;
201
+ actions: Action[];
202
+ };
203
+ };
204
+ export {};
205
+ //# sourceMappingURL=reducer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../src/runtime/reducer.ts"],"names":[],"mappings":"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"}