playcademy 0.31.1-beta.2 → 0.31.1-beta.3
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/dist/bucket.js +1 -1
- package/dist/cli.js +2 -2
- package/dist/constants.js +1 -1
- package/dist/db.js +1 -1
- package/dist/index.js +4 -4
- package/dist/runtime/dashboard-runtime/manifest.json +4 -4
- package/dist/runtime/game-runtime/index.js +36 -24
- package/dist/runtime/game-runtime/manifest.json +4 -4
- package/dist/utils.js +4 -4
- package/dist/version.js +1 -1
- package/package.json +2 -2
package/dist/bucket.js
CHANGED
|
@@ -42,7 +42,7 @@ var GAME_API_ROUTES_DIRECTORY = `${GAME_SERVER_ROOT_DIRECTORY}/api`;
|
|
|
42
42
|
// ../better-auth/package.json
|
|
43
43
|
var package_default = {
|
|
44
44
|
name: "@playcademy/better-auth",
|
|
45
|
-
version: "0.0.24-beta.
|
|
45
|
+
version: "0.0.24-beta.3",
|
|
46
46
|
type: "module",
|
|
47
47
|
exports: {
|
|
48
48
|
"./server": {
|
package/dist/cli.js
CHANGED
|
@@ -1208,7 +1208,7 @@ var SAMPLE_BUCKET_FILENAME = "bucket.ts";
|
|
|
1208
1208
|
// ../better-auth/package.json
|
|
1209
1209
|
var package_default = {
|
|
1210
1210
|
name: "@playcademy/better-auth",
|
|
1211
|
-
version: "0.0.24-beta.
|
|
1211
|
+
version: "0.0.24-beta.3",
|
|
1212
1212
|
type: "module",
|
|
1213
1213
|
exports: {
|
|
1214
1214
|
"./server": {
|
|
@@ -3045,7 +3045,7 @@ import { existsSync as existsSync11, mkdirSync as mkdirSync5, readFileSync as re
|
|
|
3045
3045
|
import { join as join12 } from "node:path";
|
|
3046
3046
|
|
|
3047
3047
|
// src/version.ts
|
|
3048
|
-
var cliVersion = false ? "0.0.0-dev" : "0.31.1-beta.
|
|
3048
|
+
var cliVersion = false ? "0.0.0-dev" : "0.31.1-beta.3";
|
|
3049
3049
|
|
|
3050
3050
|
// src/lib/init/database.ts
|
|
3051
3051
|
var drizzleConfigTemplate = loadTemplateString("database/drizzle-config.ts");
|
package/dist/constants.js
CHANGED
package/dist/db.js
CHANGED
|
@@ -2333,7 +2333,7 @@ var GAME_API_ROUTES_DIRECTORY = `${GAME_SERVER_ROOT_DIRECTORY}/api`;
|
|
|
2333
2333
|
// ../better-auth/package.json
|
|
2334
2334
|
var package_default = {
|
|
2335
2335
|
name: "@playcademy/better-auth",
|
|
2336
|
-
version: "0.0.24-beta.
|
|
2336
|
+
version: "0.0.24-beta.3",
|
|
2337
2337
|
type: "module",
|
|
2338
2338
|
exports: {
|
|
2339
2339
|
"./server": {
|
package/dist/index.js
CHANGED
|
@@ -2345,7 +2345,7 @@ var SAMPLE_BUCKET_FILENAME = "bucket.ts";
|
|
|
2345
2345
|
// ../better-auth/package.json
|
|
2346
2346
|
var package_default = {
|
|
2347
2347
|
name: "@playcademy/better-auth",
|
|
2348
|
-
version: "0.0.24-beta.
|
|
2348
|
+
version: "0.0.24-beta.3",
|
|
2349
2349
|
type: "module",
|
|
2350
2350
|
exports: {
|
|
2351
2351
|
"./server": {
|
|
@@ -6486,7 +6486,7 @@ import { existsSync as existsSync11, mkdirSync as mkdirSync2, readFileSync as re
|
|
|
6486
6486
|
import { join as join12 } from "node:path";
|
|
6487
6487
|
|
|
6488
6488
|
// src/version.ts
|
|
6489
|
-
var cliVersion = false ? "0.0.0-dev" : "0.31.1-beta.
|
|
6489
|
+
var cliVersion = false ? "0.0.0-dev" : "0.31.1-beta.3";
|
|
6490
6490
|
|
|
6491
6491
|
// src/lib/init/database.ts
|
|
6492
6492
|
var drizzleConfigTemplate = loadTemplateString("database/drizzle-config.ts");
|
|
@@ -22993,8 +22993,8 @@ var StartAssessmentBodySchema = external_exports.discriminatedUnion("purpose", [
|
|
|
22993
22993
|
}),
|
|
22994
22994
|
StartAssessmentBaseSchema.extend({
|
|
22995
22995
|
purpose: external_exports.literal("review"),
|
|
22996
|
-
requireBothQuestions: external_exports.
|
|
22997
|
-
standards: external_exports.array(AssessmentStandardRefSchema2).min(1).max(TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.standards),
|
|
22996
|
+
requireBothQuestions: external_exports.never().optional(),
|
|
22997
|
+
standards: external_exports.array(AssessmentStandardRefSchema2.and(external_exports.object({ requireBothQuestions: external_exports.boolean().optional() }))).min(1).max(TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.standards),
|
|
22998
22998
|
candidateItemsPerStandard: external_exports.number().int().positive().max(TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.candidateItemsPerStandard).optional()
|
|
22999
22999
|
}),
|
|
23000
23000
|
StartAssessmentBaseSchema.extend({
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"cliVersion": "0.31.1-beta.
|
|
3
|
-
"sdkVersion": "0.19.1-beta.
|
|
4
|
-
"runtimeBuildId": "
|
|
5
|
-
"inputFingerprint": "
|
|
2
|
+
"cliVersion": "0.31.1-beta.3",
|
|
3
|
+
"sdkVersion": "0.19.1-beta.4",
|
|
4
|
+
"runtimeBuildId": "691d5310a7ed",
|
|
5
|
+
"inputFingerprint": "691d5310a7ed13e93287da0159f9e9d932ae881add0e32c66efea273866b92a1",
|
|
6
6
|
"entry": "index.js"
|
|
7
7
|
}
|
|
@@ -11634,19 +11634,22 @@ function scorePlatformAssessmentItem(item, responses) {
|
|
|
11634
11634
|
isCorrect: verdicts.length > 0 && verdicts.every(Boolean)
|
|
11635
11635
|
};
|
|
11636
11636
|
}
|
|
11637
|
+
function reviewStandardRef({
|
|
11638
|
+
framework,
|
|
11639
|
+
identifier
|
|
11640
|
+
}) {
|
|
11641
|
+
return { framework, identifier };
|
|
11642
|
+
}
|
|
11637
11643
|
function reportReviewRequiredPairUnavailable(review, administeredItemIdentifiers2, report) {
|
|
11638
|
-
if (!review.requireBothQuestions) {
|
|
11639
|
-
return;
|
|
11640
|
-
}
|
|
11641
11644
|
const administered = new Set(administeredItemIdentifiers2);
|
|
11642
11645
|
const failures = [];
|
|
11643
|
-
for (const standard of review.standards) {
|
|
11646
|
+
for (const standard of review.standards.filter((entry) => entry.requireBothQuestions)) {
|
|
11644
11647
|
const key = assessmentStandardRefKey(standard);
|
|
11645
11648
|
const selected = new Set(review.selections.filter((selection) => assessmentStandardRefKey(selection.standard) === key).map((selection) => selection.itemIdentifier));
|
|
11646
11649
|
const administeredCount = [...selected].filter((identifier) => administered.has(identifier)).length;
|
|
11647
11650
|
if (selected.size < 2 || administeredCount === 1) {
|
|
11648
11651
|
failures.push({
|
|
11649
|
-
standard,
|
|
11652
|
+
standard: reviewStandardRef(standard),
|
|
11650
11653
|
reason: selected.size < 2 ? "selection_shortage" : "not_administered",
|
|
11651
11654
|
requiredCount: 2,
|
|
11652
11655
|
selectedCount: selected.size,
|
|
@@ -11677,6 +11680,9 @@ function canonicalRequestStandards(standards) {
|
|
|
11677
11680
|
}
|
|
11678
11681
|
const canonical = /* @__PURE__ */ new Map();
|
|
11679
11682
|
for (const input of standards) {
|
|
11683
|
+
if (input.requireBothQuestions !== void 0 && typeof input.requireBothQuestions !== "boolean") {
|
|
11684
|
+
throw new Error("review standard requireBothQuestions must be a boolean");
|
|
11685
|
+
}
|
|
11680
11686
|
const standard = canonicalAssessmentStandardRef(input);
|
|
11681
11687
|
if (!reviewStandardFieldsWithinLimits(standard)) {
|
|
11682
11688
|
throw new RangeError(`Review standard fields may contain at most ${TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.standardFieldLength} characters`);
|
|
@@ -11685,13 +11691,19 @@ function canonicalRequestStandards(standards) {
|
|
|
11685
11691
|
throw new Error("Review standards require a framework and identifier");
|
|
11686
11692
|
}
|
|
11687
11693
|
const key = assessmentStandardRefKey(standard);
|
|
11688
|
-
if (!canonical.has(key)) {
|
|
11689
|
-
canonical.set(key,
|
|
11694
|
+
if (!canonical.has(key) || input.requireBothQuestions) {
|
|
11695
|
+
canonical.set(key, {
|
|
11696
|
+
...standard,
|
|
11697
|
+
...input.requireBothQuestions ? { requireBothQuestions: true } : {}
|
|
11698
|
+
});
|
|
11690
11699
|
}
|
|
11691
11700
|
}
|
|
11692
|
-
return [...canonical.values()]
|
|
11701
|
+
return [...canonical.values()];
|
|
11693
11702
|
}
|
|
11694
11703
|
function normalizeReviewRequest(request2) {
|
|
11704
|
+
if ("requireBothQuestions" in request2 && request2.requireBothQuestions !== void 0) {
|
|
11705
|
+
throw new Error("Set requireBothQuestions on individual review standards, not the review request");
|
|
11706
|
+
}
|
|
11695
11707
|
const candidateItemsPerStandard = request2.candidateItemsPerStandard ?? 1;
|
|
11696
11708
|
if (!Number.isInteger(candidateItemsPerStandard) || candidateItemsPerStandard <= 0 || candidateItemsPerStandard > TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.candidateItemsPerStandard) {
|
|
11697
11709
|
throw new RangeError(`candidateItemsPerStandard must be a positive integer at most ${TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.candidateItemsPerStandard}`);
|
|
@@ -11702,20 +11714,20 @@ function normalizeReviewRequest(request2) {
|
|
|
11702
11714
|
}
|
|
11703
11715
|
return {
|
|
11704
11716
|
standards,
|
|
11705
|
-
candidateItemsPerStandard
|
|
11706
|
-
...request2.requireBothQuestions ? { requireBothQuestions: true } : {}
|
|
11717
|
+
candidateItemsPerStandard
|
|
11707
11718
|
};
|
|
11708
11719
|
}
|
|
11709
11720
|
function reviewRequestFingerprint(request2, policy) {
|
|
11710
11721
|
const normalized = normalizeReviewRequest(request2);
|
|
11722
|
+
const requiredStandardKeys = normalized.standards.filter((standard) => standard.requireBothQuestions).map(assessmentStandardRefKey);
|
|
11711
11723
|
return JSON.stringify({
|
|
11712
11724
|
kind: "standards-review",
|
|
11713
11725
|
policy: {
|
|
11714
11726
|
version: policy.version
|
|
11715
11727
|
},
|
|
11716
11728
|
candidateItemsPerStandard: normalized.candidateItemsPerStandard,
|
|
11717
|
-
|
|
11718
|
-
|
|
11729
|
+
standardKeys: normalized.standards.map(assessmentStandardRefKey),
|
|
11730
|
+
...requiredStandardKeys.length > 0 ? { requiredStandardKeys } : {}
|
|
11719
11731
|
});
|
|
11720
11732
|
}
|
|
11721
11733
|
function exposureTimestamp(value) {
|
|
@@ -11765,9 +11777,10 @@ function rankedCandidatesByStandard(bank, exposures) {
|
|
|
11765
11777
|
return byStandard;
|
|
11766
11778
|
}
|
|
11767
11779
|
function reviewSlots(request2) {
|
|
11768
|
-
return request2.standards.flatMap((standard) => Array.from({ length: request2.candidateItemsPerStandard }, () => ({
|
|
11769
|
-
standard,
|
|
11770
|
-
standardKey: assessmentStandardRefKey(standard)
|
|
11780
|
+
return request2.standards.flatMap((standard, servingIndex) => Array.from({ length: request2.candidateItemsPerStandard }, () => ({
|
|
11781
|
+
standard: reviewStandardRef(standard),
|
|
11782
|
+
standardKey: assessmentStandardRefKey(standard),
|
|
11783
|
+
servingIndex
|
|
11771
11784
|
})));
|
|
11772
11785
|
}
|
|
11773
11786
|
function matchingCandidates(candidatesByStandard, slotCount) {
|
|
@@ -11880,7 +11893,7 @@ function fulfillment(request2, candidatesByStandard, selections) {
|
|
|
11880
11893
|
const selected = selectedByStandard.get(key) ?? 0;
|
|
11881
11894
|
return selected < request2.candidateItemsPerStandard ? [
|
|
11882
11895
|
{
|
|
11883
|
-
standard,
|
|
11896
|
+
standard: reviewStandardRef(standard),
|
|
11884
11897
|
requested: request2.candidateItemsPerStandard,
|
|
11885
11898
|
selected,
|
|
11886
11899
|
eligible: candidatesByStandard.get(key)?.length ?? 0
|
|
@@ -11905,10 +11918,10 @@ function fulfillment(request2, candidatesByStandard, selections) {
|
|
|
11905
11918
|
function selectReviewItems(input) {
|
|
11906
11919
|
const request2 = normalizeReviewRequest(input.request);
|
|
11907
11920
|
const candidatesByStandard = rankedCandidatesByStandard(input.bank, input.exposures);
|
|
11908
|
-
const slots = reviewSlots(request2);
|
|
11921
|
+
const slots = reviewSlots(request2).toSorted((left, right) => compareCodeUnits(left.standardKey, right.standardKey));
|
|
11909
11922
|
const boundedCandidates = matchingCandidates(candidatesByStandard, slots.length);
|
|
11910
11923
|
const selected = preferredDistinctMatching(slots, boundedCandidates);
|
|
11911
|
-
const selections = [...selected.entries()].toSorted(([left], [right]) => left - right).map(([index, itemIdentifier]) => ({
|
|
11924
|
+
const selections = [...selected.entries()].toSorted(([left], [right]) => slots[left].servingIndex - slots[right].servingIndex || left - right).map(([index, itemIdentifier]) => ({
|
|
11912
11925
|
standard: slots[index].standard,
|
|
11913
11926
|
itemIdentifier
|
|
11914
11927
|
}));
|
|
@@ -12703,8 +12716,8 @@ var init_assessment_runtime2 = __esm({
|
|
|
12703
12716
|
}),
|
|
12704
12717
|
StartAssessmentBaseSchema.extend({
|
|
12705
12718
|
purpose: external_exports.literal("review"),
|
|
12706
|
-
requireBothQuestions: external_exports.
|
|
12707
|
-
standards: external_exports.array(AssessmentStandardRefSchema2).min(1).max(TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.standards),
|
|
12719
|
+
requireBothQuestions: external_exports.never().optional(),
|
|
12720
|
+
standards: external_exports.array(AssessmentStandardRefSchema2.and(external_exports.object({ requireBothQuestions: external_exports.boolean().optional() }))).min(1).max(TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.standards),
|
|
12708
12721
|
candidateItemsPerStandard: external_exports.number().int().positive().max(TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.candidateItemsPerStandard).optional()
|
|
12709
12722
|
}),
|
|
12710
12723
|
StartAssessmentBaseSchema.extend({
|
|
@@ -13005,7 +13018,6 @@ var init_local_assessment_runtime = __esm({
|
|
|
13005
13018
|
purpose: "review",
|
|
13006
13019
|
standards: [...request2.standards],
|
|
13007
13020
|
candidateItemsPerStandard: request2.candidateItemsPerStandard,
|
|
13008
|
-
...request2.requireBothQuestions ? { requireBothQuestions: true } : {},
|
|
13009
13021
|
selections: [...selected.selections],
|
|
13010
13022
|
fulfillment: selected.fulfillment
|
|
13011
13023
|
},
|
|
@@ -14253,9 +14265,9 @@ var init_list = __esm({
|
|
|
14253
14265
|
// ../edge-play/src/game/lib/metadata.ts
|
|
14254
14266
|
function getRuntimeMetadata() {
|
|
14255
14267
|
return {
|
|
14256
|
-
cliVersion: true ? "0.31.1-beta.
|
|
14257
|
-
sdkVersion: true ? "0.19.1-beta.
|
|
14258
|
-
buildId: true ? "
|
|
14268
|
+
cliVersion: true ? "0.31.1-beta.3" : "0.0.0-dev",
|
|
14269
|
+
sdkVersion: true ? "0.19.1-beta.4" : "0.0.0-dev",
|
|
14270
|
+
buildId: true ? "691d5310a7ed" : "dev-source"
|
|
14259
14271
|
};
|
|
14260
14272
|
}
|
|
14261
14273
|
var init_metadata = __esm({
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"cliVersion": "0.31.1-beta.
|
|
3
|
-
"sdkVersion": "0.19.1-beta.
|
|
4
|
-
"runtimeBuildId": "
|
|
5
|
-
"inputFingerprint": "
|
|
2
|
+
"cliVersion": "0.31.1-beta.3",
|
|
3
|
+
"sdkVersion": "0.19.1-beta.4",
|
|
4
|
+
"runtimeBuildId": "691d5310a7ed",
|
|
5
|
+
"inputFingerprint": "691d5310a7ed13e93287da0159f9e9d932ae881add0e32c66efea273866b92a1",
|
|
6
6
|
"entry": "index.js"
|
|
7
7
|
}
|
package/dist/utils.js
CHANGED
|
@@ -396,7 +396,7 @@ var DASHBOARD_API_ROUTES_DIRECTORY = "api";
|
|
|
396
396
|
// ../better-auth/package.json
|
|
397
397
|
var package_default = {
|
|
398
398
|
name: "@playcademy/better-auth",
|
|
399
|
-
version: "0.0.24-beta.
|
|
399
|
+
version: "0.0.24-beta.3",
|
|
400
400
|
type: "module",
|
|
401
401
|
exports: {
|
|
402
402
|
"./server": {
|
|
@@ -2849,7 +2849,7 @@ import { existsSync as existsSync9, mkdirSync as mkdirSync2, writeFileSync as wr
|
|
|
2849
2849
|
import { dirname as dirname4, join as join13 } from "node:path";
|
|
2850
2850
|
|
|
2851
2851
|
// src/version.ts
|
|
2852
|
-
var cliVersion = false ? "0.0.0-dev" : "0.31.1-beta.
|
|
2852
|
+
var cliVersion = false ? "0.0.0-dev" : "0.31.1-beta.3";
|
|
2853
2853
|
|
|
2854
2854
|
// src/lib/build/binary-resource.ts
|
|
2855
2855
|
function writeFileTree(baseDir, files) {
|
|
@@ -15761,8 +15761,8 @@ var StartAssessmentBodySchema = external_exports.discriminatedUnion("purpose", [
|
|
|
15761
15761
|
}),
|
|
15762
15762
|
StartAssessmentBaseSchema.extend({
|
|
15763
15763
|
purpose: external_exports.literal("review"),
|
|
15764
|
-
requireBothQuestions: external_exports.
|
|
15765
|
-
standards: external_exports.array(AssessmentStandardRefSchema2).min(1).max(TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.standards),
|
|
15764
|
+
requireBothQuestions: external_exports.never().optional(),
|
|
15765
|
+
standards: external_exports.array(AssessmentStandardRefSchema2.and(external_exports.object({ requireBothQuestions: external_exports.boolean().optional() }))).min(1).max(TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.standards),
|
|
15766
15766
|
candidateItemsPerStandard: external_exports.number().int().positive().max(TIMEBACK_ASSESSMENT_REVIEW_REQUEST_LIMITS.candidateItemsPerStandard).optional()
|
|
15767
15767
|
}),
|
|
15768
15768
|
StartAssessmentBaseSchema.extend({
|
package/dist/version.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __pcCreateRequire } from 'node:module'; const require = __pcCreateRequire(import.meta.url);
|
|
2
2
|
|
|
3
3
|
// src/version.ts
|
|
4
|
-
var cliVersion = false ? "0.0.0-dev" : "0.31.1-beta.
|
|
4
|
+
var cliVersion = false ? "0.0.0-dev" : "0.31.1-beta.3";
|
|
5
5
|
export {
|
|
6
6
|
cliVersion
|
|
7
7
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "playcademy",
|
|
3
|
-
"version": "0.31.1-beta.
|
|
3
|
+
"version": "0.31.1-beta.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"@inquirer/prompts": "^7.8.6",
|
|
58
|
-
"@playcademy/sdk": "0.19.1-beta.
|
|
58
|
+
"@playcademy/sdk": "0.19.1-beta.4",
|
|
59
59
|
"chokidar": "^4.0.3",
|
|
60
60
|
"colorette": "^2.0.20",
|
|
61
61
|
"commander": "^14.0.1",
|