@contractspec/example.learning-patterns 1.56.1 → 1.58.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 (60) hide show
  1. package/.turbo/turbo-build.log +44 -40
  2. package/.turbo/turbo-prebuild.log +1 -0
  3. package/CHANGELOG.md +30 -0
  4. package/dist/browser/docs/index.js +36 -0
  5. package/dist/browser/docs/learning-patterns.docblock.js +36 -0
  6. package/dist/browser/events.js +15 -0
  7. package/dist/browser/example.js +32 -0
  8. package/dist/browser/index.js +221 -0
  9. package/dist/browser/tracks/ambient-coach.js +58 -0
  10. package/dist/browser/tracks/drills.js +65 -0
  11. package/dist/browser/tracks/index.js +153 -0
  12. package/dist/browser/tracks/quests.js +58 -0
  13. package/dist/docs/index.d.ts +2 -1
  14. package/dist/docs/index.d.ts.map +1 -0
  15. package/dist/docs/index.js +37 -1
  16. package/dist/docs/learning-patterns.docblock.d.ts +2 -1
  17. package/dist/docs/learning-patterns.docblock.d.ts.map +1 -0
  18. package/dist/docs/learning-patterns.docblock.js +35 -29
  19. package/dist/events.d.ts +11 -14
  20. package/dist/events.d.ts.map +1 -1
  21. package/dist/events.js +15 -15
  22. package/dist/example.d.ts +2 -6
  23. package/dist/example.d.ts.map +1 -1
  24. package/dist/example.js +30 -39
  25. package/dist/index.d.ts +10 -6
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +222 -9
  28. package/dist/learning-patterns.test.d.ts +2 -0
  29. package/dist/learning-patterns.test.d.ts.map +1 -0
  30. package/dist/node/docs/index.js +36 -0
  31. package/dist/node/docs/learning-patterns.docblock.js +36 -0
  32. package/dist/node/events.js +15 -0
  33. package/dist/node/example.js +32 -0
  34. package/dist/node/index.js +221 -0
  35. package/dist/node/tracks/ambient-coach.js +58 -0
  36. package/dist/node/tracks/drills.js +65 -0
  37. package/dist/node/tracks/index.js +153 -0
  38. package/dist/node/tracks/quests.js +58 -0
  39. package/dist/tracks/ambient-coach.d.ts +3 -7
  40. package/dist/tracks/ambient-coach.d.ts.map +1 -1
  41. package/dist/tracks/ambient-coach.js +57 -46
  42. package/dist/tracks/drills.d.ts +3 -7
  43. package/dist/tracks/drills.d.ts.map +1 -1
  44. package/dist/tracks/drills.js +64 -52
  45. package/dist/tracks/index.d.ts +4 -4
  46. package/dist/tracks/index.d.ts.map +1 -0
  47. package/dist/tracks/index.js +153 -4
  48. package/dist/tracks/quests.d.ts +3 -7
  49. package/dist/tracks/quests.d.ts.map +1 -1
  50. package/dist/tracks/quests.js +57 -54
  51. package/package.json +101 -32
  52. package/tsdown.config.js +1 -2
  53. package/.turbo/turbo-build$colon$bundle.log +0 -39
  54. package/dist/docs/learning-patterns.docblock.js.map +0 -1
  55. package/dist/events.js.map +0 -1
  56. package/dist/example.js.map +0 -1
  57. package/dist/tracks/ambient-coach.js.map +0 -1
  58. package/dist/tracks/drills.js.map +0 -1
  59. package/dist/tracks/quests.js.map +0 -1
  60. package/tsconfig.tsbuildinfo +0 -1
@@ -1,5 +1,154 @@
1
- import { drillTracks, drillsTrack } from "./drills.js";
2
- import { ambientCoachTrack, ambientCoachTracks } from "./ambient-coach.js";
3
- import { questTrack, questTracks } from "./quests.js";
1
+ // @bun
2
+ // src/events.ts
3
+ var LEARNING_EVENTS = {
4
+ DRILL_CARD_ANSWERED: "drill.card.answered",
5
+ DRILL_SESSION_COMPLETED: "drill.session.completed",
6
+ DRILL_CARD_MASTERED: "drill.card.mastered",
7
+ COACH_TIP_TRIGGERED: "coach.tip.triggered",
8
+ COACH_TIP_SHOWN: "coach.tip.shown",
9
+ COACH_TIP_ACKNOWLEDGED: "coach.tip.acknowledged",
10
+ COACH_TIP_ACTION_TAKEN: "coach.tip.actionTaken",
11
+ QUEST_STARTED: "quest.started",
12
+ QUEST_STEP_COMPLETED: "quest.step.completed"
13
+ };
4
14
 
