@kradle/challenges-sdk 0.23.0 → 0.25.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 (54) hide show
  1. package/CHANGELOG.md +40 -1
  2. package/LLM_README.md +49 -13
  3. package/README.md +57 -0
  4. package/dist/engine.d.ts +2 -1
  5. package/dist/engine.d.ts.map +1 -1
  6. package/dist/engine.js +4 -1
  7. package/dist/engine.js.map +1 -1
  8. package/dist/index.d.ts +3 -2
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +4 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/runtime/builder.d.ts.map +1 -1
  13. package/dist/runtime/builder.js +25 -6
  14. package/dist/runtime/builder.js.map +1 -1
  15. package/dist/runtime/chat.js.map +1 -1
  16. package/dist/runtime/dialog.js.map +1 -1
  17. package/dist/runtime/dimensions.d.ts +24 -0
  18. package/dist/runtime/dimensions.d.ts.map +1 -0
  19. package/dist/runtime/dimensions.js +47 -0
  20. package/dist/runtime/dimensions.js.map +1 -0
  21. package/dist/runtime/errors.d.ts.map +1 -1
  22. package/dist/runtime/errors.js.map +1 -1
  23. package/dist/runtime/reducer.d.ts.map +1 -1
  24. package/dist/runtime/reducer.js +133 -28
  25. package/dist/runtime/reducer.js.map +1 -1
  26. package/dist/runtime/rules.d.ts.map +1 -1
  27. package/dist/runtime/rules.js.map +1 -1
  28. package/dist/runtime/sandbox-registry.js.map +1 -1
  29. package/dist/runtime/sandbox.d.ts.map +1 -1
  30. package/dist/runtime/sandbox.js.map +1 -1
  31. package/dist/runtime/time.d.ts.map +1 -1
  32. package/dist/runtime/time.js.map +1 -1
  33. package/dist/runtime/types.d.ts +41 -5
  34. package/dist/runtime/types.d.ts.map +1 -1
  35. package/dist/runtime/types.js.map +1 -1
  36. package/dist/runtime/wire.d.ts +43 -1
  37. package/dist/runtime/wire.d.ts.map +1 -1
  38. package/dist/runtime/wire.js +1 -0
  39. package/dist/runtime/wire.js.map +1 -1
  40. package/dist/runtime/world.d.ts +13 -4
  41. package/dist/runtime/world.d.ts.map +1 -1
  42. package/dist/runtime/world.js +40 -25
  43. package/dist/runtime/world.js.map +1 -1
  44. package/dist/structures.d.ts.map +1 -1
  45. package/dist/structures.js +3 -1
  46. package/dist/structures.js.map +1 -1
  47. package/dist/test/harness.d.ts +7 -2
  48. package/dist/test/harness.d.ts.map +1 -1
  49. package/dist/test/harness.js +51 -14
  50. package/dist/test/harness.js.map +1 -1
  51. package/dist/test/helpers.d.ts.map +1 -1
  52. package/dist/test/helpers.js +2 -1
  53. package/dist/test/helpers.js.map +1 -1
  54. package/package.json +5 -4
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OVERWORLD = exports.DIMENSIONS = void 0;
4
+ exports.enabledDimensions = enabledDimensions;
5
+ exports.dimensionOf = dimensionOf;
6
+ exports.dimensionPrefix = dimensionPrefix;
7
+ exports.positionKey = positionKey;
8
+ exports.keyInChunk = keyInChunk;
9
+ const errors_js_1 = require("./errors.js");
10
+ /** The dimensions that a game can enable. */
11
+ exports.DIMENSIONS = ["minecraft:overworld", "minecraft:the_nether", "minecraft:the_end"];
12
+ /** The dimension when a position or game configuration omits it. */
13
+ exports.OVERWORLD = "minecraft:overworld";
14
+ /** Validate the game dimensions. The Overworld must come first; IDs must be unique. */
15
+ function enabledDimensions(value) {
16
+ if (value === undefined)
17
+ return [exports.OVERWORLD];
18
+ if (!Array.isArray(value) ||
19
+ value.length === 0 ||
20
+ value[0] !== exports.OVERWORLD ||
21
+ new Set(value).size !== value.length ||
22
+ !value.every((id) => exports.DIMENSIONS.includes(id))) {
23
+ throw (0, errors_js_1.definitionError)("bad_dimensions", "dimensions must start with minecraft:overworld and contain unique supported IDs", { path: "challengeConfig.dimensions", value, allowed: exports.DIMENSIONS });
24
+ }
25
+ return [...value];
26
+ }
27
+ /** The dimension of a position. */
28
+ function dimensionOf(position) {
29
+ return position.dimension ?? exports.OVERWORLD;
30
+ }
31
+ /** The spatial key prefix. Old Overworld keys retain their format. */
32
+ function dimensionPrefix(dimension = exports.OVERWORLD) {
33
+ return dimension === exports.OVERWORLD ? "" : `${dimension}|`;
34
+ }
35
+ /** The block key for a position. */
36
+ function positionKey(at) {
37
+ return `${dimensionPrefix(at.dimension)}${Math.floor(at.x)},${Math.floor(at.y)},${Math.floor(at.z)}`;
38
+ }
39
+ /** True when a block key belongs to the specified chunk and dimension. */
40
+ function keyInChunk(key, x, z, dimension = exports.OVERWORLD) {
41
+ const prefix = dimensionPrefix(dimension);
42
+ if (prefix ? !key.startsWith(prefix) : key.includes("|"))
43
+ return false;
44
+ const [bx, , bz] = key.slice(prefix.length).split(",").map(Number);
45
+ return bx >> 4 === x && bz >> 4 === z;
46
+ }
47
+ //# sourceMappingURL=dimensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dimensions.js","sourceRoot":"","sources":["../../src/runtime/dimensions.ts"],"names":[],"mappings":";;;;;;;;AAAA,2CAA8C;AAE9C,6CAA6C;AAChC,QAAA,UAAU,GAAG,CAAC,qBAAqB,EAAE,sBAAsB,EAAE,mBAAmB,CAAU,CAAC;AAKxG,oEAAoE;AACvD,QAAA,SAAS,GAAc,qBAAqB,CAAC;AAE1D,uFAAuF;AACvF,2BAAkC,KAAc;IAC/C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,CAAC,QAAA,SAAS,CAAC,CAAC;IAC5C,IACC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,KAAK,CAAC,CAAC,CAAC,KAAK,QAAA,SAAS;QACtB,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM;QACpC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAA,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAC5C,CAAC;QACF,MAAM,IAAA,2BAAe,EACpB,gBAAgB,EAChB,iFAAiF,EACjF,EAAE,IAAI,EAAE,4BAA4B,EAAE,KAAK,EAAE,OAAO,EAAE,QAAA,UAAU,EAAE,CAClE,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACnB,CAAC;AAED,mCAAmC;AACnC,qBAA4B,QAA+C;IAC1E,OAAO,QAAQ,CAAC,SAAS,IAAI,QAAA,SAAS,CAAC;AACxC,CAAC;AAED,sEAAsE;AACtE,yBAAgC,SAAS,GAAc,QAAA,SAAS;IAC/D,OAAO,SAAS,KAAK,QAAA,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,CAAC;AACvD,CAAC;AAED,oCAAoC;AACpC,qBAA4B,EAA0E;IACrG,OAAO,GAAG,eAAe,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACtG,CAAC;AAED,0EAA0E;AAC1E,oBAA2B,GAAW,EAAE,CAAS,EAAE,CAAS,EAAE,SAAS,GAAc,QAAA,SAAS;IAC7F,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACvE,MAAM,CAAC,EAAE,EAAE,AAAD,EAAG,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAA6B,CAAC;IAC/F,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/runtime/errors.ts"],"names":[],"mappings":"AAMA,uDAAuD;AACvD,MAAM,MAAM,aAAa;AACxB,sFAAsF;AACpF,YAAY;AACd,mFAAmF;GACjF,KAAK;AACP,iGAAiG;GAC/F,aAAa,CAAC;AAEjB,0EAA0E;AAC1E,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,8FAA8F;IAC9F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gDAAgD;IAChD,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,mFAAmF;AACnF,MAAM,WAAW,SAAS;IACzB,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,QAAQ,EAAE,aAAa,CAAC;IACxB,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACxC,mEAAmE;IACnE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2GAA2G;IAC3G,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,kCAAkC;IAClC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;gBAEpC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB;IAUrE,iEAAiE;IACjE,MAAM,IAAI,SAAS;CAUnB;AAED,mEAAmE;AACnE,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,EAAE,UAAS,IAAI,CAAC,YAAY,EAAE,UAAU,CAAM,mBACjC,CAAC;AAE3E,iDAAiD;AACjD,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,EAAE,UAAS,IAAI,CAAC,YAAY,EAAE,UAAU,CAAM,mBACjC,CAAC;AAEpE,gFAAgF;AAChF,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,EAAE,UAAS,IAAI,CAAC,YAAY,EAAE,UAAU,CAAM,mBACjC,CAAC;AAE5E,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,cAAc,CAMnG;AAED,wGAAwG;AACxG,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,GAAG,QAAQ,CAEjE"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/runtime/errors.ts"],"names":[],"mappings":"AAMA,uDAAuD;AACvD,MAAM,MAAM,aAAa;AACxB,sFAAsF;AACpF,YAAY;AACd,mFAAmF;GACjF,KAAK;AACP,iGAAiG;GAC/F,aAAa,CAAC;AAEjB,0EAA0E;AAC1E,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,8FAA8F;IAC9F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gDAAgD;IAChD,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,mFAAmF;AACnF,MAAM,WAAW,SAAS;IACzB,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,QAAQ,EAAE,aAAa,CAAC;IACxB,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACxC,mEAAmE;IACnE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2GAA2G;IAC3G,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,kCAAkC;IAClC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAEhD,YAAY,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,EAQpE;IAED,iEAAiE;IACjE,MAAM,IAAI,SAAS,CASlB;CACD;AAED,mEAAmE;AACnE,eAAO,MAAM,eAAe,SAAU,MAAM,WAAW,MAAM,YAAW,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,mBAC5B,CAAC;AAE3E,iDAAiD;AACjD,eAAO,MAAM,QAAQ,SAAU,MAAM,WAAW,MAAM,YAAW,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,mBAC5B,CAAC;AAEpE,gFAAgF;AAChF,eAAO,MAAM,gBAAgB,SAAU,MAAM,WAAW,MAAM,YAAW,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,mBAC5B,CAAC;AAE5E,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,cAAc,CAMnG;AAED,wGAAwG;AACxG,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,GAAG,QAAQ,CAEjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/runtime/errors.ts"],"names":[],"mappings":";AAAA,4EAA4E;AAC5E,0EAA0E;AAC1E,8EAA8E;AAC9E,2EAA2E;AAC3E,+EAA+E;;;AAwF/E,kCAMC;AAGD,gCAEC;AA/DD;;;GAGG;AACH,MAAa,cAAe,SAAQ,KAAK;IACxC,mEAAmE;IAC1D,IAAI,CAAS;IACtB,2GAA2G;IAClG,QAAQ,CAAgB;IACjC,sDAAsD;IAC7C,IAAI,CAAqB;IAClC,kCAAkC;IACzB,KAAK,CAAU;IACxB,gDAAgD;IACvC,OAAO,CAAgC;IAEhD,YAAY,IAAY,EAAE,OAAe,EAAE,UAAwB,EAAE;QACpE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,iEAAiE;IACjE,MAAM;QACL,MAAM,GAAG,GAAc;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;SACrB,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAClD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3D,OAAO,GAAG,CAAC;IACZ,CAAC;CACD;AAjCD,wCAiCC;AAED,mEAAmE;AAC5D,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,UAA0C,EAAE,EAAE,EAAE,CAC9G,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;AAD9D,QAAA,eAAe,mBAC+C;AAE3E,iDAAiD;AAC1C,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,UAA0C,EAAE,EAAE,EAAE,CACvG,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AADvD,QAAA,QAAQ,YAC+C;AAEpE,gFAAgF;AACzE,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,UAA0C,EAAE,EAAE,EAAE,CAC/G,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC;AAD/D,QAAA,gBAAgB,oBAC+C;AAE5E,uEAAuE;AACvE,SAAgB,WAAW,CAAC,IAAY,EAAE,IAAY,EAAE,QAA2B;IAClF,OAAO,IAAA,gBAAQ,EAAC,cAAc,EAAE,IAAI,IAAI,wBAAwB,IAAI,eAAe,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,EAAE;QACpH,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,QAAQ;KACjB,CAAC,CAAC;AACJ,CAAC;AAED,wGAAwG;AACxG,SAAgB,UAAU,CAAC,GAAY;IACtC,OAAO,GAAG,YAAY,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/runtime/errors.ts"],"names":[],"mappings":";AAAA,4EAA4E;AAC5E,0EAA0E;AAC1E,8EAA8E;AAC9E,2EAA2E;AAC3E,+EAA+E;;;;;AAoC/E;;;GAGG;AACH,oBAA4B,SAAQ,KAAK;IACxC,mEAAmE;IAC1D,IAAI,CAAS;IACtB,2GAA2G;IAClG,QAAQ,CAAgB;IACjC,sDAAsD;IAC7C,IAAI,CAAqB;IAClC,kCAAkC;IACzB,KAAK,CAAU;IACxB,gDAAgD;IACvC,OAAO,CAAgC;IAEhD,YAAY,IAAY,EAAE,OAAe,EAAE,OAAO,GAAiB,EAAE;QACpE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,iEAAiE;IACjE,MAAM;QACL,MAAM,GAAG,GAAc;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;SACrB,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAClD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3D,OAAO,GAAG,CAAC;IACZ,CAAC;CACD;;AAED,mEAAmE;AAC5D,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,OAAO,GAAmC,EAAE,EAAE,EAAE,CAC9G,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;AAD9D,QAAA,eAAe,GAAf,eAAe,CAC+C;AAE3E,iDAAiD;AAC1C,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,OAAO,GAAmC,EAAE,EAAE,EAAE,CACvG,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AADvD,QAAA,QAAQ,GAAR,QAAQ,CAC+C;AAEpE,gFAAgF;AACzE,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,OAAO,GAAmC,EAAE,EAAE,EAAE,CAC/G,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC;AAD/D,QAAA,gBAAgB,GAAhB,gBAAgB,CAC+C;AAE5E,uEAAuE;AACvE,qBAA4B,IAAY,EAAE,IAAY,EAAE,QAA2B;IAClF,OAAO,IAAA,QAAA,QAAQ,EAAC,cAAc,EAAE,IAAI,IAAI,wBAAwB,IAAI,eAAe,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,EAAE;QACpH,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,QAAQ;KACjB,CAAC,CAAC;AACJ,CAAC;AAED,wGAAwG;AACxG,oBAA2B,GAAY;IACtC,OAAO,GAAG,YAAY,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AAChE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../src/runtime/reducer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../src/runtime/reducer.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,12 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MAX_ACHIEVEMENTS = exports.MAX_TRANSITIONS_PER_EVENT = exports.MAX_FILL_VOLUME = exports.MAX_BATCH_EFFECTS = void 0;
4
+ exports.assertJson = assertJson;
5
+ exports.parseBlockState = parseBlockState;
6
+ exports.blockSpecString = blockSpecString;
7
+ exports.splitBatches = splitBatches;
8
+ exports.createReducer = createReducer;
9
+ const dimensions_js_1 = require("./dimensions.js");
2
10
  // The reducer: one locked definition, one `init()` per run, one `reduce(state,
