@plasius/learning 0.2.4 → 0.2.5

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 CHANGED
@@ -63,6 +63,7 @@ the exact catalog module that owns its rubric, mission and badges.
63
63
  ```ts
64
64
  import {
65
65
  JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1,
66
+ METEOR_SHIELD_MISSION_ONE_AUTHORING_V1,
66
67
  PADDLE_PULSE_MISSION_ONE_AUTHORING_V1,
67
68
  ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1,
68
69
  ROBOT_MAZE_DASH_MISSION_ONE_AUTHORING_V1,
@@ -82,8 +83,11 @@ const skywing = JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1.modules.find(
82
83
  const paddlePulse = JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1.modules.find(
83
84
  (module) => module.slug === "paddle-pulse",
84
85
  );
86
+ const meteorShield = JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1.modules.find(
87
+ (module) => module.slug === "meteor-shield",
88
+ );
85
89
 
86
- if (!roadHopper || !robotMaze || !skywing || !paddlePulse) {
90
+ if (!roadHopper || !robotMaze || !skywing || !paddlePulse || !meteorShield) {
87
91
  throw new Error("Junior Coder module is missing");
88
92
  }
89
93
 
@@ -103,6 +107,10 @@ assertValidMissionAuthoringBundle(
103
107
  PADDLE_PULSE_MISSION_ONE_AUTHORING_V1,
104
108
  paddlePulse,
105
109
  );
110
+ assertValidMissionAuthoringBundle(
111
+ METEOR_SHIELD_MISSION_ONE_AUTHORING_V1,
112
+ meteorShield,
113
+ );
106
114
  ```
107
115
 
108
116
  ## Contract rules
package/dist/index.cjs CHANGED
@@ -25,6 +25,7 @@ __export(index_exports, {
25
25
  JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT: () => JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT,
26
26
  JUNIOR_CODER_ROBOT_RESCUE_PATH_V1: () => JUNIOR_CODER_ROBOT_RESCUE_PATH_V1,
27
27
  JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1: () => JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1,
28
+ METEOR_SHIELD_MISSION_ONE_AUTHORING_V1: () => METEOR_SHIELD_MISSION_ONE_AUTHORING_V1,
28
29
  MISSION_AUTHORING_CONTRACT_VERSION_V1: () => MISSION_AUTHORING_CONTRACT_VERSION_V1,
29
30
  PADDLE_PULSE_MISSION_ONE_AUTHORING_V1: () => PADDLE_PULSE_MISSION_ONE_AUTHORING_V1,
30
31
  ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1: () => ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1,
@@ -1783,6 +1784,226 @@ var PADDLE_PULSE_MISSION_ONE_AUTHORING_V1 = {
1783
1784
  ]
1784
1785
  }
1785
1786
  };
