@vue-skuilder/db 0.1.32-b → 0.1.32-e

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 (51) hide show
  1. package/dist/{contentSource-DF1nUbPQ.d.cts → contentSource-BMlMwSiG.d.cts} +124 -5
  2. package/dist/{contentSource-Bdwkvqa8.d.ts → contentSource-Ht3N2f-y.d.ts} +124 -5
  3. package/dist/core/index.d.cts +26 -83
  4. package/dist/core/index.d.ts +26 -83
  5. package/dist/core/index.js +767 -71
  6. package/dist/core/index.js.map +1 -1
  7. package/dist/core/index.mjs +767 -71
  8. package/dist/core/index.mjs.map +1 -1
  9. package/dist/{dataLayerProvider-BQdfJuBN.d.cts → dataLayerProvider-BEqB8VBR.d.cts} +1 -1
  10. package/dist/{dataLayerProvider-BKmVoyJR.d.ts → dataLayerProvider-DObSXjnf.d.ts} +1 -1
  11. package/dist/impl/couch/index.d.cts +18 -5
  12. package/dist/impl/couch/index.d.ts +18 -5
  13. package/dist/impl/couch/index.js +817 -74
  14. package/dist/impl/couch/index.js.map +1 -1
  15. package/dist/impl/couch/index.mjs +817 -74
  16. package/dist/impl/couch/index.mjs.map +1 -1
  17. package/dist/impl/static/index.d.cts +4 -4
  18. package/dist/impl/static/index.d.ts +4 -4
  19. package/dist/impl/static/index.js +763 -67
  20. package/dist/impl/static/index.js.map +1 -1
  21. package/dist/impl/static/index.mjs +763 -67
  22. package/dist/impl/static/index.mjs.map +1 -1
  23. package/dist/index.d.cts +23 -8
  24. package/dist/index.d.ts +23 -8
  25. package/dist/index.js +872 -86
  26. package/dist/index.js.map +1 -1
  27. package/dist/index.mjs +872 -86
  28. package/dist/index.mjs.map +1 -1
  29. package/docs/navigators-architecture.md +2 -2
  30. package/package.json +2 -2
  31. package/src/core/interfaces/contentSource.ts +3 -3
  32. package/src/core/navigators/Pipeline.ts +104 -32
  33. package/src/core/navigators/PipelineDebugger.ts +152 -1
  34. package/src/core/navigators/filters/hierarchyDefinition.ts +90 -6
  35. package/src/core/navigators/filters/interferenceMitigator.ts +2 -1
  36. package/src/core/navigators/filters/relativePriority.ts +2 -1
  37. package/src/core/navigators/filters/userTagPreference.ts +2 -1
  38. package/src/core/navigators/generators/CompositeGenerator.ts +58 -5
  39. package/src/core/navigators/generators/elo.ts +7 -7
  40. package/src/core/navigators/generators/prescribed.ts +710 -46
  41. package/src/core/navigators/generators/srs.ts +3 -4
  42. package/src/core/navigators/generators/types.ts +48 -2
  43. package/src/core/navigators/index.ts +4 -3
  44. package/src/impl/couch/CourseSyncService.ts +72 -4
  45. package/src/impl/couch/classroomDB.ts +4 -3
  46. package/src/impl/couch/courseDB.ts +5 -4
  47. package/src/impl/static/courseDB.ts +5 -4
  48. package/src/study/SessionController.ts +58 -10
  49. package/src/study/TagFilteredContentSource.ts +4 -3
  50. package/src/study/services/EloService.ts +22 -3
  51. package/src/study/services/ResponseProcessor.ts +7 -3
@@ -1043,14 +1043,133 @@ declare abstract class ContentNavigator implements StudyContentSource {
1043
1043
  * @param limit - Maximum cards to return
1044
1044
  * @returns Cards sorted by score descending, with provenance trails
1045
1045
  */
1046
- getWeightedCards(_limit: number): Promise<WeightedCard[]>;
1046
+ getWeightedCards(_limit: number): Promise<GeneratorResult>;
1047
1047
  /**
1048
1048
  * Set ephemeral hints for the next pipeline run.
1049
1049
  * No-op for non-Pipeline navigators. Pipeline overrides this.
1050
1050
  */
1051
- setEphemeralHints(_hints: Record<string, unknown>): void;
1051
+ setEphemeralHints(_hints: ReplanHints): void;
1052
1052
  }
1053
1053
 
