@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.
- package/.turbo/turbo-build.log +44 -40
- package/.turbo/turbo-prebuild.log +1 -0
- package/CHANGELOG.md +30 -0
- package/dist/browser/docs/index.js +36 -0
- package/dist/browser/docs/learning-patterns.docblock.js +36 -0
- package/dist/browser/events.js +15 -0
- package/dist/browser/example.js +32 -0
- package/dist/browser/index.js +221 -0
- package/dist/browser/tracks/ambient-coach.js +58 -0
- package/dist/browser/tracks/drills.js +65 -0
- package/dist/browser/tracks/index.js +153 -0
- package/dist/browser/tracks/quests.js +58 -0
- package/dist/docs/index.d.ts +2 -1
- package/dist/docs/index.d.ts.map +1 -0
- package/dist/docs/index.js +37 -1
- package/dist/docs/learning-patterns.docblock.d.ts +2 -1
- package/dist/docs/learning-patterns.docblock.d.ts.map +1 -0
- package/dist/docs/learning-patterns.docblock.js +35 -29
- package/dist/events.d.ts +11 -14
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +15 -15
- package/dist/example.d.ts +2 -6
- package/dist/example.d.ts.map +1 -1
- package/dist/example.js +30 -39
- package/dist/index.d.ts +10 -6
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +222 -9
- package/dist/learning-patterns.test.d.ts +2 -0
- package/dist/learning-patterns.test.d.ts.map +1 -0
- package/dist/node/docs/index.js +36 -0
- package/dist/node/docs/learning-patterns.docblock.js +36 -0
- package/dist/node/events.js +15 -0
- package/dist/node/example.js +32 -0
- package/dist/node/index.js +221 -0
- package/dist/node/tracks/ambient-coach.js +58 -0
- package/dist/node/tracks/drills.js +65 -0
- package/dist/node/tracks/index.js +153 -0
- package/dist/node/tracks/quests.js +58 -0
- package/dist/tracks/ambient-coach.d.ts +3 -7
- package/dist/tracks/ambient-coach.d.ts.map +1 -1
- package/dist/tracks/ambient-coach.js +57 -46
- package/dist/tracks/drills.d.ts +3 -7
- package/dist/tracks/drills.d.ts.map +1 -1
- package/dist/tracks/drills.js +64 -52
- package/dist/tracks/index.d.ts +4 -4
- package/dist/tracks/index.d.ts.map +1 -0
- package/dist/tracks/index.js +153 -4
- package/dist/tracks/quests.d.ts +3 -7
- package/dist/tracks/quests.d.ts.map +1 -1
- package/dist/tracks/quests.js +57 -54
- package/package.json +101 -32
- package/tsdown.config.js +1 -2
- package/.turbo/turbo-build$colon$bundle.log +0 -39
- package/dist/docs/learning-patterns.docblock.js.map +0 -1
- package/dist/events.js.map +0 -1
- package/dist/example.js.map +0 -1
- package/dist/tracks/ambient-coach.js.map +0 -1
- package/dist/tracks/drills.js.map +0 -1
- package/dist/tracks/quests.js.map +0 -1
- package/tsconfig.tsbuildinfo +0 -1
package/dist/tracks/index.js
CHANGED
|
@@ -1,5 +1,154 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
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
|
+
};
|
package/dist/tracks/quests.d.ts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import { LearningJourneyTrackSpec } from
|
|
2
|
-
|
|
3
|
-
|
|
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","
|
|
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"}
|
package/dist/tracks/quests.js
CHANGED
|
@@ -1,56 +1,59 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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.
|
|
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
|
-
".": "./
|
|
9
|
-
"./docs": "./
|
|
10
|
-
"./docs/
|
|
11
|
-
"./
|
|
12
|
-
"./
|
|
13
|
-
"./
|
|
14
|
-
"./tracks
|
|
15
|
-
"./tracks/
|
|
16
|
-
"./tracks/
|
|
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:
|
|
23
|
-
"build:bundle": "
|
|
24
|
-
"build:types": "
|
|
25
|
-
"dev": "bun
|
|
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.
|
|
34
|
-
"@contractspec/module.learning-journey": "1.
|
|
36
|
+
"@contractspec/lib.contracts": "1.58.0",
|
|
37
|
+
"@contractspec/module.learning-journey": "1.58.0"
|
|
35
38
|
},
|
|
36
39
|
"devDependencies": {
|
|
37
|
-
"@contractspec/tool.
|
|
38
|
-
"
|
|
39
|
-
"
|
|
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
|
-
".":
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
"./
|
|
53
|
-
|
|
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,39 +0,0 @@
|
|
|
1
|
-
$ tsdown
|
|
2
|
-
[34mℹ[39m tsdown [2mv0.19.0[22m powered by rolldown [2mv1.0.0-beta.59[22m
|
|
3
|
-
[34mℹ[39m config file: [4m/home/runner/work/contractspec/contractspec/packages/examples/learning-patterns/tsdown.config.js[24m
|
|
4
|
-
[34mℹ[39m entry: [34msrc/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[39m
|
|
5
|
-
[34mℹ[39m target: [34mesnext[39m
|
|
6
|
-
[34mℹ[39m tsconfig: [34mtsconfig.json[39m
|
|
7
|
-
[34mℹ[39m Build start
|
|
8
|
-
[34mℹ[39m Cleaning 31 files
|
|
9
|
-
[34mℹ[39m [2mdist/[22m[1mtracks/drills.js[22m [2m1.21 kB[22m [2m│ gzip: 0.59 kB[22m
|
|
10
|
-
[34mℹ[39m [2mdist/[22m[1mdocs/learning-patterns.docblock.js[22m [2m1.15 kB[22m [2m│ gzip: 0.57 kB[22m
|
|
11
|
-
[34mℹ[39m [2mdist/[22m[1mtracks/quests.js[22m [2m1.11 kB[22m [2m│ gzip: 0.48 kB[22m
|
|
12
|
-
[34mℹ[39m [2mdist/[22m[1mtracks/ambient-coach.js[22m [2m1.07 kB[22m [2m│ gzip: 0.48 kB[22m
|
|
13
|
-
[34mℹ[39m [2mdist/[22m[1mexample.js[22m [2m0.92 kB[22m [2m│ gzip: 0.49 kB[22m
|
|
14
|
-
[34mℹ[39m [2mdist/[22m[1mevents.js[22m [2m0.53 kB[22m [2m│ gzip: 0.31 kB[22m
|
|
15
|
-
[34mℹ[39m [2mdist/[22m[1mindex.js[22m [2m0.50 kB[22m [2m│ gzip: 0.20 kB[22m
|
|
16
|
-
[34mℹ[39m [2mdist/[22m[1mtracks/index.js[22m [2m0.29 kB[22m [2m│ gzip: 0.12 kB[22m
|
|
17
|
-
[34mℹ[39m [2mdist/[22m[1mdocs/index.js[22m [2m0.04 kB[22m [2m│ gzip: 0.06 kB[22m
|
|
18
|
-
[34mℹ[39m [2mdist/[22mtracks/drills.js.map [2m2.05 kB[22m [2m│ gzip: 0.84 kB[22m
|
|
19
|
-
[34mℹ[39m [2mdist/[22mtracks/quests.js.map [2m1.87 kB[22m [2m│ gzip: 0.73 kB[22m
|
|
20
|
-
[34mℹ[39m [2mdist/[22mtracks/ambient-coach.js.map [2m1.77 kB[22m [2m│ gzip: 0.73 kB[22m
|
|
21
|
-
[34mℹ[39m [2mdist/[22mdocs/learning-patterns.docblock.js.map [2m1.65 kB[22m [2m│ gzip: 0.74 kB[22m
|
|
22
|
-
[34mℹ[39m [2mdist/[22mexample.js.map [2m1.35 kB[22m [2m│ gzip: 0.68 kB[22m
|
|
23
|
-
[34mℹ[39m [2mdist/[22mevents.js.map [2m0.82 kB[22m [2m│ gzip: 0.45 kB[22m
|
|
24
|
-
[34mℹ[39m [2mdist/[22mevents.d.ts.map [2m0.20 kB[22m [2m│ gzip: 0.16 kB[22m
|
|
25
|
-
[34mℹ[39m [2mdist/[22mtracks/ambient-coach.d.ts.map [2m0.16 kB[22m [2m│ gzip: 0.14 kB[22m
|
|
26
|
-
[34mℹ[39m [2mdist/[22mtracks/drills.d.ts.map [2m0.14 kB[22m [2m│ gzip: 0.13 kB[22m
|
|
27
|
-
[34mℹ[39m [2mdist/[22mtracks/quests.d.ts.map [2m0.14 kB[22m [2m│ gzip: 0.13 kB[22m
|
|
28
|
-
[34mℹ[39m [2mdist/[22mexample.d.ts.map [2m0.14 kB[22m [2m│ gzip: 0.13 kB[22m
|
|
29
|
-
[34mℹ[39m [2mdist/[22m[32m[1mevents.d.ts[22m[39m [2m0.73 kB[22m [2m│ gzip: 0.36 kB[22m
|
|
30
|
-
[34mℹ[39m [2mdist/[22m[32m[1mindex.d.ts[22m[39m [2m0.46 kB[22m [2m│ gzip: 0.19 kB[22m
|
|
31
|
-
[34mℹ[39m [2mdist/[22m[32m[1mtracks/ambient-coach.d.ts[22m[39m [2m0.36 kB[22m [2m│ gzip: 0.20 kB[22m
|
|
32
|
-
[34mℹ[39m [2mdist/[22m[32m[1mtracks/drills.d.ts[22m[39m [2m0.32 kB[22m [2m│ gzip: 0.19 kB[22m
|
|
33
|
-
[34mℹ[39m [2mdist/[22m[32m[1mtracks/quests.d.ts[22m[39m [2m0.32 kB[22m [2m│ gzip: 0.19 kB[22m
|
|
34
|
-
[34mℹ[39m [2mdist/[22m[32m[1mtracks/index.d.ts[22m[39m [2m0.29 kB[22m [2m│ gzip: 0.12 kB[22m
|
|
35
|
-
[34mℹ[39m [2mdist/[22m[32m[1mexample.d.ts[22m[39m [2m0.25 kB[22m [2m│ gzip: 0.17 kB[22m
|
|
36
|
-
[34mℹ[39m [2mdist/[22m[32m[1mdocs/index.d.ts[22m[39m [2m0.01 kB[22m [2m│ gzip: 0.03 kB[22m
|
|
37
|
-
[34mℹ[39m [2mdist/[22m[32m[1mdocs/learning-patterns.docblock.d.ts[22m[39m [2m0.01 kB[22m [2m│ gzip: 0.03 kB[22m
|
|
38
|
-
[34mℹ[39m 29 files, total: 19.87 kB
|
|
39
|
-
[32m✔[39m Build complete in [32m20035ms[39m
|
|
@@ -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"}
|
package/dist/events.js.map
DELETED
|
@@ -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"}
|
package/dist/example.js.map
DELETED
|
@@ -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"}
|