1787
+ var METEOR_SHIELD_MISSION_ONE_AUTHORING_V1 = {
1788
+ version: MISSION_AUTHORING_CONTRACT_VERSION_V1,
1789
+ moduleId: "junior-coder.meteor-shield",
1790
+ moduleVersion: "1.1.0",
1791
+ missionId: "meteor-shield-mission-1",
1792
+ learner: {
1793
+ estimatedMinutes: 20,
1794
+ stages: [
1795
+ {
1796
+ kind: "learn",
1797
+ instruction: "Read how target column, shield energy and launch delay change a rescue defence.",
1798
+ artifactIds: ["meteor-shield-m1-art"]
1799
+ },
1800
+ {
1801
+ kind: "predict",
1802
+ instruction: "Predict which rescue base the shield will protect first.",
1803
+ artifactIds: []
1804
+ },
1805
+ {
1806
+ kind: "build",
1807
+ instruction: "Adjust the three documented settings in the starter JavaScript.",
1808
+ artifactIds: ["meteor-shield-m1-code"]
1809
+ },
1810
+ {
1811
+ kind: "run",
1812
+ instruction: "Use the Run action button to start the private meteor-wave preview.",
1813
+ artifactIds: ["meteor-shield-m1-code"]
1814
+ },
1815
+ {
1816
+ kind: "assess",
1817
+ instruction: "Run the visible and protected deterministic defence checks.",
1818
+ artifactIds: []
1819
+ },
1820
+ {
1821
+ kind: "inspect",
1822
+ instruction: "Compare the highlighted setting with the first goal that did not pass.",
1823
+ artifactIds: []
1824
+ },
1825
+ {
1826
+ kind: "fix",
1827
+ instruction: "Change one setting, run again and observe the energy and target telemetry.",
1828
+ artifactIds: ["meteor-shield-m1-code"]
1829
+ },
1830
+ {
1831
+ kind: "explain",
1832
+ instruction: "Explain how targeting and launch timing affected the remaining shield energy.",
1833
+ artifactIds: []
1834
+ },
1835
+ {
1836
+ kind: "reward",
1837
+ instruction: "Collect the evidence-bound badge when the score and safety check pass.",
1838
+ artifactIds: []
1839
+ }
1840
+ ],
1841
+ readinessChecks: [
1842
+ {
1843
+ id: "meteor-shield-m1-find-energy",
1844
+ prompt: "Point to the setting that limits how many shields can launch.",
1845
+ scored: false
1846
+ }
1847
+ ],
1848
+ artifacts: [
1849
+ {
1850
+ id: "meteor-shield-m1-code",
1851
+ kind: "starter-code",
1852
+ audience: "learner",
1853
+ solutionBearing: false
1854
+ },
1855
+ {
1856
+ id: "meteor-shield-m1-art",
1857
+ kind: "starter-assets",
1858
+ audience: "learner",
1859
+ solutionBearing: false
1860
+ },
1861
+ {
1862
+ id: "meteor-shield-m1-printable",
1863
+ kind: "printable",
1864
+ audience: "learner",
1865
+ solutionBearing: false
1866
+ }
1867
+ ],
1868
+ goals: [
1869
+ {
1870
+ id: "meteor-shield-m1-starts",
1871
+ statement: "The JavaScript settings are valid and the private preview starts.",
1872
+ visibility: "visible",
1873
+ criterionIds: ["meteor-shield-build"],
1874
+ completionRequired: true,
1875
+ aiRequired: false
1876
+ },
1877
+ {
1878
+ id: "meteor-shield-m1-resource-defence",
1879
+ statement: "A shield launches toward the selected meteor while keeping enough energy for the next wave.",
1880
+ visibility: "visible",
1881
+ criterionIds: [
1882
+ "meteor-shield-goal-one",
1883
+ "meteor-shield-goal-two"
1884
+ ],
1885
+ completionRequired: true,
1886
+ aiRequired: false
1887
+ },
1888
+ {
1889
+ id: "meteor-shield-m1-private-runtime",
1890
+ statement: "The game stays inside the private educational preview boundary.",
1891
+ visibility: "visible",
1892
+ criterionIds: ["meteor-shield-safety"],
1893
+ completionRequired: true,
1894
+ aiRequired: false
1895
+ }
1896
+ ],
1897
+ interactions: [
1898
+ {
1899
+ id: "meteor-shield-m1-run-control",
1900
+ description: "Start the private meteor-wave simulation.",
1901
+ primaryMode: "pointer",
1902
+ alternativeIds: ["meteor-shield-m1-keyboard-run"]
1903
+ },
1904
+ {
1905
+ id: "meteor-shield-m1-target-control",
1906
+ description: "Move the targeting reticle between rescue columns and launch a shield.",
1907
+ primaryMode: "keyboard",
1908
+ alternativeIds: []
1909
+ },
1910
+ {
1911
+ id: "meteor-shield-m1-wave-motion",
1912
+ description: "Observe meteors and shield pulses crossing the rescue zone.",
1913
+ primaryMode: "motion",
1914
+ alternativeIds: ["meteor-shield-m1-telemetry"]
1915
+ }
1916
+ ],
1917
+ accessibilityAlternatives: [
1918
+ {
1919
+ id: "meteor-shield-m1-keyboard-run",
1920
+ modes: ["keyboard"],
1921
+ equivalentOutcome: true,
1922
+ description: "Press Enter or Space on the play-icon Run button to start the same preview."
1923
+ },
1924
+ {
1925
+ id: "meteor-shield-m1-telemetry",
1926
+ modes: ["text", "reduced-motion"],
1927
+ equivalentOutcome: true,
1928
+ description: "Use target column, wave, distance and energy text instead of projectile animation."
1929
+ }
1930
+ ],
1931
+ evidenceRequirements: [
1932
+ {
1933
+ id: "meteor-shield-m1-assessment",
1934
+ goalIds: [
1935
+ "meteor-shield-m1-starts",
1936
+ "meteor-shield-m1-resource-defence",
1937
+ "meteor-shield-m1-private-runtime"
1938
+ ],
1939
+ kind: "assessment-result",
1940
+ retention: "entitlement",
1941
+ containsPersonalData: false
1942
+ },
1943
+ {
1944
+ id: "meteor-shield-m1-explanation",
1945
+ goalIds: ["meteor-shield-m1-resource-defence"],
1946
+ kind: "learner-explanation",
1947
+ retention: "attempt",
1948
+ containsPersonalData: false
1949
+ }
1950
+ ],
1951
+ sideAdventures: [
1952
+ {
1953
+ id: "meteor-shield-m1-remix",
1954
+ prompt: "Invent an original rescue-base signal and describe the safe game event that activates it.",
1955
+ completionRequired: false
1956
+ }
1957
+ ],
1958
+ rewardBindings: [
1959
+ {
1960
+ id: "meteor-shield-m1-badge",
1961
+ badgeId: "meteor-shield-mission-complete",
1962
+ goalIds: [
1963
+ "meteor-shield-m1-starts",
1964
+ "meteor-shield-m1-resource-defence",
1965
+ "meteor-shield-m1-private-runtime"
1966
+ ],
1967
+ deterministic: true,
1968
+ random: false,
1969
+ tokenConvertible: false
1970
+ }
1971
+ ]
1972
+ },
1973
+ facilitator: {
1974
+ artifacts: [
1975
+ {
1976
+ id: "meteor-shield-m1-answer-key",
1977
+ kind: "answer-key",
1978
+ audience: "facilitator",
1979
+ solutionBearing: true
1980
+ },
1981
+ {
1982
+ id: "meteor-shield-m1-protected-tests",
1983
+ kind: "protected-test",
1984
+ audience: "facilitator",
1985
+ solutionBearing: true
1986
+ }
1987
+ ],
1988
+ protectedGoals: [
1989
+ {
1990
+ id: "meteor-shield-m1-protected-resilience",
1991
+ statement: "The runtime clamps unsafe resources and terminates bounded projectile simulations.",
1992
+ visibility: "protected",
1993
+ criterionIds: [
1994
+ "meteor-shield-edge-one",
1995
+ "meteor-shield-edge-two"
1996
+ ],
1997
+ completionRequired: false,
1998
+ aiRequired: false
1999
+ }
2000
+ ],
2001
+ prompts: [
2002
+ "Ask the learner which setting controls a limited resource before suggesting a code edit.",
2003
+ "Use visible telemetry and the function reference; never reveal protected numeric targets or expected source fragments."
2004
+ ]
2005
+ }
2006
+ };
1786
2007
  var ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1 = {
1787
2008
  version: MISSION_AUTHORING_CONTRACT_VERSION_V1,
1788
2009
  moduleId: "junior-coder.road-hopper-rally",
@@ -2137,6 +2358,7 @@ ${summary}`);
2137
2358
  JUNIOR_CODER_ROBOT_RESCUE_PATH_CURRENT,
2138
2359
  JUNIOR_CODER_ROBOT_RESCUE_PATH_V1,
2139
2360
  JUNIOR_CODER_ROBOT_RESCUE_PATH_V1_1,
2361
+ METEOR_SHIELD_MISSION_ONE_AUTHORING_V1,
2140
2362
  MISSION_AUTHORING_CONTRACT_VERSION_V1,
2141
2363
  PADDLE_PULSE_MISSION_ONE_AUTHORING_V1,
2142
2364
  ROAD_HOPPER_RALLY_MISSION_ONE_AUTHORING_V1,