5
- export { ambientCoachTrack, ambientCoachTracks, drillTracks, drillsTrack, questTrack, questTracks };
15
+ // src/tracks/drills.ts
16
+ var drillsTrack = {
17
+ id: "learning_patterns_drills_basics",
18
+ name: "Drills Basics",
19
+ description: "Short drill sessions with an SRS-style mastery step.",
20
+ targetUserSegment: "learner",
21
+ targetRole: "individual",
22
+ totalXp: 50,
23
+ steps: [
24
+ {
25
+ id: "complete_first_session",
26
+ title: "Complete your first session",
27
+ order: 1,
28
+ completion: {
29
+ kind: "event",
30
+ eventName: LEARNING_EVENTS.DRILL_SESSION_COMPLETED
31
+ },
32
+ xpReward: 10
33
+ },
34
+ {
35
+ id: "hit_accuracy_threshold",
36
+ title: "Hit high accuracy 3 times",
37
+ order: 2,
38
+ completion: {
39
+ kind: "count",
40
+ eventName: LEARNING_EVENTS.DRILL_SESSION_COMPLETED,
41
+ atLeast: 3,
42
+ payloadFilter: { accuracyBucket: "high" }
43
+ },
44
+ xpReward: 20
45
+ },
46
+ {
47
+ id: "master_cards",
48
+ title: "Master 5 cards",
49
+ order: 3,
50
+ completion: {
51
+ kind: "srs_mastery",
52
+ eventName: LEARNING_EVENTS.DRILL_CARD_MASTERED,
53
+ minimumMastery: 0.8,
54
+ requiredCount: 5,
55
+ skillIdField: "skillId",
56
+ masteryField: "mastery"
57
+ },
58
+ xpReward: 20
59
+ }
60
+ ]
61
+ };
62
+ var drillTracks = [drillsTrack];
63
+
64
+ // src/tracks/ambient-coach.ts
65
+ var ambientCoachTrack = {
66
+ id: "learning_patterns_ambient_coach_basics",
67
+ name: "Ambient Coach Basics",
68
+ description: "Contextual tips triggered by behavior events.",
69
+ targetUserSegment: "learner",
70
+ targetRole: "individual",
71
+ totalXp: 30,
72
+ steps: [
73
+ {
74
+ id: "tip_shown",
75
+ title: "See a contextual tip",
76
+ order: 1,
77
+ completion: { kind: "event", eventName: LEARNING_EVENTS.COACH_TIP_SHOWN },
78
+ xpReward: 10
79
+ },
80
+ {
81
+ id: "tip_acknowledged",
82
+ title: "Acknowledge a tip",
83
+ order: 2,
84
+ completion: {
85
+ kind: "event",
86
+ eventName: LEARNING_EVENTS.COACH_TIP_ACKNOWLEDGED
87
+ },
88
+ xpReward: 10
89
+ },
90
+ {
91
+ id: "tip_action_taken",
92
+ title: "Take an action from a tip",
93
+ order: 3,
94
+ completion: {
95
+ kind: "event",
96
+ eventName: LEARNING_EVENTS.COACH_TIP_ACTION_TAKEN
97
+ },
98
+ xpReward: 10
99
+ }
100
+ ]
101
+ };
102
+ var ambientCoachTracks = [
103
+ ambientCoachTrack
104
+ ];
105
+
106
+ // src/tracks/quests.ts
107
+ var questTrack = {
108
+ id: "learning_patterns_quest_7day",
109
+ name: "Quest (7-day)",
110
+ description: "Time-bounded quest with day unlocks.",
111
+ targetUserSegment: "learner",
112
+ targetRole: "individual",
113
+ totalXp: 70,
114
+ steps: [
115
+ {
116
+ id: "day1_start",
117
+ title: "Start the quest",
118
+ order: 1,
119
+ completion: { kind: "event", eventName: LEARNING_EVENTS.QUEST_STARTED },
120
+ xpReward: 10
121
+ },
122
+ {
123
+ id: "day1_complete",
124
+ title: "Complete day 1 step",
125
+ order: 2,
126
+ completion: {
127
+ kind: "event",
128
+ eventName: LEARNING_EVENTS.QUEST_STEP_COMPLETED
129
+ },
130
+ availability: { unlockOnDay: 1, dueWithinHours: 48 },
131
+ xpReward: 10
132
+ },
133
+ {
134
+ id: "day2_complete",
135
+ title: "Complete day 2 step",
136
+ order: 3,
137
+ completion: {
138
+ kind: "event",
139
+ eventName: LEARNING_EVENTS.QUEST_STEP_COMPLETED
140
+ },
141
+ availability: { unlockOnDay: 2, dueWithinHours: 48 },
142
+ xpReward: 10
143
+ }
144
+ ]
145
+ };
146
+ var questTracks = [questTrack];
147
+ export {
148
+ questTracks,
149
+ questTrack,
150
+ drillsTrack,
151
+ drillTracks,
152
+ ambientCoachTracks,
153
+ ambientCoachTrack
154
+ };
@@ -1,8 +1,4 @@
1
- import { LearningJourneyTrackSpec } from "@contractspec/module.learning-journey/track-spec";
2
-
3
- //#region src/tracks/quests.d.ts
4
- declare const questTrack: LearningJourneyTrackSpec;
5
- declare const questTracks: LearningJourneyTrackSpec[];
6
- //#endregion
7
- export { questTrack, questTracks };
1
+ import type { LearningJourneyTrackSpec } from '@contractspec/module.learning-journey/track-spec';
2
+ export declare const questTrack: LearningJourneyTrackSpec;
3
+ export declare const questTracks: LearningJourneyTrackSpec[];
8
4
  //# sourceMappingURL=quests.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"quests.d.ts","names":[],"sources":["../../src/tracks/quests.ts"],"sourcesContent":[],"mappings":";;;cAGa,YAAY;cAwCZ,aAAa"}
