@plasius/learning 0.6.0 → 0.8.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 (48) hide show
  1. package/README.md +41 -0
  2. package/dist/chunk-UNPCTBNK.js +43 -0
  3. package/dist/chunk-UNPCTBNK.js.map +1 -0
  4. package/dist/course-suggestions-CBs5swU6.d.ts +17 -0
  5. package/dist/course-suggestions-mK2MPB7e.d.cts +17 -0
  6. package/dist/courses/adventure-mission-planner.cjs +436 -0
  7. package/dist/courses/adventure-mission-planner.cjs.map +1 -0
  8. package/dist/courses/adventure-mission-planner.d.cts +6 -0
  9. package/dist/courses/adventure-mission-planner.d.ts +6 -0
  10. package/dist/courses/adventure-mission-planner.js +210 -0
  11. package/dist/courses/adventure-mission-planner.js.map +1 -0
  12. package/dist/courses/creature-care-dashboard.cjs +425 -0
  13. package/dist/courses/creature-care-dashboard.cjs.map +1 -0
  14. package/dist/courses/creature-care-dashboard.d.cts +6 -0
  15. package/dist/courses/creature-care-dashboard.d.ts +6 -0
  16. package/dist/courses/creature-care-dashboard.js +199 -0
  17. package/dist/courses/creature-care-dashboard.js.map +1 -0
  18. package/dist/courses/robot-mission-control.cjs +428 -0
  19. package/dist/courses/robot-mission-control.cjs.map +1 -0
  20. package/dist/courses/robot-mission-control.d.cts +6 -0
  21. package/dist/courses/robot-mission-control.d.ts +6 -0
  22. package/dist/courses/robot-mission-control.js +202 -0
  23. package/dist/courses/robot-mission-control.js.map +1 -0
  24. package/dist/courses/vibe-bug-detective.cjs +416 -0
  25. package/dist/courses/vibe-bug-detective.cjs.map +1 -0
  26. package/dist/courses/vibe-bug-detective.d.cts +8 -0
  27. package/dist/courses/vibe-bug-detective.d.ts +8 -0
  28. package/dist/courses/vibe-bug-detective.js +221 -0
  29. package/dist/courses/vibe-bug-detective.js.map +1 -0
  30. package/dist/courses/vibe-game-remix-lab.cjs +424 -0
  31. package/dist/courses/vibe-game-remix-lab.cjs.map +1 -0
  32. package/dist/courses/vibe-game-remix-lab.d.cts +8 -0
  33. package/dist/courses/vibe-game-remix-lab.d.ts +8 -0
  34. package/dist/courses/vibe-game-remix-lab.js +229 -0
  35. package/dist/courses/vibe-game-remix-lab.js.map +1 -0
  36. package/dist/courses/vibe-idea-studio.cjs +386 -0
  37. package/dist/courses/vibe-idea-studio.cjs.map +1 -0
  38. package/dist/courses/vibe-idea-studio.d.cts +8 -0
  39. package/dist/courses/vibe-idea-studio.d.ts +8 -0
  40. package/dist/courses/vibe-idea-studio.js +191 -0
  41. package/dist/courses/vibe-idea-studio.js.map +1 -0
  42. package/dist/index.cjs +41 -1
  43. package/dist/index.cjs.map +1 -1
  44. package/dist/index.d.cts +1 -0
  45. package/dist/index.d.ts +1 -0
  46. package/dist/index.js +38 -0
  47. package/dist/index.js.map +1 -1
  48. package/package.json +32 -2
