@contractspec/example.learning-journey-duo-drills 4.0.0 → 4.0.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.
@@ -1,34 +1,35 @@
1
- $ contractspec-bun-build prebuild
2
- $ bun run build:bundle && bun run build:types
3
- $ contractspec-bun-build transpile
4
- [contractspec-bun-build] transpile target=bun root=src entries=6 noBundle=false
5
- Bundled 6 modules in 20ms
6
-
7
- docs/duo-drills.docblock.js 1.30 KB (entry point)
8
- ./index.js 4.27 KB (entry point)
9
- docs/index.js 1.30 KB (entry point)
10
- ./example.js 0.73 KB (entry point)
11
- ./learning-journey-duo-drills.feature.js 461 bytes (entry point)
12
- ./track.js 1.83 KB (entry point)
13
-
14
- [contractspec-bun-build] transpile target=node root=src entries=6 noBundle=false
15
- Bundled 6 modules in 17ms
16
-
17
- docs/duo-drills.docblock.js 1.28 KB (entry point)
18
- ./index.js 4.25 KB (entry point)
19
- docs/index.js 1.28 KB (entry point)
20
- ./example.js 0.72 KB (entry point)
21
- ./learning-journey-duo-drills.feature.js 453 bytes (entry point)
22
- ./track.js 1.82 KB (entry point)
23
-
24
- [contractspec-bun-build] transpile target=browser root=src entries=6 noBundle=false
25
- Bundled 6 modules in 38ms
26
-
27
- docs/duo-drills.docblock.js 1.28 KB (entry point)
28
- ./index.js 4.25 KB (entry point)
29
- docs/index.js 1.28 KB (entry point)
30
- ./example.js 0.72 KB (entry point)
31
- ./learning-journey-duo-drills.feature.js 453 bytes (entry point)
32
- ./track.js 1.82 KB (entry point)
33
-
34
- $ contractspec-bun-build types
1
+
2
+ $ contractspec-bun-build prebuild
3
+ $ bun run build:bundle && bun run build:types
4
+ $ contractspec-bun-build transpile
5
+ [contractspec-bun-build] transpile target=bun root=src entries=6 noBundle=false
6
+ Bundled 6 modules in 14ms
7
+
8
+ docs/duo-drills.docblock.js 1.30 KB (entry point)
9
+ ./index.js 4.27 KB (entry point)
10
+ docs/index.js 1.30 KB (entry point)
11
+ ./example.js 0.71 KB (entry point)
12
+ ./learning-journey-duo-drills.feature.js 470 bytes (entry point)
13
+ ./track.js 1.83 KB (entry point)
14
+
15
+ [contractspec-bun-build] transpile target=node root=src entries=6 noBundle=false
16
+ Bundled 6 modules in 12ms
17
+
18
+ docs/duo-drills.docblock.js 1.28 KB (entry point)
19
+ ./index.js 4.25 KB (entry point)
20
+ docs/index.js 1.28 KB (entry point)
21
+ ./example.js 0.70 KB (entry point)
22
+ ./learning-journey-duo-drills.feature.js 462 bytes (entry point)
23
+ ./track.js 1.82 KB (entry point)
24
+
25
+ [contractspec-bun-build] transpile target=browser root=src entries=6 noBundle=false
26
+ Bundled 6 modules in 12ms
27
+
28
+ docs/duo-drills.docblock.js 1.28 KB (entry point)
29
+ ./index.js 4.25 KB (entry point)
30
+ docs/index.js 1.28 KB (entry point)
31
+ ./example.js 0.70 KB (entry point)
32
+ ./learning-journey-duo-drills.feature.js 462 bytes (entry point)
33
+ ./track.js 1.82 KB (entry point)
34
+
35
+ $ contractspec-bun-build types
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @contractspec/example.learning-journey-duo-drills
2
2
 
3
+ ## 4.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - chore: auto-bump internal dependents
8
+ - Updated dependencies because of chore: auto-bump internal dependents
9
+ - Updated dependencies because of Add FormSpec layout hints, semantic field rendering, and portable text/textarea input-group addons.
10
+ - Updated dependencies because of Add ThemeSpec light/dark modes and a design-system Tailwind bridge for CSS variables, presets, CSS text, and OKLCH color pass-through.
11
+ - Updated dependencies because of Add a canonical typed result system for ContractSpec success and failure propagation across operations, workflows, jobs, server adapters, MCP, GraphQL, and React clients.
12
+ - @contractspec/module.learning-journey@4.0.1
13
+ - @contractspec/lib.contracts-spec@5.5.0
14
+
3
15
  ## 4.0.0
4
16
 
5
17
  ### Major Changes