1054
+ /**
1055
+ * Typed ephemeral pipeline hints for a single run.
1056
+ * All fields are optional. Tag/card patterns support `*` wildcards.
1057
+ */
1058
+ interface ReplanHints {
1059
+ /** Multiply scores for cards matching these tag patterns. */
1060
+ boostTags?: Record<string, number>;
1061
+ /** Multiply scores for these specific card IDs (glob patterns). */
1062
+ boostCards?: Record<string, number>;
1063
+ /** Cards matching these tag patterns MUST appear in results. */
1064
+ requireTags?: string[];
1065
+ /** These specific card IDs MUST appear in results. */
1066
+ requireCards?: string[];
1067
+ /** Remove cards matching these tag patterns from results. */
1068
+ excludeTags?: string[];
1069
+ /** Remove these specific card IDs from results. */
1070
+ excludeCards?: string[];
1071
+ /**
1072
+ * Debugging label threaded from the replan requester.
1073
+ * Prefixed with `_` to signal it's metadata, not a scoring hint.
1074
+ */
1075
+ _label?: string;
1076
+ }
1077
+ /**
1078
+ * Context available to generators when producing candidates.
1079
+ *
1080
+ * Built once per getWeightedCards() call by the Pipeline.
1081
+ */
1082
+ interface GeneratorContext {
1083
+ /** User database interface */
1084
+ user: UserDBInterface;
1085
+ /** Course database interface */
1086
+ course: CourseDBInterface;
1087
+ /** User's global ELO score for this course */
1088
+ userElo: number;
1089
+ /** Orchestration context for evolutionary weighting */
1090
+ orchestration?: OrchestrationContext;
1091
+ }
1092
+ /**
1093
+ * Structured generator result.
1094
+ *
1095
+ * Generators may optionally emit one-shot replan hints alongside their
1096
+ * candidate cards. This allows a generator to shape the broader pipeline
1097
+ * without having to enumerate every affected support card directly.
1098
+ */
1099
+ interface GeneratorResult {
1100
+ /** Candidate cards produced by the generator */
1101
+ cards: WeightedCard[];
1102
+ /** Optional one-shot hints to apply after the filter chain */
1103
+ hints?: ReplanHints;
1104
+ }
1105
+ /**
1106
+ * A generator that produces candidate cards with initial scores.
1107
+ *
1108
+ * Generators are the "source" stage of a navigation pipeline.
1109
+ * They query the database for eligible cards and assign initial
1110
+ * suitability scores based on their strategy (ELO proximity,
1111
+ * review urgency, fixed order, etc.).
1112
+ *
1113
+ * ## Implementation Guidelines
1114
+ *
1115
+ * 1. **Create provenance**: Each card should have a provenance entry
1116
+ * with action='generated' documenting why it was selected.
1117
+ *
1118
+ * 2. **Score semantics**: Higher scores = more suitable for presentation.
1119
+ * Scores should be in [0, 1] range for composability.
1120
+ *
1121
+ * 3. **Limit handling**: Respect the limit parameter, but may over-fetch
1122
+ * internally if needed for scoring accuracy.
1123
+ *
1124
+ * 4. **Sort before returning**: Return cards sorted by score descending.
1125
+ *
1126
+ * 5. **Hints are optional**: Generators may return structured results with
1127
+ * `hints` when they need to apply pipeline-wide ephemeral pressure.
1128
+ *
1129
+ * ## Example Implementation
1130
+ *
1131
+ * ```typescript
1132
+ * const myGenerator: CardGenerator = {
1133
+ * name: 'My Generator',
1134
+ * async getWeightedCards(limit, context) {
1135
+ * const candidates = await fetchCandidates(context.course, limit);
1136
+ * return candidates.map(c => ({
1137
+ * cardId: c.id,
1138
+ * courseId: context.course.getCourseID(),
1139
+ * score: computeScore(c, context),
1140
+ * provenance: [{
1141
+ * strategy: 'myGenerator',
1142
+ * strategyName: 'My Generator',
1143
+ * strategyId: 'MY_GENERATOR',
1144
+ * action: 'generated',
1145
+ * score: computeScore(c, context),
1146
+ * reason: 'Explanation of selection'
1147
+ * }]
1148
+ * }));
1149
+ * }
1150
+ * };
1151
+ * ```
1152
+ */
1153
+ interface CardGenerator {
1154
+ /** Human-readable name for this generator */
1155
+ name: string;
1156
+ /**
1157
+ * Produce candidate cards with initial scores.
1158
+ *
1159
+ * @param limit - Maximum number of cards to return
1160
+ * @param context - Shared context (user, course, userElo, etc.)
1161
+ * @returns Cards sorted by score descending, with provenance, optionally
1162
+ * accompanied by one-shot replan hints
1163
+ */
1164
+ getWeightedCards(limit: number, context: GeneratorContext): Promise<GeneratorResult>;
1165
+ }
1166
+ /**
1167
+ * Factory function type for creating generators from configuration.
1168
+ *
1169
+ * Used by PipelineAssembler to instantiate generators from strategy documents.
1170
+ */
1171
+ type CardGeneratorFactory<TConfig = unknown> = (config: TConfig) => CardGenerator;
1172
+
1054
1173
  type StudySessionFailedItem = StudySessionFailedNewItem | StudySessionFailedReviewItem;
