@lssm/module.learning-journey 0.0.0-canary-20251217083314 → 0.0.0-canary-20251220002821
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/LICENSE +21 -0
- package/README.md +3 -0
- package/dist/contracts/models.d.ts +120 -119
- package/dist/contracts/models.d.ts.map +1 -0
- package/dist/contracts/models.js +87 -88
- package/dist/contracts/models.js.map +1 -0
- package/dist/contracts/onboarding.d.ts +169 -168
- package/dist/contracts/onboarding.d.ts.map +1 -0
- package/dist/contracts/onboarding.js +71 -72
- package/dist/contracts/onboarding.js.map +1 -0
- package/dist/contracts/operations.d.ts +72 -71
- package/dist/contracts/operations.d.ts.map +1 -0
- package/dist/contracts/operations.js +2 -1
- package/dist/contracts/operations.js.map +1 -0
- package/dist/contracts/shared.d.ts +2 -1
- package/dist/contracts/shared.d.ts.map +1 -0
- package/dist/contracts/shared.js +2 -1
- package/dist/contracts/shared.js.map +1 -0
- package/dist/docs/learning-journey.docblock.js +2 -1
- package/dist/docs/learning-journey.docblock.js.map +1 -0
- package/dist/engines/srs.d.ts +14 -13
- package/dist/engines/srs.d.ts.map +1 -0
- package/dist/engines/srs.js +30 -30
- package/dist/engines/srs.js.map +1 -0
- package/dist/engines/streak.d.ts +2 -1
- package/dist/engines/streak.d.ts.map +1 -0
- package/dist/engines/streak.js +2 -1
- package/dist/engines/streak.js.map +1 -0
- package/dist/engines/xp.d.ts +2 -1
- package/dist/engines/xp.d.ts.map +1 -0
- package/dist/engines/xp.js +2 -1
- package/dist/engines/xp.js.map +1 -0
- package/dist/entities/ai.d.ts +202 -201
- package/dist/entities/ai.d.ts.map +1 -0
- package/dist/entities/ai.js +114 -114
- package/dist/entities/ai.js.map +1 -0
- package/dist/entities/course.d.ts +152 -151
- package/dist/entities/course.d.ts.map +1 -0
- package/dist/entities/course.js +86 -86
- package/dist/entities/course.js.map +1 -0
- package/dist/entities/flashcard.d.ts +147 -146
- package/dist/entities/flashcard.d.ts.map +1 -0
- package/dist/entities/flashcard.js +85 -85
- package/dist/entities/flashcard.js.map +1 -0
- package/dist/entities/gamification.d.ts +200 -199
- package/dist/entities/gamification.d.ts.map +1 -0
- package/dist/entities/gamification.js +120 -120
- package/dist/entities/gamification.js.map +1 -0
- package/dist/entities/index.d.ts +607 -606
- package/dist/entities/index.d.ts.map +1 -0
- package/dist/entities/index.js +2 -1
- package/dist/entities/index.js.map +1 -0
- package/dist/entities/learner.d.ts +194 -193
- package/dist/entities/learner.d.ts.map +1 -0
- package/dist/entities/learner.js +113 -113
- package/dist/entities/learner.js.map +1 -0
- package/dist/entities/onboarding.d.ts +167 -166
- package/dist/entities/onboarding.d.ts.map +1 -0
- package/dist/entities/onboarding.js +93 -93
- package/dist/entities/onboarding.js.map +1 -0
- package/dist/entities/quiz.d.ts +187 -186
- package/dist/entities/quiz.d.ts.map +1 -0
- package/dist/entities/quiz.js +109 -109
- package/dist/entities/quiz.js.map +1 -0
- package/dist/events.d.ts +215 -214
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +109 -110
- package/dist/events.js.map +1 -0
- package/dist/learning-journey.feature.d.ts +2 -1
- package/dist/learning-journey.feature.d.ts.map +1 -0
- package/dist/learning-journey.feature.js +2 -1
- package/dist/learning-journey.feature.js.map +1 -0
- package/dist/libs/contracts/dist/capabilities/openbanking.js +2 -1
- package/dist/libs/contracts/dist/capabilities/openbanking.js.map +1 -0
- package/dist/libs/contracts/dist/contract-registry/schemas.js +2 -1
- package/dist/libs/contracts/dist/contract-registry/schemas.js.map +1 -0
- package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/index.js +2 -6
- package/dist/libs/contracts/dist/docs/meta.docs.js +30 -0
- package/dist/libs/contracts/dist/docs/meta.docs.js.map +1 -0
- package/dist/libs/contracts/dist/docs/presentations.js +2 -1
- package/dist/libs/contracts/dist/docs/presentations.js.map +1 -0
- package/dist/libs/contracts/dist/docs/registry.js +2 -1
- package/dist/libs/contracts/dist/docs/registry.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech-contracts.docs.js +97 -0
- package/dist/libs/contracts/dist/docs/tech-contracts.docs.js.map +1 -0
- package/dist/libs/contracts/dist/events.js +2 -1
- package/dist/libs/contracts/dist/events.js.map +1 -0
- package/dist/libs/contracts/dist/index.js +2 -1
- package/dist/libs/contracts/dist/integrations/contracts.js +65 -66
- package/dist/libs/contracts/dist/integrations/contracts.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +31 -32
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +18 -19
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +32 -33
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/openbanking/models.js +60 -61
- package/dist/libs/contracts/dist/integrations/openbanking/models.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +2 -1
- package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/gmail.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/gmail.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/google-calendar.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/mistral.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/mistral.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/postmark.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/postmark.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/powens.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/powens.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/qdrant.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/qdrant.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/stripe.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/stripe.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/contracts.js +44 -45
- package/dist/libs/contracts/dist/knowledge/contracts.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +2 -1
- package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +2 -1
- package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +2 -1
- package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +2 -1
- package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +2 -1
- package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +2 -1
- package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js.map +1 -0
- package/dist/libs/contracts/dist/llm/exporters.js +2 -1
- package/dist/libs/contracts/dist/llm/exporters.js.map +1 -0
- package/dist/libs/contracts/dist/onboarding-base.js +22 -23
- package/dist/libs/contracts/dist/onboarding-base.js.map +1 -0
- package/dist/libs/contracts/dist/ownership.js +4 -2
- package/dist/libs/contracts/dist/ownership.js.map +1 -0
- package/dist/libs/contracts/dist/presentations.v2.js +2 -1
- package/dist/libs/contracts/dist/presentations.v2.js.map +1 -0
- package/dist/libs/contracts/dist/regenerator/service.js +2 -1
- package/dist/libs/contracts/dist/regenerator/service.js.map +1 -0
- package/dist/libs/contracts/dist/schema/dist/index.js +3873 -6
- package/dist/libs/contracts/dist/schema/dist/index.js.map +1 -0
- package/dist/libs/contracts/dist/spec.js +2 -1
- package/dist/libs/contracts/dist/spec.js.map +1 -0
- package/dist/libs/schema/dist/index.js +4889 -6
- package/dist/libs/schema/dist/index.js.map +1 -0
- package/dist/track-spec.d.ts +2 -1
- package/dist/track-spec.d.ts.map +1 -0
- package/package.json +13 -6
- package/dist/libs/contracts/dist/docs/PUBLISHING.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -16
- package/dist/libs/contracts/dist/schema/dist/EnumType.js +0 -2
- package/dist/libs/contracts/dist/schema/dist/FieldType.js +0 -49
- package/dist/libs/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -236
- package/dist/libs/contracts/dist/schema/dist/SchemaModel.js +0 -34
- package/dist/libs/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
- package/dist/libs/contracts/dist/schema/dist/entity/index.js +0 -2
- package/dist/libs/contracts/dist/schema/dist/entity/types.js +0 -1
- package/dist/libs/schema/dist/EnumType.js +0 -2
- package/dist/libs/schema/dist/FieldType.js +0 -49
- package/dist/libs/schema/dist/ScalarTypeEnum.js +0 -236
- package/dist/libs/schema/dist/SchemaModel.js +0 -39
- package/dist/libs/schema/dist/entity/defineEntity.js +0 -236
- package/dist/libs/schema/dist/entity/index.js +0 -2
- package/dist/libs/schema/dist/entity/types.js +0 -1
|
@@ -1,138 +1,138 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as _lssm_lib_schema1367 from "@lssm/lib.schema";
|
|
2
2
|
import * as _lssm_lib_contracts34 from "@lssm/lib.contracts";
|
|
3
3
|
|
|
4
4
|
//#region src/contracts/operations.d.ts
|
|
5
5
|
/**
|
|
6
6
|
* Enroll in a course.
|
|
7
7
|
*/
|
|
8
|
-
declare const EnrollInCourseContract: _lssm_lib_contracts34.ContractSpec<
|
|
8
|
+
declare const EnrollInCourseContract: _lssm_lib_contracts34.ContractSpec<_lssm_lib_schema1367.SchemaModel<{
|
|
9
9
|
courseId: {
|
|
10
|
-
type:
|
|
10
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
11
11
|
isOptional: false;
|
|
12
12
|
};
|
|
13
|
-
}>,
|
|
13
|
+
}>, _lssm_lib_schema1367.SchemaModel<{
|
|
14
14
|
id: {
|
|
15
|
-
type:
|
|
15
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
16
16
|
isOptional: false;
|
|
17
17
|
};
|
|
18
18
|
learnerId: {
|
|
19
|
-
type:
|
|
19
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
20
20
|
isOptional: false;
|
|
21
21
|
};
|
|
22
22
|
courseId: {
|
|
23
|
-
type:
|
|
23
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
24
24
|
isOptional: false;
|
|
25
25
|
};
|
|
26
26
|
status: {
|
|
27
|
-
type:
|
|
27
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
28
28
|
isOptional: false;
|
|
29
29
|
};
|
|
30
30
|
progress: {
|
|
31
|
-
type:
|
|
31
|
+
type: _lssm_lib_schema1367.FieldType<number, number>;
|
|
32
32
|
isOptional: false;
|
|
33
33
|
};
|
|
34
34
|
startedAt: {
|
|
35
|
-
type:
|
|
35
|
+
type: _lssm_lib_schema1367.FieldType<Date, string>;
|
|
36
36
|
isOptional: true;
|
|
37
37
|
};
|
|
38
38
|
completedAt: {
|
|
39
|
-
type:
|
|
39
|
+
type: _lssm_lib_schema1367.FieldType<Date, string>;
|
|
40
40
|
isOptional: true;
|
|
41
41
|
};
|
|
42
42
|
}>, undefined>;
|
|
43
43
|
/**
|
|
44
44
|
* Complete a lesson.
|
|
45
45
|
*/
|
|
46
|
-
declare const CompleteLessonContract: _lssm_lib_contracts34.ContractSpec<
|
|
46
|
+
declare const CompleteLessonContract: _lssm_lib_contracts34.ContractSpec<_lssm_lib_schema1367.SchemaModel<{
|
|
47
47
|
lessonId: {
|
|
48
|
-
type:
|
|
48
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
49
49
|
isOptional: false;
|
|
50
50
|
};
|
|
51
51
|
score: {
|
|
52
|
-
type:
|
|
52
|
+
type: _lssm_lib_schema1367.FieldType<number, number>;
|
|
53
53
|
isOptional: true;
|
|
54
54
|
};
|
|
55
55
|
timeSpent: {
|
|
56
|
-
type:
|
|
56
|
+
type: _lssm_lib_schema1367.FieldType<number, number>;
|
|
57
57
|
isOptional: false;
|
|
58
58
|
};
|
|
59
|
-
}>,
|
|
59
|
+
}>, _lssm_lib_schema1367.SchemaModel<{
|
|
60
60
|
success: {
|
|
61
|
-
type:
|
|
61
|
+
type: _lssm_lib_schema1367.FieldType<boolean, boolean>;
|
|
62
62
|
isOptional: false;
|
|
63
63
|
};
|
|
64
64
|
xpEarned: {
|
|
65
|
-
type:
|
|
65
|
+
type: _lssm_lib_schema1367.FieldType<number, number>;
|
|
66
66
|
isOptional: true;
|
|
67
67
|
};
|
|
68
68
|
}>, undefined>;
|
|
69
69
|
/**
|
|
70
70
|
* Submit a card review.
|
|
71
71
|
*/
|
|
72
|
-
declare const SubmitCardReviewContract: _lssm_lib_contracts34.ContractSpec<
|
|
72
|
+
declare const SubmitCardReviewContract: _lssm_lib_contracts34.ContractSpec<_lssm_lib_schema1367.SchemaModel<{
|
|
73
73
|
cardId: {
|
|
74
|
-
type:
|
|
74
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
75
75
|
isOptional: false;
|
|
76
76
|
};
|
|
77
77
|
rating: {
|
|
78
|
-
type:
|
|
78
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
79
79
|
isOptional: false;
|
|
80
80
|
};
|
|
81
81
|
responseTimeMs: {
|
|
82
|
-
type:
|
|
82
|
+
type: _lssm_lib_schema1367.FieldType<number, number>;
|
|
83
83
|
isOptional: true;
|
|
84
84
|
};
|
|
85
|
-
}>,
|
|
85
|
+
}>, _lssm_lib_schema1367.SchemaModel<{
|
|
86
86
|
success: {
|
|
87
|
-
type:
|
|
87
|
+
type: _lssm_lib_schema1367.FieldType<boolean, boolean>;
|
|
88
88
|
isOptional: false;
|
|
89
89
|
};
|
|
90
90
|
xpEarned: {
|
|
91
|
-
type:
|
|
91
|
+
type: _lssm_lib_schema1367.FieldType<number, number>;
|
|
92
92
|
isOptional: true;
|
|
93
93
|
};
|
|
94
94
|
}>, undefined>;
|
|
95
95
|
/**
|
|
96
96
|
* Get cards due for review.
|
|
97
97
|
*/
|
|
98
|
-
declare const GetDueCardsContract: _lssm_lib_contracts34.ContractSpec<
|
|
98
|
+
declare const GetDueCardsContract: _lssm_lib_contracts34.ContractSpec<_lssm_lib_schema1367.SchemaModel<{
|
|
99
99
|
deckId: {
|
|
100
|
-
type:
|
|
100
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
101
101
|
isOptional: true;
|
|
102
102
|
};
|
|
103
103
|
limit: {
|
|
104
|
-
type:
|
|
104
|
+
type: _lssm_lib_schema1367.FieldType<number, number>;
|
|
105
105
|
isOptional: true;
|
|
106
106
|
};
|
|
107
|
-
}>,
|
|
107
|
+
}>, _lssm_lib_schema1367.SchemaModel<{
|
|
108
108
|
cards: {
|
|
109
|
-
type:
|
|
109
|
+
type: _lssm_lib_schema1367.SchemaModel<{
|
|
110
110
|
id: {
|
|
111
|
-
type:
|
|
111
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
112
112
|
isOptional: false;
|
|
113
113
|
};
|
|
114
114
|
deckId: {
|
|
115
|
-
type:
|
|
115
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
116
116
|
isOptional: false;
|
|
117
117
|
};
|
|
118
118
|
front: {
|
|
119
|
-
type:
|
|
119
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
120
120
|
isOptional: false;
|
|
121
121
|
};
|
|
122
122
|
back: {
|
|
123
|
-
type:
|
|
123
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
124
124
|
isOptional: false;
|
|
125
125
|
};
|
|
126
126
|
hints: {
|
|
127
|
-
type:
|
|
127
|
+
type: _lssm_lib_schema1367.FieldType<unknown, unknown>;
|
|
128
128
|
isOptional: true;
|
|
129
129
|
};
|
|
130
130
|
isDue: {
|
|
131
|
-
type:
|
|
131
|
+
type: _lssm_lib_schema1367.FieldType<boolean, boolean>;
|
|
132
132
|
isOptional: false;
|
|
133
133
|
};
|
|
134
134
|
nextReviewAt: {
|
|
135
|
-
type:
|
|
135
|
+
type: _lssm_lib_schema1367.FieldType<Date, string>;
|
|
136
136
|
isOptional: true;
|
|
137
137
|
};
|
|
138
138
|
}>;
|
|
@@ -140,96 +140,96 @@ declare const GetDueCardsContract: _lssm_lib_contracts34.ContractSpec<_lssm_lib_
|
|
|
140
140
|
isOptional: false;
|
|
141
141
|
};
|
|
142
142
|
total: {
|
|
143
|
-
type:
|
|
143
|
+
type: _lssm_lib_schema1367.FieldType<number, number>;
|
|
144
144
|
isOptional: false;
|
|
145
145
|
};
|
|
146
146
|
}>, undefined>;
|
|
147
147
|
/**
|
|
148
148
|
* Get learner dashboard.
|
|
149
149
|
*/
|
|
150
|
-
declare const GetLearnerDashboardContract: _lssm_lib_contracts34.ContractSpec<
|
|
150
|
+
declare const GetLearnerDashboardContract: _lssm_lib_contracts34.ContractSpec<_lssm_lib_schema1367.SchemaModel<{
|
|
151
151
|
learnerId: {
|
|
152
|
-
type:
|
|
152
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
153
153
|
isOptional: true;
|
|
154
154
|
};
|
|
155
|
-
}>,
|
|
155
|
+
}>, _lssm_lib_schema1367.SchemaModel<{
|
|
156
156
|
learner: {
|
|
157
|
-
type:
|
|
157
|
+
type: _lssm_lib_schema1367.SchemaModel<{
|
|
158
158
|
id: {
|
|
159
|
-
type:
|
|
159
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
160
160
|
isOptional: false;
|
|
161
161
|
};
|
|
162
162
|
userId: {
|
|
163
|
-
type:
|
|
163
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
164
164
|
isOptional: false;
|
|
165
165
|
};
|
|
166
166
|
displayName: {
|
|
167
|
-
type:
|
|
167
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
168
168
|
isOptional: true;
|
|
169
169
|
};
|
|
170
170
|
level: {
|
|
171
|
-
type:
|
|
171
|
+
type: _lssm_lib_schema1367.FieldType<number, number>;
|
|
172
172
|
isOptional: false;
|
|
173
173
|
};
|
|
174
174
|
totalXp: {
|
|
175
|
-
type:
|
|
175
|
+
type: _lssm_lib_schema1367.FieldType<number, number>;
|
|
176
176
|
isOptional: false;
|
|
177
177
|
};
|
|
178
178
|
currentStreak: {
|
|
179
|
-
type:
|
|
179
|
+
type: _lssm_lib_schema1367.FieldType<number, number>;
|
|
180
180
|
isOptional: false;
|
|
181
181
|
};
|
|
182
182
|
longestStreak: {
|
|
183
|
-
type:
|
|
183
|
+
type: _lssm_lib_schema1367.FieldType<number, number>;
|
|
184
184
|
isOptional: false;
|
|
185
185
|
};
|
|
186
186
|
createdAt: {
|
|
187
|
-
type:
|
|
187
|
+
type: _lssm_lib_schema1367.FieldType<Date, string>;
|
|
188
188
|
isOptional: false;
|
|
189
189
|
};
|
|
190
190
|
}>;
|
|
191
191
|
isOptional: false;
|
|
192
192
|
};
|
|
193
193
|
currentStreak: {
|
|
194
|
-
type:
|
|
194
|
+
type: _lssm_lib_schema1367.FieldType<number, number>;
|
|
195
195
|
isOptional: false;
|
|
196
196
|
};
|
|
197
197
|
dailyXpGoal: {
|
|
198
|
-
type:
|
|
198
|
+
type: _lssm_lib_schema1367.FieldType<number, number>;
|
|
199
199
|
isOptional: false;
|
|
200
200
|
};
|
|
201
201
|
dailyXpProgress: {
|
|
202
|
-
type:
|
|
202
|
+
type: _lssm_lib_schema1367.FieldType<number, number>;
|
|
203
203
|
isOptional: false;
|
|
204
204
|
};
|
|
205
205
|
activeEnrollments: {
|
|
206
|
-
type:
|
|
206
|
+
type: _lssm_lib_schema1367.SchemaModel<{
|
|
207
207
|
id: {
|
|
208
|
-
type:
|
|
208
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
209
209
|
isOptional: false;
|
|
210
210
|
};
|
|
211
211
|
learnerId: {
|
|
212
|
-
type:
|
|
212
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
213
213
|
isOptional: false;
|
|
214
214
|
};
|
|
215
215
|
courseId: {
|
|
216
|
-
type:
|
|
216
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
217
217
|
isOptional: false;
|
|
218
218
|
};
|
|
219
219
|
status: {
|
|
220
|
-
type:
|
|
220
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
221
221
|
isOptional: false;
|
|
222
222
|
};
|
|
223
223
|
progress: {
|
|
224
|
-
type:
|
|
224
|
+
type: _lssm_lib_schema1367.FieldType<number, number>;
|
|
225
225
|
isOptional: false;
|
|
226
226
|
};
|
|
227
227
|
startedAt: {
|
|
228
|
-
type:
|
|
228
|
+
type: _lssm_lib_schema1367.FieldType<Date, string>;
|
|
229
229
|
isOptional: true;
|
|
230
230
|
};
|
|
231
231
|
completedAt: {
|
|
232
|
-
type:
|
|
232
|
+
type: _lssm_lib_schema1367.FieldType<Date, string>;
|
|
233
233
|
isOptional: true;
|
|
234
234
|
};
|
|
235
235
|
}>;
|
|
@@ -237,33 +237,33 @@ declare const GetLearnerDashboardContract: _lssm_lib_contracts34.ContractSpec<_l
|
|
|
237
237
|
isOptional: false;
|
|
238
238
|
};
|
|
239
239
|
recentAchievements: {
|
|
240
|
-
type:
|
|
240
|
+
type: _lssm_lib_schema1367.SchemaModel<{
|
|
241
241
|
id: {
|
|
242
|
-
type:
|
|
242
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
243
243
|
isOptional: false;
|
|
244
244
|
};
|
|
245
245
|
key: {
|
|
246
|
-
type:
|
|
246
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
247
247
|
isOptional: false;
|
|
248
248
|
};
|
|
249
249
|
name: {
|
|
250
|
-
type:
|
|
250
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
251
251
|
isOptional: false;
|
|
252
252
|
};
|
|
253
253
|
description: {
|
|
254
|
-
type:
|
|
254
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
255
255
|
isOptional: false;
|
|
256
256
|
};
|
|
257
257
|
icon: {
|
|
258
|
-
type:
|
|
258
|
+
type: _lssm_lib_schema1367.FieldType<string, string>;
|
|
259
259
|
isOptional: true;
|
|
260
260
|
};
|
|
261
261
|
xpReward: {
|
|
262
|
-
type:
|
|
262
|
+
type: _lssm_lib_schema1367.FieldType<number, number>;
|
|
263
263
|
isOptional: false;
|
|
264
264
|
};
|
|
265
265
|
unlockedAt: {
|
|
266
|
-
type:
|
|
266
|
+
type: _lssm_lib_schema1367.FieldType<Date, string>;
|
|
267
267
|
isOptional: true;
|
|
268
268
|
};
|
|
269
269
|
}>;
|
|
@@ -271,9 +271,10 @@ declare const GetLearnerDashboardContract: _lssm_lib_contracts34.ContractSpec<_l
|
|
|
271
271
|
isOptional: false;
|
|
272
272
|
};
|
|
273
273
|
dueCardCount: {
|
|
274
|
-
type:
|
|
274
|
+
type: _lssm_lib_schema1367.FieldType<number, number>;
|
|
275
275
|
isOptional: false;
|
|
276
276
|
};
|
|
277
277
|
}>, undefined>;
|
|
278
278
|
//#endregion
|
|
279
|
-
export { CompleteLessonContract, EnrollInCourseContract, GetDueCardsContract, GetLearnerDashboardContract, SubmitCardReviewContract };
|
|
279
|
+
export { CompleteLessonContract, EnrollInCourseContract, GetDueCardsContract, GetLearnerDashboardContract, SubmitCardReviewContract };
|
|
280
|
+
//# sourceMappingURL=operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations.d.ts","names":[],"sources":["../../src/contracts/operations.ts"],"sourcesContent":[],"mappings":";;;;;;;cAkBa,8CAAsB,kCAAA;EAAtB,QAAA,EAAA;IAgCX,IAAA,EAAA,oBAAA,CAAA,SAAA,CAAA,MAAA,EAAA,MAAA,CAAA;qBAhCiC;EAAA,CAAA;;;UAAA,oBAAA,CAAA;;;;;;;;IAAA,IAAA,gCAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAqCtB,UAAA,EAAA,KAAA;EAgCX,CAAA;;;qBAhCiC;EAAA,CAAA;;;qBAAA;EAAA,CAAA;EAqCtB,SAAA,EAAA;IAgCX,IAAA,gCAAA,KAAA,EAAA,MAAA,CAAA;;;;IAhCmC,IAAA,gCAAA,KAAA,EAAA,MAAA,CAAA;;;;;AAqCrC;;cA1Ea,8CAAsB,kCAAA;;IA0EH,IAAA,EA1C9B,oBAAA,CAAA,SA0C8B,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;;;oCAAA,CAAA;EAAA,OAAA,EAAA;IAuBnB,IAAA,EAjGsB,oBAAA,CAAA,SAmHjC,CAAA,OAAA,EAAA,OAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;EAlBsC,QAAA,EAAA;;;;;;;;cA5D3B,gDAAwB,kCAAA;;UAgCnC,oBAAA,CAAA;;;;;;;;;;;;;UAhCmC,oBAAA,CAAA;;;;;;;;;;;cAqCxB,mBAuB2B,wBAvBR,YAuBQ,sBAvBR,WAuBQ,CAAA;EAAA,MAAA,EAAA;UALtC,oBAAA,CAAA;;;;;;;;;;;cAlB8B,oBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAuBnB,mDAA2B,kCAAA;;UAkBtC,oBAAA,CAAA;;;;;;;cAlBsC,oBAAA,CAAA"}
|
|
@@ -148,4 +148,5 @@ const GetLearnerDashboardContract = defineQuery({
|
|
|
148
148
|
});
|
|
149
149
|
|
|
150
150
|
//#endregion
|
|
151
|
-
export { CompleteLessonContract, EnrollInCourseContract, GetDueCardsContract, GetLearnerDashboardContract, SubmitCardReviewContract };
|
|
151
|
+
export { CompleteLessonContract, EnrollInCourseContract, GetDueCardsContract, GetLearnerDashboardContract, SubmitCardReviewContract };
|
|
152
|
+
//# sourceMappingURL=operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations.js","names":[],"sources":["../../src/contracts/operations.ts"],"sourcesContent":["import { defineCommand, defineQuery } from '@lssm/lib.contracts';\n\nimport {\n CompleteLessonInput,\n EnrollInCourseInput,\n EnrollmentModel,\n GetDueCardsInput,\n GetDueCardsOutput,\n GetLearnerDashboardInput,\n LearnerDashboardModel,\n SubmitCardReviewInput,\n SuccessOutput,\n} from './models';\nimport { LEARNING_JOURNEY_OWNERS } from './shared';\n\n/**\n * Enroll in a course.\n */\nexport const EnrollInCourseContract = defineCommand({\n meta: {\n name: 'learning.enroll',\n version: 1,\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'enrollment'],\n description: 'Enroll in a course.',\n goal: 'Start learning a new course.',\n context: 'Called when a learner wants to start a course.',\n },\n io: {\n input: EnrollInCourseInput,\n output: EnrollmentModel,\n errors: {\n COURSE_NOT_FOUND: {\n description: 'Course does not exist',\n http: 404,\n gqlCode: 'COURSE_NOT_FOUND',\n when: 'Course ID is invalid',\n },\n ALREADY_ENROLLED: {\n description: 'Already enrolled in course',\n http: 409,\n gqlCode: 'ALREADY_ENROLLED',\n when: 'Learner is already enrolled',\n },\n },\n },\n policy: {\n auth: 'user',\n },\n});\n\n/**\n * Complete a lesson.\n */\nexport const CompleteLessonContract = defineCommand({\n meta: {\n name: 'learning.completeLesson',\n version: 1,\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'progress'],\n description: 'Mark a lesson as completed.',\n goal: 'Record lesson completion and earn XP.',\n context: 'Called when a learner finishes a lesson.',\n },\n io: {\n input: CompleteLessonInput,\n output: SuccessOutput,\n errors: {\n LESSON_NOT_FOUND: {\n description: 'Lesson does not exist',\n http: 404,\n gqlCode: 'LESSON_NOT_FOUND',\n when: 'Lesson ID is invalid',\n },\n NOT_ENROLLED: {\n description: 'Not enrolled in course',\n http: 403,\n gqlCode: 'NOT_ENROLLED',\n when: 'Learner is not enrolled in the course',\n },\n },\n },\n policy: {\n auth: 'user',\n },\n});\n\n/**\n * Submit a card review.\n */\nexport const SubmitCardReviewContract = defineCommand({\n meta: {\n name: 'learning.submitCardReview',\n version: 1,\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'flashcards'],\n description: 'Submit a flashcard review.',\n goal: 'Record review and update SRS schedule.',\n context: 'Called when reviewing flashcards.',\n },\n io: {\n input: SubmitCardReviewInput,\n output: SuccessOutput,\n errors: {\n CARD_NOT_FOUND: {\n description: 'Card does not exist',\n http: 404,\n gqlCode: 'CARD_NOT_FOUND',\n when: 'Card ID is invalid',\n },\n INVALID_RATING: {\n description: 'Invalid rating',\n http: 400,\n gqlCode: 'INVALID_RATING',\n when: 'Rating must be AGAIN, HARD, GOOD, or EASY',\n },\n },\n },\n policy: {\n auth: 'user',\n },\n});\n\n/**\n * Get cards due for review.\n */\nexport const GetDueCardsContract = defineQuery({\n meta: {\n name: 'learning.getDueCards',\n version: 1,\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'flashcards'],\n description: 'Get flashcards due for review.',\n goal: 'Get the next batch of cards to review.',\n context: 'Called when starting a review session.',\n },\n io: {\n input: GetDueCardsInput,\n output: GetDueCardsOutput,\n },\n policy: {\n auth: 'user',\n },\n});\n\n/**\n * Get learner dashboard.\n */\nexport const GetLearnerDashboardContract = defineQuery({\n meta: {\n name: 'learning.getDashboard',\n version: 1,\n stability: 'stable',\n owners: [...LEARNING_JOURNEY_OWNERS],\n tags: ['learning', 'dashboard'],\n description: 'Get learner dashboard data.',\n goal: 'Display learner progress and stats.',\n context: 'Called when viewing the learning dashboard.',\n },\n io: {\n input: GetLearnerDashboardInput,\n output: LearnerDashboardModel,\n },\n policy: {\n auth: 'user',\n },\n});\n"],"mappings":";;;;;;;;;AAkBA,MAAa,yBAAyB,cAAc;CAClD,MAAM;EACJ,MAAM;EACN,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,wBAAwB;EACpC,MAAM,CAAC,YAAY,aAAa;EAChC,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACR,QAAQ;GACN,kBAAkB;IAChB,aAAa;IACb,MAAM;IACN,SAAS;IACT,MAAM;IACP;GACD,kBAAkB;IAChB,aAAa;IACb,MAAM;IACN,SAAS;IACT,MAAM;IACP;GACF;EACF;CACD,QAAQ,EACN,MAAM,QACP;CACF,CAAC;;;;AAKF,MAAa,yBAAyB,cAAc;CAClD,MAAM;EACJ,MAAM;EACN,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,wBAAwB;EACpC,MAAM,CAAC,YAAY,WAAW;EAC9B,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACR,QAAQ;GACN,kBAAkB;IAChB,aAAa;IACb,MAAM;IACN,SAAS;IACT,MAAM;IACP;GACD,cAAc;IACZ,aAAa;IACb,MAAM;IACN,SAAS;IACT,MAAM;IACP;GACF;EACF;CACD,QAAQ,EACN,MAAM,QACP;CACF,CAAC;;;;AAKF,MAAa,2BAA2B,cAAc;CACpD,MAAM;EACJ,MAAM;EACN,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,wBAAwB;EACpC,MAAM,CAAC,YAAY,aAAa;EAChC,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACR,QAAQ;GACN,gBAAgB;IACd,aAAa;IACb,MAAM;IACN,SAAS;IACT,MAAM;IACP;GACD,gBAAgB;IACd,aAAa;IACb,MAAM;IACN,SAAS;IACT,MAAM;IACP;GACF;EACF;CACD,QAAQ,EACN,MAAM,QACP;CACF,CAAC;;;;AAKF,MAAa,sBAAsB,YAAY;CAC7C,MAAM;EACJ,MAAM;EACN,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,wBAAwB;EACpC,MAAM,CAAC,YAAY,aAAa;EAChC,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACT;CACD,QAAQ,EACN,MAAM,QACP;CACF,CAAC;;;;AAKF,MAAa,8BAA8B,YAAY;CACrD,MAAM;EACJ,MAAM;EACN,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,wBAAwB;EACpC,MAAM,CAAC,YAAY,YAAY;EAC/B,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACT;CACD,QAAQ,EACN,MAAM,QACP;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","names":[],"sources":["../../src/contracts/shared.ts"],"sourcesContent":[],"mappings":";cAAa"}
|
package/dist/contracts/shared.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","names":[],"sources":["../../src/contracts/shared.ts"],"sourcesContent":["export const LEARNING_JOURNEY_OWNERS = ['modules.learning-journey'] as const;\n"],"mappings":";AAAA,MAAa,0BAA0B,CAAC,2BAA2B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"learning-journey.docblock.js","names":[],"sources":["../../src/docs/learning-journey.docblock.ts"],"sourcesContent":["import type { DocBlock } from '@lssm/lib.contracts/docs';\nimport { registerDocBlocks } from '@lssm/lib.contracts/docs';\n\nconst learningJourneyDocBlocks: DocBlock[] = [\n {\n id: 'docs.learning-journey.engine',\n title: 'Learning Journey Engine',\n summary:\n 'Tracks learners, tracks/modules/steps, progress, quizzes, streaks, XP, and AI coaching hooks for product-integrated onboarding.',\n kind: 'reference',\n visibility: 'public',\n route: '/docs/learning-journey/engine',\n tags: ['learning', 'onboarding', 'journey', 'education'],\n body: `## Capabilities\n\n- **Entities**: Learner, Track, Module, Step, Progress, Quiz, Flashcard, AI Coach, Gamification (XP, streaks, badges).\n- **Contracts**: enroll/resume/advance steps, complete quizzes, record streaks, assign XP, fetch progress dashboards, onboarding list/progress/recordEvent.\n- **Engines**: spaced-repetition (SRS), streak calculator, XP progression.\n- **Events**: learner.enrolled, step.completed, quiz.scored, streak.reset, xp.awarded, onboarding.started/completed/step_completed.\n\n## Completion conditions\n- Event-based: name/version/source + payload filter\n- Count-based: require N events (optional time window)\n- Time-bounded: must complete within a window; steps can unlock by day/hour\n- SRS mastery: complete when cards/skills hit mastery thresholds (with required counts)\n\n## Usage\n\n1) Compose schema\n- Include \\`learningJourneySchemaContribution\\` (entities export) in composition.\n\n2) Register contracts/events\n- Import from \\`@lssm/module.learning-journey\\` into your spec registry.\n\n3) Bind to product actions\n- Tie \\`Step\\` completion conditions to domain events (e.g., deal.created, agent.run.completed, drill.session.completed).\n- Trigger notifications via Notification Center and audits on completion.\n\n4) Gamification\n- Use \\`XP\\` and \\`Streak\\` engines to update learner stats; emit analytics for UI.\n\n## Example\n\n${'```'}ts\nimport { learningJourneyEntities } from '@lssm/module.learning-journey';\nimport { StreakEngine } from '@lssm/module.learning-journey/engines';\n\nconst streak = new StreakEngine({ graceDays: 1 });\nconst updated = streak.compute({ lastActiveAt: new Date(), today: new Date() });\n${'```'},\n\n## Guardrails\n\n- Keep steps bound to real product events, not just button clicks.\n- Avoid storing PII in content; keep org/user scoping for multi-tenant isolation.\n- Emit analytics and audit logs for completions; respect \\`prefers-reduced-motion\\` in UIs consuming these specs.\n- Track completion bonuses: \\`completionXpBonus\\`, \\`completionBadgeKey\\`, optional \\`streakHoursWindow\\` + \\`streakBonusXp\\`.\n`,\n },\n {\n id: 'docs.learning-journey.goal',\n title: 'Learning Journey — Goal',\n summary:\n 'Why the learning journey engine exists and the outcomes it targets.',\n kind: 'goal',\n visibility: 'public',\n route: '/docs/learning-journey/goal',\n tags: ['learning', 'goal'],\n body: `## Why it matters\n- Provides a regenerable onboarding/education engine tied to product signals.\n- Keeps tracks, steps, quizzes, and gamification consistent across surfaces.\n\n## Business/Product goal\n- Drive activation and retention with measurable progress, SRS, and streaks.\n- Allow product teams to adjust journeys safely via specs.\n\n## Success criteria\n- Journey changes regenerate UI/API/events without drift.\n- Analytics/audit hooks exist for completions and streaks.`,\n },\n {\n id: 'docs.learning-journey.usage',\n title: 'Learning Journey — Usage',\n summary: 'How to compose, bind, and regenerate journeys safely.',\n kind: 'usage',\n visibility: 'public',\n route: '/docs/learning-journey/usage',\n tags: ['learning', 'usage'],\n body: `## Setup\n1) Include \\`learningJourneyEntities\\` in schema composition.\n2) Register contracts/events from \\`@lssm/module.learning-journey\\`.\n3) Bind steps to real product events (e.g., deal.created, run.completed).\n\n## Extend & regenerate\n1) Update track/module/step definitions or quiz schemas in spec.\n2) Regenerate to sync UI/API/events; mark PII paths where needed.\n3) Use Feature Flags to trial new tracks or streak rules.\n\n## Guardrails\n- Avoid hardcoded progression; keep engines declarative.\n- Emit analytics/audit for completions; respect user locale/accessibility in presentations.\n- Keep content free of PII; scope learners by org/tenant.`,\n },\n {\n id: 'docs.learning-journey.constraints',\n title: 'Learning Journey — Constraints & Safety',\n summary:\n 'Internal guardrails for progression, telemetry, and regeneration semantics.',\n kind: 'reference',\n visibility: 'internal',\n route: '/docs/learning-journey/constraints',\n tags: ['learning', 'constraints', 'internal'],\n body: `## Constraints\n- Progression (tracks/modules/steps) and engines (SRS, streaks, XP) must stay declarative in spec.\n- Events to emit: learner.enrolled, step.completed, quiz.scored, streak.reset, xp.awarded.\n- Regeneration should not change scoring/streak rules without explicit spec change.\n\n## PII & Telemetry\n- Mark PII (learner identifiers) and redact in presentations; keep telemetry aggregated when possible.\n- Respect accessibility (prefers-reduced-motion) in UIs consuming these specs.\n\n## Verification\n- Add fixtures for streak/XP rule changes and quiz scoring.\n- Ensure Notifications/Audit wiring persists for completions; analytics emitted for progress.\n- Use Feature Flags to trial new tracks or reward rules; default safe/off.`,\n },\n];\n\nregisterDocBlocks(learningJourneyDocBlocks);\n"],"mappings":";;;;AAgIA,kBA7H6C;CAC3C;EACE,IAAI;EACJ,OAAO;EACP,SACE;EACF,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM;GAAC;GAAY;GAAc;GAAW;GAAY;EACxD,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SACE;EACF,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,YAAY,OAAO;EAC1B,MAAM;;;;;;;;;;;EAWP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SAAS;EACT,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM,CAAC,YAAY,QAAQ;EAC3B,MAAM;;;;;;;;;;;;;;EAcP;CACD;EACE,IAAI;EACJ,OAAO;EACP,SACE;EACF,MAAM;EACN,YAAY;EACZ,OAAO;EACP,MAAM;GAAC;GAAY;GAAe;GAAW;EAC7C,MAAM;;;;;;;;;;;;;EAaP;CACF,CAE0C"}
|
package/dist/engines/srs.d.ts
CHANGED
|
@@ -75,18 +75,6 @@ declare class SRSEngine {
|
|
|
75
75
|
* Calculate the next review state based on rating.
|
|
76
76
|
*/
|
|
77
77
|
calculateNextReview(state: SRSState, rating: CardRating, now?: Date): ReviewResult;
|
|
78
|
-
/**
|
|
79
|
-
* Handle learning phase (new cards).
|
|
80
|
-
*/
|
|
81
|
-
private handleLearningCard;
|
|
82
|
-
/**
|
|
83
|
-
* Handle relearning phase (lapsed cards).
|
|
84
|
-
*/
|
|
85
|
-
private handleRelearningCard;
|
|
86
|
-
/**
|
|
87
|
-
* Handle review phase (graduated cards).
|
|
88
|
-
*/
|
|
89
|
-
private handleReviewCard;
|
|
90
78
|
/**
|
|
91
79
|
* Get initial SRS state for a new card.
|
|
92
80
|
*/
|
|
@@ -99,6 +87,18 @@ declare class SRSEngine {
|
|
|
99
87
|
* Calculate overdue days (negative if not yet due).
|
|
100
88
|
*/
|
|
101
89
|
getOverdueDays(nextReviewAt: Date, now?: Date): number;
|
|
90
|
+
/**
|
|
91
|
+
* Handle learning phase (new cards).
|
|
92
|
+
*/
|
|
93
|
+
private handleLearningCard;
|
|
94
|
+
/**
|
|
95
|
+
* Handle relearning phase (lapsed cards).
|
|
96
|
+
*/
|
|
97
|
+
private handleRelearningCard;
|
|
98
|
+
/**
|
|
99
|
+
* Handle review phase (graduated cards).
|
|
100
|
+
*/
|
|
101
|
+
private handleReviewCard;
|
|
102
102
|
private addMinutes;
|
|
103
103
|
private addDays;
|
|
104
104
|
}
|
|
@@ -107,4 +107,5 @@ declare class SRSEngine {
|
|
|
107
107
|
*/
|
|
108
108
|
declare const srsEngine: SRSEngine;
|
|
109
109
|
//#endregion
|
|
110
|
-
export { CardRating, DEFAULT_SRS_CONFIG, ReviewResult, SRSConfig, SRSEngine, SRSState, srsEngine };
|
|
110
|
+
export { CardRating, DEFAULT_SRS_CONFIG, ReviewResult, SRSConfig, SRSEngine, SRSState, srsEngine };
|
|
111
|
+
//# sourceMappingURL=srs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"srs.d.ts","names":[],"sources":["../../src/engines/srs.ts"],"sourcesContent":[],"mappings":";;AAcA;AAEA;AAiBA;AAmBA;AAyBA;AAeA;;;;;AAaS,KA3FG,UAAA,GA2FH,OAAA,GAAA,MAAA,GAAA,MAAA,GAAA,MAAA;AACJ,UA1FY,QAAA,CA0FZ;EAkBgB;EAeC,QAAA,EAAA,MAAA;EAAW;EAOF,UAAA,EAAA,MAAA;EAAW;EAAiB,WAAA,EAAA,MAAA;EA4O9C;;;;;;;;;UA7VI,YAAA;;;;;;;;gBAQD;;;;;;;;;;UAWC,SAAA;;;;;;;;;;;;;;;;;;;;;;cAyBJ,oBAAoB;cAepB,SAAA;;uBAGS,QAAQ;;;;6BAQnB,kBACC,kBACH,OACJ;;;;qBAkBgB;;;;sBAeC,YAAW;;;;+BAOF,YAAW;;;;;;;;;;;;;;;;;;;cA4O7B,WAAS"}
|
package/dist/engines/srs.js
CHANGED
|
@@ -28,6 +28,33 @@ var SRSEngine = class {
|
|
|
28
28
|
return this.handleReviewCard(state, rating, now);
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
|
+
* Get initial SRS state for a new card.
|
|
32
|
+
*/
|
|
33
|
+
getInitialState() {
|
|
34
|
+
return {
|
|
35
|
+
interval: 0,
|
|
36
|
+
easeFactor: 2.5,
|
|
37
|
+
repetitions: 0,
|
|
38
|
+
learningStep: 0,
|
|
39
|
+
isGraduated: false,
|
|
40
|
+
isRelearning: false,
|
|
41
|
+
lapses: 0
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Check if a card is due for review.
|
|
46
|
+
*/
|
|
47
|
+
isDue(nextReviewAt, now = /* @__PURE__ */ new Date()) {
|
|
48
|
+
return nextReviewAt <= now;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Calculate overdue days (negative if not yet due).
|
|
52
|
+
*/
|
|
53
|
+
getOverdueDays(nextReviewAt, now = /* @__PURE__ */ new Date()) {
|
|
54
|
+
const diff = now.getTime() - nextReviewAt.getTime();
|
|
55
|
+
return Math.floor(diff / (1e3 * 60 * 60 * 24));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
31
58
|
* Handle learning phase (new cards).
|
|
32
59
|
*/
|
|
33
60
|
handleLearningCard(state, rating, now) {
|
|
@@ -138,12 +165,11 @@ var SRSEngine = class {
|
|
|
138
165
|
learningStep = 0;
|
|
139
166
|
newEaseFactor = Math.max(this.config.minEaseFactor, newEaseFactor - .2);
|
|
140
167
|
newInterval = state.interval;
|
|
141
|
-
const relearnStep = this.config.relearningSteps[0] ?? 10;
|
|
142
168
|
return {
|
|
143
169
|
interval: newInterval,
|
|
144
170
|
easeFactor: newEaseFactor,
|
|
145
171
|
repetitions,
|
|
146
|
-
nextReviewAt: this.addMinutes(now,
|
|
172
|
+
nextReviewAt: this.addMinutes(now, this.config.relearningSteps[0] ?? 10),
|
|
147
173
|
learningStep,
|
|
148
174
|
isGraduated: true,
|
|
149
175
|
isRelearning: true,
|
|
@@ -176,33 +202,6 @@ var SRSEngine = class {
|
|
|
176
202
|
lapses
|
|
177
203
|
};
|
|
178
204
|
}
|
|
179
|
-
/**
|
|
180
|
-
* Get initial SRS state for a new card.
|
|
181
|
-
*/
|
|
182
|
-
getInitialState() {
|
|
183
|
-
return {
|
|
184
|
-
interval: 0,
|
|
185
|
-
easeFactor: 2.5,
|
|
186
|
-
repetitions: 0,
|
|
187
|
-
learningStep: 0,
|
|
188
|
-
isGraduated: false,
|
|
189
|
-
isRelearning: false,
|
|
190
|
-
lapses: 0
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* Check if a card is due for review.
|
|
195
|
-
*/
|
|
196
|
-
isDue(nextReviewAt, now = /* @__PURE__ */ new Date()) {
|
|
197
|
-
return nextReviewAt <= now;
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Calculate overdue days (negative if not yet due).
|
|
201
|
-
*/
|
|
202
|
-
getOverdueDays(nextReviewAt, now = /* @__PURE__ */ new Date()) {
|
|
203
|
-
const diff = now.getTime() - nextReviewAt.getTime();
|
|
204
|
-
return Math.floor(diff / (1e3 * 60 * 60 * 24));
|
|
205
|
-
}
|
|
206
205
|
addMinutes(date, minutes) {
|
|
207
206
|
return new Date(date.getTime() + minutes * 60 * 1e3);
|
|
208
207
|
}
|
|
@@ -216,4 +215,5 @@ var SRSEngine = class {
|
|
|
216
215
|
const srsEngine = new SRSEngine();
|
|
217
216
|
|
|
218
217
|
//#endregion
|
|
219
|
-
export { DEFAULT_SRS_CONFIG, SRSEngine, srsEngine };
|
|
218
|
+
export { DEFAULT_SRS_CONFIG, SRSEngine, srsEngine };
|
|
219
|
+
//# sourceMappingURL=srs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"srs.js","names":["DEFAULT_SRS_CONFIG: SRSConfig","nextReviewAt: Date","newInterval: number"],"sources":["../../src/engines/srs.ts"],"sourcesContent":["/**\n * Spaced Repetition System (SRS) Engine\n *\n * Implements the SM-2 algorithm variant for optimal flashcard scheduling.\n *\n * The algorithm calculates the optimal time to review a card based on:\n * - User's rating of recall difficulty (again, hard, good, easy)\n * - Current interval between reviews\n * - Ease factor (how easy the card is for this user)\n * - Number of successful repetitions\n */\n\n// ============ Types ============\n\nexport type CardRating = 'AGAIN' | 'HARD' | 'GOOD' | 'EASY';\n\nexport interface SRSState {\n /** Current interval in days */\n interval: number;\n /** Ease factor (typically 1.3 to 2.5+) */\n easeFactor: number;\n /** Number of successful repetitions */\n repetitions: number;\n /** Current learning step (for new cards) */\n learningStep: number;\n /** Whether card has graduated to review phase */\n isGraduated: boolean;\n /** Whether card is being relearned after a lapse */\n isRelearning: boolean;\n /** Number of times card was forgotten */\n lapses: number;\n}\n\nexport interface ReviewResult {\n /** New interval in days */\n interval: number;\n /** New ease factor */\n easeFactor: number;\n /** New repetition count */\n repetitions: number;\n /** Next review date */\n nextReviewAt: Date;\n /** New learning step */\n learningStep: number;\n /** Whether card has graduated */\n isGraduated: boolean;\n /** Whether card is being relearned */\n isRelearning: boolean;\n /** Updated lapse count */\n lapses: number;\n}\n\nexport interface SRSConfig {\n /** Learning steps in minutes [1, 10] = 1 min, 10 min */\n learningSteps: number[];\n /** Graduating interval in days */\n graduatingInterval: number;\n /** Easy interval (for easy button on new cards) */\n easyInterval: number;\n /** Relearning steps in minutes */\n relearningSteps: number[];\n /** Minimum ease factor */\n minEaseFactor: number;\n /** Maximum interval in days */\n maxInterval: number;\n /** Interval modifier (1.0 = 100%) */\n intervalModifier: number;\n /** New cards interval modifier */\n newIntervalModifier: number;\n /** Hard interval modifier */\n hardIntervalModifier: number;\n /** Easy bonus modifier */\n easyBonus: number;\n}\n\n// ============ Default Configuration ============\n\nexport const DEFAULT_SRS_CONFIG: SRSConfig = {\n learningSteps: [1, 10], // 1 minute, 10 minutes\n graduatingInterval: 1, // 1 day\n easyInterval: 4, // 4 days\n relearningSteps: [10], // 10 minutes\n minEaseFactor: 1.3,\n maxInterval: 365, // 1 year\n intervalModifier: 1.0,\n newIntervalModifier: 0.5,\n hardIntervalModifier: 1.2,\n easyBonus: 1.3,\n};\n\n// ============ SRS Engine ============\n\nexport class SRSEngine {\n private config: SRSConfig;\n\n constructor(config: Partial<SRSConfig> = {}) {\n this.config = { ...DEFAULT_SRS_CONFIG, ...config };\n }\n\n /**\n * Calculate the next review state based on rating.\n */\n calculateNextReview(\n state: SRSState,\n rating: CardRating,\n now: Date = new Date()\n ): ReviewResult {\n // Handle new/learning cards\n if (!state.isGraduated && !state.isRelearning) {\n return this.handleLearningCard(state, rating, now);\n }\n\n // Handle relearning cards\n if (state.isRelearning) {\n return this.handleRelearningCard(state, rating, now);\n }\n\n // Handle graduated cards in review\n return this.handleReviewCard(state, rating, now);\n }\n\n /**\n * Get initial SRS state for a new card.\n */\n getInitialState(): SRSState {\n return {\n interval: 0,\n easeFactor: 2.5,\n repetitions: 0,\n learningStep: 0,\n isGraduated: false,\n isRelearning: false,\n lapses: 0,\n };\n }\n\n /**\n * Check if a card is due for review.\n */\n isDue(nextReviewAt: Date, now: Date = new Date()): boolean {\n return nextReviewAt <= now;\n }\n\n /**\n * Calculate overdue days (negative if not yet due).\n */\n getOverdueDays(nextReviewAt: Date, now: Date = new Date()): number {\n const diff = now.getTime() - nextReviewAt.getTime();\n return Math.floor(diff / (1000 * 60 * 60 * 24));\n }\n\n /**\n * Handle learning phase (new cards).\n */\n private handleLearningCard(\n state: SRSState,\n rating: CardRating,\n now: Date\n ): ReviewResult {\n const steps = this.config.learningSteps;\n let newStep = state.learningStep;\n let isGraduated = false;\n let interval = 0;\n let nextReviewAt: Date;\n\n switch (rating) {\n case 'AGAIN':\n // Reset to first step\n newStep = 0;\n interval = steps[0] ?? 1;\n nextReviewAt = this.addMinutes(now, interval);\n break;\n\n case 'HARD':\n // Stay at current step (or repeat first step)\n interval = steps[newStep] ?? steps[0] ?? 1;\n nextReviewAt = this.addMinutes(now, interval);\n break;\n\n case 'GOOD':\n // Move to next step\n newStep++;\n if (newStep >= steps.length) {\n // Graduate the card\n isGraduated = true;\n interval = this.config.graduatingInterval;\n nextReviewAt = this.addDays(now, interval);\n } else {\n interval = steps[newStep] ?? 10;\n nextReviewAt = this.addMinutes(now, interval);\n }\n break;\n\n case 'EASY':\n // Graduate immediately with easy interval\n isGraduated = true;\n interval = this.config.easyInterval;\n nextReviewAt = this.addDays(now, interval);\n break;\n }\n\n return {\n interval: isGraduated ? interval : 0,\n easeFactor: state.easeFactor,\n repetitions: isGraduated ? 1 : 0,\n nextReviewAt,\n learningStep: newStep,\n isGraduated,\n isRelearning: false,\n lapses: state.lapses,\n };\n }\n\n /**\n * Handle relearning phase (lapsed cards).\n */\n private handleRelearningCard(\n state: SRSState,\n rating: CardRating,\n now: Date\n ): ReviewResult {\n const steps = this.config.relearningSteps;\n let newStep = state.learningStep;\n let isRelearning = true;\n let interval = 0;\n let nextReviewAt: Date;\n\n switch (rating) {\n case 'AGAIN':\n // Reset to first relearning step\n newStep = 0;\n interval = steps[0] ?? 10;\n nextReviewAt = this.addMinutes(now, interval);\n break;\n\n case 'HARD':\n // Stay at current step\n interval = steps[newStep] ?? steps[0] ?? 10;\n nextReviewAt = this.addMinutes(now, interval);\n break;\n\n case 'GOOD':\n // Move to next step or graduate back to review\n newStep++;\n if (newStep >= steps.length) {\n isRelearning = false;\n // Use reduced interval after lapse\n interval = Math.max(\n 1,\n Math.floor(state.interval * this.config.newIntervalModifier)\n );\n nextReviewAt = this.addDays(now, interval);\n } else {\n interval = steps[newStep] ?? 10;\n nextReviewAt = this.addMinutes(now, interval);\n }\n break;\n\n case 'EASY':\n // Graduate immediately with slightly longer interval\n isRelearning = false;\n interval = Math.max(\n 1,\n Math.floor(state.interval * this.config.newIntervalModifier * 1.5)\n );\n nextReviewAt = this.addDays(now, interval);\n break;\n }\n\n return {\n interval: isRelearning ? state.interval : interval,\n easeFactor: state.easeFactor,\n repetitions: isRelearning ? state.repetitions : state.repetitions + 1,\n nextReviewAt,\n learningStep: newStep,\n isGraduated: true,\n isRelearning,\n lapses: state.lapses,\n };\n }\n\n /**\n * Handle review phase (graduated cards).\n */\n private handleReviewCard(\n state: SRSState,\n rating: CardRating,\n now: Date\n ): ReviewResult {\n let newInterval: number;\n let newEaseFactor = state.easeFactor;\n let repetitions = state.repetitions;\n let isRelearning = false;\n let learningStep = 0;\n let lapses = state.lapses;\n\n switch (rating) {\n case 'AGAIN':\n // Card lapsed - move to relearning\n lapses++;\n isRelearning = true;\n learningStep = 0;\n newEaseFactor = Math.max(\n this.config.minEaseFactor,\n newEaseFactor - 0.2\n );\n newInterval = state.interval; // Keep old interval for reference\n return {\n interval: newInterval,\n easeFactor: newEaseFactor,\n repetitions,\n nextReviewAt: this.addMinutes(\n now,\n this.config.relearningSteps[0] ?? 10\n ),\n learningStep,\n isGraduated: true,\n isRelearning: true,\n lapses,\n };\n\n case 'HARD':\n // Reduce interval slightly, reduce ease\n newEaseFactor = Math.max(\n this.config.minEaseFactor,\n newEaseFactor - 0.15\n );\n newInterval = Math.max(\n state.interval + 1,\n state.interval * this.config.hardIntervalModifier\n );\n break;\n\n case 'GOOD':\n // Standard interval increase\n newInterval =\n state.interval * newEaseFactor * this.config.intervalModifier;\n repetitions++;\n break;\n\n case 'EASY':\n // Larger interval increase, increase ease\n newEaseFactor = newEaseFactor + 0.15;\n newInterval =\n state.interval *\n newEaseFactor *\n this.config.easyBonus *\n this.config.intervalModifier;\n repetitions++;\n break;\n }\n\n // Apply bounds\n newInterval = Math.min(Math.round(newInterval), this.config.maxInterval);\n newInterval = Math.max(1, newInterval);\n\n return {\n interval: newInterval,\n easeFactor: newEaseFactor,\n repetitions,\n nextReviewAt: this.addDays(now, newInterval),\n learningStep,\n isGraduated: true,\n isRelearning,\n lapses,\n };\n }\n\n // ============ Helpers ============\n\n private addMinutes(date: Date, minutes: number): Date {\n return new Date(date.getTime() + minutes * 60 * 1000);\n }\n\n private addDays(date: Date, days: number): Date {\n return new Date(date.getTime() + days * 24 * 60 * 60 * 1000);\n }\n}\n\n/**\n * Default SRS engine instance.\n */\nexport const srsEngine = new SRSEngine();\n"],"mappings":"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"}
|
package/dist/engines/streak.d.ts
CHANGED
|
@@ -96,4 +96,5 @@ declare class StreakEngine {
|
|
|
96
96
|
*/
|
|
97
97
|
declare const streakEngine: StreakEngine;
|
|
98
98
|
//#endregion
|
|
99
|
-
export { DEFAULT_STREAK_CONFIG, StreakConfig, StreakEngine, StreakState, StreakUpdateResult, streakEngine };
|
|
99
|
+
export { DEFAULT_STREAK_CONFIG, StreakConfig, StreakEngine, StreakState, StreakUpdateResult, streakEngine };
|
|
100
|
+
//# sourceMappingURL=streak.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streak.d.ts","names":[],"sources":["../../src/engines/streak.ts"],"sourcesContent":[],"mappings":";;AAQA;AAeA;AAeA;AAaA;AASa,UApDI,WAAA,CAoDQ;EAGK;EAAR,aAAA,EAAA,MAAA;EAON;EAAkB,aAAA,EAAA,MAAA;EAAoB;EAmF3C,cAAA,EA3IO,IA2IP,GAAA,IAAA;EACF;EAGS,gBAAA,EAAA,MAAA,GAAA,IAAA;EAwDC;EAAkB,gBAAA,EAAA,MAAA;EAAoB;EAe5B,YAAA,EAhNb,IAgNa,GAAA,IAAA;;AAaR,UA1NJ,kBAAA,CA0NI;EAAW;EA0DnB,KAAA,EAlRJ,WAkRqC;;;;;;;;;;;;UArQ7B,YAAA;;;;;;;;;;cAaJ,uBAAuB;cASvB,YAAA;;uBAGS,QAAQ;;;;gBAOd,mBAAkB,OAAoB;;;;qBAmF3C,mBACF;;kBAGS;;;;;;;mBAwDC,mBAAkB,OAAoB;;;;6BAe5B,cAAc;;;;qBAatB;;;;;;;;;;;;;;;;;;;;;;;;cA0DR,cAAY"}
|
package/dist/engines/streak.js
CHANGED
|
@@ -190,4 +190,5 @@ var StreakEngine = class {
|
|
|
190
190
|
const streakEngine = new StreakEngine();
|
|
191
191
|
|
|
192
192
|
//#endregion
|
|
193
|
-
export { DEFAULT_STREAK_CONFIG, StreakEngine, streakEngine };
|
|
193
|
+
export { DEFAULT_STREAK_CONFIG, StreakEngine, streakEngine };
|
|
194
|
+
//# sourceMappingURL=streak.js.map
|