@@ -1 +1 @@
1
- import{defineExample as g}from"@contractspec/lib.contracts-spec";var h=g({meta:{key:"learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey Duo Drills",description:"Short drill/SRS example with XP and streak hooks for language, finance, or ContractSpec concept drills.",kind:"template",visibility:"public",stability:"experimental",owners:["@platform.core"],tags:["learning","drills","srs","xp"]},docs:{rootDocId:"docs.learning-journey.duo-drills"},entrypoints:{packageName:"@contractspec/example.learning-journey-duo-drills",docs:"./docs"},surfaces:{templates:!0,sandbox:{enabled:!0,modes:["playground","markdown"]},studio:{enabled:!0,installable:!0},mcp:{enabled:!0}}}),q=h;export{q as default};
1
+ import{defineExample as b}from"@contractspec/lib.contracts-spec/examples";var c=b({meta:{key:"examples.learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey Duo Drills",description:"Drill-based learning journey example with SRS, XP, and streak hooks.",kind:"template",visibility:"experimental",stability:"experimental",owners:["@contractspec-core"],tags:["package","examples","learning-journey-duo-drills"]},surfaces:{templates:!0,sandbox:{enabled:!0,modes:["playground","specs"]},studio:{enabled:!1,installable:!1},mcp:{enabled:!1}},entrypoints:{packageName:"@contractspec/example.learning-journey-duo-drills"}}),h=c;export{h as default,c as ExamplesLearningJourneyDuoDrillsExample};
@@ -1 +1 @@
1
- import{registerDocBlocks as e}from"@contractspec/lib.contracts-spec/docs";var i=[{id:"docs.learning-journey.duo-drills",title:"Learning Journey — Duo Drills",summary:"Short drill/SRS example with XP and streak hooks for language, finance, or ContractSpec concept drills.",kind:"reference",visibility:"public",route:"/docs/learning-journey/duo-drills",tags:["learning","drills","srs","xp"],body:'## Track\n- **Key**: `drills_language_basics`\n- **Persona**: learner running quick drills (language/finance/spec concepts)\n- **Goal**: complete first session, maintain high-accuracy sessions, master cards in the first skill\n\n## Steps & Conditions\n1) `complete_first_session` → event `drill.session.completed`\n2) `reach_accuracy_threshold` → count 3 sessions with payload `accuracyBucket: "high"` (within default window)\n3) `unlock_new_skill` → SRS mastery: `drill.card.mastered` events with `mastery >= 0.8`, count 5 cards\n\nXP: 20 + 30 + 40. Streak: daily session completion can be used to drive streak rewards.\n\n## Wiring\n- Tracks export from `@contractspec/example.learning-journey-duo-drills/track`.\n- Use registry helper `recordEvent` to advance steps from drill/session events.\n- SRS mastery events should include payload: `{ skillId, mastery }`.'}];e(i);import{defineExample as s}from"@contractspec/lib.contracts-spec";var t=s({meta:{key:"learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey Duo Drills",description:"Short drill/SRS example with XP and streak hooks for language, finance, or ContractSpec concept drills.",kind:"template",visibility:"public",stability:"experimental",owners:["@platform.core"],tags:["learning","drills","srs","xp"]},docs:{rootDocId:"docs.learning-journey.duo-drills"},entrypoints:{packageName:"@contractspec/example.learning-journey-duo-drills",docs:"./docs"},surfaces:{templates:!0,sandbox:{enabled:!0,modes:["playground","markdown"]},studio:{enabled:!0,installable:!0},mcp:{enabled:!0}}}),r=t;import{defineFeature as a}from"@contractspec/lib.contracts-spec";var m=a({meta:{key:"learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey: Duo Drills",description:"Drill-based learning with spaced repetition, XP, and streaks",domain:"learning-journey",owners:["@examples"],tags:["learning","drills","srs","gamification"],stability:"experimental"},docs:["docs.learning-journey.duo-drills"]});var l={id:"drills_language_basics",name:"Language Basics Drills",description:"Short SRS-driven drills to master a first skill, modeled after Duolingo-style sessions.",targetUserSegment:"learner",targetRole:"individual",totalXp:50,completionRewards:{xp:25},steps:[{id:"complete_first_session",title:"Complete first drill session",description:"Finish a drill session to get started.",order:1,completion:{kind:"event",eventName:"drill.session.completed"},branches:[{key:"fast_track",when:{kind:"event",eventName:"drill.session.completed",payloadFilter:{accuracyBucket:"high"}},blockStepIds:["reach_accuracy_threshold"],reward:{xp:10}},{key:"guided_practice",when:{kind:"event",eventName:"drill.session.completed"}}],xpReward:20,metadata:{surface:"drills"}},{id:"reach_accuracy_threshold",title:"Hit high accuracy in sessions",description:"Achieve three high-accuracy sessions to build confidence.",order:2,prerequisites:[{kind:"branch_selected",stepId:"complete_first_session",branchKey:"guided_practice"}],completion:{kind:"count",eventName:"drill.session.completed",atLeast:3,payloadFilter:{accuracyBucket:"high"}},xpReward:30,metadata:{metric:"accuracy",target:">=85%"}},{id:"unlock_new_skill",title:"Master core cards in first skill",description:"Reach mastery on at least five cards in the first skill to unlock the next one.",order:3,prerequisiteMode:"any",prerequisites:[{kind:"step_completed",stepId:"reach_accuracy_threshold"},{kind:"branch_selected",stepId:"complete_first_session",branchKey:"fast_track"}],completion:{kind:"mastery",eventName:"drill.card.mastered",minimumMastery:0.8,requiredCount:5,skillIdField:"skillId",masteryField:"mastery",payloadFilter:{skillId:"language_basics"}},xpReward:40,metadata:{surface:"srs",skill:"language_basics"}}]},u=[l];export{r as example,l as drillsLanguageBasicsTrack,u as drillTracks,m as LearningJourneyDuoDrillsFeature};
1
+ import{registerDocBlocks as e}from"@contractspec/lib.contracts-spec/docs";var t=[{id:"docs.learning-journey.duo-drills",title:"Learning Journey — Duo Drills",summary:"Short drill/SRS example with XP and streak hooks for language, finance, or ContractSpec concept drills.",kind:"reference",visibility:"public",route:"/docs/learning-journey/duo-drills",tags:["learning","drills","srs","xp"],body:'## Track\n- **Key**: `drills_language_basics`\n- **Persona**: learner running quick drills (language/finance/spec concepts)\n- **Goal**: complete first session, maintain high-accuracy sessions, master cards in the first skill\n\n## Steps & Conditions\n1) `complete_first_session` → event `drill.session.completed`\n2) `reach_accuracy_threshold` → count 3 sessions with payload `accuracyBucket: "high"` (within default window)\n3) `unlock_new_skill` → SRS mastery: `drill.card.mastered` events with `mastery >= 0.8`, count 5 cards\n\nXP: 20 + 30 + 40. Streak: daily session completion can be used to drive streak rewards.\n\n## Wiring\n- Tracks export from `@contractspec/example.learning-journey-duo-drills/track`.\n- Use registry helper `recordEvent` to advance steps from drill/session events.\n- SRS mastery events should include payload: `{ skillId, mastery }`.'}];e(t);import{defineExample as i}from"@contractspec/lib.contracts-spec/examples";var s=i({meta:{key:"examples.learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey Duo Drills",description:"Drill-based learning journey example with SRS, XP, and streak hooks.",kind:"template",visibility:"experimental",stability:"experimental",owners:["@contractspec-core"],tags:["package","examples","learning-journey-duo-drills"]},surfaces:{templates:!0,sandbox:{enabled:!0,modes:["playground","specs"]},studio:{enabled:!1,installable:!1},mcp:{enabled:!1}},entrypoints:{packageName:"@contractspec/example.learning-journey-duo-drills"}}),r=s;import{defineFeature as a}from"@contractspec/lib.contracts-spec/features";var m=a({meta:{key:"learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey: Duo Drills",description:"Drill-based learning with spaced repetition, XP, and streaks",domain:"learning-journey",owners:["@examples"],tags:["learning","drills","srs","gamification"],stability:"experimental"},docs:["docs.learning-journey.duo-drills"]});var c={id:"drills_language_basics",name:"Language Basics Drills",description:"Short SRS-driven drills to master a first skill, modeled after Duolingo-style sessions.",targetUserSegment:"learner",targetRole:"individual",totalXp:50,completionRewards:{xp:25},steps:[{id:"complete_first_session",title:"Complete first drill session",description:"Finish a drill session to get started.",order:1,completion:{kind:"event",eventName:"drill.session.completed"},branches:[{key:"fast_track",when:{kind:"event",eventName:"drill.session.completed",payloadFilter:{accuracyBucket:"high"}},blockStepIds:["reach_accuracy_threshold"],reward:{xp:10}},{key:"guided_practice",when:{kind:"event",eventName:"drill.session.completed"}}],xpReward:20,metadata:{surface:"drills"}},{id:"reach_accuracy_threshold",title:"Hit high accuracy in sessions",description:"Achieve three high-accuracy sessions to build confidence.",order:2,prerequisites:[{kind:"branch_selected",stepId:"complete_first_session",branchKey:"guided_practice"}],completion:{kind:"count",eventName:"drill.session.completed",atLeast:3,payloadFilter:{accuracyBucket:"high"}},xpReward:30,metadata:{metric:"accuracy",target:">=85%"}},{id:"unlock_new_skill",title:"Master core cards in first skill",description:"Reach mastery on at least five cards in the first skill to unlock the next one.",order:3,prerequisiteMode:"any",prerequisites:[{kind:"step_completed",stepId:"reach_accuracy_threshold"},{kind:"branch_selected",stepId:"complete_first_session",branchKey:"fast_track"}],completion:{kind:"mastery",eventName:"drill.card.mastered",minimumMastery:0.8,requiredCount:5,skillIdField:"skillId",masteryField:"mastery",payloadFilter:{skillId:"language_basics"}},xpReward:40,metadata:{surface:"srs",skill:"language_basics"}}]},k=[c];export{r as example,c as drillsLanguageBasicsTrack,k as drillTracks,m as LearningJourneyDuoDrillsFeature,s as ExamplesLearningJourneyDuoDrillsExample};
@@ -1 +1 @@
1
- import{defineFeature as g}from"@contractspec/lib.contracts-spec";var j=g({meta:{key:"learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey: Duo Drills",description:"Drill-based learning with spaced repetition, XP, and streaks",domain:"learning-journey",owners:["@examples"],tags:["learning","drills","srs","gamification"],stability:"experimental"},docs:["docs.learning-journey.duo-drills"]});export{j as LearningJourneyDuoDrillsFeature};
1
+ import{defineFeature as g}from"@contractspec/lib.contracts-spec/features";var j=g({meta:{key:"learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey: Duo Drills",description:"Drill-based learning with spaced repetition, XP, and streaks",domain:"learning-journey",owners:["@examples"],tags:["learning","drills","srs","gamification"],stability:"experimental"},docs:["docs.learning-journey.duo-drills"]});export{j as LearningJourneyDuoDrillsFeature};
package/dist/example.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- declare const example: import("@contractspec/lib.contracts-spec").ExampleSpec;
2
- export default example;
1
+ declare const ExamplesLearningJourneyDuoDrillsExample: import("@contractspec/lib.contracts-spec").ExampleSpec;
2
+ export default ExamplesLearningJourneyDuoDrillsExample;
3
+ export { ExamplesLearningJourneyDuoDrillsExample };
package/dist/example.js CHANGED
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{defineExample as g}from"@contractspec/lib.contracts-spec";var h=g({meta:{key:"learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey \u2014 Duo Drills",description:"Short drill/SRS example with XP and streak hooks for language, finance, or ContractSpec concept drills.",kind:"template",visibility:"public",stability:"experimental",owners:["@platform.core"],tags:["learning","drills","srs","xp"]},docs:{rootDocId:"docs.learning-journey.duo-drills"},entrypoints:{packageName:"@contractspec/example.learning-journey-duo-drills",docs:"./docs"},surfaces:{templates:!0,sandbox:{enabled:!0,modes:["playground","markdown"]},studio:{enabled:!0,installable:!0},mcp:{enabled:!0}}}),q=h;export{q as default};
2
+ import{defineExample as b}from"@contractspec/lib.contracts-spec/examples";var c=b({meta:{key:"examples.learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey Duo Drills",description:"Drill-based learning journey example with SRS, XP, and streak hooks.",kind:"template",visibility:"experimental",stability:"experimental",owners:["@contractspec-core"],tags:["package","examples","learning-journey-duo-drills"]},surfaces:{templates:!0,sandbox:{enabled:!0,modes:["playground","specs"]},studio:{enabled:!1,installable:!1},mcp:{enabled:!1}},entrypoints:{packageName:"@contractspec/example.learning-journey-duo-drills"}}),h=c;export{h as default,c as ExamplesLearningJourneyDuoDrillsExample};
package/dist/index.d.ts CHANGED
@@ -2,3 +2,4 @@ export { default as example } from './example';
2
2
  export * from './learning-journey-duo-drills.feature';