1
+ {"version":3,"file":"quests.d.ts","sourceRoot":"","sources":["../../src/tracks/quests.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AAGjG,eAAO,MAAM,UAAU,EAAE,wBAsCxB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,wBAAwB,EAAiB,CAAC"}
@@ -1,56 +1,59 @@
1
- import { LEARNING_EVENTS } from "../events.js";
2
-
3
- //#region src/tracks/quests.ts
4
- const questTrack = {
5
- id: "learning_patterns_quest_7day",
6
- name: "Quest (7-day)",
7
- description: "Time-bounded quest with day unlocks.",
8
- targetUserSegment: "learner",
9
- targetRole: "individual",
10
- totalXp: 70,
11
- steps: [
12
- {
13
- id: "day1_start",
14
- title: "Start the quest",
15
- order: 1,
16
- completion: {
17
- kind: "event",
18
- eventName: LEARNING_EVENTS.QUEST_STARTED
19
- },
20
- xpReward: 10
21
- },
22
- {
23
- id: "day1_complete",
24
- title: "Complete day 1 step",
25
- order: 2,
26
- completion: {
27
- kind: "event",
28
- eventName: LEARNING_EVENTS.QUEST_STEP_COMPLETED
29
- },
30
- availability: {
31
- unlockOnDay: 1,
32
- dueWithinHours: 48
33
- },
34
- xpReward: 10
35
- },
36
- {
37
- id: "day2_complete",
38
- title: "Complete day 2 step",
39
- order: 3,
40
- completion: {
41
- kind: "event",
42
- eventName: LEARNING_EVENTS.QUEST_STEP_COMPLETED
43
- },
44
- availability: {
45
- unlockOnDay: 2,
46
- dueWithinHours: 48
47
- },
48
- xpReward: 10
49
- }
50
- ]
1
+ // @bun
2
+ // src/events.ts
3
+ var LEARNING_EVENTS = {
4
+ DRILL_CARD_ANSWERED: "drill.card.answered",
5
+ DRILL_SESSION_COMPLETED: "drill.session.completed",
6
+ DRILL_CARD_MASTERED: "drill.card.mastered",
7
+ COACH_TIP_TRIGGERED: "coach.tip.triggered",
8
+ COACH_TIP_SHOWN: "coach.tip.shown",
9
+ COACH_TIP_ACKNOWLEDGED: "coach.tip.acknowledged",
10
+ COACH_TIP_ACTION_TAKEN: "coach.tip.actionTaken",
11
+ QUEST_STARTED: "quest.started",
12
+ QUEST_STEP_COMPLETED: "quest.step.completed"
51
13
  };
52
- const questTracks = [questTrack];
53
14
 
54
- //#endregion
55
- export { questTrack, questTracks };
56
- //# sourceMappingURL=quests.js.map
15
+ // src/tracks/quests.ts
16
+ var questTrack = {
17
+ id: "learning_patterns_quest_7day",
18
+ name: "Quest (7-day)",
19
+ description: "Time-bounded quest with day unlocks.",
20
+ targetUserSegment: "learner",
21
+ targetRole: "individual",
22
+ totalXp: 70,
23
+ steps: [
24
+ {
25
+ id: "day1_start",
26
+ title: "Start the quest",
27
+ order: 1,
28
+ completion: { kind: "event", eventName: LEARNING_EVENTS.QUEST_STARTED },
29
+ xpReward: 10
30
+ },
31
+ {
32
+ id: "day1_complete",
33
+ title: "Complete day 1 step",
34
+ order: 2,
35
+ completion: {
36
+ kind: "event",
37
+ eventName: LEARNING_EVENTS.QUEST_STEP_COMPLETED
38
+ },
39
+ availability: { unlockOnDay: 1, dueWithinHours: 48 },
40
+ xpReward: 10
41
+ },
42
+ {
43
+ id: "day2_complete",
44
+ title: "Complete day 2 step",
45
+ order: 3,
46
+ completion: {
47
+ kind: "event",
48
+ eventName: LEARNING_EVENTS.QUEST_STEP_COMPLETED
49
+ },
50
+ availability: { unlockOnDay: 2, dueWithinHours: 48 },
51
+ xpReward: 10
52
+ }
53
+ ]
54
+ };
55
+ var questTracks = [questTrack];
56
+ export {
57
+ questTracks,
58
+ questTrack
59
+ };
package/package.json CHANGED
@@ -1,57 +1,126 @@
1
1
  {
2
2
  "name": "@contractspec/example.learning-patterns",
3
- "version": "1.56.1",
3
+ "version": "1.58.0",
4
4
  "description": "Example: drills + ambient coach + quests learning patterns, powered by Learning Journey (event-driven, deterministic).",
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",
7
7
  "exports": {
8
- ".": "./dist/index.js",
9
- "./docs": "./dist/docs/index.js",
10
- "./docs/learning-patterns.docblock": "./dist/docs/learning-patterns.docblock.js",
11
- "./events": "./dist/events.js",
12
- "./example": "./dist/example.js",
13
- "./tracks": "./dist/tracks/index.js",
14
- "./tracks/ambient-coach": "./dist/tracks/ambient-coach.js",
15
- "./tracks/drills": "./dist/tracks/drills.js",
16
- "./tracks/quests": "./dist/tracks/quests.js",
17
- "./*": "./*"
8
+ ".": "./src/index.ts",
9
+ "./docs": "./src/docs/index.ts",
10
+ "./docs/index": "./src/docs/index.ts",
11
+ "./docs/learning-patterns.docblock": "./src/docs/learning-patterns.docblock.ts",
12
+ "./events": "./src/events.ts",
13
+ "./example": "./src/example.ts",
14
+ "./tracks": "./src/tracks/index.ts",
15
+ "./tracks/ambient-coach": "./src/tracks/ambient-coach.ts",
16
+ "./tracks/drills": "./src/tracks/drills.ts",
17
+ "./tracks/index": "./src/tracks/index.ts",
18
+ "./tracks/quests": "./src/tracks/quests.ts"
18
19
  },
19
20
  "scripts": {
20
21
  "publish:pkg": "bun publish --tolerate-republish --ignore-scripts --verbose",
21
22
  "publish:pkg:canary": "bun publish:pkg --tag canary",
22
- "build": "bun build:types && bun build:bundle",
23
- "build:bundle": "tsdown",
24
- "build:types": "tsc --noEmit",
25
- "dev": "bun build:bundle --watch",
23
+ "build": "bun run prebuild && bun run build:bundle && bun run build:types",
24
+ "build:bundle": "contractspec-bun-build transpile",
25
+ "build:types": "contractspec-bun-build types",
26
+ "dev": "contractspec-bun-build dev",
26
27
  "clean": "rimraf dist .turbo",
27
28
  "lint": "bun lint:fix",
28
29
  "lint:fix": "eslint src --fix",
29
30
  "lint:check": "eslint src",
30
- "test": "bun test"
31
+ "test": "bun test",
32
+ "prebuild": "contractspec-bun-build prebuild",
33
+ "typecheck": "tsc --noEmit"
31
34
  },
32
35
  "dependencies": {
33
- "@contractspec/lib.contracts": "1.56.1",
34
- "@contractspec/module.learning-journey": "1.56.1"
36
+ "@contractspec/lib.contracts": "1.58.0",
37
+ "@contractspec/module.learning-journey": "1.58.0"
35
38
  },
36
39
  "devDependencies": {
37
- "@contractspec/tool.tsdown": "1.56.1",
38
- "@contractspec/tool.typescript": "1.56.1",
39
- "tsdown": "^0.19.0",
40
- "typescript": "^5.9.3"
40
+ "@contractspec/tool.typescript": "1.58.0",
41
+ "typescript": "^5.9.3",
42
+ "@contractspec/tool.bun": "1.57.0"
41
43
  },
42
44
  "publishConfig": {
43
45
  "access": "public",
44
46
  "exports": {
45
- ".": "./dist/index.js",
46
- "./docs": "./dist/docs/index.js",
47
- "./docs/learning-patterns.docblock": "./dist/docs/learning-patterns.docblock.js",
48
- "./events": "./dist/events.js",
49
- "./example": "./dist/example.js",
50
- "./tracks": "./dist/tracks/index.js",
51
- "./tracks/ambient-coach": "./dist/tracks/ambient-coach.js",
52
- "./tracks/drills": "./dist/tracks/drills.js",
53
- "./tracks/quests": "./dist/tracks/quests.js",
54
- "./*": "./*"
47
+ ".": {
48
+ "types": "./dist/index.d.ts",
49
+ "bun": "./dist/index.js",
50
+ "node": "./dist/node/index.mjs",
51
+ "browser": "./dist/browser/index.js",
52
+ "default": "./dist/index.js"
53
+ },
54
+ "./docs": {
55
+ "types": "./dist/docs/index.d.ts",
56
+ "bun": "./dist/docs/index.js",
57
+ "node": "./dist/node/docs/index.mjs",
58
+ "browser": "./dist/browser/docs/index.js",
59
+ "default": "./dist/docs/index.js"
60
+ },
61
+ "./docs/index": {
62
+ "types": "./dist/docs/index.d.ts",
63
+ "bun": "./dist/docs/index.js",
64
+ "node": "./dist/node/docs/index.mjs",
65
+ "browser": "./dist/browser/docs/index.js",
66
+ "default": "./dist/docs/index.js"
67
+ },
68
+ "./docs/learning-patterns.docblock": {
69
+ "types": "./dist/docs/learning-patterns.docblock.d.ts",
70
+ "bun": "./dist/docs/learning-patterns.docblock.js",
71
+ "node": "./dist/node/docs/learning-patterns.docblock.mjs",
72
+ "browser": "./dist/browser/docs/learning-patterns.docblock.js",
73
+ "default": "./dist/docs/learning-patterns.docblock.js"
74
+ },
75
+ "./events": {
76
+ "types": "./dist/events.d.ts",
77
+ "bun": "./dist/events.js",
78
+ "node": "./dist/node/events.mjs",
79
+ "browser": "./dist/browser/events.js",
80
+ "default": "./dist/events.js"
81
+ },
82
+ "./example": {
83
+ "types": "./dist/example.d.ts",
84
+ "bun": "./dist/example.js",
85
+ "node": "./dist/node/example.mjs",
86
+ "browser": "./dist/browser/example.js",
87
+ "default": "./dist/example.js"
88
+ },
89
+ "./tracks": {
90
+ "types": "./dist/tracks/index.d.ts",
91
+ "bun": "./dist/tracks/index.js",
92
+ "node": "./dist/node/tracks/index.mjs",
93
+ "browser": "./dist/browser/tracks/index.js",
94
+ "default": "./dist/tracks/index.js"
95
+ },
96
+ "./tracks/ambient-coach": {
97
+ "types": "./dist/tracks/ambient-coach.d.ts",
98
+ "bun": "./dist/tracks/ambient-coach.js",
99
+ "node": "./dist/node/tracks/ambient-coach.mjs",
100
+ "browser": "./dist/browser/tracks/ambient-coach.js",
101
+ "default": "./dist/tracks/ambient-coach.js"
102
+ },
103
+ "./tracks/drills": {
104
+ "types": "./dist/tracks/drills.d.ts",
105
+ "bun": "./dist/tracks/drills.js",
106
+ "node": "./dist/node/tracks/drills.mjs",
107
+ "browser": "./dist/browser/tracks/drills.js",
108
+ "default": "./dist/tracks/drills.js"
109
+ },
110
+ "./tracks/index": {
111
+ "types": "./dist/tracks/index.d.ts",
112
+ "bun": "./dist/tracks/index.js",
113
+ "node": "./dist/node/tracks/index.mjs",
114
+ "browser": "./dist/browser/tracks/index.js",
115
+ "default": "./dist/tracks/index.js"
116
+ },
117
+ "./tracks/quests": {
118
+ "types": "./dist/tracks/quests.d.ts",
119
+ "bun": "./dist/tracks/quests.js",
120
+ "node": "./dist/node/tracks/quests.mjs",
121
+ "browser": "./dist/browser/tracks/quests.js",
122
+ "default": "./dist/tracks/quests.js"
123
+ }
55
124
  },
56
125
  "registry": "https://registry.npmjs.org/"
57
126
  },
package/tsdown.config.js CHANGED
@@ -1,5 +1,4 @@
1
- import { defineConfig } from 'tsdown';
2
- import { moduleLibrary, withDevExports } from '@contractspec/tool.tsdown';
1
+ import { defineConfig, moduleLibrary, withDevExports } from '@contractspec/tool.bun';
3
2
 
4
3
  export default defineConfig(() => ({
5
4
  ...moduleLibrary,
@@ -1,39 +0,0 @@
1
- $ tsdown
2
- ℹ tsdown v0.19.0 powered by rolldown v1.0.0-beta.59
3
- ℹ config file: /home/runner/work/contractspec/contractspec/packages/examples/learning-patterns/tsdown.config.js
4
- ℹ entry: src/events.ts, src/example.ts, src/index.ts, src/docs/index.ts, src/docs/learning-patterns.docblock.ts, src/tracks/ambient-coach.ts, src/tracks/drills.ts, src/tracks/index.ts, src/tracks/quests.ts
5
- ℹ target: esnext
6
- ℹ tsconfig: tsconfig.json
7
- ℹ Build start
8
- ℹ Cleaning 31 files
9
- ℹ dist/tracks/drills.js 1.21 kB │ gzip: 0.59 kB
10
- ℹ dist/docs/learning-patterns.docblock.js 1.15 kB │ gzip: 0.57 kB
11
- ℹ dist/tracks/quests.js 1.11 kB │ gzip: 0.48 kB
12
- ℹ dist/tracks/ambient-coach.js 1.07 kB │ gzip: 0.48 kB
13
- ℹ dist/example.js 0.92 kB │ gzip: 0.49 kB
14
- ℹ dist/events.js 0.53 kB │ gzip: 0.31 kB
15
- ℹ dist/index.js 0.50 kB │ gzip: 0.20 kB
16
- ℹ dist/tracks/index.js 0.29 kB │ gzip: 0.12 kB
17
- ℹ dist/docs/index.js 0.04 kB │ gzip: 0.06 kB
18
- ℹ dist/tracks/drills.js.map 2.05 kB │ gzip: 0.84 kB
19
- ℹ dist/tracks/quests.js.map 1.87 kB │ gzip: 0.73 kB
20
- ℹ dist/tracks/ambient-coach.js.map 1.77 kB │ gzip: 0.73 kB
21
- ℹ dist/docs/learning-patterns.docblock.js.map 1.65 kB │ gzip: 0.74 kB
22
- ℹ dist/example.js.map 1.35 kB │ gzip: 0.68 kB
23
- ℹ dist/events.js.map 0.82 kB │ gzip: 0.45 kB
24
- ℹ dist/events.d.ts.map 0.20 kB │ gzip: 0.16 kB
25
- ℹ dist/tracks/ambient-coach.d.ts.map 0.16 kB │ gzip: 0.14 kB
26
- ℹ dist/tracks/drills.d.ts.map 0.14 kB │ gzip: 0.13 kB
27
- ℹ dist/tracks/quests.d.ts.map 0.14 kB │ gzip: 0.13 kB
28
- ℹ dist/example.d.ts.map 0.14 kB │ gzip: 0.13 kB
29
- ℹ dist/events.d.ts 0.73 kB │ gzip: 0.36 kB
30
- ℹ dist/index.d.ts 0.46 kB │ gzip: 0.19 kB
31
- ℹ dist/tracks/ambient-coach.d.ts 0.36 kB │ gzip: 0.20 kB
32
- ℹ dist/tracks/drills.d.ts 0.32 kB │ gzip: 0.19 kB
33
- ℹ dist/tracks/quests.d.ts 0.32 kB │ gzip: 0.19 kB
34
- ℹ dist/tracks/index.d.ts 0.29 kB │ gzip: 0.12 kB
35
- ℹ dist/example.d.ts 0.25 kB │ gzip: 0.17 kB
36
- ℹ dist/docs/index.d.ts 0.01 kB │ gzip: 0.03 kB
37
- ℹ dist/docs/learning-patterns.docblock.d.ts 0.01 kB │ gzip: 0.03 kB
38
- ℹ 29 files, total: 19.87 kB
39
- ✔ Build complete in 20035ms
@@ -1 +0,0 @@
1
- {"version":3,"file":"learning-patterns.docblock.js","names":[],"sources":["../../src/docs/learning-patterns.docblock.ts"],"sourcesContent":["import type { DocBlock } from '@contractspec/lib.contracts/docs';\nimport { registerDocBlocks } from '@contractspec/lib.contracts/docs';\n\nconst docBlocks: DocBlock[] = [\n {\n id: 'docs.examples.learning-patterns.goal',\n title: 'Learning Patterns — Goal',\n summary:\n 'Domain-agnostic drills, ambient coaching, and quests built on Learning Journey.',\n kind: 'goal',\n visibility: 'public',\n route: '/docs/examples/learning-patterns/goal',\n tags: ['learning', 'drills', 'quests', 'coaching'],\n body: `## Why it matters\n- Demonstrates multiple learning archetypes without vertical coupling.\\n- Progress is event-driven (no client-side hacks).\\n- SRS logic is deterministic and testable.`,\n },\n {\n id: 'docs.examples.learning-patterns.reference',\n title: 'Learning Patterns — Reference',\n summary:\n 'Track specs and event names exported by the learning patterns example.',\n kind: 'reference',\n visibility: 'public',\n route: '/docs/examples/learning-patterns',\n tags: ['learning', 'reference'],\n body: `## Tracks\\n- Drills + SRS\\n- Ambient Coach\\n- Quests\\n\\n## Events\\n- drill.*\\n- coach.*\\n- quest.*`,\n },\n];\n\nregisterDocBlocks(docBlocks);\n"],"mappings":";;;AA6BA,kBA1B8B,CAC5B;CACE,IAAI;CACJ,OAAO;CACP,SACE;CACF,MAAM;CACN,YAAY;CACZ,OAAO;CACP,MAAM;EAAC;EAAY;EAAU;EAAU;EAAW;CAClD,MAAM;;CAEP,EACD;CACE,IAAI;CACJ,OAAO;CACP,SACE;CACF,MAAM;CACN,YAAY;CACZ,OAAO;CACP,MAAM,CAAC,YAAY,YAAY;CAC/B,MAAM;CACP,CACF,CAE2B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.js","names":[],"sources":["../src/events.ts"],"sourcesContent":["export const LEARNING_EVENTS = {\n DRILL_CARD_ANSWERED: 'drill.card.answered',\n DRILL_SESSION_COMPLETED: 'drill.session.completed',\n DRILL_CARD_MASTERED: 'drill.card.mastered',\n\n COACH_TIP_TRIGGERED: 'coach.tip.triggered',\n COACH_TIP_SHOWN: 'coach.tip.shown',\n COACH_TIP_ACKNOWLEDGED: 'coach.tip.acknowledged',\n COACH_TIP_ACTION_TAKEN: 'coach.tip.actionTaken',\n\n QUEST_STARTED: 'quest.started',\n QUEST_STEP_COMPLETED: 'quest.step.completed',\n} as const;\n\nexport type LearningEventName =\n (typeof LEARNING_EVENTS)[keyof typeof LEARNING_EVENTS];\n"],"mappings":";AAAA,MAAa,kBAAkB;CAC7B,qBAAqB;CACrB,yBAAyB;CACzB,qBAAqB;CAErB,qBAAqB;CACrB,iBAAiB;CACjB,wBAAwB;CACxB,wBAAwB;CAExB,eAAe;CACf,sBAAsB;CACvB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"example.js","names":[],"sources":["../src/example.ts"],"sourcesContent":["import { defineExample } from '@contractspec/lib.contracts';\n\nconst example = defineExample({\n meta: {\n key: 'learning-patterns',\n version: '1.0.0',\n title: 'Learning Patterns',\n description:\n 'Domain-agnostic learning archetypes implemented as Learning Journey tracks.',\n kind: 'library',\n visibility: 'public',\n stability: 'experimental',\n owners: ['@platform.core'],\n tags: ['learning', 'journey', 'patterns'],\n },\n docs: {\n rootDocId: 'docs.examples.learning-patterns',\n },\n entrypoints: {\n packageName: '@contractspec/example.learning-patterns',\n docs: './docs',\n },\n surfaces: {\n templates: true,\n sandbox: { enabled: true, modes: ['markdown', 'specs'] },\n studio: { enabled: true, installable: true },\n mcp: { enabled: true },\n },\n});\n\nexport default example;\n"],"mappings":";;;AAEA,MAAM,UAAU,cAAc;CAC5B,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,MAAM;EACN,YAAY;EACZ,WAAW;EACX,QAAQ,CAAC,iBAAiB;EAC1B,MAAM;GAAC;GAAY;GAAW;GAAW;EAC1C;CACD,MAAM,EACJ,WAAW,mCACZ;CACD,aAAa;EACX,aAAa;EACb,MAAM;EACP;CACD,UAAU;EACR,WAAW;EACX,SAAS;GAAE,SAAS;GAAM,OAAO,CAAC,YAAY,QAAQ;GAAE;EACxD,QAAQ;GAAE,SAAS;GAAM,aAAa;GAAM;EAC5C,KAAK,EAAE,SAAS,MAAM;EACvB;CACF,CAAC;AAEF,sBAAe"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ambient-coach.js","names":[],"sources":["../../src/tracks/ambient-coach.ts"],"sourcesContent":["import type { LearningJourneyTrackSpec } from '@contractspec/module.learning-journey/track-spec';\nimport { LEARNING_EVENTS } from '../events';\n\nexport const ambientCoachTrack: LearningJourneyTrackSpec = {\n id: 'learning_patterns_ambient_coach_basics',\n name: 'Ambient Coach Basics',\n description: 'Contextual tips triggered by behavior events.',\n targetUserSegment: 'learner',\n targetRole: 'individual',\n totalXp: 30,\n steps: [\n {\n id: 'tip_shown',\n title: 'See a contextual tip',\n order: 1,\n completion: { kind: 'event', eventName: LEARNING_EVENTS.COACH_TIP_SHOWN },\n xpReward: 10,\n },\n {\n id: 'tip_acknowledged',\n title: 'Acknowledge a tip',\n order: 2,\n completion: {\n kind: 'event',\n eventName: LEARNING_EVENTS.COACH_TIP_ACKNOWLEDGED,\n },\n xpReward: 10,\n },\n {\n id: 'tip_action_taken',\n title: 'Take an action from a tip',\n order: 3,\n completion: {\n kind: 'event',\n eventName: LEARNING_EVENTS.COACH_TIP_ACTION_TAKEN,\n },\n xpReward: 10,\n },\n ],\n};\n\nexport const ambientCoachTracks: LearningJourneyTrackSpec[] = [\n ambientCoachTrack,\n];\n"],"mappings":";;;AAGA,MAAa,oBAA8C;CACzD,IAAI;CACJ,MAAM;CACN,aAAa;CACb,mBAAmB;CACnB,YAAY;CACZ,SAAS;CACT,OAAO;EACL;GACE,IAAI;GACJ,OAAO;GACP,OAAO;GACP,YAAY;IAAE,MAAM;IAAS,WAAW,gBAAgB;IAAiB;GACzE,UAAU;GACX;EACD;GACE,IAAI;GACJ,OAAO;GACP,OAAO;GACP,YAAY;IACV,MAAM;IACN,WAAW,gBAAgB;IAC5B;GACD,UAAU;GACX;EACD;GACE,IAAI;GACJ,OAAO;GACP,OAAO;GACP,YAAY;IACV,MAAM;IACN,WAAW,gBAAgB;IAC5B;GACD,UAAU;GACX;EACF;CACF;AAED,MAAa,qBAAiD,CAC5D,kBACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"drills.js","names":[],"sources":["../../src/tracks/drills.ts"],"sourcesContent":["import type { LearningJourneyTrackSpec } from '@contractspec/module.learning-journey/track-spec';\nimport { LEARNING_EVENTS } from '../events';\n\nexport const drillsTrack: LearningJourneyTrackSpec = {\n id: 'learning_patterns_drills_basics',\n name: 'Drills Basics',\n description: 'Short drill sessions with an SRS-style mastery step.',\n targetUserSegment: 'learner',\n targetRole: 'individual',\n totalXp: 50,\n steps: [\n {\n id: 'complete_first_session',\n title: 'Complete your first session',\n order: 1,\n completion: {\n kind: 'event',\n eventName: LEARNING_EVENTS.DRILL_SESSION_COMPLETED,\n },\n xpReward: 10,\n },\n {\n id: 'hit_accuracy_threshold',\n title: 'Hit high accuracy 3 times',\n order: 2,\n completion: {\n kind: 'count',\n eventName: LEARNING_EVENTS.DRILL_SESSION_COMPLETED,\n atLeast: 3,\n payloadFilter: { accuracyBucket: 'high' },\n },\n xpReward: 20,\n },\n {\n id: 'master_cards',\n title: 'Master 5 cards',\n order: 3,\n completion: {\n kind: 'srs_mastery',\n eventName: LEARNING_EVENTS.DRILL_CARD_MASTERED,\n minimumMastery: 0.8,\n requiredCount: 5,\n skillIdField: 'skillId',\n masteryField: 'mastery',\n },\n xpReward: 20,\n },\n ],\n};\n\nexport const drillTracks: LearningJourneyTrackSpec[] = [drillsTrack];\n"],"mappings":";;;AAGA,MAAa,cAAwC;CACnD,IAAI;CACJ,MAAM;CACN,aAAa;CACb,mBAAmB;CACnB,YAAY;CACZ,SAAS;CACT,OAAO;EACL;GACE,IAAI;GACJ,OAAO;GACP,OAAO;GACP,YAAY;IACV,MAAM;IACN,WAAW,gBAAgB;IAC5B;GACD,UAAU;GACX;EACD;GACE,IAAI;GACJ,OAAO;GACP,OAAO;GACP,YAAY;IACV,MAAM;IACN,WAAW,gBAAgB;IAC3B,SAAS;IACT,eAAe,EAAE,gBAAgB,QAAQ;IAC1C;GACD,UAAU;GACX;EACD;GACE,IAAI;GACJ,OAAO;GACP,OAAO;GACP,YAAY;IACV,MAAM;IACN,WAAW,gBAAgB;IAC3B,gBAAgB;IAChB,eAAe;IACf,cAAc;IACd,cAAc;IACf;GACD,UAAU;GACX;EACF;CACF;AAED,MAAa,cAA0C,CAAC,YAAY"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"quests.js","names":[],"sources":["../../src/tracks/quests.ts"],"sourcesContent":["import type { LearningJourneyTrackSpec } from '@contractspec/module.learning-journey/track-spec';\nimport { LEARNING_EVENTS } from '../events';\n\nexport const questTrack: LearningJourneyTrackSpec = {\n id: 'learning_patterns_quest_7day',\n name: 'Quest (7-day)',\n description: 'Time-bounded quest with day unlocks.',\n targetUserSegment: 'learner',\n targetRole: 'individual',\n totalXp: 70,\n steps: [\n {\n id: 'day1_start',\n title: 'Start the quest',\n order: 1,\n completion: { kind: 'event', eventName: LEARNING_EVENTS.QUEST_STARTED },\n xpReward: 10,\n },\n {\n id: 'day1_complete',\n title: 'Complete day 1 step',\n order: 2,\n completion: {\n kind: 'event',\n eventName: LEARNING_EVENTS.QUEST_STEP_COMPLETED,\n },\n availability: { unlockOnDay: 1, dueWithinHours: 48 },\n xpReward: 10,\n },\n {\n id: 'day2_complete',\n title: 'Complete day 2 step',\n order: 3,\n completion: {\n kind: 'event',\n eventName: LEARNING_EVENTS.QUEST_STEP_COMPLETED,\n },\n availability: { unlockOnDay: 2, dueWithinHours: 48 },\n xpReward: 10,\n },\n ],\n};\n\nexport const questTracks: LearningJourneyTrackSpec[] = [questTrack];\n"],"mappings":";;;AAGA,MAAa,aAAuC;CAClD,IAAI;CACJ,MAAM;CACN,aAAa;CACb,mBAAmB;CACnB,YAAY;CACZ,SAAS;CACT,OAAO;EACL;GACE,IAAI;GACJ,OAAO;GACP,OAAO;GACP,YAAY;IAAE,MAAM;IAAS,WAAW,gBAAgB;IAAe;GACvE,UAAU;GACX;EACD;GACE,IAAI;GACJ,OAAO;GACP,OAAO;GACP,YAAY;IACV,MAAM;IACN,WAAW,gBAAgB;IAC5B;GACD,cAAc;IAAE,aAAa;IAAG,gBAAgB;IAAI;GACpD,UAAU;GACX;EACD;GACE,IAAI;GACJ,OAAO;GACP,OAAO;GACP,YAAY;IACV,MAAM;IACN,WAAW,gBAAgB;IAC5B;GACD,cAAc;IAAE,aAAa;IAAG,gBAAgB;IAAI;GACpD,UAAU;GACX;EACF;CACF;AAED,MAAa,cAA0C,CAAC,WAAW"}