package/dist/index.d.cts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { A as AssessmentRubricV1, a as AssessmentCheckResultV1, b as AssessmentResultV1, c as LearningModuleVersionV1, d as LearningPathVersionV1, L as LearningCourseV1, e as LearningValidationIssueV1, M as MissionAuthoringBundleV1, f as MissionAuthoringValidationIssueV1, E as ExternalLearningContentReferenceV1 } from './course-authoring-DImvrK5r.cjs';
2
2
  export { g as AssessmentCriterionV1, h as AssessmentDimensionV1, i as AttemptEvidenceV1, B as BadgeDefinitionV1, j as CommercialStateV1, k as CourseMaterialAudienceV1, l as CourseMaterialKindV1, m as CourseMaterialV1, n as CourseMaterialsManifestV1, C as CoursePracticeQuestion, o as EXTERNAL_LEARNING_CONTENT_REFERENCE_VERSION_V1, F as FacilitatorMissionAuthoringV1, G as GuardianAiConsentV1, H as HardwareItemV1, p as HardwareModeV1, q as HardwareRequirementManifestV1, r as HardwareVerificationStatusV1, s as LEARNING_COURSE_LIMITS, t as LEARNING_COURSE_STAGE_ORDER, u as LearnerMissionAuthoringV1, v as LearningCourseDraftV1, w as LearningCourseInputError, x as LearningCourseMissionV1, y as LearningCourseStageV1, z as LearningCourseValidationIssueV1, D as LearningGoalV1, I as LearningProjectFileV1, J as LearningProjectLanguageV1, K as LearningProjectV1, N as LearningSaveSlotIdV1, O as MISSION_AUTHORING_CONTRACT_VERSION_V1, P as MissionAccessibilityAlternativeV1, Q as MissionArtifactKindV1, R as MissionArtifactReferenceV1, S as MissionAuthoringGoalV1, T as MissionBoundedSuggestionV1, U as MissionEvidenceKindV1, V as MissionEvidenceRequirementV1, W as MissionEvidenceRetentionV1, X as MissionFunctionParameterV1, Y as MissionFunctionReferenceV1, Z as MissionHardwareAcquisitionScopeV1, _ as MissionHardwareComponentDisclosureV1, $ as MissionHardwareDisclosureV1, a0 as MissionInteractionModeV1, a1 as MissionInteractionRequirementV1, a2 as MissionPhysicalSafeguardsV1, a3 as MissionReadinessCheckV1, a4 as MissionRewardBindingV1, a5 as MissionSideAdventureV1, a6 as MissionStageCardV1, a7 as MissionStageKindV1, a8 as MissionV1, a9 as ModuleAgentDefinitionV1, aa as ModuleAgentFeedbackV1, ab as ModuleAgentRoleV1, ac as ModuleCategoryV1, ad as ModuleEntitlementV1, ae as ModulePricingV1, af as ModuleReferencePriceV1, ag as PublishedStaticProjectSnapshotV1, ah as ScoreBandV1, ai as parseLearningCourse, aj as parseLearningCourseDraft, ak as parseLearningProject, al as parseLearningSaveSlotId, am as validateLearningCourse } from './course-authoring-DImvrK5r.cjs';
3
+ export { L as LearningCourseSuggestionV1, a as applyLearningCourseSuggestion, p as parseLearningCourseSuggestion } from './course-suggestions-mK2MPB7e.cjs';
3
4
 