3
3
  export * from './track';
4
4
  import './docs';
5
+ export * from './example';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{registerDocBlocks as e}from"@contractspec/lib.contracts-spec/docs";var i=[{id:"docs.learning-journey.duo-drills",title:"Learning Journey \u2014 Duo Drills",summary:"Short drill/SRS example with XP and streak hooks for language, finance, or ContractSpec concept drills.",kind:"reference",visibility:"public",route:"/docs/learning-journey/duo-drills",tags:["learning","drills","srs","xp"],body:'## Track\n- **Key**: `drills_language_basics`\n- **Persona**: learner running quick drills (language/finance/spec concepts)\n- **Goal**: complete first session, maintain high-accuracy sessions, master cards in the first skill\n\n## Steps & Conditions\n1) `complete_first_session` \u2192 event `drill.session.completed`\n2) `reach_accuracy_threshold` \u2192 count 3 sessions with payload `accuracyBucket: "high"` (within default window)\n3) `unlock_new_skill` \u2192 SRS mastery: `drill.card.mastered` events with `mastery >= 0.8`, count 5 cards\n\nXP: 20 + 30 + 40. Streak: daily session completion can be used to drive streak rewards.\n\n## Wiring\n- Tracks export from `@contractspec/example.learning-journey-duo-drills/track`.\n- Use registry helper `recordEvent` to advance steps from drill/session events.\n- SRS mastery events should include payload: `{ skillId, mastery }`.'}];e(i);import{defineExample as s}from"@contractspec/lib.contracts-spec";var t=s({meta:{key:"learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey \u2014 Duo Drills",description:"Short drill/SRS example with XP and streak hooks for language, finance, or ContractSpec concept drills.",kind:"template",visibility:"public",stability:"experimental",owners:["@platform.core"],tags:["learning","drills","srs","xp"]},docs:{rootDocId:"docs.learning-journey.duo-drills"},entrypoints:{packageName:"@contractspec/example.learning-journey-duo-drills",docs:"./docs"},surfaces:{templates:!0,sandbox:{enabled:!0,modes:["playground","markdown"]},studio:{enabled:!0,installable:!0},mcp:{enabled:!0}}}),r=t;import{defineFeature as a}from"@contractspec/lib.contracts-spec";var m=a({meta:{key:"learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey: Duo Drills",description:"Drill-based learning with spaced repetition, XP, and streaks",domain:"learning-journey",owners:["@examples"],tags:["learning","drills","srs","gamification"],stability:"experimental"},docs:["docs.learning-journey.duo-drills"]});var l={id:"drills_language_basics",name:"Language Basics Drills",description:"Short SRS-driven drills to master a first skill, modeled after Duolingo-style sessions.",targetUserSegment:"learner",targetRole:"individual",totalXp:50,completionRewards:{xp:25},steps:[{id:"complete_first_session",title:"Complete first drill session",description:"Finish a drill session to get started.",order:1,completion:{kind:"event",eventName:"drill.session.completed"},branches:[{key:"fast_track",when:{kind:"event",eventName:"drill.session.completed",payloadFilter:{accuracyBucket:"high"}},blockStepIds:["reach_accuracy_threshold"],reward:{xp:10}},{key:"guided_practice",when:{kind:"event",eventName:"drill.session.completed"}}],xpReward:20,metadata:{surface:"drills"}},{id:"reach_accuracy_threshold",title:"Hit high accuracy in sessions",description:"Achieve three high-accuracy sessions to build confidence.",order:2,prerequisites:[{kind:"branch_selected",stepId:"complete_first_session",branchKey:"guided_practice"}],completion:{kind:"count",eventName:"drill.session.completed",atLeast:3,payloadFilter:{accuracyBucket:"high"}},xpReward:30,metadata:{metric:"accuracy",target:">=85%"}},{id:"unlock_new_skill",title:"Master core cards in first skill",description:"Reach mastery on at least five cards in the first skill to unlock the next one.",order:3,prerequisiteMode:"any",prerequisites:[{kind:"step_completed",stepId:"reach_accuracy_threshold"},{kind:"branch_selected",stepId:"complete_first_session",branchKey:"fast_track"}],completion:{kind:"mastery",eventName:"drill.card.mastered",minimumMastery:0.8,requiredCount:5,skillIdField:"skillId",masteryField:"mastery",payloadFilter:{skillId:"language_basics"}},xpReward:40,metadata:{surface:"srs",skill:"language_basics"}}]},u=[l];export{r as example,l as drillsLanguageBasicsTrack,u as drillTracks,m as LearningJourneyDuoDrillsFeature};
2
+ import{registerDocBlocks as e}from"@contractspec/lib.contracts-spec/docs";var t=[{id:"docs.learning-journey.duo-drills",title:"Learning Journey \u2014 Duo Drills",summary:"Short drill/SRS example with XP and streak hooks for language, finance, or ContractSpec concept drills.",kind:"reference",visibility:"public",route:"/docs/learning-journey/duo-drills",tags:["learning","drills","srs","xp"],body:'## Track\n- **Key**: `drills_language_basics`\n- **Persona**: learner running quick drills (language/finance/spec concepts)\n- **Goal**: complete first session, maintain high-accuracy sessions, master cards in the first skill\n\n## Steps & Conditions\n1) `complete_first_session` \u2192 event `drill.session.completed`\n2) `reach_accuracy_threshold` \u2192 count 3 sessions with payload `accuracyBucket: "high"` (within default window)\n3) `unlock_new_skill` \u2192 SRS mastery: `drill.card.mastered` events with `mastery >= 0.8`, count 5 cards\n\nXP: 20 + 30 + 40. Streak: daily session completion can be used to drive streak rewards.\n\n## Wiring\n- Tracks export from `@contractspec/example.learning-journey-duo-drills/track`.\n- Use registry helper `recordEvent` to advance steps from drill/session events.\n- SRS mastery events should include payload: `{ skillId, mastery }`.'}];e(t);import{defineExample as i}from"@contractspec/lib.contracts-spec/examples";var s=i({meta:{key:"examples.learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey Duo Drills",description:"Drill-based learning journey example with SRS, XP, and streak hooks.",kind:"template",visibility:"experimental",stability:"experimental",owners:["@contractspec-core"],tags:["package","examples","learning-journey-duo-drills"]},surfaces:{templates:!0,sandbox:{enabled:!0,modes:["playground","specs"]},studio:{enabled:!1,installable:!1},mcp:{enabled:!1}},entrypoints:{packageName:"@contractspec/example.learning-journey-duo-drills"}}),r=s;import{defineFeature as a}from"@contractspec/lib.contracts-spec/features";var m=a({meta:{key:"learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey: Duo Drills",description:"Drill-based learning with spaced repetition, XP, and streaks",domain:"learning-journey",owners:["@examples"],tags:["learning","drills","srs","gamification"],stability:"experimental"},docs:["docs.learning-journey.duo-drills"]});var c={id:"drills_language_basics",name:"Language Basics Drills",description:"Short SRS-driven drills to master a first skill, modeled after Duolingo-style sessions.",targetUserSegment:"learner",targetRole:"individual",totalXp:50,completionRewards:{xp:25},steps:[{id:"complete_first_session",title:"Complete first drill session",description:"Finish a drill session to get started.",order:1,completion:{kind:"event",eventName:"drill.session.completed"},branches:[{key:"fast_track",when:{kind:"event",eventName:"drill.session.completed",payloadFilter:{accuracyBucket:"high"}},blockStepIds:["reach_accuracy_threshold"],reward:{xp:10}},{key:"guided_practice",when:{kind:"event",eventName:"drill.session.completed"}}],xpReward:20,metadata:{surface:"drills"}},{id:"reach_accuracy_threshold",title:"Hit high accuracy in sessions",description:"Achieve three high-accuracy sessions to build confidence.",order:2,prerequisites:[{kind:"branch_selected",stepId:"complete_first_session",branchKey:"guided_practice"}],completion:{kind:"count",eventName:"drill.session.completed",atLeast:3,payloadFilter:{accuracyBucket:"high"}},xpReward:30,metadata:{metric:"accuracy",target:">=85%"}},{id:"unlock_new_skill",title:"Master core cards in first skill",description:"Reach mastery on at least five cards in the first skill to unlock the next one.",order:3,prerequisiteMode:"any",prerequisites:[{kind:"step_completed",stepId:"reach_accuracy_threshold"},{kind:"branch_selected",stepId:"complete_first_session",branchKey:"fast_track"}],completion:{kind:"mastery",eventName:"drill.card.mastered",minimumMastery:0.8,requiredCount:5,skillIdField:"skillId",masteryField:"mastery",payloadFilter:{skillId:"language_basics"}},xpReward:40,metadata:{surface:"srs",skill:"language_basics"}}]},k=[c];export{r as example,c as drillsLanguageBasicsTrack,k as drillTracks,m as LearningJourneyDuoDrillsFeature,s as ExamplesLearningJourneyDuoDrillsExample};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{defineFeature as g}from"@contractspec/lib.contracts-spec";var j=g({meta:{key:"learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey: Duo Drills",description:"Drill-based learning with spaced repetition, XP, and streaks",domain:"learning-journey",owners:["@examples"],tags:["learning","drills","srs","gamification"],stability:"experimental"},docs:["docs.learning-journey.duo-drills"]});export{j as LearningJourneyDuoDrillsFeature};
2
+ import{defineFeature as g}from"@contractspec/lib.contracts-spec/features";var j=g({meta:{key:"learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey: Duo Drills",description:"Drill-based learning with spaced repetition, XP, and streaks",domain:"learning-journey",owners:["@examples"],tags:["learning","drills","srs","gamification"],stability:"experimental"},docs:["docs.learning-journey.duo-drills"]});export{j as LearningJourneyDuoDrillsFeature};
@@ -1 +1 @@
1
- import{defineExample as g}from"@contractspec/lib.contracts-spec";var h=g({meta:{key:"learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey Duo Drills",description:"Short drill/SRS example with XP and streak hooks for language, finance, or ContractSpec concept drills.",kind:"template",visibility:"public",stability:"experimental",owners:["@platform.core"],tags:["learning","drills","srs","xp"]},docs:{rootDocId:"docs.learning-journey.duo-drills"},entrypoints:{packageName:"@contractspec/example.learning-journey-duo-drills",docs:"./docs"},surfaces:{templates:!0,sandbox:{enabled:!0,modes:["playground","markdown"]},studio:{enabled:!0,installable:!0},mcp:{enabled:!0}}}),q=h;export{q as default};
1
+ import{defineExample as b}from"@contractspec/lib.contracts-spec/examples";var c=b({meta:{key:"examples.learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey Duo Drills",description:"Drill-based learning journey example with SRS, XP, and streak hooks.",kind:"template",visibility:"experimental",stability:"experimental",owners:["@contractspec-core"],tags:["package","examples","learning-journey-duo-drills"]},surfaces:{templates:!0,sandbox:{enabled:!0,modes:["playground","specs"]},studio:{enabled:!1,installable:!1},mcp:{enabled:!1}},entrypoints:{packageName:"@contractspec/example.learning-journey-duo-drills"}}),h=c;export{h as default,c as ExamplesLearningJourneyDuoDrillsExample};
@@ -1 +1 @@
1
- import{registerDocBlocks as e}from"@contractspec/lib.contracts-spec/docs";var i=[{id:"docs.learning-journey.duo-drills",title:"Learning Journey — Duo Drills",summary:"Short drill/SRS example with XP and streak hooks for language, finance, or ContractSpec concept drills.",kind:"reference",visibility:"public",route:"/docs/learning-journey/duo-drills",tags:["learning","drills","srs","xp"],body:'## Track\n- **Key**: `drills_language_basics`\n- **Persona**: learner running quick drills (language/finance/spec concepts)\n- **Goal**: complete first session, maintain high-accuracy sessions, master cards in the first skill\n\n## Steps & Conditions\n1) `complete_first_session` → event `drill.session.completed`\n2) `reach_accuracy_threshold` → count 3 sessions with payload `accuracyBucket: "high"` (within default window)\n3) `unlock_new_skill` → SRS mastery: `drill.card.mastered` events with `mastery >= 0.8`, count 5 cards\n\nXP: 20 + 30 + 40. Streak: daily session completion can be used to drive streak rewards.\n\n## Wiring\n- Tracks export from `@contractspec/example.learning-journey-duo-drills/track`.\n- Use registry helper `recordEvent` to advance steps from drill/session events.\n- SRS mastery events should include payload: `{ skillId, mastery }`.'}];e(i);import{defineExample as s}from"@contractspec/lib.contracts-spec";var t=s({meta:{key:"learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey Duo Drills",description:"Short drill/SRS example with XP and streak hooks for language, finance, or ContractSpec concept drills.",kind:"template",visibility:"public",stability:"experimental",owners:["@platform.core"],tags:["learning","drills","srs","xp"]},docs:{rootDocId:"docs.learning-journey.duo-drills"},entrypoints:{packageName:"@contractspec/example.learning-journey-duo-drills",docs:"./docs"},surfaces:{templates:!0,sandbox:{enabled:!0,modes:["playground","markdown"]},studio:{enabled:!0,installable:!0},mcp:{enabled:!0}}}),r=t;import{defineFeature as a}from"@contractspec/lib.contracts-spec";var m=a({meta:{key:"learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey: Duo Drills",description:"Drill-based learning with spaced repetition, XP, and streaks",domain:"learning-journey",owners:["@examples"],tags:["learning","drills","srs","gamification"],stability:"experimental"},docs:["docs.learning-journey.duo-drills"]});var l={id:"drills_language_basics",name:"Language Basics Drills",description:"Short SRS-driven drills to master a first skill, modeled after Duolingo-style sessions.",targetUserSegment:"learner",targetRole:"individual",totalXp:50,completionRewards:{xp:25},steps:[{id:"complete_first_session",title:"Complete first drill session",description:"Finish a drill session to get started.",order:1,completion:{kind:"event",eventName:"drill.session.completed"},branches:[{key:"fast_track",when:{kind:"event",eventName:"drill.session.completed",payloadFilter:{accuracyBucket:"high"}},blockStepIds:["reach_accuracy_threshold"],reward:{xp:10}},{key:"guided_practice",when:{kind:"event",eventName:"drill.session.completed"}}],xpReward:20,metadata:{surface:"drills"}},{id:"reach_accuracy_threshold",title:"Hit high accuracy in sessions",description:"Achieve three high-accuracy sessions to build confidence.",order:2,prerequisites:[{kind:"branch_selected",stepId:"complete_first_session",branchKey:"guided_practice"}],completion:{kind:"count",eventName:"drill.session.completed",atLeast:3,payloadFilter:{accuracyBucket:"high"}},xpReward:30,metadata:{metric:"accuracy",target:">=85%"}},{id:"unlock_new_skill",title:"Master core cards in first skill",description:"Reach mastery on at least five cards in the first skill to unlock the next one.",order:3,prerequisiteMode:"any",prerequisites:[{kind:"step_completed",stepId:"reach_accuracy_threshold"},{kind:"branch_selected",stepId:"complete_first_session",branchKey:"fast_track"}],completion:{kind:"mastery",eventName:"drill.card.mastered",minimumMastery:0.8,requiredCount:5,skillIdField:"skillId",masteryField:"mastery",payloadFilter:{skillId:"language_basics"}},xpReward:40,metadata:{surface:"srs",skill:"language_basics"}}]},u=[l];export{r as example,l as drillsLanguageBasicsTrack,u as drillTracks,m as LearningJourneyDuoDrillsFeature};
1
+ import{registerDocBlocks as e}from"@contractspec/lib.contracts-spec/docs";var t=[{id:"docs.learning-journey.duo-drills",title:"Learning Journey — Duo Drills",summary:"Short drill/SRS example with XP and streak hooks for language, finance, or ContractSpec concept drills.",kind:"reference",visibility:"public",route:"/docs/learning-journey/duo-drills",tags:["learning","drills","srs","xp"],body:'## Track\n- **Key**: `drills_language_basics`\n- **Persona**: learner running quick drills (language/finance/spec concepts)\n- **Goal**: complete first session, maintain high-accuracy sessions, master cards in the first skill\n\n## Steps & Conditions\n1) `complete_first_session` → event `drill.session.completed`\n2) `reach_accuracy_threshold` → count 3 sessions with payload `accuracyBucket: "high"` (within default window)\n3) `unlock_new_skill` → SRS mastery: `drill.card.mastered` events with `mastery >= 0.8`, count 5 cards\n\nXP: 20 + 30 + 40. Streak: daily session completion can be used to drive streak rewards.\n\n## Wiring\n- Tracks export from `@contractspec/example.learning-journey-duo-drills/track`.\n- Use registry helper `recordEvent` to advance steps from drill/session events.\n- SRS mastery events should include payload: `{ skillId, mastery }`.'}];e(t);import{defineExample as i}from"@contractspec/lib.contracts-spec/examples";var s=i({meta:{key:"examples.learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey Duo Drills",description:"Drill-based learning journey example with SRS, XP, and streak hooks.",kind:"template",visibility:"experimental",stability:"experimental",owners:["@contractspec-core"],tags:["package","examples","learning-journey-duo-drills"]},surfaces:{templates:!0,sandbox:{enabled:!0,modes:["playground","specs"]},studio:{enabled:!1,installable:!1},mcp:{enabled:!1}},entrypoints:{packageName:"@contractspec/example.learning-journey-duo-drills"}}),r=s;import{defineFeature as a}from"@contractspec/lib.contracts-spec/features";var m=a({meta:{key:"learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey: Duo Drills",description:"Drill-based learning with spaced repetition, XP, and streaks",domain:"learning-journey",owners:["@examples"],tags:["learning","drills","srs","gamification"],stability:"experimental"},docs:["docs.learning-journey.duo-drills"]});var c={id:"drills_language_basics",name:"Language Basics Drills",description:"Short SRS-driven drills to master a first skill, modeled after Duolingo-style sessions.",targetUserSegment:"learner",targetRole:"individual",totalXp:50,completionRewards:{xp:25},steps:[{id:"complete_first_session",title:"Complete first drill session",description:"Finish a drill session to get started.",order:1,completion:{kind:"event",eventName:"drill.session.completed"},branches:[{key:"fast_track",when:{kind:"event",eventName:"drill.session.completed",payloadFilter:{accuracyBucket:"high"}},blockStepIds:["reach_accuracy_threshold"],reward:{xp:10}},{key:"guided_practice",when:{kind:"event",eventName:"drill.session.completed"}}],xpReward:20,metadata:{surface:"drills"}},{id:"reach_accuracy_threshold",title:"Hit high accuracy in sessions",description:"Achieve three high-accuracy sessions to build confidence.",order:2,prerequisites:[{kind:"branch_selected",stepId:"complete_first_session",branchKey:"guided_practice"}],completion:{kind:"count",eventName:"drill.session.completed",atLeast:3,payloadFilter:{accuracyBucket:"high"}},xpReward:30,metadata:{metric:"accuracy",target:">=85%"}},{id:"unlock_new_skill",title:"Master core cards in first skill",description:"Reach mastery on at least five cards in the first skill to unlock the next one.",order:3,prerequisiteMode:"any",prerequisites:[{kind:"step_completed",stepId:"reach_accuracy_threshold"},{kind:"branch_selected",stepId:"complete_first_session",branchKey:"fast_track"}],completion:{kind:"mastery",eventName:"drill.card.mastered",minimumMastery:0.8,requiredCount:5,skillIdField:"skillId",masteryField:"mastery",payloadFilter:{skillId:"language_basics"}},xpReward:40,metadata:{surface:"srs",skill:"language_basics"}}]},k=[c];export{r as example,c as drillsLanguageBasicsTrack,k as drillTracks,m as LearningJourneyDuoDrillsFeature,s as ExamplesLearningJourneyDuoDrillsExample};
@@ -1 +1 @@
1
- import{defineFeature as g}from"@contractspec/lib.contracts-spec";var j=g({meta:{key:"learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey: Duo Drills",description:"Drill-based learning with spaced repetition, XP, and streaks",domain:"learning-journey",owners:["@examples"],tags:["learning","drills","srs","gamification"],stability:"experimental"},docs:["docs.learning-journey.duo-drills"]});export{j as LearningJourneyDuoDrillsFeature};
1
+ import{defineFeature as g}from"@contractspec/lib.contracts-spec/features";var j=g({meta:{key:"learning-journey-duo-drills",version:"1.0.0",title:"Learning Journey: Duo Drills",description:"Drill-based learning with spaced repetition, XP, and streaks",domain:"learning-journey",owners:["@examples"],tags:["learning","drills","srs","gamification"],stability:"experimental"},docs:["docs.learning-journey.duo-drills"]});export{j as LearningJourneyDuoDrillsFeature};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contractspec/example.learning-journey-duo-drills",
3
- "version": "4.0.0",
3
+ "version": "4.0.1",
4
4
  "description": "Drill-based learning journey example with SRS, XP, and streak hooks.",
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",
@@ -64,13 +64,13 @@
64
64
  "typecheck": "tsc --noEmit"