3
11
  // event)` per engine event. Everything a rule sees comes through a context
4
12
  // built for the reduction; everything a rule asks for leaves as actions.
@@ -15,15 +23,8 @@
15
23
  // the game-over hook, the judge data, `game_over`.
16
24
  // - An author error rolls the reduction back and ends the run as
17
25
  // `error_challenge` without another author callback.
18
- Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.MAX_ACHIEVEMENTS = exports.MAX_TRANSITIONS_PER_EVENT = exports.MAX_FILL_VOLUME = exports.MAX_BATCH_EFFECTS = void 0;
20
- exports.assertJson = assertJson;
21
- exports.parseBlockState = parseBlockState;
22
- exports.blockSpecString = blockSpecString;
23
- exports.splitBatches = splitBatches;
24
- exports.createReducer = createReducer;
25
- const dialog_js_1 = require("./dialog.js");
26
26
  const chat_js_1 = require("./chat.js");
27
+ const dialog_js_1 = require("./dialog.js");
27
28
  const errors_js_1 = require("./errors.js");
28
29
  const time_js_1 = require("./time.js");
29
30
  const types_js_1 = require("./types.js");
@@ -38,6 +39,15 @@ exports.MAX_TRANSITIONS_PER_EVENT = 8;
38
39
  const SETUP_BATCH_TIMEOUT_TICKS = 30 * 20;
