playcademy 0.31.0 → 0.31.1-beta.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.
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.23",
45
+ version: "0.0.24-beta.1",
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.23",
1211
+ version: "0.0.24-beta.1",
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.0";
3048
+ var cliVersion = false ? "0.0.0-dev" : "0.31.1-beta.1";
3049
3049
 
3050
3050
  // src/lib/init/database.ts
3051
3051
  var drizzleConfigTemplate = loadTemplateString("database/drizzle-config.ts");
package/dist/constants.js CHANGED
@@ -21,7 +21,7 @@ var SAMPLE_BUCKET_FILENAME = "bucket.ts";
21
21
  // ../better-auth/package.json
22
22
  var package_default = {
23
23
  name: "@playcademy/better-auth",
24
- version: "0.0.23",
24
+ version: "0.0.24-beta.1",
25
25
  type: "module",
26
26
  exports: {
27
27
  "./server": {
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.23",
2336
+ version: "0.0.24-beta.1",
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.23",
2348
+ version: "0.0.24-beta.1",
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.0";
6489
+ var cliVersion = false ? "0.0.0-dev" : "0.31.1-beta.1";
6490
6490
 
6491
6491
  // src/lib/init/database.ts
6492
6492
  var drizzleConfigTemplate = loadTemplateString("database/drizzle-config.ts");
@@ -1,7 +1,7 @@
1
1
  {
2
- "cliVersion": "0.31.0",
3
- "sdkVersion": "0.19.0",
4
- "runtimeBuildId": "2837149d70ac",
5
- "inputFingerprint": "2837149d70acaaca9eff5567aae156188827aa8ac0e9977e1ecbfdd299868e16",
2
+ "cliVersion": "0.31.1-beta.1",
3
+ "sdkVersion": "0.19.1-beta.2",
4
+ "runtimeBuildId": "1ec36a07547a",
5
+ "inputFingerprint": "1ec36a07547a81c20f9acf156e40c252d8b0fb623013d08668814ea181862c5f",
6
6
  "entry": "index.js"
7
7
  }
@@ -10201,6 +10201,21 @@ function assessmentFlowForPurpose(purpose) {
10201
10201
  function assessmentFlowForSelection(selection) {
10202
10202
  return selection.kind === "platform-routed-diagnostic" ? "platform-routed-item-submit" : assessmentFlowForPurpose(selection.purpose);
10203
10203
  }
10204
+ function assessmentItemOutcomes(submissions, standardForItem) {
10205
+ return submissions.map((submission) => {
10206
+ const standard = standardForItem(submission.itemIdentifier);
10207
+ if (!standard) {
10208
+ throw new Error(`Missing outcome standard for item ${submission.itemIdentifier}`);
10209
+ }
10210
+ return {
10211
+ itemIdentifier: submission.itemIdentifier,
10212
+ standard: { ...standard },
10213
+ answered: submission.answered,
10214
+ score: { ...submission.score },
10215
+ isCorrect: submission.isCorrect
10216
+ };
10217
+ });
10218
+ }
10204
10219
  function isObject(value) {
10205
10220
  return typeof value === "object" && value !== null;
10206
10221
  }
@@ -11362,7 +11377,7 @@ function completeAssessmentTranscript(input) {
11362
11377
  }
11363
11378
  if (input.terminal) {
11364
11379
  const count = itemSubmissions.length;
11365
- const conventionalComplete = assessmentFlowForPurpose(input.purpose) === "item-submit" ? count > 0 : count === input.itemCount;
11380
+ const conventionalComplete = assessmentFlowForPurpose(input.purpose) === "item-submit" ? count > 0 : count === input.itemCount && (input.purpose !== "mastery" || count > 0);
11366
11381
  const complete = state ? state.status === "ready-to-complete" && count > 0 : conventionalComplete;
11367
11382
  if (!complete) {
11368
11383
  throw new AssessmentTranscriptError("A complete administered transcript is required for submission", count);
@@ -11370,9 +11385,6 @@ function completeAssessmentTranscript(input) {
11370
11385
  }
11371
11386
  return { itemSubmissions, ledger, state };
11372
11387
  }
11373
- function administeredItemIdentifiers(itemSubmissions) {
11374
- return new Set(itemSubmissions.map((submission) => submission.itemIdentifier));
11375
- }
11376
11388
  function selectAssessmentCourseCandidate(candidates, subjectSpecified) {
11377
11389
  if (candidates.length === 0) {
11378
11390
  return { outcome: "none" };
@@ -13204,10 +13216,7 @@ var init_local_assessment_runtime = __esm({
13204
13216
  return this.finalizeDiagnostic(attempt, input.submissionId);
13205
13217
  }
13206
13218
  if (attempt.selection.kind === "standards-review") {
13207
- attempt.itemOutcomes = this.calculateReviewItemOutcomes(
13208
- attempt,
13209
- this.testForAttempt(attempt)
13210
- );
13219
+ attempt.itemOutcomes = this.calculateReviewItemOutcomes(attempt);
13211
13220
  }
13212
13221
  attempt.score = aggregateFixtureItemScores(graded.scores);
13213
13222
  attempt.submissionId = input.submissionId;
@@ -13609,10 +13618,18 @@ var init_local_assessment_runtime = __esm({
13609
13618
  ...result,
13610
13619
  purpose: "review",
13611
13620
  itemOutcomes: structuredClone(
13612
- attempt.itemOutcomes ?? this.calculateReviewItemOutcomes(attempt, this.testForAttempt(attempt))
13621
+ attempt.itemOutcomes ?? this.calculateReviewItemOutcomes(attempt)
13613
13622
  )
13614
13623
  };
13615
13624
  }
13625
+ if (attempt.selection.kind === "standard-quiz") {
13626
+ const { standard } = attempt.selection;
13627
+ return {
13628
+ ...result,
13629
+ purpose: "mastery",
13630
+ itemOutcomes: assessmentItemOutcomes(attempt.itemSubmissions, () => standard)
13631
+ };
13632
+ }
13616
13633
  return { ...result, purpose: attempt.selection.purpose };
13617
13634
  }
13618
13635
  submittedDiagnosticResult(attempt, tracks) {
@@ -13642,32 +13659,20 @@ var init_local_assessment_runtime = __esm({
13642
13659
  const diagnostic = this.requireDiagnosticAttempt(attempt);
13643
13660
  return projectDiagnosticRoutingSnapshot(diagnostic.routingRevision, state);
13644
13661
  }
13645
- calculateReviewItemOutcomes(attempt, test) {
13662
+ calculateReviewItemOutcomes(attempt) {
13646
13663
  if (attempt.selection.kind !== "standards-review") {
13647
13664
  return [];
13648
13665
  }
13649
- const scoringByItem = new Map(
13650
- scoreAssessmentFixtureItems(test, attempt.responses).map((result) => [
13651
- result.itemIdentifier,
13652
- result
13666
+ const standards = new Map(
13667
+ attempt.selection.selections.map((selection) => [
13668
+ selection.itemIdentifier,
13669
+ selection.standard
13653
13670
  ])
13654
13671
  );
13655
- const administered = administeredItemIdentifiers(attempt.itemSubmissions);
13656
- return attempt.selection.selections.filter((selection) => administered.has(selection.itemIdentifier)).map((selection) => {
13657
- const scoring = scoringByItem.get(selection.itemIdentifier);
13658
- if (!scoring) {
13659
- throw new Error(
13660
- `Selected review item ${selection.itemIdentifier} is absent from the projected assessment.`
13661
- );
13662
- }
13663
- return {
13664
- itemIdentifier: selection.itemIdentifier,
13665
- standard: structuredClone(selection.standard),
13666
- answered: Object.keys(attempt.responses[selection.itemIdentifier] ?? {}).length > 0,
13667
- score: structuredClone(scoring.score),
13668
- isCorrect: scoring.isCorrect
13669
- };
13670
- });
13672
+ return assessmentItemOutcomes(
13673
+ attempt.itemSubmissions,
13674
+ (identifier) => standards.get(identifier)
13675
+ );
13671
13676
  }
13672
13677
  scoreForAttempt(attempt) {
13673
13678
  return attempt.score ?? scoreAssessmentFixture(this.testForAttempt(attempt), attempt.responses);
@@ -14202,9 +14207,9 @@ var init_list = __esm({
14202
14207
  // ../edge-play/src/game/lib/metadata.ts
14203
14208
  function getRuntimeMetadata() {
14204
14209
  return {
14205
- cliVersion: true ? "0.31.0" : "0.0.0-dev",
14206
- sdkVersion: true ? "0.19.0" : "0.0.0-dev",
14207
- buildId: true ? "2837149d70ac" : "dev-source"
14210
+ cliVersion: true ? "0.31.1-beta.1" : "0.0.0-dev",
14211
+ sdkVersion: true ? "0.19.1-beta.2" : "0.0.0-dev",
14212
+ buildId: true ? "1ec36a07547a" : "dev-source"
14208
14213
  };
14209
14214
  }
14210
14215
  var init_metadata = __esm({
@@ -1,7 +1,7 @@
1
1
  {
2
- "cliVersion": "0.31.0",
3
- "sdkVersion": "0.19.0",
4
- "runtimeBuildId": "2837149d70ac",
5
- "inputFingerprint": "2837149d70acaaca9eff5567aae156188827aa8ac0e9977e1ecbfdd299868e16",
2
+ "cliVersion": "0.31.1-beta.1",
3
+ "sdkVersion": "0.19.1-beta.2",
4
+ "runtimeBuildId": "1ec36a07547a",
5
+ "inputFingerprint": "1ec36a07547a81c20f9acf156e40c252d8b0fb623013d08668814ea181862c5f",
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.23",
399
+ version: "0.0.24-beta.1",
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.0";
2852
+ var cliVersion = false ? "0.0.0-dev" : "0.31.1-beta.1";
2853
2853
 
2854
2854
  // src/lib/build/binary-resource.ts
2855
2855
  function writeFileTree(baseDir, files) {
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.0";
4
+ var cliVersion = false ? "0.0.0-dev" : "0.31.1-beta.1";
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.0",
3
+ "version": "0.31.1-beta.1",
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.0",
58
+ "@playcademy/sdk": "0.19.1-beta.2",
59
59
  "chokidar": "^4.0.3",
60
60
  "colorette": "^2.0.20",
61
61
  "commander": "^14.0.1",