@playcademy/sandbox 0.7.1-beta.19 → 0.7.1-beta.20

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/cli.js CHANGED
@@ -1123,7 +1123,7 @@ var package_default;
1123
1123
  var init_package = __esm(() => {
1124
1124
  package_default = {
1125
1125
  name: "@playcademy/sandbox",
1126
- version: "0.7.1-beta.19",
1126
+ version: "0.7.1-beta.20",
1127
1127
  description: "Local development server for Playcademy game development",
1128
1128
  type: "module",
1129
1129
  exports: {
@@ -9554,6 +9554,12 @@ function responseValues(value) {
9554
9554
  return Array.isArray(value) ? value : [value];
9555
9555
  }
9556
9556
  function assessmentResponseValidationMessage(assessment, responses) {
9557
+ return responseValidationMessage(assessment, responses, false);
9558
+ }
9559
+ function assessmentDraftResponseValidationMessage(assessment, responses) {
9560
+ return responseValidationMessage(assessment, responses, true);
9561
+ }
9562
+ function responseValidationMessage(assessment, responses, allowIncomplete) {
9557
9563
  const items = new Map(assessment.items.map((item) => [item.identifier, item]));
9558
9564
  for (const [itemIdentifier, itemResponses] of Object.entries(responses)) {
9559
9565
  const item = items.get(itemIdentifier);
@@ -9570,7 +9576,7 @@ function assessmentResponseValidationMessage(assessment, responses) {
9570
9576
  if (!interaction) {
9571
9577
  return `Response for ${itemIdentifier} uses unknown identifier ${responseIdentifier}.`;
9572
9578
  }
9573
- const message = interactionResponseValidationMessage(itemIdentifier, interaction, responseValue);
9579
+ const message = interactionResponseValidationMessage(itemIdentifier, interaction, responseValue, allowIncomplete);
9574
9580
  if (message) {
9575
9581
  return message;
9576
9582
  }
@@ -9613,7 +9619,7 @@ function undirectedPairsValidationMessage(itemIdentifier, values, interaction) {
9613
9619
  }
9614
9620
  return null;
9615
9621
  }
9616
- function interactionResponseValidationMessage(itemIdentifier, interaction, responseValue) {
9622
+ function interactionResponseValidationMessage(itemIdentifier, interaction, responseValue, allowIncomplete) {
9617
9623
  if (!isAssessmentResponseValue(responseValue)) {
9618
9624
  return `Response for ${itemIdentifier} is not a usable value: non-empty text, at most ${TIMEBACK_ASSESSMENT_RESPONSE_VALUE_MAX_LENGTH} characters.`;
9619
9625
  }
@@ -9684,7 +9690,7 @@ function interactionResponseValidationMessage(itemIdentifier, interaction, respo
9684
9690
  allowed = new Set(interaction.segments.flatMap((segment) => segment.selectable && segment.identifier ? [segment.identifier] : []));
9685
9691
  maximum = interaction.maxChoices;
9686
9692
  }
9687
- if (values.length < minimum || maximum !== 0 && values.length > maximum || new Set(values).size !== values.length || allowed && values.some((value) => !allowed.has(value))) {
9693
+ if (!allowIncomplete && values.length < minimum || maximum !== 0 && values.length > maximum || new Set(values).size !== values.length || allowed && values.some((value) => !allowed.has(value))) {
9688
9694
  return `Response for ${itemIdentifier} is not valid for its interaction.`;
9689
9695
  }
9690
9696
  return null;
@@ -91379,6 +91385,12 @@ function validateAssessmentResponses(assessment, responses) {
91379
91385
  throw new AssessmentRuntimeError("INVALID_RESPONSE", message);
91380
91386
  }
91381
91387
  }
91388
+ function validateAssessmentDraftResponses(assessment, responses) {
91389
+ const message = assessmentDraftResponseValidationMessage(assessment, responses);
91390
+ if (message) {
91391
+ throw new AssessmentRuntimeError("INVALID_RESPONSE", message);
91392
+ }
91393
+ }
91382
91394
  function assessmentScoringRequests(assessment, responses) {
91383
91395
  return assessment.items.map((item) => ({
91384
91396
  itemIdentifier: item.identifier,
@@ -91835,7 +91847,7 @@ class TimebackAssessmentRuntimeService {
91835
91847
  }
91836
91848
  validateAssessmentResponseUpdate(assessment, input.responses);
91837
91849
  const responses = applyAssessmentResponseUpdate(attempt.metadata.responses, input.responses);
91838
- validateAssessmentResponses(assessment, responses);
91850
+ validateAssessmentDraftResponses(assessment, responses);
91839
91851
  const metadata2 = {
91840
91852
  ...attempt.metadata,
91841
91853
  responses,
package/dist/server.js CHANGED
@@ -1122,7 +1122,7 @@ var package_default;
1122
1122
  var init_package = __esm(() => {
1123
1123
  package_default = {
1124
1124
  name: "@playcademy/sandbox",
1125
- version: "0.7.1-beta.19",
1125
+ version: "0.7.1-beta.20",
1126
1126
  description: "Local development server for Playcademy game development",
1127
1127
  type: "module",
1128
1128
  exports: {
@@ -9553,6 +9553,12 @@ function responseValues(value) {
9553
9553
  return Array.isArray(value) ? value : [value];
9554
9554
  }
9555
9555
  function assessmentResponseValidationMessage(assessment, responses) {
9556
+ return responseValidationMessage(assessment, responses, false);
9557
+ }
9558
+ function assessmentDraftResponseValidationMessage(assessment, responses) {
9559
+ return responseValidationMessage(assessment, responses, true);
9560
+ }
9561
+ function responseValidationMessage(assessment, responses, allowIncomplete) {
9556
9562
  const items = new Map(assessment.items.map((item) => [item.identifier, item]));
9557
9563
  for (const [itemIdentifier, itemResponses] of Object.entries(responses)) {
9558
9564
  const item = items.get(itemIdentifier);
@@ -9569,7 +9575,7 @@ function assessmentResponseValidationMessage(assessment, responses) {
9569
9575
  if (!interaction) {
9570
9576
  return `Response for ${itemIdentifier} uses unknown identifier ${responseIdentifier}.`;
9571
9577
  }
9572
- const message = interactionResponseValidationMessage(itemIdentifier, interaction, responseValue);
9578
+ const message = interactionResponseValidationMessage(itemIdentifier, interaction, responseValue, allowIncomplete);
9573
9579
  if (message) {
9574
9580
  return message;
9575
9581
  }
@@ -9612,7 +9618,7 @@ function undirectedPairsValidationMessage(itemIdentifier, values, interaction) {
9612
9618
  }
9613
9619
  return null;
9614
9620
  }
9615
- function interactionResponseValidationMessage(itemIdentifier, interaction, responseValue) {
9621
+ function interactionResponseValidationMessage(itemIdentifier, interaction, responseValue, allowIncomplete) {
9616
9622
  if (!isAssessmentResponseValue(responseValue)) {
9617
9623
  return `Response for ${itemIdentifier} is not a usable value: non-empty text, at most ${TIMEBACK_ASSESSMENT_RESPONSE_VALUE_MAX_LENGTH} characters.`;
9618
9624
  }
@@ -9683,7 +9689,7 @@ function interactionResponseValidationMessage(itemIdentifier, interaction, respo
9683
9689
  allowed = new Set(interaction.segments.flatMap((segment) => segment.selectable && segment.identifier ? [segment.identifier] : []));
9684
9690
  maximum = interaction.maxChoices;
9685
9691
  }
9686
- if (values.length < minimum || maximum !== 0 && values.length > maximum || new Set(values).size !== values.length || allowed && values.some((value) => !allowed.has(value))) {
9692
+ if (!allowIncomplete && values.length < minimum || maximum !== 0 && values.length > maximum || new Set(values).size !== values.length || allowed && values.some((value) => !allowed.has(value))) {
9687
9693
  return `Response for ${itemIdentifier} is not valid for its interaction.`;
9688
9694
  }
9689
9695
  return null;
@@ -91378,6 +91384,12 @@ function validateAssessmentResponses(assessment, responses) {
91378
91384
  throw new AssessmentRuntimeError("INVALID_RESPONSE", message);
91379
91385
  }
91380
91386
  }
91387
+ function validateAssessmentDraftResponses(assessment, responses) {
91388
+ const message = assessmentDraftResponseValidationMessage(assessment, responses);
91389
+ if (message) {
91390
+ throw new AssessmentRuntimeError("INVALID_RESPONSE", message);
91391
+ }
91392
+ }
91381
91393
  function assessmentScoringRequests(assessment, responses) {
91382
91394
  return assessment.items.map((item) => ({
91383
91395
  itemIdentifier: item.identifier,
@@ -91834,7 +91846,7 @@ class TimebackAssessmentRuntimeService {
91834
91846
  }
91835
91847
  validateAssessmentResponseUpdate(assessment, input.responses);
91836
91848
  const responses = applyAssessmentResponseUpdate(attempt.metadata.responses, input.responses);
91837
- validateAssessmentResponses(assessment, responses);
91849
+ validateAssessmentDraftResponses(assessment, responses);
91838
91850
  const metadata2 = {
91839
91851
  ...attempt.metadata,
91840
91852
  responses,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@playcademy/sandbox",
3
- "version": "0.7.1-beta.19",
3
+ "version": "0.7.1-beta.20",
4
4
  "description": "Local development server for Playcademy game development",
5
5
  "type": "module",
6
6
  "exports": {