39
40
  /** The bound Kradle applies to a result's achievements; mirrored here so the harness reports it. */
40
41
  exports.MAX_ACHIEVEMENTS = 64;
42
+ /** A qualified slug, `<creator>:<name>`, as Kradle names a challenge or an agent. The backend checks that it exists. */
43
+ const SLUG = /^[a-z0-9][a-z0-9-]{0,34}[a-z0-9]:[a-z0-9][a-z0-9-]{0,34}[a-z0-9]$/;
44
+ /** A role name, as a challenge's `roles` declares it. */
45
+ const ROLE = /^[a-z0-9][a-z0-9-]{0,34}[a-z0-9]$/;
46
+ /** A param name, as `config.params` declares it. */
47
+ const PARAM_NAME = /^[A-Za-z_][A-Za-z0-9_]{0,39}$/;
48
+ /** The bounds of `g.sendToChallenge`: the agents of one run, and the JSON size of the params. */
49
+ const MAX_SEND_AGENTS = 8;
50
+ const MAX_SEND_PARAMS_CHARS = 4096;
41
51
  // ---------------------------------------------------------------- small helpers
42
52
  /** The air a player has at the surface, in seconds. */
43
53
  const FULL_AIR = 15;
@@ -103,7 +113,7 @@ function deepFreeze(value, seen = new WeakSet()) {
103
113
  for (const x of Object.values(value))
104
114
  deepFreeze(x, seen);
105
115
  }
