@kradle/challenges-sdk 0.24.0 → 0.26.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.
- package/CHANGELOG.md +27 -1
- package/LLM_README.md +51 -2
- package/README.md +73 -0
- package/dist/engine.d.ts +1 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/builder.d.ts.map +1 -1
- package/dist/runtime/builder.js +17 -0
- package/dist/runtime/builder.js.map +1 -1
- package/dist/runtime/chat.js.map +1 -1
- package/dist/runtime/commands.d.ts +70 -0
- package/dist/runtime/commands.d.ts.map +1 -0
- package/dist/runtime/commands.js +121 -0
- package/dist/runtime/commands.js.map +1 -0
- package/dist/runtime/dialog.js.map +1 -1
- package/dist/runtime/dimensions.d.ts.map +1 -1
- package/dist/runtime/dimensions.js.map +1 -1
- package/dist/runtime/errors.d.ts.map +1 -1
- package/dist/runtime/errors.js.map +1 -1
- package/dist/runtime/reducer.d.ts +8 -0
- package/dist/runtime/reducer.d.ts.map +1 -1
- package/dist/runtime/reducer.js +142 -0
- package/dist/runtime/reducer.js.map +1 -1
- package/dist/runtime/rules.d.ts.map +1 -1
- package/dist/runtime/rules.js.map +1 -1
- package/dist/runtime/sandbox-registry.js.map +1 -1
- package/dist/runtime/sandbox.d.ts.map +1 -1
- package/dist/runtime/sandbox.js.map +1 -1
- package/dist/runtime/time.d.ts.map +1 -1
- package/dist/runtime/time.js.map +1 -1
- package/dist/runtime/types.d.ts +36 -1
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/types.js.map +1 -1
- package/dist/runtime/wire.d.ts +63 -3
- package/dist/runtime/wire.d.ts.map +1 -1
- package/dist/runtime/wire.js +2 -0
- package/dist/runtime/wire.js.map +1 -1
- package/dist/runtime/world.d.ts.map +1 -1
- package/dist/runtime/world.js.map +1 -1
- package/dist/structures.js.map +1 -1
- package/dist/test/harness.d.ts +8 -0
- package/dist/test/harness.d.ts.map +1 -1
- package/dist/test/harness.js +48 -4
- package/dist/test/harness.js.map +1 -1
- package/dist/test/helpers.d.ts.map +1 -1
- package/dist/test/helpers.js.map +1 -1
- package/package.json +5 -4
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.commandSchema = commandSchema;
|
|
4
|
+
exports.validCommandValue = validCommandValue;
|
|
5
|
+
const errors_js_1 = require("./errors.js");
|
|
6
|
+
function hasControls(value) {
|
|
7
|
+
return Array.from(value).some((c) => {
|
|
8
|
+
const code = c.charCodeAt(0);
|
|
9
|
+
return code < 32 || (code >= 127 && code <= 159);
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
const definitions = new WeakMap();
|
|
13
|
+
const reserved = new Set([
|
|
14
|
+
"kradle",
|
|
15
|
+
"lobby",
|
|
16
|
+
"l",
|
|
17
|
+
"hub",
|
|
18
|
+
"leave",
|
|
19
|
+
"q",
|
|
20
|
+
"queue",
|
|
21
|
+
"play",
|
|
22
|
+
"again",
|
|
23
|
+
"server",
|
|
24
|
+
"glist",
|
|
25
|
+
"send",
|
|
26
|
+
"velocity",
|
|
27
|
+
]);
|
|
28
|
+
const bad = (message) => {
|
|
29
|
+
throw (0, errors_js_1.definitionError)("bad_command", message, { path: "command" });
|
|
30
|
+
};
|
|
31
|
+
function argument(schema) {
|
|
32
|
+
const result = Object.freeze({
|
|
33
|
+
optional(value) {
|
|
34
|
+
if (schema.optional)
|
|
35
|
+
bad("An argument can be optional only once.");
|
|
36
|
+
if (value !== undefined &&
|
|
37
|
+
(schema.type === "player" || !validCommandValue({ ...schema, name: "default" }, value)))
|
|
38
|
+
bad("Invalid command default.");
|
|
39
|
+
return argument({
|
|
40
|
+
...schema,
|
|
41
|
+
optional: true,
|
|
42
|
+
...(value === undefined ? {} : { default: value }),
|
|
43
|
+
});
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
definitions.set(result, schema);
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
function numeric(type, bounds = {}) {
|
|
50
|
+
const { min, max } = bounds;
|
|
51
|
+
for (const n of [min, max])
|
|
52
|
+
if (n !== undefined &&
|
|
53
|
+
(!Number.isFinite(n) || (type === "integer" && (!Number.isInteger(n) || n < -2147483648 || n > 2147483647))))
|
|
54
|
+
bad("Invalid command bounds.");
|
|
55
|
+
if (min !== undefined && max !== undefined && min > max)
|
|
56
|
+
bad("The minimum exceeds the maximum.");
|
|
57
|
+
return argument({ type, ...(min === undefined ? {} : { min }), ...(max === undefined ? {} : { max }) });
|
|
58
|
+
}
|
|
59
|
+
const factory = Object.freeze({
|
|
60
|
+
enum(values) {
|
|
61
|
+
if (!Array.isArray(values) ||
|
|
62
|
+
values.length < 1 ||
|
|
63
|
+
values.length > 64 ||
|
|
64
|
+
new Set(values).size !== values.length ||
|
|
65
|
+
values.some((v) => typeof v !== "string" || !v.length || v.length > 128 || hasControls(v)))
|
|
66
|
+
bad("An enum needs 1 to 64 unique text values.");
|
|
67
|
+
return argument({ type: "enum", values: [...values] });
|
|
68
|
+
},
|
|
69
|
+
boolean: () => argument({ type: "boolean" }),
|
|
70
|
+
integer: (bounds) => numeric("integer", bounds),
|
|
71
|
+
number: (bounds) => numeric("number", bounds),
|
|
72
|
+
word: () => argument({ type: "word" }),
|
|
73
|
+
string: () => argument({ type: "string" }),
|
|
74
|
+
text: () => argument({ type: "text" }),
|
|
75
|
+
player: () => argument({ type: "player" }),
|
|
76
|
+
});
|
|
77
|
+
function commandSchema(name, description, args) {
|
|
78
|
+
if (typeof name !== "string" || !/^[a-z][a-z0-9_-]{0,31}$/.test(name) || reserved.has(name))
|
|
79
|
+
bad("Invalid or reserved command name.");
|
|
80
|
+
if (typeof description !== "string" || !description.length || description.length > 256)
|
|
81
|
+
bad("A command needs a description of 1 to 256 characters.");
|
|
82
|
+
const fields = args ? args(factory) : {};
|
|
83
|
+
if (!fields || typeof fields !== "object" || Array.isArray(fields) || "then" in fields)
|
|
84
|
+
bad("args must return an argument object.");
|
|
85
|
+
const entries = Object.entries(fields);
|
|
86
|
+
if (entries.length > 8)
|
|
87
|
+
bad("A command accepts at most 8 arguments.");
|
|
88
|
+
let optional = false;
|
|
89
|
+
const schemas = entries.map(([key, value], index) => {
|
|
90
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]{0,31}$/.test(key) || ["__proto__", "constructor", "prototype"].includes(key))
|
|
91
|
+
bad("Invalid argument name.");
|
|
92
|
+
const s = definitions.get(value);
|
|
93
|
+
if (!s)
|
|
94
|
+
return bad("Use the supplied argument factory.");
|
|
95
|
+
if (optional && !s.optional)
|
|
96
|
+
bad("Required arguments must precede optional arguments.");
|
|
97
|
+
optional = !!s.optional;
|
|
98
|
+
if (s.type === "text" && index !== entries.length - 1)
|
|
99
|
+
bad("Text must be the last argument.");
|
|
100
|
+
return { ...s, name: key, ...(s.values ? { values: [...s.values] } : {}) };
|
|
101
|
+
});
|
|
102
|
+
return { name, description, args: schemas };
|
|
103
|
+
}
|
|
104
|
+
function validCommandValue(schema, value) {
|
|
105
|
+
if (schema.type === "boolean")
|
|
106
|
+
return typeof value === "boolean";
|
|
107
|
+
if (schema.type === "integer" || schema.type === "number")
|
|
108
|
+
return (typeof value === "number" &&
|
|
109
|
+
Number.isFinite(value) &&
|
|
110
|
+
(schema.type !== "integer" || (Number.isInteger(value) && value >= -2147483648 && value <= 2147483647)) &&
|
|
111
|
+
(schema.min === undefined || value >= schema.min) &&
|
|
112
|
+
(schema.max === undefined || value <= schema.max));
|
|
113
|
+
if (typeof value !== "string" || value.length > 1024 || hasControls(value))
|
|
114
|
+
return false;
|
|
115
|
+
if (schema.type === "enum")
|
|
116
|
+
return schema.values?.includes(value) ?? false;
|
|
117
|
+
if (schema.type === "word" || schema.type === "player")
|
|
118
|
+
return /^[A-Za-z0-9_+.-]+$/.test(value);
|
|
119
|
+
return schema.type === "string" || value.length > 0;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/runtime/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../src/runtime/dialog.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../src/runtime/dialog.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dimensions.d.ts","sourceRoot":"","sources":["../../src/runtime/dimensions.ts"],"names":[],"mappings":"AAEA,6CAA6C;AAC7C,eAAO,MAAM,UAAU
|
|
1
|
+
{"version":3,"file":"dimensions.d.ts","sourceRoot":"","sources":["../../src/runtime/dimensions.ts"],"names":[],"mappings":"AAEA,6CAA6C;AAC7C,eAAO,MAAM,UAAU,YAAI,qBAAqB,EAAE,sBAAsB,EAAE,mBAAmB,CAAU,CAAC;AAExG,sFAAsF;AACtF,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpD,oEAAoE;AACpE,eAAO,MAAM,SAAS,EAAE,SAAiC,CAAC;AAE1D,uFAAuF;AACvF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,EAAE,CAgB7D;AAED,mCAAmC;AACnC,wBAAgB,WAAW,CAAC,QAAQ,EAAE;IAAE,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;CAAE,GAAG,SAAS,CAEtF;AAED,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,SAAS,GAAE,SAAqB,GAAG,MAAM,CAExE;AAED,oCAAoC;AACpC,wBAAgB,WAAW,CAAC,EAAE,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;CAAE,GAAG,MAAM,CAE9G;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,GAAE,SAAqB,GAAG,OAAO,CAKvG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dimensions.js","sourceRoot":"","sources":["../../src/runtime/dimensions.ts"],"names":[],"mappings":"
|
|
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;
|
|
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
|
|
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,3 +1,4 @@
|
|
|
1
|
+
import { type CommandSchema } from "./commands.js";
|
|
1
2
|
import { type DialogSpec } from "./dialog.js";
|
|
2
3
|
import { type Duration, type Ticks } from "./time.js";
|
|
3
4
|
import type { BlockSpec, BlockState, ChallengeConfig, Handlers, Outcome, PhaseSpec, StateDecl, World } from "./types.js";
|
|
@@ -25,6 +26,11 @@ type AnyVoteRule = {
|
|
|
25
26
|
export declare const MAX_ACHIEVEMENTS = 64;
|
|
26
27
|
/** What the builder compiles and locks: the reducer reads only this. */
|
|
27
28
|
export interface Definition {
|
|
29
|
+
customCommands: {
|
|
30
|
+
schema: CommandSchema;
|
|
31
|
+
available: unknown;
|
|
32
|
+
run: unknown;
|
|
33
|
+
}[];
|
|
28
34
|
config: ChallengeConfig;
|
|
29
35
|
state: StateDecl<ChallengeConfig, unknown, unknown, Record<string, unknown>>;
|
|
30
36
|
life: "single" | "respawn";
|
|
@@ -107,6 +113,8 @@ interface VoteState {
|
|
|
107
113
|
}
|
|
108
114
|
/** The reducer state: plain JSON, except the world mirror (shared by reference, updated by copy). */
|
|
109
115
|
export interface State {
|
|
116
|
+
/** The last published access for connected participants. */
|
|
117
|
+
commandAccess: Record<string, string[]>;
|
|
110
118
|
/** The run's seed, from `run_started`. */
|
|
111
119
|
seed: number;
|
|
112
120
|
/** The generator's state; every draw advances it. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../src/runtime/reducer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../src/runtime/reducer.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/reducer.js
CHANGED
|
@@ -6,6 +6,7 @@ exports.parseBlockState = parseBlockState;
|
|
|
6
6
|
exports.blockSpecString = blockSpecString;
|
|
7
7
|
exports.splitBatches = splitBatches;
|
|
8
8
|
exports.createReducer = createReducer;
|
|
9
|
+
const commands_js_1 = require("./commands.js");
|
|
9
10
|
const dimensions_js_1 = require("./dimensions.js");
|
|
10
11
|
// The reducer: one locked definition, one `init()` per run, one `reduce(state,
|
|
11
12
|
// event)` per engine event. Everything a rule sees comes through a context
|
|
@@ -39,6 +40,15 @@ exports.MAX_TRANSITIONS_PER_EVENT = 8;
|
|
|
39
40
|
const SETUP_BATCH_TIMEOUT_TICKS = 30 * 20;
|
|
40
41
|
/** The bound Kradle applies to a result's achievements; mirrored here so the harness reports it. */
|
|
41
42
|
exports.MAX_ACHIEVEMENTS = 64;
|
|
43
|
+
/** A qualified slug, `<creator>:<name>`, as Kradle names a challenge or an agent. The backend checks that it exists. */
|
|
44
|
+
const SLUG = /^[a-z0-9][a-z0-9-]{0,34}[a-z0-9]:[a-z0-9][a-z0-9-]{0,34}[a-z0-9]$/;
|
|
45
|
+
/** A role name, as a challenge's `roles` declares it. */
|
|
46
|
+
const ROLE = /^[a-z0-9][a-z0-9-]{0,34}[a-z0-9]$/;
|
|
47
|
+
/** A param name, as `config.params` declares it. */
|
|
48
|
+
const PARAM_NAME = /^[A-Za-z_][A-Za-z0-9_]{0,39}$/;
|
|
49
|
+
/** The bounds of `g.sendToChallenge`: the agents of one run, and the JSON size of the params. */
|
|
50
|
+
const MAX_SEND_AGENTS = 8;
|
|
51
|
+
const MAX_SEND_PARAMS_CHARS = 4096;
|
|
42
52
|
// ---------------------------------------------------------------- small helpers
|
|
43
53
|
/** The air a player has at the surface, in seconds. */
|
|
44
54
|
const FULL_AIR = 15;
|
|
@@ -366,6 +376,7 @@ function createReducer(def) {
|
|
|
366
376
|
every: {},
|
|
367
377
|
timers: {},
|
|
368
378
|
nextGen: 0,
|
|
379
|
+
commandAccess: {},
|
|
369
380
|
players: {},
|
|
370
381
|
game: {},
|
|
371
382
|
votes: Object.fromEntries(voteIds.map((id) => [id, { open: false, round: 0, cast: {} }])),
|
|
@@ -729,6 +740,65 @@ function createReducer(def) {
|
|
|
729
740
|
throw (0, errors_js_1.apiError)("bad_metric", `setMetric("${name}"): ${value} is not finite`);
|
|
730
741
|
r.actions.push(compact({ type: "metric", name, value, player: opts?.player?.name }));
|
|
731
742
|
},
|
|
743
|
+
sendToChallenge(player, challenge, options) {
|
|
744
|
+
notify("sendToChallenge");
|
|
745
|
+
const target = s.players[player?.name];
|
|
746
|
+
if (!target?.human)
|
|
747
|
+
throw (0, errors_js_1.apiError)("bad_player", "sendToChallenge: select a human participant");
|
|
748
|
+
if (typeof challenge !== "string" || !SLUG.test(challenge)) {
|
|
749
|
+
throw (0, errors_js_1.apiError)("invalid_value", `sendToChallenge: "${challenge}" is not a challenge slug`, {
|
|
750
|
+
value: challenge,
|
|
751
|
+
});
|
|
752
|
+
}
|
|
753
|
+
const role = options?.role;
|
|
754
|
+
if (role !== undefined && (typeof role !== "string" || !ROLE.test(role))) {
|
|
755
|
+
throw (0, errors_js_1.apiError)("invalid_value", `sendToChallenge: "${role}" is not a role name`, { value: role });
|
|
756
|
+
}
|
|
757
|
+
const raw = options?.agents;
|
|
758
|
+
if (raw !== undefined && (!Array.isArray(raw) || raw.length > MAX_SEND_AGENTS)) {
|
|
759
|
+
throw (0, errors_js_1.apiError)("invalid_value", `sendToChallenge: agents is a list of at most ${MAX_SEND_AGENTS} agents`);
|
|
760
|
+
}
|
|
761
|
+
const agents = raw?.map((a) => {
|
|
762
|
+
const one = typeof a === "string" ? { agent: a } : a;
|
|
763
|
+
if (!one || typeof one.agent !== "string" || !SLUG.test(one.agent)) {
|
|
764
|
+
throw (0, errors_js_1.apiError)("invalid_value", "sendToChallenge: an agent is a slug, or { agent, role }", { value: a });
|
|
765
|
+
}
|
|
766
|
+
if (one.role !== undefined && (typeof one.role !== "string" || !ROLE.test(one.role))) {
|
|
767
|
+
throw (0, errors_js_1.apiError)("invalid_value", `sendToChallenge: "${one.role}" is not a role name`, { value: one.role });
|
|
768
|
+
}
|
|
769
|
+
return compact({ agent: one.agent, role: one.role });
|
|
770
|
+
});
|
|
771
|
+
const params = options?.params;
|
|
772
|
+
if (params !== undefined) {
|
|
773
|
+
if (params === null || typeof params !== "object" || Array.isArray(params)) {
|
|
774
|
+
throw (0, errors_js_1.apiError)("invalid_value", "sendToChallenge: params is an object");
|
|
775
|
+
}
|
|
776
|
+
for (const [key, value] of Object.entries(params)) {
|
|
777
|
+
if (!PARAM_NAME.test(key)) {
|
|
778
|
+
throw (0, errors_js_1.apiError)("invalid_value", `sendToChallenge: "${key}" is not a param name`, { value: key });
|
|
779
|
+
}
|
|
780
|
+
const ok = typeof value === "string" ||
|
|
781
|
+
typeof value === "boolean" ||
|
|
782
|
+
(typeof value === "number" && Number.isFinite(value));
|
|
783
|
+
if (!ok) {
|
|
784
|
+
throw (0, errors_js_1.apiError)("invalid_value", `sendToChallenge: the param "${key}" is not a string, a finite number or a boolean`, {
|
|
785
|
+
value,
|
|
786
|
+
});
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
if (JSON.stringify(params).length > MAX_SEND_PARAMS_CHARS) {
|
|
790
|
+
throw (0, errors_js_1.apiError)("invalid_value", `sendToChallenge: the params are over ${MAX_SEND_PARAMS_CHARS} characters`);
|
|
791
|
+
}
|
|
792
|
+
}
|
|
793
|
+
r.actions.push(compact({
|
|
794
|
+
type: "send_to_challenge",
|
|
795
|
+
player: player.name,
|
|
796
|
+
challenge,
|
|
797
|
+
role,
|
|
798
|
+
agents,
|
|
799
|
+
params: params === undefined ? undefined : { ...params },
|
|
800
|
+
}));
|
|
801
|
+
},
|
|
732
802
|
achievement(player, id) {
|
|
733
803
|
notify("achievement");
|
|
734
804
|
if (typeof id !== "string" || !/^[a-z0-9][a-z0-9_-]{0,63}$/.test(id)) {
|
|
@@ -1819,6 +1889,10 @@ function createReducer(def) {
|
|
|
1819
1889
|
return;
|
|
1820
1890
|
}
|
|
1821
1891
|
const missing = missingCapabilities(e.capabilities);
|
|
1892
|
+
if (def.customCommands.length)
|
|
1893
|
+
for (const c of ["custom_commands_v1", "agent_commands_v1"])
|
|
1894
|
+
if (!e.capabilities.includes(c))
|
|
1895
|
+
missing.push(c);
|
|
1822
1896
|
if (dimensions.length > 1 && !e.capabilities.includes("dimensions"))
|
|
1823
1897
|
missing.push("dimensions");
|
|
1824
1898
|
if (def.setup && !e.capabilities.includes("batch"))
|
|
@@ -2281,6 +2355,9 @@ function createReducer(def) {
|
|
|
2281
2355
|
});
|
|
2282
2356
|
break;
|
|
2283
2357
|
}
|
|
2358
|
+
case "challenge_command":
|
|
2359
|
+
customCommand(r, e);
|
|
2360
|
+
break;
|
|
2284
2361
|
case "custom": {
|
|
2285
2362
|
if (!playing())
|
|
2286
2363
|
return;
|
|
@@ -2289,6 +2366,66 @@ function createReducer(def) {
|
|
|
2289
2366
|
}
|
|
2290
2367
|
}
|
|
2291
2368
|
}
|
|
2369
|
+
function commandAvailable(r, command, player) {
|
|
2370
|
+
return (r.s.status === "PLAYING" &&
|
|
2371
|
+
player.connected &&
|
|
2372
|
+
(!command.available ||
|
|
2373
|
+
run(r, "pure", command.available, ctxOf(r, "read"), playerView(r, player, false)) === true));
|
|
2374
|
+
}
|
|
2375
|
+
function publishCommandAccess(r) {
|
|
2376
|
+
if (!def.customCommands.length)
|
|
2377
|
+
return;
|
|
2378
|
+
const access = {};
|
|
2379
|
+
if (r.s.status === "PLAYING")
|
|
2380
|
+
for (const p of Object.values(r.s.players)) {
|
|
2381
|
+
if (p.connected)
|
|
2382
|
+
access[p.name] = def.customCommands.filter((c) => commandAvailable(r, c, p)).map((c) => c.schema.name);
|
|
2383
|
+
}
|
|
2384
|
+
if (JSON.stringify(access) !== JSON.stringify(r.s.commandAccess)) {
|
|
2385
|
+
r.s.commandAccess = access;
|
|
2386
|
+
r.actions.push({ type: "command_access", players: snapshot(access) });
|
|
2387
|
+
}
|
|
2388
|
+
}
|
|
2389
|
+
function customCommand(r, e) {
|
|
2390
|
+
const reject = (reason) => r.actions.push({ type: "command_decision", requestId: e.requestId, origin: e.origin, accepted: false, reason });
|
|
2391
|
+
const p = r.s.players[e.player];
|
|
2392
|
+
const command = def.customCommands.find((c) => c.schema.name === e.command);
|
|
2393
|
+
if (!p || (e.uuid !== undefined && e.uuid !== p.uuid) || !command || !commandAvailable(r, command, p)) {
|
|
2394
|
+
reject("The command is not available.");
|
|
2395
|
+
return;
|
|
2396
|
+
}
|
|
2397
|
+
if (!e.args ||
|
|
2398
|
+
typeof e.args !== "object" ||
|
|
2399
|
+
Array.isArray(e.args) ||
|
|
2400
|
+
Object.keys(e.args).some((k) => !command.schema.args.some((a) => a.name === k))) {
|
|
2401
|
+
reject("Invalid command arguments.");
|
|
2402
|
+
return;
|
|
2403
|
+
}
|
|
2404
|
+
const args = {};
|
|
2405
|
+
for (const a of command.schema.args) {
|
|
2406
|
+
const value = Object.hasOwn(e.args, a.name) ? e.args[a.name] : a.default;
|
|
2407
|
+
if (value === undefined && a.optional) {
|
|
2408
|
+
args[a.name] = undefined;
|
|
2409
|
+
continue;
|
|
2410
|
+
}
|
|
2411
|
+
if (!(0, commands_js_1.validCommandValue)(a, value)) {
|
|
2412
|
+
reject("Invalid command arguments.");
|
|
2413
|
+
return;
|
|
2414
|
+
}
|
|
2415
|
+
if (a.type === "player") {
|
|
2416
|
+
const target = r.s.players[value];
|
|
2417
|
+
if (!target?.connected) {
|
|
2418
|
+
reject("Select a connected participant.");
|
|
2419
|
+
return;
|
|
2420
|
+
}
|
|
2421
|
+
args[a.name] = viewOf(r, target);
|
|
2422
|
+
}
|
|
2423
|
+
else
|
|
2424
|
+
args[a.name] = value;
|
|
2425
|
+
}
|
|
2426
|
+
run(r, "handler", command.run, ctxOf(r, "full"), { player: viewOf(r, p), args: Object.freeze(args) });
|
|
2427
|
+
r.actions.push({ type: "command_decision", requestId: e.requestId, origin: e.origin, accepted: true });
|
|
2428
|
+
}
|
|
2292
2429
|
function voteAttempt(r, e) {
|
|
2293
2430
|
const s = r.s;
|
|
2294
2431
|
const p = s.players[e.name];
|
|
@@ -2382,6 +2519,7 @@ function createReducer(def) {
|
|
|
2382
2519
|
checkpoint(r);
|
|
2383
2520
|
if (r.req.end)
|
|
2384
2521
|
finalize(r);
|
|
2522
|
+
publishCommandAccess(r);
|
|
2385
2523
|
assertJson({ game: r.s.game, players: Object.fromEntries(Object.values(r.s.players).map((p) => [p.name, p.state])) }, "state");
|
|
2386
2524
|
}
|
|
2387
2525
|
catch (err) {
|
|
@@ -2391,6 +2529,10 @@ function createReducer(def) {
|
|
|
2391
2529
|
r = { ...r, s: clone(input), actions: [], batch: null, req: { phase: null, end: null, budget: 0 } };
|
|
2392
2530
|
if (event.type === "tick")
|
|
2393
2531
|
r.s.tick = event.serverTick;
|
|
2532
|
+
if (def.customCommands.length) {
|
|
2533
|
+
r.s.commandAccess = {};
|
|
2534
|
+
r.actions.push({ type: "command_access", players: {} });
|
|
2535
|
+
}
|
|
2394
2536
|
const detail = err instanceof errors_js_1.ChallengeError ? err.toJSON() : { message: String(err?.message ?? err) };
|
|
2395
2537
|
failRun(r.s, r.actions, "error_challenge", `challenge error on ${event.type}: ${err.message}`, {
|
|
2396
2538
|
event: event,
|