@plasius/learning 0.2.13 → 0.2.14
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/README.md +15 -1
- package/dist/index.cjs +289 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +23 -2
- package/dist/index.d.ts +23 -2
- package/dist/index.js +288 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -296,6 +296,24 @@ interface MissionFunctionReferenceV1 {
|
|
|
296
296
|
effect: string;
|
|
297
297
|
example: string;
|
|
298
298
|
}
|
|
299
|
+
/**
|
|
300
|
+
* One learner-safe change proposal. Vibe missions expose a diff for a single
|
|
301
|
+
* authored artifact and always leave the final accept/reject decision to the
|
|
302
|
+
* learner. Live AI is an optional adapter concern, never a completion input.
|
|
303
|
+
*/
|
|
304
|
+
interface MissionBoundedSuggestionV1 {
|
|
305
|
+
id: string;
|
|
306
|
+
source: "authored-fallback";
|
|
307
|
+
intent: string;
|
|
308
|
+
constraints: string[];
|
|
309
|
+
permittedArtifactId: string;
|
|
310
|
+
originalSnippet: string;
|
|
311
|
+
replacementSnippet: string;
|
|
312
|
+
explanationPrompt: string;
|
|
313
|
+
aiOptional: false;
|
|
314
|
+
learnerApprovalRequired: true;
|
|
315
|
+
alternatives: ["accept", "reject"];
|
|
316
|
+
}
|
|
299
317
|
/** The only mission projection safe to return to a learner. */
|
|
300
318
|
interface LearnerMissionAuthoringV1 {
|
|
301
319
|
estimatedMinutes: number;
|
|
@@ -309,6 +327,7 @@ interface LearnerMissionAuthoringV1 {
|
|
|
309
327
|
sideAdventures: MissionSideAdventureV1[];
|
|
310
328
|
rewardBindings: MissionRewardBindingV1[];
|
|
311
329
|
functionReference?: MissionFunctionReferenceV1[];
|
|
330
|
+
boundedSuggestion?: MissionBoundedSuggestionV1;
|
|
312
331
|
}
|
|
313
332
|
/** Protected authoring data must never be projected through learner APIs. */
|
|
314
333
|
interface FacilitatorMissionAuthoringV1 {
|
|
@@ -365,7 +384,7 @@ interface MissionAuthoringBundleV1 {
|
|
|
365
384
|
hardware?: MissionHardwareDisclosureV1;
|
|
366
385
|
}
|
|
367
386
|
interface MissionAuthoringValidationIssueV1 {
|
|
368
|
-
code: "bundle-version-mismatch" | "module-reference-mismatch" | "mission-reference-mismatch" | "invalid-duration" | "missing-stage" | "duplicate-stage" | "stage-order" | "missing-readiness-check" | "scored-readiness-check" | "missing-starter-artifact" | "learner-artifact-leak" | "facilitator-artifact-leak" | "unknown-artifact" | "duplicate-id" | "missing-visible-goal" | "missing-protected-goal" | "invalid-goal-projection" | "duplicate-goal-id" | "unknown-criterion" | "criterion-visibility-mismatch" | "rubric-total" | "rubric-dimension-total" | "duplicate-criterion-id" | "missing-mandatory-safety" | "missing-safety-evidence" | "ai-dependent-completion" | "inaccessible-interaction" | "unknown-accessibility-alternative" | "non-equivalent-accessibility-alternative" | "missing-evidence" | "unknown-evidence-goal" | "personal-data-evidence" | "missing-side-adventure" | "mandatory-side-adventure" | "invalid-reward" | "hardware-module-mismatch" | "hardware-requirements-version-mismatch" | "hardware-item-mismatch" | "hardware-verification-claim" | "unsafe-physical-export" | "invalid-hardware-reward" | "invalid-function-reference";
|
|
387
|
+
code: "bundle-version-mismatch" | "module-reference-mismatch" | "mission-reference-mismatch" | "invalid-duration" | "missing-stage" | "duplicate-stage" | "stage-order" | "missing-readiness-check" | "scored-readiness-check" | "missing-starter-artifact" | "learner-artifact-leak" | "facilitator-artifact-leak" | "unknown-artifact" | "duplicate-id" | "missing-visible-goal" | "missing-protected-goal" | "invalid-goal-projection" | "duplicate-goal-id" | "unknown-criterion" | "criterion-visibility-mismatch" | "rubric-total" | "rubric-dimension-total" | "duplicate-criterion-id" | "missing-mandatory-safety" | "missing-safety-evidence" | "ai-dependent-completion" | "inaccessible-interaction" | "unknown-accessibility-alternative" | "non-equivalent-accessibility-alternative" | "missing-evidence" | "unknown-evidence-goal" | "personal-data-evidence" | "missing-side-adventure" | "mandatory-side-adventure" | "invalid-reward" | "hardware-module-mismatch" | "hardware-requirements-version-mismatch" | "hardware-item-mismatch" | "hardware-verification-claim" | "unsafe-physical-export" | "invalid-hardware-reward" | "invalid-function-reference" | "invalid-bounded-suggestion";
|
|
369
388
|
message: string;
|
|
370
389
|
path: string;
|
|
371
390
|
}
|
|
@@ -487,6 +506,8 @@ declare const RESCUE_CREW_COMMANDER_MISSION_ONE_AUTHORING_V1: MissionAuthoringBu
|
|
|
487
506
|
* projectile answers.
|
|
488
507
|
*/
|
|
489
508
|
declare const METEOR_SHIELD_MISSION_ONE_AUTHORING_V1: MissionAuthoringBundleV1;
|
|
509
|
+
/** Bounded first Vibe mission; no open prompt or provider is required. */
|
|
510
|
+
declare const VIBE_GAME_REMIX_LAB_MISSION_ONE_AUTHORING_V1: MissionAuthoringBundleV1;
|
|
490
511
|
/** Original first-mission exemplar; no protected content appears in learner data. */
|
|
491
512
|
declare const ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1: MissionAuthoringBundleV1;
|
|
492
513
|
|
|
@@ -495,4 +516,4 @@ declare function validateLearningPath(path: LearningPathVersionV1): LearningVali
|
|
|
495
516
|
/** Fail fast when a path is not safe to publish or consume. */
|
|
496
517
|
declare function assertValidLearningPath(path: LearningPathVersionV1): void;
|
|
497
518
|
|
|
498
|
-
export { type AssessmentCheckResultV1, type AssessmentCriterionV1, type AssessmentDimensionV1, type AssessmentResultV1, type AssessmentRubricV1, type AttemptEvidenceV1, BEACON_BOT_MISSION_ONE_AUTHORING_V1, type BadgeDefinitionV1, type CommercialStateV1, type CourseMaterialAudienceV1, type CourseMaterialKindV1, type CourseMaterialV1, type CourseMaterialsManifestV1, DANCE_ROVER_MISSION_ONE_AUTHORING_V1, type FacilitatorMissionAuthoringV1, type GuardianAiConsentV1, type HardwareItemV1, type HardwareModeV1, type HardwareRequirementManifestV1, type HardwareVerificationStatusV1, JUNIOR_CODER_MISSION_STAGE_ORDER_V1, JUNIOR_CODER_MODULE_PRICE_V1_1, JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT, JUNIOR_CODER_ROBOT_RESCUE_PATH_V1, JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1, type LearnerMissionAuthoringV1, type LearningGoalV1, type LearningModuleVersionV1, type LearningPathVersionV1, type LearningValidationIssueV1, METEOR_SHIELD_MISSION_ONE_AUTHORING_V1, MISSION_AUTHORING_CONTRACT_VERSION_V1, type MissionAccessibilityAlternativeV1, type MissionArtifactKindV1, type MissionArtifactReferenceV1, type MissionAuthoringBundleV1, type MissionAuthoringGoalV1, type MissionAuthoringValidationIssueV1, type MissionEvidenceKindV1, type MissionEvidenceRequirementV1, type MissionEvidenceRetentionV1, type MissionFunctionParameterV1, type MissionFunctionReferenceV1, type MissionHardwareAcquisitionScopeV1, type MissionHardwareComponentDisclosureV1, type MissionHardwareDisclosureV1, type MissionInteractionModeV1, type MissionInteractionRequirementV1, type MissionPhysicalSafeguardsV1, type MissionReadinessCheckV1, type MissionRewardBindingV1, type MissionSideAdventureV1, type MissionStageCardV1, type MissionStageKindV1, type MissionV1, type ModuleAgentDefinitionV1, type ModuleAgentFeedbackV1, type ModuleAgentRoleV1, type ModuleCategoryV1, type ModuleEntitlementV1, type ModulePricingV1, type ModuleReferencePriceV1, OBSTACLE_EXPLORER_MISSION_ONE_AUTHORING_V1, PADDLE_PULSE_MISSION_ONE_AUTHORING_V1, PIXEL_TRAIL_CHALLENGE_MISSION_ONE_AUTHORING_V1, type PublishedStaticProjectSnapshotV1, RAINBOW_RESCUE_ROVER_MISSION_ONE_AUTHORING_V1, RESCUE_CREW_COMMANDER_MISSION_ONE_AUTHORING_V1, ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1, ROBOT_MAZE_DASH_MISSION_ONE_AUTHORING_V1, SERVO_CREATURE_MISSION_ONE_AUTHORING_V1, SKYWING_SPRINT_MISSION_ONE_AUTHORING_V1, STAR_DEFENDER_SQUADRON_MISSION_ONE_AUTHORING_V1, type ScoreBandV1, assertValidLearningPath, assertValidMissionAuthoringBundle, calculateAssessment, validateAssessmentRubric, validateLearningPath, validateMissionAuthoringBundle };
|
|
519
|
+
export { type AssessmentCheckResultV1, type AssessmentCriterionV1, type AssessmentDimensionV1, type AssessmentResultV1, type AssessmentRubricV1, type AttemptEvidenceV1, BEACON_BOT_MISSION_ONE_AUTHORING_V1, type BadgeDefinitionV1, type CommercialStateV1, type CourseMaterialAudienceV1, type CourseMaterialKindV1, type CourseMaterialV1, type CourseMaterialsManifestV1, DANCE_ROVER_MISSION_ONE_AUTHORING_V1, type FacilitatorMissionAuthoringV1, type GuardianAiConsentV1, type HardwareItemV1, type HardwareModeV1, type HardwareRequirementManifestV1, type HardwareVerificationStatusV1, JUNIOR_CODER_MISSION_STAGE_ORDER_V1, JUNIOR_CODER_MODULE_PRICE_V1_1, JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT, JUNIOR_CODER_ROBOT_RESCUE_PATH_V1, JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1, type LearnerMissionAuthoringV1, type LearningGoalV1, type LearningModuleVersionV1, type LearningPathVersionV1, type LearningValidationIssueV1, METEOR_SHIELD_MISSION_ONE_AUTHORING_V1, MISSION_AUTHORING_CONTRACT_VERSION_V1, type MissionAccessibilityAlternativeV1, type MissionArtifactKindV1, type MissionArtifactReferenceV1, type MissionAuthoringBundleV1, type MissionAuthoringGoalV1, type MissionAuthoringValidationIssueV1, type MissionBoundedSuggestionV1, type MissionEvidenceKindV1, type MissionEvidenceRequirementV1, type MissionEvidenceRetentionV1, type MissionFunctionParameterV1, type MissionFunctionReferenceV1, type MissionHardwareAcquisitionScopeV1, type MissionHardwareComponentDisclosureV1, type MissionHardwareDisclosureV1, type MissionInteractionModeV1, type MissionInteractionRequirementV1, type MissionPhysicalSafeguardsV1, type MissionReadinessCheckV1, type MissionRewardBindingV1, type MissionSideAdventureV1, type MissionStageCardV1, type MissionStageKindV1, type MissionV1, type ModuleAgentDefinitionV1, type ModuleAgentFeedbackV1, type ModuleAgentRoleV1, type ModuleCategoryV1, type ModuleEntitlementV1, type ModulePricingV1, type ModuleReferencePriceV1, OBSTACLE_EXPLORER_MISSION_ONE_AUTHORING_V1, PADDLE_PULSE_MISSION_ONE_AUTHORING_V1, PIXEL_TRAIL_CHALLENGE_MISSION_ONE_AUTHORING_V1, type PublishedStaticProjectSnapshotV1, RAINBOW_RESCUE_ROVER_MISSION_ONE_AUTHORING_V1, RESCUE_CREW_COMMANDER_MISSION_ONE_AUTHORING_V1, ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1, ROBOT_MAZE_DASH_MISSION_ONE_AUTHORING_V1, SERVO_CREATURE_MISSION_ONE_AUTHORING_V1, SKYWING_SPRINT_MISSION_ONE_AUTHORING_V1, STAR_DEFENDER_SQUADRON_MISSION_ONE_AUTHORING_V1, type ScoreBandV1, VIBE_GAME_REMIX_LAB_MISSION_ONE_AUTHORING_V1, assertValidLearningPath, assertValidMissionAuthoringBundle, calculateAssessment, validateAssessmentRubric, validateLearningPath, validateMissionAuthoringBundle };
|
package/dist/index.d.ts
CHANGED
|
@@ -296,6 +296,24 @@ interface MissionFunctionReferenceV1 {
|
|
|
296
296
|
effect: string;
|
|
297
297
|
example: string;
|
|
298
298
|
}
|
|
299
|
+
/**
|
|
300
|
+
* One learner-safe change proposal. Vibe missions expose a diff for a single
|
|
301
|
+
* authored artifact and always leave the final accept/reject decision to the
|
|
302
|
+
* learner. Live AI is an optional adapter concern, never a completion input.
|
|
303
|
+
*/
|
|
304
|
+
interface MissionBoundedSuggestionV1 {
|
|
305
|
+
id: string;
|
|
306
|
+
source: "authored-fallback";
|
|
307
|
+
intent: string;
|
|
308
|
+
constraints: string[];
|
|
309
|
+
permittedArtifactId: string;
|
|
310
|
+
originalSnippet: string;
|
|
311
|
+
replacementSnippet: string;
|
|
312
|
+
explanationPrompt: string;
|
|
313
|
+
aiOptional: false;
|
|
314
|
+
learnerApprovalRequired: true;
|
|
315
|
+
alternatives: ["accept", "reject"];
|
|
316
|
+
}
|
|
299
317
|
/** The only mission projection safe to return to a learner. */
|
|
300
318
|
interface LearnerMissionAuthoringV1 {
|
|
301
319
|
estimatedMinutes: number;
|
|
@@ -309,6 +327,7 @@ interface LearnerMissionAuthoringV1 {
|
|
|
309
327
|
sideAdventures: MissionSideAdventureV1[];
|
|
310
328
|
rewardBindings: MissionRewardBindingV1[];
|
|
311
329
|
functionReference?: MissionFunctionReferenceV1[];
|
|
330
|
+
boundedSuggestion?: MissionBoundedSuggestionV1;
|
|
312
331
|
}
|
|
313
332
|
/** Protected authoring data must never be projected through learner APIs. */
|
|
314
333
|
interface FacilitatorMissionAuthoringV1 {
|
|
@@ -365,7 +384,7 @@ interface MissionAuthoringBundleV1 {
|
|
|
365
384
|
hardware?: MissionHardwareDisclosureV1;
|
|
366
385
|
}
|
|
367
386
|
interface MissionAuthoringValidationIssueV1 {
|
|
368
|
-
code: "bundle-version-mismatch" | "module-reference-mismatch" | "mission-reference-mismatch" | "invalid-duration" | "missing-stage" | "duplicate-stage" | "stage-order" | "missing-readiness-check" | "scored-readiness-check" | "missing-starter-artifact" | "learner-artifact-leak" | "facilitator-artifact-leak" | "unknown-artifact" | "duplicate-id" | "missing-visible-goal" | "missing-protected-goal" | "invalid-goal-projection" | "duplicate-goal-id" | "unknown-criterion" | "criterion-visibility-mismatch" | "rubric-total" | "rubric-dimension-total" | "duplicate-criterion-id" | "missing-mandatory-safety" | "missing-safety-evidence" | "ai-dependent-completion" | "inaccessible-interaction" | "unknown-accessibility-alternative" | "non-equivalent-accessibility-alternative" | "missing-evidence" | "unknown-evidence-goal" | "personal-data-evidence" | "missing-side-adventure" | "mandatory-side-adventure" | "invalid-reward" | "hardware-module-mismatch" | "hardware-requirements-version-mismatch" | "hardware-item-mismatch" | "hardware-verification-claim" | "unsafe-physical-export" | "invalid-hardware-reward" | "invalid-function-reference";
|
|
387
|
+
code: "bundle-version-mismatch" | "module-reference-mismatch" | "mission-reference-mismatch" | "invalid-duration" | "missing-stage" | "duplicate-stage" | "stage-order" | "missing-readiness-check" | "scored-readiness-check" | "missing-starter-artifact" | "learner-artifact-leak" | "facilitator-artifact-leak" | "unknown-artifact" | "duplicate-id" | "missing-visible-goal" | "missing-protected-goal" | "invalid-goal-projection" | "duplicate-goal-id" | "unknown-criterion" | "criterion-visibility-mismatch" | "rubric-total" | "rubric-dimension-total" | "duplicate-criterion-id" | "missing-mandatory-safety" | "missing-safety-evidence" | "ai-dependent-completion" | "inaccessible-interaction" | "unknown-accessibility-alternative" | "non-equivalent-accessibility-alternative" | "missing-evidence" | "unknown-evidence-goal" | "personal-data-evidence" | "missing-side-adventure" | "mandatory-side-adventure" | "invalid-reward" | "hardware-module-mismatch" | "hardware-requirements-version-mismatch" | "hardware-item-mismatch" | "hardware-verification-claim" | "unsafe-physical-export" | "invalid-hardware-reward" | "invalid-function-reference" | "invalid-bounded-suggestion";
|
|
369
388
|
message: string;
|
|
370
389
|
path: string;
|
|
371
390
|
}
|
|
@@ -487,6 +506,8 @@ declare const RESCUE_CREW_COMMANDER_MISSION_ONE_AUTHORING_V1: MissionAuthoringBu
|
|
|
487
506
|
* projectile answers.
|
|
488
507
|
*/
|
|
489
508
|
declare const METEOR_SHIELD_MISSION_ONE_AUTHORING_V1: MissionAuthoringBundleV1;
|
|
509
|
+
/** Bounded first Vibe mission; no open prompt or provider is required. */
|
|
510
|
+
declare const VIBE_GAME_REMIX_LAB_MISSION_ONE_AUTHORING_V1: MissionAuthoringBundleV1;
|
|
490
511
|
/** Original first-mission exemplar; no protected content appears in learner data. */
|
|
491
512
|
declare const ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1: MissionAuthoringBundleV1;
|
|
492
513
|
|
|
@@ -495,4 +516,4 @@ declare function validateLearningPath(path: LearningPathVersionV1): LearningVali
|
|
|
495
516
|
/** Fail fast when a path is not safe to publish or consume. */
|
|
496
517
|
declare function assertValidLearningPath(path: LearningPathVersionV1): void;
|
|
497
518
|
|
|
498
|
-
export { type AssessmentCheckResultV1, type AssessmentCriterionV1, type AssessmentDimensionV1, type AssessmentResultV1, type AssessmentRubricV1, type AttemptEvidenceV1, BEACON_BOT_MISSION_ONE_AUTHORING_V1, type BadgeDefinitionV1, type CommercialStateV1, type CourseMaterialAudienceV1, type CourseMaterialKindV1, type CourseMaterialV1, type CourseMaterialsManifestV1, DANCE_ROVER_MISSION_ONE_AUTHORING_V1, type FacilitatorMissionAuthoringV1, type GuardianAiConsentV1, type HardwareItemV1, type HardwareModeV1, type HardwareRequirementManifestV1, type HardwareVerificationStatusV1, JUNIOR_CODER_MISSION_STAGE_ORDER_V1, JUNIOR_CODER_MODULE_PRICE_V1_1, JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT, JUNIOR_CODER_ROBOT_RESCUE_PATH_V1, JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1, type LearnerMissionAuthoringV1, type LearningGoalV1, type LearningModuleVersionV1, type LearningPathVersionV1, type LearningValidationIssueV1, METEOR_SHIELD_MISSION_ONE_AUTHORING_V1, MISSION_AUTHORING_CONTRACT_VERSION_V1, type MissionAccessibilityAlternativeV1, type MissionArtifactKindV1, type MissionArtifactReferenceV1, type MissionAuthoringBundleV1, type MissionAuthoringGoalV1, type MissionAuthoringValidationIssueV1, type MissionEvidenceKindV1, type MissionEvidenceRequirementV1, type MissionEvidenceRetentionV1, type MissionFunctionParameterV1, type MissionFunctionReferenceV1, type MissionHardwareAcquisitionScopeV1, type MissionHardwareComponentDisclosureV1, type MissionHardwareDisclosureV1, type MissionInteractionModeV1, type MissionInteractionRequirementV1, type MissionPhysicalSafeguardsV1, type MissionReadinessCheckV1, type MissionRewardBindingV1, type MissionSideAdventureV1, type MissionStageCardV1, type MissionStageKindV1, type MissionV1, type ModuleAgentDefinitionV1, type ModuleAgentFeedbackV1, type ModuleAgentRoleV1, type ModuleCategoryV1, type ModuleEntitlementV1, type ModulePricingV1, type ModuleReferencePriceV1, OBSTACLE_EXPLORER_MISSION_ONE_AUTHORING_V1, PADDLE_PULSE_MISSION_ONE_AUTHORING_V1, PIXEL_TRAIL_CHALLENGE_MISSION_ONE_AUTHORING_V1, type PublishedStaticProjectSnapshotV1, RAINBOW_RESCUE_ROVER_MISSION_ONE_AUTHORING_V1, RESCUE_CREW_COMMANDER_MISSION_ONE_AUTHORING_V1, ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1, ROBOT_MAZE_DASH_MISSION_ONE_AUTHORING_V1, SERVO_CREATURE_MISSION_ONE_AUTHORING_V1, SKYWING_SPRINT_MISSION_ONE_AUTHORING_V1, STAR_DEFENDER_SQUADRON_MISSION_ONE_AUTHORING_V1, type ScoreBandV1, assertValidLearningPath, assertValidMissionAuthoringBundle, calculateAssessment, validateAssessmentRubric, validateLearningPath, validateMissionAuthoringBundle };
|
|
519
|
+
export { type AssessmentCheckResultV1, type AssessmentCriterionV1, type AssessmentDimensionV1, type AssessmentResultV1, type AssessmentRubricV1, type AttemptEvidenceV1, BEACON_BOT_MISSION_ONE_AUTHORING_V1, type BadgeDefinitionV1, type CommercialStateV1, type CourseMaterialAudienceV1, type CourseMaterialKindV1, type CourseMaterialV1, type CourseMaterialsManifestV1, DANCE_ROVER_MISSION_ONE_AUTHORING_V1, type FacilitatorMissionAuthoringV1, type GuardianAiConsentV1, type HardwareItemV1, type HardwareModeV1, type HardwareRequirementManifestV1, type HardwareVerificationStatusV1, JUNIOR_CODER_MISSION_STAGE_ORDER_V1, JUNIOR_CODER_MODULE_PRICE_V1_1, JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT, JUNIOR_CODER_ROBOT_RESCUE_PATH_V1, JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1, type LearnerMissionAuthoringV1, type LearningGoalV1, type LearningModuleVersionV1, type LearningPathVersionV1, type LearningValidationIssueV1, METEOR_SHIELD_MISSION_ONE_AUTHORING_V1, MISSION_AUTHORING_CONTRACT_VERSION_V1, type MissionAccessibilityAlternativeV1, type MissionArtifactKindV1, type MissionArtifactReferenceV1, type MissionAuthoringBundleV1, type MissionAuthoringGoalV1, type MissionAuthoringValidationIssueV1, type MissionBoundedSuggestionV1, type MissionEvidenceKindV1, type MissionEvidenceRequirementV1, type MissionEvidenceRetentionV1, type MissionFunctionParameterV1, type MissionFunctionReferenceV1, type MissionHardwareAcquisitionScopeV1, type MissionHardwareComponentDisclosureV1, type MissionHardwareDisclosureV1, type MissionInteractionModeV1, type MissionInteractionRequirementV1, type MissionPhysicalSafeguardsV1, type MissionReadinessCheckV1, type MissionRewardBindingV1, type MissionSideAdventureV1, type MissionStageCardV1, type MissionStageKindV1, type MissionV1, type ModuleAgentDefinitionV1, type ModuleAgentFeedbackV1, type ModuleAgentRoleV1, type ModuleCategoryV1, type ModuleEntitlementV1, type ModulePricingV1, type ModuleReferencePriceV1, OBSTACLE_EXPLORER_MISSION_ONE_AUTHORING_V1, PADDLE_PULSE_MISSION_ONE_AUTHORING_V1, PIXEL_TRAIL_CHALLENGE_MISSION_ONE_AUTHORING_V1, type PublishedStaticProjectSnapshotV1, RAINBOW_RESCUE_ROVER_MISSION_ONE_AUTHORING_V1, RESCUE_CREW_COMMANDER_MISSION_ONE_AUTHORING_V1, ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1, ROBOT_MAZE_DASH_MISSION_ONE_AUTHORING_V1, SERVO_CREATURE_MISSION_ONE_AUTHORING_V1, SKYWING_SPRINT_MISSION_ONE_AUTHORING_V1, STAR_DEFENDER_SQUADRON_MISSION_ONE_AUTHORING_V1, type ScoreBandV1, VIBE_GAME_REMIX_LAB_MISSION_ONE_AUTHORING_V1, assertValidLearningPath, assertValidMissionAuthoringBundle, calculateAssessment, validateAssessmentRubric, validateLearningPath, validateMissionAuthoringBundle };
|
package/dist/index.js
CHANGED
|
@@ -1101,6 +1101,19 @@ function validateMissionAuthoringBundle(bundle, module2) {
|
|
|
1101
1101
|
);
|
|
1102
1102
|
}
|
|
1103
1103
|
}
|
|
1104
|
+
if (learner.boundedSuggestion) {
|
|
1105
|
+
const suggestion = learner.boundedSuggestion;
|
|
1106
|
+
const invalidBoundedSuggestion = suggestion.id.trim().length === 0 || suggestion.source !== "authored-fallback" || suggestion.intent.trim().length === 0 || suggestion.constraints.length === 0 || suggestion.constraints.some((constraint) => constraint.trim().length === 0) || !learnerArtifactIds.has(suggestion.permittedArtifactId) || suggestion.originalSnippet.trim().length === 0 || suggestion.replacementSnippet.trim().length === 0 || suggestion.originalSnippet === suggestion.replacementSnippet || suggestion.explanationPrompt.trim().length === 0 || suggestion.aiOptional !== false || suggestion.learnerApprovalRequired !== true || suggestion.alternatives.length !== 2 || suggestion.alternatives[0] !== "accept" || suggestion.alternatives[1] !== "reject";
|
|
1107
|
+
if (invalidBoundedSuggestion) {
|
|
1108
|
+
issues.push(
|
|
1109
|
+
authoringIssue(
|
|
1110
|
+
"invalid-bounded-suggestion",
|
|
1111
|
+
"A bounded suggestion requires one learner artifact, authored constraints, a visible diff and explicit accept/reject approval.",
|
|
1112
|
+
"learner.boundedSuggestion"
|
|
1113
|
+
)
|
|
1114
|
+
);
|
|
1115
|
+
}
|
|
1116
|
+
}
|
|
1104
1117
|
const hardware = bundle.hardware;
|
|
1105
1118
|
if (hardware) {
|
|
1106
1119
|
if (module2.category !== "robot" || module2.hardware.mode !== "physical-first" || !module2.hardware.simulatorAvailable) {
|
|
@@ -4587,6 +4600,280 @@ var METEOR_SHIELD_MISSION_ONE_AUTHORING_V1 = {
|
|
|
4587
4600
|
]
|
|
4588
4601
|
}
|
|
4589
4602
|
};
|
|
4603
|
+
var VIBE_GAME_REMIX_LAB_MISSION_ONE_AUTHORING_V1 = {
|
|
4604
|
+
version: MISSION_AUTHORING_CONTRACT_VERSION_V1,
|
|
4605
|
+
moduleId: "junior-coder.vibe-game-remix-lab",
|
|
4606
|
+
moduleVersion: "1.1.0",
|
|
4607
|
+
missionId: "vibe-game-remix-lab-mission-1",
|
|
4608
|
+
learner: {
|
|
4609
|
+
estimatedMinutes: 20,
|
|
4610
|
+
stages: [
|
|
4611
|
+
{
|
|
4612
|
+
kind: "learn",
|
|
4613
|
+
instruction: "Read how setRescueSpeed(), setGateSpacing() and setGoalCount() change the supplied mini-game.",
|
|
4614
|
+
artifactIds: ["vibe-game-remix-lab-m1-guide"]
|
|
4615
|
+
},
|
|
4616
|
+
{
|
|
4617
|
+
kind: "predict",
|
|
4618
|
+
instruction: "Choose one bounded intent card and predict what its one-line diff will change before viewing it.",
|
|
4619
|
+
artifactIds: ["vibe-game-remix-lab-m1-intent-cards"]
|
|
4620
|
+
},
|
|
4621
|
+
{
|
|
4622
|
+
kind: "build",
|
|
4623
|
+
instruction: "Open the supplied mini-game and keep changes inside its documented settings file.",
|
|
4624
|
+
artifactIds: ["vibe-game-remix-lab-m1-code"]
|
|
4625
|
+
},
|
|
4626
|
+
{
|
|
4627
|
+
kind: "run",
|
|
4628
|
+
instruction: "Use the Run action button to start the private JavaScript preview.",
|
|
4629
|
+
artifactIds: ["vibe-game-remix-lab-m1-code"]
|
|
4630
|
+
},
|
|
4631
|
+
{
|
|
4632
|
+
kind: "assess",
|
|
4633
|
+
instruction: "Run deterministic checks before requesting or applying any suggestion.",
|
|
4634
|
+
artifactIds: []
|
|
4635
|
+
},
|
|
4636
|
+
{
|
|
4637
|
+
kind: "inspect",
|
|
4638
|
+
instruction: "Compare the single authored diff with your prediction and the failed goal evidence.",
|
|
4639
|
+
artifactIds: ["vibe-game-remix-lab-m1-code"]
|
|
4640
|
+
},
|
|
4641
|
+
{
|
|
4642
|
+
kind: "fix",
|
|
4643
|
+
instruction: "Accept or reject the proposed change yourself, then rerun the preview and assessment.",
|
|
4644
|
+
artifactIds: ["vibe-game-remix-lab-m1-code"]
|
|
4645
|
+
},
|
|
4646
|
+
{
|
|
4647
|
+
kind: "explain",
|
|
4648
|
+
instruction: "Explain why you accepted or rejected the change and what the new evidence shows.",
|
|
4649
|
+
artifactIds: []
|
|
4650
|
+
},
|
|
4651
|
+
{
|
|
4652
|
+
kind: "reward",
|
|
4653
|
+
instruction: "Collect the evidence-bound badge after the deterministic score reaches 80 and every safety check passes.",
|
|
4654
|
+
artifactIds: []
|
|
4655
|
+
}
|
|
4656
|
+
],
|
|
4657
|
+
readinessChecks: [
|
|
4658
|
+
{
|
|
4659
|
+
id: "vibe-game-remix-lab-m1-find-setting",
|
|
4660
|
+
prompt: "Point to the documented function that changes how many rescue goals appear.",
|
|
4661
|
+
scored: false
|
|
4662
|
+
}
|
|
4663
|
+
],
|
|
4664
|
+
artifacts: [
|
|
4665
|
+
{
|
|
4666
|
+
id: "vibe-game-remix-lab-m1-code",
|
|
4667
|
+
kind: "starter-code",
|
|
4668
|
+
audience: "learner",
|
|
4669
|
+
solutionBearing: false
|
|
4670
|
+
},
|
|
4671
|
+
{
|
|
4672
|
+
id: "vibe-game-remix-lab-m1-guide",
|
|
4673
|
+
kind: "starter-assets",
|
|
4674
|
+
audience: "learner",
|
|
4675
|
+
solutionBearing: false
|
|
4676
|
+
},
|
|
4677
|
+
{
|
|
4678
|
+
id: "vibe-game-remix-lab-m1-intent-cards",
|
|
4679
|
+
kind: "printable",
|
|
4680
|
+
audience: "learner",
|
|
4681
|
+
solutionBearing: false
|
|
4682
|
+
}
|
|
4683
|
+
],
|
|
4684
|
+
goals: [
|
|
4685
|
+
{
|
|
4686
|
+
id: "vibe-game-remix-lab-m1-starts",
|
|
4687
|
+
statement: "The supplied JavaScript mini-game remains structurally valid and starts.",
|
|
4688
|
+
visibility: "visible",
|
|
4689
|
+
criterionIds: ["vibe-game-remix-lab-build"],
|
|
4690
|
+
completionRequired: true,
|
|
4691
|
+
aiRequired: false
|
|
4692
|
+
},
|
|
4693
|
+
{
|
|
4694
|
+
id: "vibe-game-remix-lab-m1-bounded-remix",
|
|
4695
|
+
statement: "The approved one-file change matches the chosen intent and every published behaviour goal.",
|
|
4696
|
+
visibility: "visible",
|
|
4697
|
+
criterionIds: [
|
|
4698
|
+
"vibe-game-remix-lab-goal-one",
|
|
4699
|
+
"vibe-game-remix-lab-goal-two",
|
|
4700
|
+
"vibe-game-remix-lab-goal-three"
|
|
4701
|
+
],
|
|
4702
|
+
completionRequired: true,
|
|
4703
|
+
aiRequired: false
|
|
4704
|
+
},
|
|
4705
|
+
{
|
|
4706
|
+
id: "vibe-game-remix-lab-m1-private-runtime",
|
|
4707
|
+
statement: "The remix stays inside the private sandbox with no network, personal data or automatic code changes.",
|
|
4708
|
+
visibility: "visible",
|
|
4709
|
+
criterionIds: ["vibe-game-remix-lab-safety"],
|
|
4710
|
+
completionRequired: true,
|
|
4711
|
+
aiRequired: false
|
|
4712
|
+
}
|
|
4713
|
+
],
|
|
4714
|
+
interactions: [
|
|
4715
|
+
{
|
|
4716
|
+
id: "vibe-game-remix-lab-m1-run-control",
|
|
4717
|
+
description: "Start the supplied mini-game preview.",
|
|
4718
|
+
primaryMode: "pointer",
|
|
4719
|
+
alternativeIds: ["vibe-game-remix-lab-m1-keyboard-run"]
|
|
4720
|
+
},
|
|
4721
|
+
{
|
|
4722
|
+
id: "vibe-game-remix-lab-m1-diff-review",
|
|
4723
|
+
description: "Read the removed and added source line before choosing what to do.",
|
|
4724
|
+
primaryMode: "text",
|
|
4725
|
+
alternativeIds: []
|
|
4726
|
+
},
|
|
4727
|
+
{
|
|
4728
|
+
id: "vibe-game-remix-lab-m1-accept-control",
|
|
4729
|
+
description: "Approve the exact immutable suggestion snapshot.",
|
|
4730
|
+
primaryMode: "pointer",
|
|
4731
|
+
alternativeIds: ["vibe-game-remix-lab-m1-keyboard-review"]
|
|
4732
|
+
},
|
|
4733
|
+
{
|
|
4734
|
+
id: "vibe-game-remix-lab-m1-reject-control",
|
|
4735
|
+
description: "Reject the suggestion and preserve the current source.",
|
|
4736
|
+
primaryMode: "pointer",
|
|
4737
|
+
alternativeIds: ["vibe-game-remix-lab-m1-keyboard-review"]
|
|
4738
|
+
}
|
|
4739
|
+
],
|
|
4740
|
+
accessibilityAlternatives: [
|
|
4741
|
+
{
|
|
4742
|
+
id: "vibe-game-remix-lab-m1-keyboard-run",
|
|
4743
|
+
modes: ["keyboard"],
|
|
4744
|
+
equivalentOutcome: true,
|
|
4745
|
+
description: "Press Enter or Space on the play-icon Run button to start the same preview."
|
|
4746
|
+
},
|
|
4747
|
+
{
|
|
4748
|
+
id: "vibe-game-remix-lab-m1-keyboard-review",
|
|
4749
|
+
modes: ["keyboard", "text", "reduced-motion"],
|
|
4750
|
+
equivalentOutcome: true,
|
|
4751
|
+
description: "Read the labelled removed and added lines, then focus Accept or Reject and press Enter or Space."
|
|
4752
|
+
}
|
|
4753
|
+
],
|
|
4754
|
+
evidenceRequirements: [
|
|
4755
|
+
{
|
|
4756
|
+
id: "vibe-game-remix-lab-m1-assessment",
|
|
4757
|
+
goalIds: [
|
|
4758
|
+
"vibe-game-remix-lab-m1-starts",
|
|
4759
|
+
"vibe-game-remix-lab-m1-bounded-remix",
|
|
4760
|
+
"vibe-game-remix-lab-m1-private-runtime"
|
|
4761
|
+
],
|
|
4762
|
+
kind: "assessment-result",
|
|
4763
|
+
retention: "entitlement",
|
|
4764
|
+
containsPersonalData: false
|
|
4765
|
+
},
|
|
4766
|
+
{
|
|
4767
|
+
id: "vibe-game-remix-lab-m1-explanation",
|
|
4768
|
+
goalIds: ["vibe-game-remix-lab-m1-bounded-remix"],
|
|
4769
|
+
kind: "learner-explanation",
|
|
4770
|
+
retention: "attempt",
|
|
4771
|
+
containsPersonalData: false
|
|
4772
|
+
}
|
|
4773
|
+
],
|
|
4774
|
+
sideAdventures: [
|
|
4775
|
+
{
|
|
4776
|
+
id: "vibe-game-remix-lab-m1-inventor",
|
|
4777
|
+
prompt: "Write a new bounded remix intent card with one permitted setting, one constraint and one success test.",
|
|
4778
|
+
completionRequired: false
|
|
4779
|
+
}
|
|
4780
|
+
],
|
|
4781
|
+
rewardBindings: [
|
|
4782
|
+
{
|
|
4783
|
+
id: "vibe-game-remix-lab-m1-badge",
|
|
4784
|
+
badgeId: "vibe-game-remix-lab-mission-complete",
|
|
4785
|
+
goalIds: [
|
|
4786
|
+
"vibe-game-remix-lab-m1-starts",
|
|
4787
|
+
"vibe-game-remix-lab-m1-bounded-remix",
|
|
4788
|
+
"vibe-game-remix-lab-m1-private-runtime"
|
|
4789
|
+
],
|
|
4790
|
+
deterministic: true,
|
|
4791
|
+
random: false,
|
|
4792
|
+
tokenConvertible: false
|
|
4793
|
+
}
|
|
4794
|
+
],
|
|
4795
|
+
functionReference: [
|
|
4796
|
+
{
|
|
4797
|
+
id: "vibe-game-remix-lab-function-speed",
|
|
4798
|
+
signature: "setRescueSpeed(speed)",
|
|
4799
|
+
summary: "Sets the supplied rescue robot's bounded movement speed.",
|
|
4800
|
+
parameters: [{ name: "speed", type: "whole number", description: "A safe speed from 1 to 5." }],
|
|
4801
|
+
effect: "Changes only the private mini-game simulation speed.",
|
|
4802
|
+
example: "setRescueSpeed(3);"
|
|
4803
|
+
},
|
|
4804
|
+
{
|
|
4805
|
+
id: "vibe-game-remix-lab-function-spacing",
|
|
4806
|
+
signature: "setGateSpacing(spacing)",
|
|
4807
|
+
summary: "Sets the gap between original rescue gates.",
|
|
4808
|
+
parameters: [{ name: "spacing", type: "whole number", description: "A bounded spacing from 2 to 6." }],
|
|
4809
|
+
effect: "Changes only the generated gate layout in the private preview.",
|
|
4810
|
+
example: "setGateSpacing(4);"
|
|
4811
|
+
},
|
|
4812
|
+
{
|
|
4813
|
+
id: "vibe-game-remix-lab-function-goals",
|
|
4814
|
+
signature: "setGoalCount(count)",
|
|
4815
|
+
summary: "Chooses how many fictional rescue goals the round contains.",
|
|
4816
|
+
parameters: [{ name: "count", type: "whole number", description: "A bounded goal count from 1 to 4." }],
|
|
4817
|
+
effect: "Changes the labelled rescue-goal count without network or account access.",
|
|
4818
|
+
example: "setGoalCount(3);"
|
|
4819
|
+
}
|
|
4820
|
+
],
|
|
4821
|
+
boundedSuggestion: {
|
|
4822
|
+
id: "vibe-game-remix-lab-m1-authored-goal-diff",
|
|
4823
|
+
source: "authored-fallback",
|
|
4824
|
+
intent: "Make the round contain one more rescue goal.",
|
|
4825
|
+
constraints: [
|
|
4826
|
+
"Change exactly one documented setting.",
|
|
4827
|
+
"Keep the goal count inside the published range.",
|
|
4828
|
+
"Do not add network, storage, DOM or account access."
|
|
4829
|
+
],
|
|
4830
|
+
permittedArtifactId: "vibe-game-remix-lab-m1-code",
|
|
4831
|
+
originalSnippet: "setGoalCount(2);",
|
|
4832
|
+
replacementSnippet: "setGoalCount(3);",
|
|
4833
|
+
explanationPrompt: "Did the new goal count match your prediction, and which assessment evidence proves it?",
|
|
4834
|
+
aiOptional: false,
|
|
4835
|
+
learnerApprovalRequired: true,
|
|
4836
|
+
alternatives: ["accept", "reject"]
|
|
4837
|
+
}
|
|
4838
|
+
},
|
|
4839
|
+
facilitator: {
|
|
4840
|
+
artifacts: [
|
|
4841
|
+
{
|
|
4842
|
+
id: "vibe-game-remix-lab-m1-answer-key",
|
|
4843
|
+
kind: "answer-key",
|
|
4844
|
+
audience: "facilitator",
|
|
4845
|
+
solutionBearing: true
|
|
4846
|
+
},
|
|
4847
|
+
{
|
|
4848
|
+
id: "vibe-game-remix-lab-m1-protected-tests",
|
|
4849
|
+
kind: "protected-test",
|
|
4850
|
+
audience: "facilitator",
|
|
4851
|
+
solutionBearing: true
|
|
4852
|
+
},
|
|
4853
|
+
{
|
|
4854
|
+
id: "vibe-game-remix-lab-m1-safety-notes",
|
|
4855
|
+
kind: "facilitator-note",
|
|
4856
|
+
audience: "facilitator",
|
|
4857
|
+
solutionBearing: true
|
|
4858
|
+
}
|
|
4859
|
+
],
|
|
4860
|
+
protectedGoals: [
|
|
4861
|
+
{
|
|
4862
|
+
id: "vibe-game-remix-lab-m1-protected-resilience",
|
|
4863
|
+
statement: "The sandbox rejects prompt injection, answer dumping, disallowed files, network access and changes outside the approved diff.",
|
|
4864
|
+
visibility: "protected",
|
|
4865
|
+
criterionIds: ["vibe-game-remix-lab-edge-one", "vibe-game-remix-lab-edge-two"],
|
|
4866
|
+
completionRequired: false,
|
|
4867
|
+
aiRequired: false
|
|
4868
|
+
}
|
|
4869
|
+
],
|
|
4870
|
+
prompts: [
|
|
4871
|
+
"Ask for the learner's prediction before revealing the authored diff.",
|
|
4872
|
+
"Do not invite free-form chat; keep intent, evidence and suggestions bound to the current project, rubric and permitted artifact.",
|
|
4873
|
+
"A rejection must leave source unchanged, and AI/provider failure must never block deterministic completion."
|
|
4874
|
+
]
|
|
4875
|
+
}
|
|
4876
|
+
};
|
|
4590
4877
|
var ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1 = {
|
|
4591
4878
|
version: MISSION_AUTHORING_CONTRACT_VERSION_V1,
|
|
4592
4879
|
moduleId: "junior-coder.road-hopper-rally",
|
|
@@ -4954,6 +5241,7 @@ export {
|
|
|
4954
5241
|
SERVO_CREATURE_MISSION_ONE_AUTHORING_V1,
|
|
4955
5242
|
SKYWING_SPRINT_MISSION_ONE_AUTHORING_V1,
|
|
4956
5243
|
STAR_DEFENDER_SQUADRON_MISSION_ONE_AUTHORING_V1,
|
|
5244
|
+
VIBE_GAME_REMIX_LAB_MISSION_ONE_AUTHORING_V1,
|
|
4957
5245
|
assertValidLearningPath,
|
|
4958
5246
|
assertValidMissionAuthoringBundle,
|
|
4959
5247
|
calculateAssessment,
|