1055
1174
  interface StudySessionFailedNewItem extends StudySessionItem {
1056
1175
  status: 'failed-new';
@@ -1101,7 +1220,7 @@ interface StudyContentSource {
1101
1220
  * @param limit - Maximum number of cards to return
1102
1221
  * @returns Cards sorted by score descending
1103
1222
  */
1104
- getWeightedCards(limit: number): Promise<WeightedCard[]>;
1223
+ getWeightedCards(limit: number): Promise<GeneratorResult>;
1105
1224
  /**
1106
1225
  * Get the orchestration context for this source.
1107
1226
  * Used for recording learning outcomes.
@@ -1111,8 +1230,8 @@ interface StudyContentSource {
1111
1230
  * Set ephemeral hints for the next pipeline run.
1112
1231
  * No-op for sources that don't support hints.
1113
1232
  */
1114
- setEphemeralHints?(hints: Record<string, unknown>): void;
1233
+ setEphemeralHints?(hints: ReplanHints): void;
1115
1234
  }
1116
1235
  declare function getStudySource(source: ContentSourceID, user: UserDBInterface): Promise<StudyContentSource>;
1117
1236
 
1118
- export { NavigatorRoles as $, type AdminDBInterface as A, type UsrCrsDataInterface as B, type CourseDBInterface as C, type DataLayerResult as D, type ClassroomRegistrationDesignation as E, type ClassroomRegistration as F, type ClassroomRegistrationDoc as G, type SessionTrackingData as H, type UserConfig as I, type ActivityRecord as J, type CourseRegistration as K, type UserOutcomeRecord as L, registerNavigator as M, type NavigatorConstructor as N, getRegisteredNavigator as O, hasRegisteredNavigator as P, getRegisteredNavigatorRole as Q, getRegisteredNavigatorNames as R, type StudySessionItem as S, type TeacherClassroomDBInterface as T, type UserDBInterface as U, initializeNavigatorRegistry as V, type WeightedCard as W, type StrategyContribution as X, getCardOrigin as Y, Navigators as Z, NavigatorRole as _, type UserDBReader as a, isGenerator as a0, isFilter as a1, type LearnableWeight as a2, type OrchestrationContext as a3, computeDeviation as a4, computeSpread as a5, computeEffectiveWeight as a6, createOrchestrationContext as a7, type DocumentUpdater as a8, newInterval as a9, type CoursesDBInterface as b, type ClassroomDBInterface as c, type CourseInfo as d, type ContentNavigationStrategyData as e, ContentNavigator as f, type AssignedContent as g, type StudyContentSource as h, type StudentClassroomDBInterface as i, type ScheduledCard as j, type StudySessionFailedItem as k, type StudySessionFailedNewItem as l, type StudySessionFailedReviewItem as m, type StudySessionNewItem as n, type StudySessionReviewItem as o, isReview as p, type ContentSourceID as q, getStudySource as r, type CourseRegistrationDoc as s, type AssignedTag as t, type AssignedCourse as u, type AssignedCard as v, type UserDBWriter as w, type UserDBAuthenticator as x, type UserCourseSettings as y, type UserCourseSetting as z };
1237
+ export { Navigators as $, type AdminDBInterface as A, type UsrCrsDataInterface as B, type CourseDBInterface as C, type DataLayerResult as D, type ClassroomRegistrationDesignation as E, type ClassroomRegistration as F, type GeneratorResult as G, type ClassroomRegistrationDoc as H, type SessionTrackingData as I, type UserConfig as J, type ActivityRecord as K, type CourseRegistration as L, type UserOutcomeRecord as M, type NavigatorConstructor as N, registerNavigator as O, getRegisteredNavigator as P, hasRegisteredNavigator as Q, type ReplanHints as R, type StudySessionItem as S, type TeacherClassroomDBInterface as T, type UserDBInterface as U, getRegisteredNavigatorRole as V, type WeightedCard as W, getRegisteredNavigatorNames as X, initializeNavigatorRegistry as Y, type StrategyContribution as Z, getCardOrigin as _, type UserDBReader as a, NavigatorRole as a0, NavigatorRoles as a1, isGenerator as a2, isFilter as a3, type CardGenerator as a4, type GeneratorContext as a5, type CardGeneratorFactory as a6, type LearnableWeight as a7, type OrchestrationContext as a8, computeDeviation as a9, computeSpread as aa, computeEffectiveWeight as ab, createOrchestrationContext as ac, type DocumentUpdater as ad, newInterval as ae, type CoursesDBInterface as b, type ClassroomDBInterface as c, type CourseInfo as d, type ContentNavigationStrategyData as e, ContentNavigator as f, type AssignedContent as g, type StudyContentSource as h, type StudentClassroomDBInterface as i, type ScheduledCard as j, type StudySessionFailedItem as k, type StudySessionFailedNewItem as l, type StudySessionFailedReviewItem as m, type StudySessionNewItem as n, type StudySessionReviewItem as o, isReview as p, type ContentSourceID as q, getStudySource as r, type CourseRegistrationDoc as s, type AssignedTag as t, type AssignedCourse as u, type AssignedCard as v, type UserDBWriter as w, type UserDBAuthenticator as x, type UserCourseSettings as y, type UserCourseSetting as z };
@@ -1043,14 +1043,133 @@ declare abstract class ContentNavigator implements StudyContentSource {
1043
1043
  * @param limit - Maximum cards to return
1044
1044
  * @returns Cards sorted by score descending, with provenance trails
1045
1045
  */
1046
- getWeightedCards(_limit: number): Promise<WeightedCard[]>;
1046
+ getWeightedCards(_limit: number): Promise<GeneratorResult>;
1047
1047
  /**
1048
1048
  * Set ephemeral hints for the next pipeline run.
1049
1049
  * No-op for non-Pipeline navigators. Pipeline overrides this.
1050
1050
  */
1051
- setEphemeralHints(_hints: Record<string, unknown>): void;
1051
+ setEphemeralHints(_hints: ReplanHints): void;
1052
1052
  }
1053
1053
 
1054
+ /**
1055
+ * Typed ephemeral pipeline hints for a single run.
1056
+ * All fields are optional. Tag/card patterns support `*` wildcards.
1057
+ */
1058
+ interface ReplanHints {
1059
+ /** Multiply scores for cards matching these tag patterns. */
1060
+ boostTags?: Record<string, number>;
1061
+ /** Multiply scores for these specific card IDs (glob patterns). */
1062
+ boostCards?: Record<string, number>;
1063
+ /** Cards matching these tag patterns MUST appear in results. */
1064
+ requireTags?: string[];
1065
+ /** These specific card IDs MUST appear in results. */
1066
+ requireCards?: string[];
1067
+ /** Remove cards matching these tag patterns from results. */
1068
+ excludeTags?: string[];
1069
+ /** Remove these specific card IDs from results. */
1070
+ excludeCards?: string[];
1071
+ /**
1072
+ * Debugging label threaded from the replan requester.
1073
+ * Prefixed with `_` to signal it's metadata, not a scoring hint.
1074
+ */
1075
+ _label?: string;
1076
+ }
1077
+ /**
1078
+ * Context available to generators when producing candidates.
1079
+ *
1080
+ * Built once per getWeightedCards() call by the Pipeline.
1081
+ */
1082
+ interface GeneratorContext {
1083
+ /** User database interface */
1084
+ user: UserDBInterface;
1085
+ /** Course database interface */
1086
+ course: CourseDBInterface;
1087
+ /** User's global ELO score for this course */
1088
+ userElo: number;
1089
+ /** Orchestration context for evolutionary weighting */
1090
+ orchestration?: OrchestrationContext;
1091
+ }
1092
+ /**
1093
+ * Structured generator result.
1094
+ *
1095
+ * Generators may optionally emit one-shot replan hints alongside their
1096
+ * candidate cards. This allows a generator to shape the broader pipeline
1097
+ * without having to enumerate every affected support card directly.
1098
+ */
1099
+ interface GeneratorResult {
1100
+ /** Candidate cards produced by the generator */
1101
+ cards: WeightedCard[];
1102
+ /** Optional one-shot hints to apply after the filter chain */
1103
+ hints?: ReplanHints;
1104
+ }
1105
+ /**
1106
+ * A generator that produces candidate cards with initial scores.
1107
+ *
1108
+ * Generators are the "source" stage of a navigation pipeline.
1109
+ * They query the database for eligible cards and assign initial
1110
+ * suitability scores based on their strategy (ELO proximity,
1111
+ * review urgency, fixed order, etc.).
1112
+ *
1113
+ * ## Implementation Guidelines
1114
+ *
1115
+ * 1. **Create provenance**: Each card should have a provenance entry
1116
+ * with action='generated' documenting why it was selected.
1117
+ *
1118
+ * 2. **Score semantics**: Higher scores = more suitable for presentation.
1119
+ * Scores should be in [0, 1] range for composability.
1120
+ *
1121
+ * 3. **Limit handling**: Respect the limit parameter, but may over-fetch
1122
+ * internally if needed for scoring accuracy.
1123
+ *
1124
+ * 4. **Sort before returning**: Return cards sorted by score descending.
1125
+ *
1126
+ * 5. **Hints are optional**: Generators may return structured results with
1127
+ * `hints` when they need to apply pipeline-wide ephemeral pressure.
1128
+ *
1129
+ * ## Example Implementation
1130
+ *
1131
+ * ```typescript
1132
+ * const myGenerator: CardGenerator = {
1133
+ * name: 'My Generator',
1134
+ * async getWeightedCards(limit, context) {
1135
+ * const candidates = await fetchCandidates(context.course, limit);
1136
+ * return candidates.map(c => ({
1137
+ * cardId: c.id,
1138
+ * courseId: context.course.getCourseID(),
1139
+ * score: computeScore(c, context),
1140
+ * provenance: [{
1141
+ * strategy: 'myGenerator',
1142
+ * strategyName: 'My Generator',
1143
+ * strategyId: 'MY_GENERATOR',
1144
+ * action: 'generated',
1145
+ * score: computeScore(c, context),
1146
+ * reason: 'Explanation of selection'
1147
+ * }]
1148
+ * }));
1149
+ * }
1150
+ * };
1151
+ * ```
1152
+ */
1153
+ interface CardGenerator {
1154
+ /** Human-readable name for this generator */
1155
+ name: string;
1156
+ /**
1157
+ * Produce candidate cards with initial scores.
1158
+ *
1159
+ * @param limit - Maximum number of cards to return
1160
+ * @param context - Shared context (user, course, userElo, etc.)
1161
+ * @returns Cards sorted by score descending, with provenance, optionally
1162
+ * accompanied by one-shot replan hints
1163
+ */
1164
+ getWeightedCards(limit: number, context: GeneratorContext): Promise<GeneratorResult>;
1165
+ }
1166
+ /**
1167
+ * Factory function type for creating generators from configuration.
1168
+ *
1169
+ * Used by PipelineAssembler to instantiate generators from strategy documents.
1170
+ */
1171
+ type CardGeneratorFactory<TConfig = unknown> = (config: TConfig) => CardGenerator;
1172
+
1054
1173
  type StudySessionFailedItem = StudySessionFailedNewItem | StudySessionFailedReviewItem;
1055
1174
  interface StudySessionFailedNewItem extends StudySessionItem {
1056
1175
  status: 'failed-new';
@@ -1101,7 +1220,7 @@ interface StudyContentSource {
1101
1220
  * @param limit - Maximum number of cards to return
1102
1221
  * @returns Cards sorted by score descending
1103
1222
  */
1104
- getWeightedCards(limit: number): Promise<WeightedCard[]>;
1223
+ getWeightedCards(limit: number): Promise<GeneratorResult>;
1105
1224
  /**
1106
1225
  * Get the orchestration context for this source.
1107
1226
  * Used for recording learning outcomes.
@@ -1111,8 +1230,8 @@ interface StudyContentSource {
1111
1230
  * Set ephemeral hints for the next pipeline run.
1112
1231
  * No-op for sources that don't support hints.
1113
1232
  */
1114
- setEphemeralHints?(hints: Record<string, unknown>): void;
1233
+ setEphemeralHints?(hints: ReplanHints): void;
1115
1234
  }
1116
1235
  declare function getStudySource(source: ContentSourceID, user: UserDBInterface): Promise<StudyContentSource>;
1117
1236
 
1118
- export { NavigatorRoles as $, type AdminDBInterface as A, type UsrCrsDataInterface as B, type CourseDBInterface as C, type DataLayerResult as D, type ClassroomRegistrationDesignation as E, type ClassroomRegistration as F, type ClassroomRegistrationDoc as G, type SessionTrackingData as H, type UserConfig as I, type ActivityRecord as J, type CourseRegistration as K, type UserOutcomeRecord as L, registerNavigator as M, type NavigatorConstructor as N, getRegisteredNavigator as O, hasRegisteredNavigator as P, getRegisteredNavigatorRole as Q, getRegisteredNavigatorNames as R, type StudySessionItem as S, type TeacherClassroomDBInterface as T, type UserDBInterface as U, initializeNavigatorRegistry as V, type WeightedCard as W, type StrategyContribution as X, getCardOrigin as Y, Navigators as Z, NavigatorRole as _, type UserDBReader as a, isGenerator as a0, isFilter as a1, type LearnableWeight as a2, type OrchestrationContext as a3, computeDeviation as a4, computeSpread as a5, computeEffectiveWeight as a6, createOrchestrationContext as a7, type DocumentUpdater as a8, newInterval as a9, type CoursesDBInterface as b, type ClassroomDBInterface as c, type CourseInfo as d, type ContentNavigationStrategyData as e, ContentNavigator as f, type AssignedContent as g, type StudyContentSource as h, type StudentClassroomDBInterface as i, type ScheduledCard as j, type StudySessionFailedItem as k, type StudySessionFailedNewItem as l, type StudySessionFailedReviewItem as m, type StudySessionNewItem as n, type StudySessionReviewItem as o, isReview as p, type ContentSourceID as q, getStudySource as r, type CourseRegistrationDoc as s, type AssignedTag as t, type AssignedCourse as u, type AssignedCard as v, type UserDBWriter as w, type UserDBAuthenticator as x, type UserCourseSettings as y, type UserCourseSetting as z };
1237
+ export { Navigators as $, type AdminDBInterface as A, type UsrCrsDataInterface as B, type CourseDBInterface as C, type DataLayerResult as D, type ClassroomRegistrationDesignation as E, type ClassroomRegistration as F, type GeneratorResult as G, type ClassroomRegistrationDoc as H, type SessionTrackingData as I, type UserConfig as J, type ActivityRecord as K, type CourseRegistration as L, type UserOutcomeRecord as M, type NavigatorConstructor as N, registerNavigator as O, getRegisteredNavigator as P, hasRegisteredNavigator as Q, type ReplanHints as R, type StudySessionItem as S, type TeacherClassroomDBInterface as T, type UserDBInterface as U, getRegisteredNavigatorRole as V, type WeightedCard as W, getRegisteredNavigatorNames as X, initializeNavigatorRegistry as Y, type StrategyContribution as Z, getCardOrigin as _, type UserDBReader as a, NavigatorRole as a0, NavigatorRoles as a1, isGenerator as a2, isFilter as a3, type CardGenerator as a4, type GeneratorContext as a5, type CardGeneratorFactory as a6, type LearnableWeight as a7, type OrchestrationContext as a8, computeDeviation as a9, computeSpread as aa, computeEffectiveWeight as ab, createOrchestrationContext as ac, type DocumentUpdater as ad, newInterval as ae, type CoursesDBInterface as b, type ClassroomDBInterface as c, type CourseInfo as d, type ContentNavigationStrategyData as e, ContentNavigator as f, type AssignedContent as g, type StudyContentSource as h, type StudentClassroomDBInterface as i, type ScheduledCard as j, type StudySessionFailedItem as k, type StudySessionFailedNewItem as l, type StudySessionFailedReviewItem as m, type StudySessionNewItem as n, type StudySessionReviewItem as o, isReview as p, type ContentSourceID as q, getStudySource as r, type CourseRegistrationDoc as s, type AssignedTag as t, type AssignedCourse as u, type AssignedCard as v, type UserDBWriter as w, type UserDBAuthenticator as x, type UserCourseSettings as y, type UserCourseSetting as z };
@@ -1,6 +1,6 @@
1
- import { a2 as LearnableWeight, L as UserOutcomeRecord, a3 as OrchestrationContext, W as WeightedCard, U as UserDBInterface, C as CourseDBInterface, X as StrategyContribution } from '../contentSource-DF1nUbPQ.cjs';
2
- export { J as ActivityRecord, A as AdminDBInterface, v as AssignedCard, g as AssignedContent, u as AssignedCourse, t as AssignedTag, c as ClassroomDBInterface, F as ClassroomRegistration, E as ClassroomRegistrationDesignation, G as ClassroomRegistrationDoc, e as ContentNavigationStrategyData, f as ContentNavigator, q as ContentSourceID, d as CourseInfo, K as CourseRegistration, s as CourseRegistrationDoc, b as CoursesDBInterface, N as NavigatorConstructor, _ as NavigatorRole, $ as NavigatorRoles, Z as Navigators, j as ScheduledCard, H as SessionTrackingData, i as StudentClassroomDBInterface, h as StudyContentSource, k as StudySessionFailedItem, l as StudySessionFailedNewItem, m as StudySessionFailedReviewItem, S as StudySessionItem, n as StudySessionNewItem, o as StudySessionReviewItem, T as TeacherClassroomDBInterface, I as UserConfig, z as UserCourseSetting, y as UserCourseSettings, x as UserDBAuthenticator, a as UserDBReader, w as UserDBWriter, B as UsrCrsDataInterface, a4 as computeDeviation, a6 as computeEffectiveWeight, a5 as computeSpread, a7 as createOrchestrationContext, Y as getCardOrigin, O as getRegisteredNavigator, R as getRegisteredNavigatorNames, Q as getRegisteredNavigatorRole, r as getStudySource, P as hasRegisteredNavigator, V as initializeNavigatorRegistry, a1 as isFilter, a0 as isGenerator, p as isReview, M as registerNavigator } from '../contentSource-DF1nUbPQ.cjs';
3
- export { D as DataLayerProvider } from '../dataLayerProvider-BQdfJuBN.cjs';
1
+ import { a7 as LearnableWeight, M as UserOutcomeRecord, a8 as OrchestrationContext, W as WeightedCard, U as UserDBInterface, C as CourseDBInterface, Z as StrategyContribution } from '../contentSource-BMlMwSiG.cjs';
2
+ export { K as ActivityRecord, A as AdminDBInterface, v as AssignedCard, g as AssignedContent, u as AssignedCourse, t as AssignedTag, a4 as CardGenerator, a6 as CardGeneratorFactory, c as ClassroomDBInterface, F as ClassroomRegistration, E as ClassroomRegistrationDesignation, H as ClassroomRegistrationDoc, e as ContentNavigationStrategyData, f as ContentNavigator, q as ContentSourceID, d as CourseInfo, L as CourseRegistration, s as CourseRegistrationDoc, b as CoursesDBInterface, a5 as GeneratorContext, G as GeneratorResult, N as NavigatorConstructor, a0 as NavigatorRole, a1 as NavigatorRoles, $ as Navigators, R as ReplanHints, j as ScheduledCard, I as SessionTrackingData, i as StudentClassroomDBInterface, h as StudyContentSource, k as StudySessionFailedItem, l as StudySessionFailedNewItem, m as StudySessionFailedReviewItem, S as StudySessionItem, n as StudySessionNewItem, o as StudySessionReviewItem, T as TeacherClassroomDBInterface, J as UserConfig, z as UserCourseSetting, y as UserCourseSettings, x as UserDBAuthenticator, a as UserDBReader, w as UserDBWriter, B as UsrCrsDataInterface, a9 as computeDeviation, ab as computeEffectiveWeight, aa as computeSpread, ac as createOrchestrationContext, _ as getCardOrigin, P as getRegisteredNavigator, X as getRegisteredNavigatorNames, V as getRegisteredNavigatorRole, r as getStudySource, Q as hasRegisteredNavigator, Y as initializeNavigatorRegistry, a3 as isFilter, a2 as isGenerator, p as isReview, O as registerNavigator } from '../contentSource-BMlMwSiG.cjs';
3
+ export { D as DataLayerProvider } from '../dataLayerProvider-BEqB8VBR.cjs';
4
4
  import { D as DocType, i as QuestionRecord, b as DocTypePrefixes, C as CardHistory, c as CardRecord } from '../types-legacy-JXDxinpU.cjs';
5
5
  export { d as CardData, e as CourseListData, g as DataShapeData, f as DisplayableData, F as Field, G as GuestUsername, Q as QualifiedCardID, h as QuestionData, S as SkuilderCourseData, a as Tag, T as TagStub, l as log } from '../types-legacy-JXDxinpU.cjs';
6
6
  import { DataShape, ParsedCard } from '@vue-skuilder/common';
@@ -304,85 +304,6 @@ interface CardFilter {
304
304
  */
305
305
  type CardFilterFactory<TConfig = unknown> = (config: TConfig) => CardFilter;
306
306
 
307
- /**
308
- * Context available to generators when producing candidates.
309
- *
310
- * Built once per getWeightedCards() call by the Pipeline.
311
- */
312
- interface GeneratorContext {
313
- /** User database interface */
314
- user: UserDBInterface;
315
- /** Course database interface */
316
- course: CourseDBInterface;
317
- /** User's global ELO score for this course */
318
- userElo: number;
319
- /** Orchestration context for evolutionary weighting */
320
- orchestration?: OrchestrationContext;
321
- }
322
- /**
323
- * A generator that produces candidate cards with initial scores.
324
- *
325
- * Generators are the "source" stage of a navigation pipeline.
326
- * They query the database for eligible cards and assign initial
327
- * suitability scores based on their strategy (ELO proximity,
328
- * review urgency, fixed order, etc.).
329
- *
330
- * ## Implementation Guidelines
331
- *
332
- * 1. **Create provenance**: Each card should have a provenance entry
333
- * with action='generated' documenting why it was selected.
334
- *
335
- * 2. **Score semantics**: Higher scores = more suitable for presentation.
336
- * Scores should be in [0, 1] range for composability.
337
- *
338
- * 3. **Limit handling**: Respect the limit parameter, but may over-fetch
339
- * internally if needed for scoring accuracy.
340
- *
341
- * 4. **Sort before returning**: Return cards sorted by score descending.
342
- *
343
- * ## Example Implementation
344
- *
345
- * ```typescript
346
- * const myGenerator: CardGenerator = {
347
- * name: 'My Generator',
348
- * async getWeightedCards(limit, context) {
349
- * const candidates = await fetchCandidates(context.course, limit);
350
- * return candidates.map(c => ({
351
- * cardId: c.id,
352
- * courseId: context.course.getCourseID(),
353
- * score: computeScore(c, context),
354
- * provenance: [{
355
- * strategy: 'myGenerator',
356
- * strategyName: 'My Generator',
357
- * strategyId: 'MY_GENERATOR',
358
- * action: 'generated',
359
- * score: computeScore(c, context),
360
- * reason: 'Explanation of selection'
361
- * }]
362
- * }));
363
- * }
364
- * };
365
- * ```
366
- */
367
- interface CardGenerator {
368
- /** Human-readable name for this generator */
369
- name: string;
370
- /**
371
- * Produce candidate cards with initial scores.
372
- *
373
- * @param limit - Maximum number of cards to return
374
- * @param context - Shared context (user, course, userElo, etc.)
375
- * @returns Cards sorted by score descending, with provenance
376
- */
377
- getWeightedCards(limit: number, context: GeneratorContext): Promise<WeightedCard[]>;
378
- }
379
- /**
380
- * Factory function type for creating generators from configuration.
381
- *
382
- * Used by PipelineAssembler to instantiate generators from strategy documents.
383
- */
384
- type CardGeneratorFactory<TConfig = unknown> = (config: TConfig) => CardGenerator;
385
-
386
307
  /**
387
308
  * Diagnosis of the full card space for the current user.
388
309
  */
@@ -432,6 +353,8 @@ interface PipelineRunReport {
432
353
  timestamp: Date;
433
354
  courseId: string;
434
355
  courseName?: string;
356
+ /** User's global ELO at the time of this pipeline run */
357
+ userElo?: number;
435
358
  generatorName: string;
436
359
  generators?: GeneratorSummary[];
437
360
  generatedCount: number;
@@ -444,6 +367,8 @@ interface PipelineRunReport {
444
367
  courseId: string;
445
368
  origin: 'new' | 'review' | 'unknown';
446
369
  finalScore: number;
370
+ /** Card's ELO (parsed from ELO generator provenance, if available) */
371
+ cardElo?: number;
447
372
  provenance: StrategyContribution[];
448
373
  tags?: string[];
449
374
  selected: boolean;
@@ -473,6 +398,17 @@ declare const pipelineDebugAPI: {
473
398
  * Explain why reviews may or may not have been selected.
474
399
  */
475
400
  explainReviews(): void;
401
+ /**
402
+ * Show prescribed-related cards from the most recent run.
403
+ *
404
+ * Highlights:
405
+ * - cards directly generated by the prescribed strategy
406
+ * - blocked prescribed targets mentioned in provenance
407
+ * - support tags resolved for blocked targets
408
+ *
409
+ * @param groupId - Optional prescribed group ID filter (e.g. 'intro-core')
410
+ */
411
+ showPrescribed(groupId?: string): void;
476
412
  /**
477
413
  * Show all runs in compact format.
478
414
  */
@@ -508,6 +444,13 @@ declare const pipelineDebugAPI: {
508
444
  * @param threshold - Score threshold for "well indicated" (default 0.10)
509
445
  */
510
446
  diagnoseCardSpace(threshold?: number): Promise<CardSpaceDiagnosis | null>;
447
+ /**
448
+ * Show user's per-tag ELO data. Useful for diagnosing hierarchy gate status.
449
+ *
450
+ * @param tagFilter - Optional glob pattern(s) to filter tags.
451
+ * Examples: 'gpc:expose:*', 'gpc:intro:t-T', ['gpc:expose:t-*', 'gpc:intro:t-*']
452
+ */
453
+ showTagElo(tagFilter?: string | string[]): Promise<void>;
511
454
  /**
512
455
  * Show help.
513
456
  */
@@ -700,4 +643,4 @@ declare const userDBDebugAPI: {
700
643
  */
701
644
  declare function mountUserDBDebugger(): void;
702
645
 
703
- export { type BulkCardProcessorConfig, type CardFilter, type CardFilterFactory, type CardGenerator, type CardGeneratorFactory, CardHistory, CardRecord, CourseDBInterface, DocType, DocTypePrefixes, type FilterContext, type FilterImpact, type GeneratorContext, type GeneratorSummary, type GradientObservation, type GradientResult, type ImportResult, LearnableWeight, Loggable, OrchestrationContext, type PeriodUpdateInput, type PeriodUpdateResult, type PipelineRunReport, QuestionRecord, type SignalConfig, StrategyContribution, type StrategyLearningState, type StrategyStateDoc, type StrategyStateId, UserDBInterface, UserOutcomeRecord, WeightedCard, aggregateOutcomesForGradient, areQuestionRecords, buildStrategyStateId, computeOutcomeSignal, computeStrategyGradient, docIsDeleted, getCardHistoryID, getDefaultLearnableWeight, importParsedCards, isQuestionRecord, mountPipelineDebugger, mountUserDBDebugger, parseCardHistoryID, pipelineDebugAPI, recordUserOutcome, runPeriodUpdate, scoreAccuracyInZone, updateLearningState, updateStrategyWeight, userDBDebugAPI, validateProcessorConfig };
646
+ export { type BulkCardProcessorConfig, type CardFilter, type CardFilterFactory, CardHistory, CardRecord, CourseDBInterface, DocType, DocTypePrefixes, type FilterContext, type FilterImpact, type GeneratorSummary, type GradientObservation, type GradientResult, type ImportResult, LearnableWeight, Loggable, OrchestrationContext, type PeriodUpdateInput, type PeriodUpdateResult, type PipelineRunReport, QuestionRecord, type SignalConfig, StrategyContribution, type StrategyLearningState, type StrategyStateDoc, type StrategyStateId, UserDBInterface, UserOutcomeRecord, WeightedCard, aggregateOutcomesForGradient, areQuestionRecords, buildStrategyStateId, computeOutcomeSignal, computeStrategyGradient, docIsDeleted, getCardHistoryID, getDefaultLearnableWeight, importParsedCards, isQuestionRecord, mountPipelineDebugger, mountUserDBDebugger, parseCardHistoryID, pipelineDebugAPI, recordUserOutcome, runPeriodUpdate, scoreAccuracyInZone, updateLearningState, updateStrategyWeight, userDBDebugAPI, validateProcessorConfig };
@@ -1,6 +1,6 @@
1
- import { a2 as LearnableWeight, L as UserOutcomeRecord, a3 as OrchestrationContext, W as WeightedCard, U as UserDBInterface, C as CourseDBInterface, X as StrategyContribution } from '../contentSource-Bdwkvqa8.js';
2
- export { J as ActivityRecord, A as AdminDBInterface, v as AssignedCard, g as AssignedContent, u as AssignedCourse, t as AssignedTag, c as ClassroomDBInterface, F as ClassroomRegistration, E as ClassroomRegistrationDesignation, G as ClassroomRegistrationDoc, e as ContentNavigationStrategyData, f as ContentNavigator, q as ContentSourceID, d as CourseInfo, K as CourseRegistration, s as CourseRegistrationDoc, b as CoursesDBInterface, N as NavigatorConstructor, _ as NavigatorRole, $ as NavigatorRoles, Z as Navigators, j as ScheduledCard, H as SessionTrackingData, i as StudentClassroomDBInterface, h as StudyContentSource, k as StudySessionFailedItem, l as StudySessionFailedNewItem, m as StudySessionFailedReviewItem, S as StudySessionItem, n as StudySessionNewItem, o as StudySessionReviewItem, T as TeacherClassroomDBInterface, I as UserConfig, z as UserCourseSetting, y as UserCourseSettings, x as UserDBAuthenticator, a as UserDBReader, w as UserDBWriter, B as UsrCrsDataInterface, a4 as computeDeviation, a6 as computeEffectiveWeight, a5 as computeSpread, a7 as createOrchestrationContext, Y as getCardOrigin, O as getRegisteredNavigator, R as getRegisteredNavigatorNames, Q as getRegisteredNavigatorRole, r as getStudySource, P as hasRegisteredNavigator, V as initializeNavigatorRegistry, a1 as isFilter, a0 as isGenerator, p as isReview, M as registerNavigator } from '../contentSource-Bdwkvqa8.js';
3
- export { D as DataLayerProvider } from '../dataLayerProvider-BKmVoyJR.js';
1
+ import { a7 as LearnableWeight, M as UserOutcomeRecord, a8 as OrchestrationContext, W as WeightedCard, U as UserDBInterface, C as CourseDBInterface, Z as StrategyContribution } from '../contentSource-Ht3N2f-y.js';
2
+ export { K as ActivityRecord, A as AdminDBInterface, v as AssignedCard, g as AssignedContent, u as AssignedCourse, t as AssignedTag, a4 as CardGenerator, a6 as CardGeneratorFactory, c as ClassroomDBInterface, F as ClassroomRegistration, E as ClassroomRegistrationDesignation, H as ClassroomRegistrationDoc, e as ContentNavigationStrategyData, f as ContentNavigator, q as ContentSourceID, d as CourseInfo, L as CourseRegistration, s as CourseRegistrationDoc, b as CoursesDBInterface, a5 as GeneratorContext, G as GeneratorResult, N as NavigatorConstructor, a0 as NavigatorRole, a1 as NavigatorRoles, $ as Navigators, R as ReplanHints, j as ScheduledCard, I as SessionTrackingData, i as StudentClassroomDBInterface, h as StudyContentSource, k as StudySessionFailedItem, l as StudySessionFailedNewItem, m as StudySessionFailedReviewItem, S as StudySessionItem, n as StudySessionNewItem, o as StudySessionReviewItem, T as TeacherClassroomDBInterface, J as UserConfig, z as UserCourseSetting, y as UserCourseSettings, x as UserDBAuthenticator, a as UserDBReader, w as UserDBWriter, B as UsrCrsDataInterface, a9 as computeDeviation, ab as computeEffectiveWeight, aa as computeSpread, ac as createOrchestrationContext, _ as getCardOrigin, P as getRegisteredNavigator, X as getRegisteredNavigatorNames, V as getRegisteredNavigatorRole, r as getStudySource, Q as hasRegisteredNavigator, Y as initializeNavigatorRegistry, a3 as isFilter, a2 as isGenerator, p as isReview, O as registerNavigator } from '../contentSource-Ht3N2f-y.js';
3
+ export { D as DataLayerProvider } from '../dataLayerProvider-DObSXjnf.js';
4
4
  import { D as DocType, i as QuestionRecord, b as DocTypePrefixes, C as CardHistory, c as CardRecord } from '../types-legacy-JXDxinpU.js';
5
5
  export { d as CardData, e as CourseListData, g as DataShapeData, f as DisplayableData, F as Field, G as GuestUsername, Q as QualifiedCardID, h as QuestionData, S as SkuilderCourseData, a as Tag, T as TagStub, l as log } from '../types-legacy-JXDxinpU.js';
6
6
  import { DataShape, ParsedCard } from '@vue-skuilder/common';
@@ -304,85 +304,6 @@ interface CardFilter {
304
304
  */
305
305
  type CardFilterFactory<TConfig = unknown> = (config: TConfig) => CardFilter;
306
306
 
307
- /**
308
- * Context available to generators when producing candidates.
309
- *
310
- * Built once per getWeightedCards() call by the Pipeline.
311
- */
312
- interface GeneratorContext {
313
- /** User database interface */
314
- user: UserDBInterface;
315
- /** Course database interface */
316
- course: CourseDBInterface;
317
- /** User's global ELO score for this course */
318
- userElo: number;
319
- /** Orchestration context for evolutionary weighting */
320
- orchestration?: OrchestrationContext;
321
- }
322
- /**
323
- * A generator that produces candidate cards with initial scores.
324
- *
325
- * Generators are the "source" stage of a navigation pipeline.
326
- * They query the database for eligible cards and assign initial
327
- * suitability scores based on their strategy (ELO proximity,
328
- * review urgency, fixed order, etc.).
329
- *
330
- * ## Implementation Guidelines
331
- *
332
- * 1. **Create provenance**: Each card should have a provenance entry
333
- * with action='generated' documenting why it was selected.
334
- *
335
- * 2. **Score semantics**: Higher scores = more suitable for presentation.
336
- * Scores should be in [0, 1] range for composability.
337
- *
338
- * 3. **Limit handling**: Respect the limit parameter, but may over-fetch
339
- * internally if needed for scoring accuracy.
340
- *
341
- * 4. **Sort before returning**: Return cards sorted by score descending.
342
- *
343
- * ## Example Implementation
344
- *
345
- * ```typescript
346
- * const myGenerator: CardGenerator = {
347
- * name: 'My Generator',
348
- * async getWeightedCards(limit, context) {
349
- * const candidates = await fetchCandidates(context.course, limit);
350
- * return candidates.map(c => ({
351
- * cardId: c.id,
352
- * courseId: context.course.getCourseID(),
353
- * score: computeScore(c, context),
354
- * provenance: [{
355
- * strategy: 'myGenerator',
356
- * strategyName: 'My Generator',
357
- * strategyId: 'MY_GENERATOR',
358
- * action: 'generated',
359
- * score: computeScore(c, context),
360
- * reason: 'Explanation of selection'
361
- * }]
362
- * }));
363
- * }
364
- * };
365
- * ```
366
- */
367
- interface CardGenerator {
368
- /** Human-readable name for this generator */
369
- name: string;
370
- /**
371
- * Produce candidate cards with initial scores.
372
- *
373
- * @param limit - Maximum number of cards to return
374
- * @param context - Shared context (user, course, userElo, etc.)
375
- * @returns Cards sorted by score descending, with provenance
376
- */
377
- getWeightedCards(limit: number, context: GeneratorContext): Promise<WeightedCard[]>;
378
- }
379
- /**
380
- * Factory function type for creating generators from configuration.
381
- *
382
- * Used by PipelineAssembler to instantiate generators from strategy documents.
383
- */
384
- type CardGeneratorFactory<TConfig = unknown> = (config: TConfig) => CardGenerator;
385
-
386
307
  /**
387
308
  * Diagnosis of the full card space for the current user.
388
309
  */
@@ -432,6 +353,8 @@ interface PipelineRunReport {
432
353
  timestamp: Date;
433
354
  courseId: string;
434
355
  courseName?: string;
356
+ /** User's global ELO at the time of this pipeline run */
357
+ userElo?: number;
435
358
  generatorName: string;
436
359
  generators?: GeneratorSummary[];
437
360
  generatedCount: number;
@@ -444,6 +367,8 @@ interface PipelineRunReport {
444
367
  courseId: string;
445
368
  origin: 'new' | 'review' | 'unknown';
446
369
  finalScore: number;
370
+ /** Card's ELO (parsed from ELO generator provenance, if available) */
371
+ cardElo?: number;
447
372
  provenance: StrategyContribution[];
448
373
  tags?: string[];
449
374
  selected: boolean;
@@ -473,6 +398,17 @@ declare const pipelineDebugAPI: {
473
398
  * Explain why reviews may or may not have been selected.
474
399
  */
475
400
  explainReviews(): void;
401
+ /**
402
+ * Show prescribed-related cards from the most recent run.
403
+ *
404
+ * Highlights:
405
+ * - cards directly generated by the prescribed strategy
406
+ * - blocked prescribed targets mentioned in provenance
407
+ * - support tags resolved for blocked targets
408
+ *
409
+ * @param groupId - Optional prescribed group ID filter (e.g. 'intro-core')
410
+ */
411
+ showPrescribed(groupId?: string): void;
476
412
  /**
477
413
  * Show all runs in compact format.
478
414
  */
@@ -508,6 +444,13 @@ declare const pipelineDebugAPI: {
508
444
  * @param threshold - Score threshold for "well indicated" (default 0.10)
509
445
  */
510
446
  diagnoseCardSpace(threshold?: number): Promise<CardSpaceDiagnosis | null>;
447
+ /**
448
+ * Show user's per-tag ELO data. Useful for diagnosing hierarchy gate status.
449
+ *
450
+ * @param tagFilter - Optional glob pattern(s) to filter tags.
451
+ * Examples: 'gpc:expose:*', 'gpc:intro:t-T', ['gpc:expose:t-*', 'gpc:intro:t-*']
452
+ */
453
+ showTagElo(tagFilter?: string | string[]): Promise<void>;
511
454
  /**
512
455
  * Show help.
513
456
  */
@@ -700,4 +643,4 @@ declare const userDBDebugAPI: {
700
643
  */
701
644
  declare function mountUserDBDebugger(): void;
702
645
 
703
- export { type BulkCardProcessorConfig, type CardFilter, type CardFilterFactory, type CardGenerator, type CardGeneratorFactory, CardHistory, CardRecord, CourseDBInterface, DocType, DocTypePrefixes, type FilterContext, type FilterImpact, type GeneratorContext, type GeneratorSummary, type GradientObservation, type GradientResult, type ImportResult, LearnableWeight, Loggable, OrchestrationContext, type PeriodUpdateInput, type PeriodUpdateResult, type PipelineRunReport, QuestionRecord, type SignalConfig, StrategyContribution, type StrategyLearningState, type StrategyStateDoc, type StrategyStateId, UserDBInterface, UserOutcomeRecord, WeightedCard, aggregateOutcomesForGradient, areQuestionRecords, buildStrategyStateId, computeOutcomeSignal, computeStrategyGradient, docIsDeleted, getCardHistoryID, getDefaultLearnableWeight, importParsedCards, isQuestionRecord, mountPipelineDebugger, mountUserDBDebugger, parseCardHistoryID, pipelineDebugAPI, recordUserOutcome, runPeriodUpdate, scoreAccuracyInZone, updateLearningState, updateStrategyWeight, userDBDebugAPI, validateProcessorConfig };
646
+ export { type BulkCardProcessorConfig, type CardFilter, type CardFilterFactory, CardHistory, CardRecord, CourseDBInterface, DocType, DocTypePrefixes, type FilterContext, type FilterImpact, type GeneratorSummary, type GradientObservation, type GradientResult, type ImportResult, LearnableWeight, Loggable, OrchestrationContext, type PeriodUpdateInput, type PeriodUpdateResult, type PipelineRunReport, QuestionRecord, type SignalConfig, StrategyContribution, type StrategyLearningState, type StrategyStateDoc, type StrategyStateId, UserDBInterface, UserOutcomeRecord, WeightedCard, aggregateOutcomesForGradient, areQuestionRecords, buildStrategyStateId, computeOutcomeSignal, computeStrategyGradient, docIsDeleted, getCardHistoryID, getDefaultLearnableWeight, importParsedCards, isQuestionRecord, mountPipelineDebugger, mountUserDBDebugger, parseCardHistoryID, pipelineDebugAPI, recordUserOutcome, runPeriodUpdate, scoreAccuracyInZone, updateLearningState, updateStrategyWeight, userDBDebugAPI, validateProcessorConfig };