4
5
  /**
5
6
  * Calculate a score solely from rubric criteria and objective check results.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { A as AssessmentRubricV1, a as AssessmentCheckResultV1, b as AssessmentResultV1, c as LearningModuleVersionV1, d as LearningPathVersionV1, L as LearningCourseV1, e as LearningValidationIssueV1, M as MissionAuthoringBundleV1, f as MissionAuthoringValidationIssueV1, E as ExternalLearningContentReferenceV1 } from './course-authoring-DImvrK5r.js';
2
2
  export { g as AssessmentCriterionV1, h as AssessmentDimensionV1, i as AttemptEvidenceV1, B as BadgeDefinitionV1, j as CommercialStateV1, k as CourseMaterialAudienceV1, l as CourseMaterialKindV1, m as CourseMaterialV1, n as CourseMaterialsManifestV1, C as CoursePracticeQuestion, o as EXTERNAL_LEARNING_CONTENT_REFERENCE_VERSION_V1, F as FacilitatorMissionAuthoringV1, G as GuardianAiConsentV1, H as HardwareItemV1, p as HardwareModeV1, q as HardwareRequirementManifestV1, r as HardwareVerificationStatusV1, s as LEARNING_COURSE_LIMITS, t as LEARNING_COURSE_STAGE_ORDER, u as LearnerMissionAuthoringV1, v as LearningCourseDraftV1, w as LearningCourseInputError, x as LearningCourseMissionV1, y as LearningCourseStageV1, z as LearningCourseValidationIssueV1, D as LearningGoalV1, I as LearningProjectFileV1, J as LearningProjectLanguageV1, K as LearningProjectV1, N as LearningSaveSlotIdV1, O as MISSION_AUTHORING_CONTRACT_VERSION_V1, P as MissionAccessibilityAlternativeV1, Q as MissionArtifactKindV1, R as MissionArtifactReferenceV1, S as MissionAuthoringGoalV1, T as MissionBoundedSuggestionV1, U as MissionEvidenceKindV1, V as MissionEvidenceRequirementV1, W as MissionEvidenceRetentionV1, X as MissionFunctionParameterV1, Y as MissionFunctionReferenceV1, Z as MissionHardwareAcquisitionScopeV1, _ as MissionHardwareComponentDisclosureV1, $ as MissionHardwareDisclosureV1, a0 as MissionInteractionModeV1, a1 as MissionInteractionRequirementV1, a2 as MissionPhysicalSafeguardsV1, a3 as MissionReadinessCheckV1, a4 as MissionRewardBindingV1, a5 as MissionSideAdventureV1, a6 as MissionStageCardV1, a7 as MissionStageKindV1, a8 as MissionV1, a9 as ModuleAgentDefinitionV1, aa as ModuleAgentFeedbackV1, ab as ModuleAgentRoleV1, ac as ModuleCategoryV1, ad as ModuleEntitlementV1, ae as ModulePricingV1, af as ModuleReferencePriceV1, ag as PublishedStaticProjectSnapshotV1, ah as ScoreBandV1, ai as parseLearningCourse, aj as parseLearningCourseDraft, ak as parseLearningProject, al as parseLearningSaveSlotId, am as validateLearningCourse } from './course-authoring-DImvrK5r.js';
3
+ export { L as LearningCourseSuggestionV1, a as applyLearningCourseSuggestion, p as parseLearningCourseSuggestion } from './course-suggestions-CBs5swU6.js';
3
4
 
4
5
  /**
5
6
  * Calculate a score solely from rubric criteria and objective check results.
package/dist/index.js CHANGED
@@ -976,6 +976,42 @@ function completeVerifiedLearningActivity(course, progress, proof) {
976
976
  return next;
977
977
  }
978
978
 
979
+ // src/course-suggestions.ts
980
+ var record2 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
981
+ var keys2 = (value, expected) => Object.keys(value).length === expected.length && expected.every((key) => Object.hasOwn(value, key));
982
+ var text = (value, maximum) => typeof value === "string" && value.trim().length > 0 && value.length <= maximum && !value.includes("\0");
983
+ function parseLearningCourseSuggestion(course, value) {
984
+ if (!record2(value) || !keys2(value, ["stageId", "proposal"]) || !text(value.stageId, 128) || !course.missions.some((mission2) => mission2.stages.some((stage) => stage.id === value.stageId)) || !record2(value.proposal)) {
985
+ throw new Error("Invalid course suggestion.");
986
+ }
987
+ const proposal = value.proposal;
988
+ if (!keys2(proposal, [
989
+ "id",
990
+ "source",
991
+ "intent",
992
+ "constraints",
993
+ "permittedArtifactId",
994
+ "originalSnippet",
995
+ "replacementSnippet",
996
+ "explanationPrompt",
997
+ "aiOptional",
998
+ "learnerApprovalRequired",
999
+ "alternatives"
1000
+ ]) || !text(proposal.id, 128) || proposal.source !== "authored-fallback" || !text(proposal.intent, 1e3) || !Array.isArray(proposal.constraints) || proposal.constraints.length < 1 || proposal.constraints.length > 8 || !proposal.constraints.every((constraint) => text(constraint, 400)) || !course.projectFiles.some((file) => file.path === proposal.permittedArtifactId) || !text(proposal.originalSnippet, 8e3) || !text(proposal.replacementSnippet, 8e3) || proposal.originalSnippet === proposal.replacementSnippet || !text(proposal.explanationPrompt, 1e3) || proposal.aiOptional !== false || proposal.learnerApprovalRequired !== true || !Array.isArray(proposal.alternatives) || proposal.alternatives.length !== 2 || proposal.alternatives[0] !== "accept" || proposal.alternatives[1] !== "reject") throw new Error("Invalid course suggestion.");
1001
+ return structuredClone(value);
1002
+ }
1003
+ function applyLearningCourseSuggestion(course, project, suggestion) {
1004
+ const parsed = parseLearningProject(course, project);
1005
+ const { proposal } = parseLearningCourseSuggestion(course, suggestion);
1006
+ const file = parsed.files.find((candidate) => candidate.path === proposal.permittedArtifactId);
1007
+ const start = file.source.indexOf(proposal.originalSnippet);
1008
+ if (start < 0 || file.source.indexOf(proposal.originalSnippet, start + 1) >= 0) {
1009
+ throw new Error("Suggestion does not match exactly one source location.");
1010
+ }
1011
+ file.source = file.source.slice(0, start) + proposal.replacementSnippet + file.source.slice(start + proposal.originalSnippet.length);
1012
+ return parseLearningProject(course, parsed);
1013
+ }
1014
+
979
1015
  // src/contextual-help.ts
980
1016
  var CONTEXTUAL_HELP_CONTRACT_VERSION_V1 = "1.0.0";
981
1017
  var CONTEXTUAL_HELP_KINDS_V1 = Object.freeze([
@@ -1489,6 +1525,7 @@ export {
1489
1525
  VIBE_BUG_DETECTIVE_MISSION_ONE_AUTHORING_V1,
1490
1526
  VIBE_GAME_REMIX_LAB_MISSION_ONE_AUTHORING_V1,
1491
1527
  VIBE_IDEA_STUDIO_MISSION_ONE_AUTHORING_V1,
1528
+ applyLearningCourseSuggestion,
1492
1529
  assertValidCanonicalSpokenHelpDescriptor,
1493
1530
  assertValidContextualHelpIdentifier,
1494
1531
  assertValidContextualVoiceQuestionMetadata,
@@ -1507,6 +1544,7 @@ export {
1507
1544
  parseLearningCourse,
1508
1545
  parseLearningCourseDraft,
1509
1546
  parseLearningCourseProgress,
1547
+ parseLearningCourseSuggestion,
1510
1548
  parseLearningProject,
1511
1549
  parseLearningSaveSlotId,
1512
1550
  recordLearningCourseAssessment,