65
65
  },
66
66
  "dependencies": {
67
- "@contractspec/module.learning-journey": "4.0.0",
68
- "@contractspec/lib.contracts-spec": "5.4.0"
67
+ "@contractspec/module.learning-journey": "4.0.1",
68
+ "@contractspec/lib.contracts-spec": "5.5.0"
69
69
  },
70
70
  "devDependencies": {
71
71
  "@contractspec/tool.typescript": "3.7.13",
72
72
  "typescript": "^5.9.3",
73
- "@contractspec/tool.bun": "3.7.14"
73
+ "@contractspec/tool.bun": "3.7.15"
74
74
  },
75
75
  "publishConfig": {
76
76
  "exports": {
package/src/example.ts CHANGED
@@ -1,31 +1,28 @@
1
- import { defineExample } from '@contractspec/lib.contracts-spec';
1
+ import { defineExample } from '@contractspec/lib.contracts-spec/examples';
2
2
 
3
- const example = defineExample({
3
+ const ExamplesLearningJourneyDuoDrillsExample = defineExample({
4
4
  meta: {
5
- key: 'learning-journey-duo-drills',
5
+ key: 'examples.learning-journey-duo-drills',
6
6
  version: '1.0.0',
7
- title: 'Learning Journey Duo Drills',
7
+ title: 'Learning Journey Duo Drills',
8
8
  description:
9
- 'Short drill/SRS example with XP and streak hooks for language, finance, or ContractSpec concept drills.',
9
+ 'Drill-based learning journey example with SRS, XP, and streak hooks.',
10
10
  kind: 'template',
11
- visibility: 'public',
11
+ visibility: 'experimental',
12
12
  stability: 'experimental',
13
- owners: ['@platform.core'],
14
- tags: ['learning', 'drills', 'srs', 'xp'],
13
+ owners: ['@contractspec-core'],
14
+ tags: ['package', 'examples', 'learning-journey-duo-drills'],
15
15
  },
16
- docs: {
17
- rootDocId: 'docs.learning-journey.duo-drills',
16
+ surfaces: {
17
+ templates: true,
18
+ sandbox: { enabled: true, modes: ['playground', 'specs'] },
19
+ studio: { enabled: false, installable: false },
20
+ mcp: { enabled: false },
18
21
  },
19
22
  entrypoints: {
20
23
  packageName: '@contractspec/example.learning-journey-duo-drills',
21
- docs: './docs',
22
- },
23
- surfaces: {
24
- templates: true,
25
- sandbox: { enabled: true, modes: ['playground', 'markdown'] },
26
- studio: { enabled: true, installable: true },
27
- mcp: { enabled: true },
28
24
  },
29
25
  });
30
26
 
31
- export default example;
27
+ export default ExamplesLearningJourneyDuoDrillsExample;
28
+ export { ExamplesLearningJourneyDuoDrillsExample };
package/src/index.ts CHANGED
@@ -2,3 +2,5 @@ export { default as example } from './example';
2
2
  export * from './learning-journey-duo-drills.feature';
3
3
  export * from './track';
4
4
  import './docs';
5
+
6
+ export * from './example';
@@ -1,4 +1,4 @@
1
- import { defineFeature } from '@contractspec/lib.contracts-spec';
1
+ import { defineFeature } from '@contractspec/lib.contracts-spec/features';
2
2
 
3
3
  export const LearningJourneyDuoDrillsFeature = defineFeature({
4
4
  meta: {