106
- const posKey = (at) => `${Math.floor(at.x)},${Math.floor(at.y)},${Math.floor(at.z)}`;
116
+ const posKey = dimensions_js_1.positionKey;
107
117
  /** `minecraft:oak_stairs[facing=east,half=bottom]` -> `{ id, props }`. */
108
118
  function parseBlockState(state) {
109
119
  const i = state.indexOf("[");
@@ -338,6 +348,7 @@ function viewOf(r, p) {
338
348
  }
339
349
  function createReducer(def) {
340
350
  const config = def.config;
351
+ const dimensions = (0, dimensions_js_1.enabledDimensions)(config.challengeConfig?.dimensions);
341
352
  const roleNames = Object.keys(config.roles);
342
353
  const declaredZones = Object.keys(def.zones);
343
354
  const derivedScores = def.outcome.scores !== undefined;
@@ -488,6 +499,21 @@ function createReducer(def) {
488
499
  }
489
500
  };
490
501
  const push = (raw) => {
502
+ for (const value of [
503
+ raw,
504
+ ...["at", "from", "to", "dest"].map((key) => raw[key]),
505
+ ]) {
506
+ if (value &&
507
+ typeof value === "object" &&
508
+ "dimension" in value &&
509
+ value.dimension !== undefined &&
510
+ !dimensions.includes(value.dimension))
511
+ throw (0, errors_js_1.apiError)("invalid_value", "The target dimension is disabled");
512
+ }
513
+ if (raw.kind === "fill" || raw.kind === "clone")
514
+ (0, world_js_1.bounds)({ from: raw.from, to: raw.to });
515
+ if (raw.kind === "clone" && (0, dimensions_js_1.dimensionOf)(raw.from) !== (0, dimensions_js_1.dimensionOf)(raw.dest))
516
+ throw (0, errors_js_1.apiError)("invalid_value", "A clone cannot cross dimensions");
491
517
  // A plain copy: an author's argument may be a view (`p.pos`, `g.params.box`).
492
518
  const effect = compact(snapshot(raw));
493
519
  if (r.batch)
@@ -580,6 +606,7 @@ function createReducer(def) {
580
606
  throw (0, errors_js_1.notDeclared)("zones", zone, declaredZones);
581
607
  return p.zones.includes(zone);
582
608
  }
609
+ (0, world_js_1.bounds)(zone);
583
610
  return p.pos !== null && (0, world_js_1.inBox)(p.pos, zone);
584
611
  },
585
612
  countItems(p, match) {
@@ -617,6 +644,7 @@ function createReducer(def) {
617
644
  get worldTime() {
618
645
  return s.world.time;
619
646
  },
647
+ dimensionTime: (dimension) => (dimension === dimensions_js_1.OVERWORLD ? s.world.time : s.world.times?.[dimension]),
620
648
  entities: (filter) => (0, world_js_1.entitiesIn)(s.world, filter).map(world_js_1.freezeObservation),
621
649
  entity(id) {
622
650
  const e = s.world.entities[id];
@@ -710,6 +738,65 @@ function createReducer(def) {
710
738
  throw (0, errors_js_1.apiError)("bad_metric", `setMetric("${name}"): ${value} is not finite`);
711
739
  r.actions.push(compact({ type: "metric", name, value, player: opts?.player?.name }));
712
740
  },
741
+ sendToChallenge(player, challenge, options) {
742
+ notify("sendToChallenge");
743
+ const target = s.players[player?.name];
744
+ if (!target?.human)
745
+ throw (0, errors_js_1.apiError)("bad_player", "sendToChallenge: select a human participant");
746
+ if (typeof challenge !== "string" || !SLUG.test(challenge)) {
747
+ throw (0, errors_js_1.apiError)("invalid_value", `sendToChallenge: "${challenge}" is not a challenge slug`, {
748
+ value: challenge,
749
+ });
750
+ }
751
+ const role = options?.role;
752
+ if (role !== undefined && (typeof role !== "string" || !ROLE.test(role))) {
753
+ throw (0, errors_js_1.apiError)("invalid_value", `sendToChallenge: "${role}" is not a role name`, { value: role });
754
+ }
755
+ const raw = options?.agents;
756
+ if (raw !== undefined && (!Array.isArray(raw) || raw.length > MAX_SEND_AGENTS)) {
757
+ throw (0, errors_js_1.apiError)("invalid_value", `sendToChallenge: agents is a list of at most ${MAX_SEND_AGENTS} agents`);
758
+ }
759
+ const agents = raw?.map((a) => {
760
+ const one = typeof a === "string" ? { agent: a } : a;
761
+ if (!one || typeof one.agent !== "string" || !SLUG.test(one.agent)) {
762
+ throw (0, errors_js_1.apiError)("invalid_value", "sendToChallenge: an agent is a slug, or { agent, role }", { value: a });
763
+ }
764
+ if (one.role !== undefined && (typeof one.role !== "string" || !ROLE.test(one.role))) {
765
+ throw (0, errors_js_1.apiError)("invalid_value", `sendToChallenge: "${one.role}" is not a role name`, { value: one.role });
766
+ }
767
+ return compact({ agent: one.agent, role: one.role });
768
+ });
769
+ const params = options?.params;
770
+ if (params !== undefined) {
771
+ if (params === null || typeof params !== "object" || Array.isArray(params)) {
772
+ throw (0, errors_js_1.apiError)("invalid_value", "sendToChallenge: params is an object");
773
+ }
774
+ for (const [key, value] of Object.entries(params)) {
775
+ if (!PARAM_NAME.test(key)) {
776
+ throw (0, errors_js_1.apiError)("invalid_value", `sendToChallenge: "${key}" is not a param name`, { value: key });
777
+ }
778
+ const ok = typeof value === "string" ||
779
+ typeof value === "boolean" ||
780
+ (typeof value === "number" && Number.isFinite(value));
781
+ if (!ok) {
782
+ throw (0, errors_js_1.apiError)("invalid_value", `sendToChallenge: the param "${key}" is not a string, a finite number or a boolean`, {
783
+ value,
784
+ });
785
+ }
786
+ }
787
+ if (JSON.stringify(params).length > MAX_SEND_PARAMS_CHARS) {
788
+ throw (0, errors_js_1.apiError)("invalid_value", `sendToChallenge: the params are over ${MAX_SEND_PARAMS_CHARS} characters`);
789
+ }
790
+ }
791
+ r.actions.push(compact({
792
+ type: "send_to_challenge",
793
+ player: player.name,
794
+ challenge,
795
+ role,
796
+ agents,
797
+ params: params === undefined ? undefined : { ...params },
798
+ }));
799
+ },
713
800
  achievement(player, id) {
714
801
  notify("achievement");
715
802
  if (typeof id !== "string" || !/^[a-z0-9][a-z0-9_-]{0,63}$/.test(id)) {
@@ -826,17 +913,17 @@ function createReducer(def) {
826
913
  write("summon");
827
914
  push({ kind: "summon", entity, at: { ...at }, nbt: opts?.nbt });
828
915
  },
829
- killEntities(entities) {
916
+ killEntities(entities, dimension) {
830
917
  write("killEntities");
831
- push({ kind: "kill_entities", entities });
918
+ push({ kind: "kill_entities", entities, dimension });
832
919
  },
833
- time(value) {
920
+ time(value, dimension) {
834
921
  write("time");
835
- push({ kind: "time", value });
922
+ push({ kind: "time", value, dimension });
836
923
  },
837
- gamerule(rule, value) {
924
+ gamerule(rule, value, dimension) {
838
925
  write("gamerule");
839
- push({ kind: "gamerule", rule, value });
926
+ push({ kind: "gamerule", rule, value, dimension });
840
927
  },
841
928
  setSpawn(at) {
842
929
  write("setSpawn");
@@ -846,6 +933,7 @@ function createReducer(def) {
846
933
  write("worldBorder");
847
934
  push({
848
935
  kind: "worldborder",
936
+ dimension: opts.dimension,
849
937
  center: opts.center,
850
938
  size: opts.size,
851
939
  seconds: opts.over === undefined ? undefined : (0, time_js_1.toTicks)(opts.over) / 20,
@@ -866,11 +954,11 @@ function createReducer(def) {
866
954
  }));
867
955
  push({ kind: "container", at: { ...at }, items: out });
868
956
  },
869
- command(cmd, name) {
957
+ command(cmd, name, dimension) {
870
958
  write("command");
871
959
  r.actions.push({ type: "log", message: `raw command: ${cmd}` });
872
960
  if (name === undefined) {
873
- push({ kind: "command", cmd });
961
+ push({ kind: "command", cmd, dimension });
874
962
  return;
875
963
  }
876
964
  if (typeof name !== "string")
@@ -879,7 +967,7 @@ function createReducer(def) {
879
967
  throw (0, errors_js_1.apiError)("lifecycle", `command("${cmd}", "${name}"): a result needs a running game, not .setup (status ${s.status})`);
880
968
  const id = `cmd:${s.nextId++}`;
881
969
  s.commands[id] = { name };
882
- push({ kind: "command", cmd, id });
970
+ push({ kind: "command", cmd, id, dimension });
883
971
  },
884
972
  // ---- flow
885
973
  startPhase(name) {
@@ -1283,11 +1371,19 @@ function createReducer(def) {
1283
1371
  const out = [];
1284
1372
  if (w.spawn)
1285
1373
  out.push({ kind: "spawn", at: { ...w.spawn } });
1286
- if (w.time !== false)
1287
- out.push({ kind: "time", value: w.time });
1288
- out.push({ kind: "gamerule", rule: "minecraft:advance_time", value: w.daylightCycle });
1289
- out.push({ kind: "gamerule", rule: "minecraft:spawn_mobs", value: w.mobSpawning });
1290
- out.push({ kind: "gamerule", rule: "minecraft:natural_health_regeneration", value: w.naturalRegeneration });
1374
+ for (const dimension of dimensions) {
1375
+ const scope = dimension === dimensions_js_1.OVERWORLD ? {} : { dimension };
1376
+ if (w.time !== false)
1377
+ out.push({ kind: "time", value: w.time, ...scope });
1378
+ out.push({ kind: "gamerule", rule: "minecraft:advance_time", value: w.daylightCycle, ...scope });
1379
+ out.push({ kind: "gamerule", rule: "minecraft:spawn_mobs", value: w.mobSpawning, ...scope });
1380
+ out.push({
1381
+ kind: "gamerule",
1382
+ rule: "minecraft:natural_health_regeneration",
1383
+ value: w.naturalRegeneration,
1384
+ ...scope,
1385
+ });
1386
+ }
1291
1387
  return out;
1292
1388
  }
1293
1389
  function worldPlayers(s) {
@@ -1665,6 +1761,8 @@ function createReducer(def) {
1665
1761
  if (r.s.status !== "PLAYING")
1666
1762
  return;
1667
1763
  for (const { m, before, after } of edges) {
1764
+ if ((0, dimensions_js_1.dimensionOf)(m.from) !== (0, dimensions_js_1.dimensionOf)(m.to))
1765
+ fire(r, "dimensionChanged", { player: viewOf(r, m.p), from: m.from, to: { ...m.to } });
1668
1766
  for (const zone of after)
1669
1767
  if (!before.includes(zone))
1670
1768
  fire(r, "zoneEntered", { player: viewOf(r, m.p), zone });
@@ -1789,6 +1887,8 @@ function createReducer(def) {
1789
1887
  return;
1790
1888
  }
1791
1889
  const missing = missingCapabilities(e.capabilities);
1890
+ if (dimensions.length > 1 && !e.capabilities.includes("dimensions"))
1891
+ missing.push("dimensions");
1792
1892
  if (def.setup && !e.capabilities.includes("batch"))
1793
1893
  missing.push("batch");
1794
1894
  if (missing.length > 0) {
@@ -1849,6 +1949,8 @@ function createReducer(def) {
1849
1949
  delete s.dialogs[player];
1850
1950
  r.actions.push({ type: "effect", effect: { kind: "clear_dialog", player } });
1851
1951
  }
1952
+ if (e.times)
1953
+ s.world = { ...s.world, times: { ...s.world.times, ...e.times } };
1852
1954
  if (e.entities)
1853
1955
  s.world = (0, world_js_1.moveEntities)(s.world, e.entities);
1854
1956
  if (e.time !== undefined && e.time !== s.world.time)
@@ -2127,11 +2229,10 @@ function createReducer(def) {
2127
2229
  s.world = (0, world_js_1.applyChunk)(s.world, e);
2128
2230
  break;
2129
2231
  case "chunk_unloaded": {
2130
- s.world = (0, world_js_1.removeChunk)(s.world, e.x, e.z);
2232
+ s.world = (0, world_js_1.removeChunk)(s.world, e.x, e.z, e.dimension);
2131
2233
  // The containers of the chunk are unknown now.
2132
2234
  for (const key of Object.keys(s.containers)) {
2133
- const [x, , z] = key.split(",").map(Number);
2134
- if (x >> 4 === e.x && z >> 4 === e.z)
2235
+ if ((0, dimensions_js_1.keyInChunk)(key, e.x, e.z, e.dimension))
2135
2236
  delete s.containers[key];
2136
2237
  }
2137
2238
  break;
@@ -2141,6 +2242,7 @@ function createReducer(def) {
2141
2242
  if (playing()) {
2142
2243
  fire(r, "blocksChanged", () => ({
2143
2244
  changes: e.changes.map((c) => compact({
2245
+ dimension: c.dimension,
2144
2246
  x: c.x,
2145
2247
  y: c.y,
2146
2248
  z: c.z,
@@ -2165,10 +2267,13 @@ function createReducer(def) {
2165
2267
  const from = { ...e.from };
2166
2268
  const to = { ...e.to };
2167
2269
  const { lo, hi } = (0, world_js_1.bounds)({ from, to });
2168
- const dest = { x: Math.floor(e.dest.x), y: Math.floor(e.dest.y), z: Math.floor(e.dest.z) };
2270
+ const dest = { ...e.dest, x: Math.floor(e.dest.x), y: Math.floor(e.dest.y), z: Math.floor(e.dest.z) };
2169
2271
  s.world = (0, world_js_1.cloneBlocks)(s.world, { from, to }, dest, e.mode);
2170
2272
  if (playing()) {
2171
- const box = { from: dest, to: { x: dest.x + hi.x - lo.x, y: dest.y + hi.y - lo.y, z: dest.z + hi.z - lo.z } };
2273
+ const box = {
2274
+ from: dest,
2275
+ to: { ...dest, x: dest.x + hi.x - lo.x, y: dest.y + hi.y - lo.y, z: dest.z + hi.z - lo.z },
2276
+ };
2172
2277
  // A move clears the source first: an author who applies the entries in order gets the vanilla result on an overlap.
2173
2278
  fire(r, "blocksChanged", {
2174
2279
  changes: e.mode === "move"