@happyvertical/smrt-education 0.57.52 → 0.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/AGENTS.md +18 -8
  2. package/README.md +36 -2
  3. package/agents/class-crunchlabs.md +83 -0
  4. package/agents/course-bundle-import.md +108 -18
  5. package/agents/course-work-design.md +144 -0
  6. package/agents/group-sharing.md +5 -1
  7. package/agents/learner-plan.md +3 -3
  8. package/agents/learner-service.md +1 -1
  9. package/agents/lesson-materials.md +52 -0
  10. package/agents/{workbook-service.md → lesson-work-service.md} +164 -95
  11. package/agents/{workbook-test-matrix.md → lesson-work-test-matrix.md} +3 -3
  12. package/agents/photo-intake.md +37 -50
  13. package/agents/question-records.md +1 -1
  14. package/agents/submission-service.md +22 -6
  15. package/dist/catalog-contracts.d.ts +6 -2
  16. package/dist/catalog-contracts.d.ts.map +1 -1
  17. package/dist/catalog-materialization-service.d.ts.map +1 -1
  18. package/dist/catalog-policy.d.ts +11 -1
  19. package/dist/catalog-policy.d.ts.map +1 -1
  20. package/dist/catalog-preview.d.ts +6 -1
  21. package/dist/catalog-preview.d.ts.map +1 -1
  22. package/dist/catalog-service.d.ts +1 -1
  23. package/dist/catalog-service.d.ts.map +1 -1
  24. package/dist/catalog.d.ts +11 -0
  25. package/dist/catalog.d.ts.map +1 -1
  26. package/dist/chunks/course-authoring-contracts-C4Hqba-e.js +131 -0
  27. package/dist/chunks/course-authoring-contracts-C4Hqba-e.js.map +1 -0
  28. package/dist/chunks/course-bundle-zip-5KUe3C5H.js +323 -0
  29. package/dist/chunks/course-bundle-zip-5KUe3C5H.js.map +1 -0
  30. package/dist/chunks/{workbook-photo-service-BtMQsbhq.js → workbook-photo-service-CjcB0y8Y.js} +6151 -5091
  31. package/dist/chunks/workbook-photo-service-CjcB0y8Y.js.map +1 -0
  32. package/dist/course-authoring-contracts.d.ts +6 -2
  33. package/dist/course-authoring-contracts.d.ts.map +1 -1
  34. package/dist/course-authoring-service.d.ts.map +1 -1
  35. package/dist/course-bundle-contracts.d.ts +21 -3
  36. package/dist/course-bundle-contracts.d.ts.map +1 -1
  37. package/dist/course-bundle-manifest-util.d.ts +15 -0
  38. package/dist/course-bundle-manifest-util.d.ts.map +1 -0
  39. package/dist/course-bundle-manifest-v2.d.ts +66 -0
  40. package/dist/course-bundle-manifest-v2.d.ts.map +1 -0
  41. package/dist/course-bundle-models.d.ts +29 -1
  42. package/dist/course-bundle-models.d.ts.map +1 -1
  43. package/dist/course-bundle-service.d.ts +104 -5
  44. package/dist/course-bundle-service.d.ts.map +1 -1
  45. package/dist/course-bundle.d.ts +81 -2
  46. package/dist/course-bundle.d.ts.map +1 -1
  47. package/dist/course-work-migration.d.ts +27 -0
  48. package/dist/course-work-migration.d.ts.map +1 -0
  49. package/dist/document-converter.d.ts +30 -18
  50. package/dist/document-converter.d.ts.map +1 -1
  51. package/dist/group-sharing-contracts.d.ts +3 -3
  52. package/dist/group-sharing-contracts.d.ts.map +1 -1
  53. package/dist/group-sharing-policy.d.ts +4 -4
  54. package/dist/group-sharing-policy.d.ts.map +1 -1
  55. package/dist/group-sharing-reader.d.ts.map +1 -1
  56. package/dist/hearth-catalog-providers.d.ts +1 -1
  57. package/dist/hearth-catalog-providers.d.ts.map +1 -1
  58. package/dist/hearth-class-crunchlabs.d.ts +94 -0
  59. package/dist/hearth-class-crunchlabs.d.ts.map +1 -0
  60. package/dist/index.d.ts +18 -13
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +1968 -419
  63. package/dist/index.js.map +1 -1
  64. package/dist/ingestion.d.ts +12 -11
  65. package/dist/ingestion.d.ts.map +1 -1
  66. package/dist/ingestion.js +63 -56
  67. package/dist/ingestion.js.map +1 -1
  68. package/dist/learner-plan-service.d.ts +1 -1
  69. package/dist/learner-plan-service.d.ts.map +1 -1
  70. package/dist/learner-service.d.ts +19 -5
  71. package/dist/learner-service.d.ts.map +1 -1
  72. package/dist/lesson-assets.d.ts +66 -2
  73. package/dist/lesson-assets.d.ts.map +1 -1
  74. package/dist/lesson-pages.d.ts +36 -0
  75. package/dist/lesson-pages.d.ts.map +1 -0
  76. package/dist/{workbook-completion.d.ts → lesson-work-completion.d.ts} +10 -10
  77. package/dist/lesson-work-completion.d.ts.map +1 -0
  78. package/dist/{workbook-contracts.d.ts → lesson-work-contracts.d.ts} +100 -52
  79. package/dist/lesson-work-contracts.d.ts.map +1 -0
  80. package/dist/lesson-work-models.d.ts +118 -0
  81. package/dist/lesson-work-models.d.ts.map +1 -0
  82. package/dist/lesson-work-service.d.ts +239 -0
  83. package/dist/lesson-work-service.d.ts.map +1 -0
  84. package/dist/manifest.json +6830 -5333
  85. package/dist/node.d.ts +3 -0
  86. package/dist/node.d.ts.map +1 -0
  87. package/dist/node.js +134 -0
  88. package/dist/node.js.map +1 -0
  89. package/dist/smrt-knowledge.json +2260 -1705
  90. package/dist/sources/class-crunchlabs-files.d.ts +8 -0
  91. package/dist/sources/class-crunchlabs-files.d.ts.map +1 -0
  92. package/dist/sources/class-crunchlabs.d.ts +217 -0
  93. package/dist/sources/class-crunchlabs.d.ts.map +1 -0
  94. package/dist/submission-service.d.ts +135 -5
  95. package/dist/submission-service.d.ts.map +1 -1
  96. package/dist/submissions.d.ts +2 -0
  97. package/dist/submissions.d.ts.map +1 -1
  98. package/dist/work-answer-regions.d.ts +11 -0
  99. package/dist/work-answer-regions.d.ts.map +1 -0
  100. package/dist/work-layout.d.ts +13 -0
  101. package/dist/work-layout.d.ts.map +1 -0
  102. package/dist/workbook-photo-contracts.d.ts +9 -7
  103. package/dist/workbook-photo-contracts.d.ts.map +1 -1
  104. package/dist/workbook-photo-ingestion.d.ts +1 -1
  105. package/dist/workbook-photo-ingestion.d.ts.map +1 -1
  106. package/dist/workbook-photo-models.d.ts +5 -5
  107. package/dist/workbook-photo-models.d.ts.map +1 -1
  108. package/dist/workbook-photo-service.d.ts +13 -10
  109. package/dist/workbook-photo-service.d.ts.map +1 -1
  110. package/package.json +12 -8
  111. package/dist/chunks/workbook-photo-service-BtMQsbhq.js.map +0 -1
  112. package/dist/workbook-answer-regions.d.ts +0 -11
  113. package/dist/workbook-answer-regions.d.ts.map +0 -1
  114. package/dist/workbook-completion.d.ts.map +0 -1
  115. package/dist/workbook-contracts.d.ts.map +0 -1
  116. package/dist/workbook-layout.d.ts +0 -13
  117. package/dist/workbook-layout.d.ts.map +0 -1
  118. package/dist/workbook-models.d.ts +0 -129
  119. package/dist/workbook-models.d.ts.map +0 -1
  120. package/dist/workbook-service.d.ts +0 -163
  121. package/dist/workbook-service.d.ts.map +0 -1
@@ -0,0 +1,8 @@
1
+ import type { ClassCrunchLabsFileSource } from './class-crunchlabs.js';
2
+ /**
3
+ * Every unit file under `directory`: plain files, and the entries of any `.zip`
4
+ * (a zip is not expanded into the filesystem, and a zip inside a zip is not
5
+ * opened). Symbolic links are skipped; hidden files are ignored.
6
+ */
7
+ export declare function folderClassCrunchLabsSource(directory: string): ClassCrunchLabsFileSource;
8
+ //# sourceMappingURL=class-crunchlabs-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class-crunchlabs-files.d.ts","sourceRoot":"","sources":["../../src/sources/class-crunchlabs-files.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAEV,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAiJ/B;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,GAChB,yBAAyB,CAgD3B"}
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Class CrunchLabs unit downloads to a course bundle (SMRT #4616).
3
+ *
4
+ * A unit download is a folder (or the zip parts a Drive export splits it into)
5
+ * holding `<Unit>_All Unit Wide Materials` and `<Unit>_Lesson <n>` folders. Files
6
+ * are lettered: A teacher manual, B slides, C student mission log, D status check
7
+ * assessment (plus guidance, editable), E handouts, F extras, G videos. The
8
+ * videos are not read: their names (`Lnn.step_Video_Kind_Title`) are matched,
9
+ * by unit, lesson and step, to the unit's YouTube course playlist and become
10
+ * external references.
11
+ *
12
+ * `buildClassCrunchLabsBundle` reads such a download and returns a manifest
13
+ * version 2 bundle for `CourseBundleImportService`. Nothing here touches the
14
+ * network: the playlist comes from an injected `ClassCrunchLabsPlaylistSource`,
15
+ * and files from an injected `ClassCrunchLabsFileSource` (Node folder and zip
16
+ * readers are in `class-crunchlabs-files.ts`). The files are CrunchLabs' own
17
+ * downloads, never hosted by us.
18
+ */
19
+ import type { DocumentConverter, OfficeDocumentKind } from '../document-converter.js';
20
+ export declare const CLASS_CRUNCHLABS_PROVIDER_ID: "class-crunchlabs";
21
+ export declare const CLASS_CRUNCHLABS_SUBJECT = "Science";
22
+ /** The licence a family's own copy of a CrunchLabs unit carries. */
23
+ export declare const CLASS_CRUNCHLABS_LICENSE_KIND: "personal-use-copy";
24
+ export declare class ClassCrunchLabsError extends Error {
25
+ readonly code: 'no_unit' | 'multiple_units' | 'empty_unit' | 'too_large' | 'access_denied';
26
+ readonly detail: readonly string[];
27
+ constructor(code: 'no_unit' | 'multiple_units' | 'empty_unit' | 'too_large' | 'access_denied', message: string, detail?: readonly string[]);
28
+ }
29
+ /** One file of a unit download. Bytes are read lazily, and only for files that are used. */
30
+ export interface ClassCrunchLabsFile {
31
+ /** Path inside its source (folder-relative, or the zip entry name). */
32
+ path: string;
33
+ size: number;
34
+ /** CRC-32 (lower-case hex) when known without reading, used to spot repeated exports. */
35
+ crc32?: string;
36
+ /** Orders repeated exports of the same unit: the larger value is the newer export. */
37
+ exportId?: string;
38
+ read(): Promise<Uint8Array>;
39
+ }
40
+ export interface ClassCrunchLabsFileSource {
41
+ files(): Promise<ClassCrunchLabsFile[]>;
42
+ }
43
+ /** An in-memory source (tests, or a host that already holds the files). */
44
+ export declare function memoryClassCrunchLabsSource(files: ReadonlyArray<{
45
+ path: string;
46
+ bytes?: Uint8Array;
47
+ size?: number;
48
+ exportId?: string;
49
+ crc32?: string;
50
+ }>): ClassCrunchLabsFileSource;
51
+ export interface ClassCrunchLabsPlaylistItem {
52
+ videoId: string;
53
+ title: string;
54
+ position: number;
55
+ }
56
+ /** A YouTube course playlist of the @ClassCrunchLabs channel. */
57
+ export interface ClassCrunchLabsPlaylist {
58
+ id: string;
59
+ title: string;
60
+ /** The unit the playlist belongs to when the source knows it; else derived from the title. */
61
+ unit?: string;
62
+ items: ClassCrunchLabsPlaylistItem[];
63
+ }
64
+ /** Injected: tests use fixtures, a host fetches the channel's playlists. Never called from a test with a network. */
65
+ export interface ClassCrunchLabsPlaylistSource {
66
+ playlists(): Promise<ClassCrunchLabsPlaylist[]>;
67
+ }
68
+ export type ClassCrunchLabsPageCounter = (input: {
69
+ bytes: Uint8Array;
70
+ kind: 'pdf' | OfficeDocumentKind;
71
+ }) => Promise<number | null>;
72
+ /** Case, punctuation and spacing insensitive key. */
73
+ export declare const classCrunchLabsKey: (value: string) => string;
74
+ export interface ClassCrunchLabsVideoName {
75
+ lesson: number;
76
+ /** Lower-case step such as `6` or `1b`. */
77
+ step: string;
78
+ /** The kind token as named, for example `MaterialsPrep`. */
79
+ kind: string;
80
+ /** Humanized title, `''` when the name has none. */
81
+ title: string;
82
+ }
83
+ /** Parse `Lnn.step_Video_Kind_Title_Unit.mp4`; null when the name is not a lesson video. */
84
+ export declare function parseClassCrunchLabsVideoName(fileName: string, unit: string): ClassCrunchLabsVideoName | null;
85
+ export interface ClassCrunchLabsVideoMatch {
86
+ lesson: number;
87
+ step: string;
88
+ kind: string;
89
+ title: string;
90
+ videoId: string;
91
+ playlistItem: string;
92
+ }
93
+ export interface ClassCrunchLabsVideoMiss {
94
+ lesson: number;
95
+ step: string;
96
+ kind: string;
97
+ title: string;
98
+ reason: 'no_playlist' | 'no_item' | 'ambiguous' | 'item_taken';
99
+ }
100
+ /** The (lesson, step) a playlist item title names: `L03.6`, `Lesson 3 ... Step 6`. */
101
+ export declare function parsePlaylistItemTitle(title: string): {
102
+ lesson: number;
103
+ step: string;
104
+ } | null;
105
+ /** The playlist for a unit: its title (or `unit`) names the unit; the shortest title wins. */
106
+ export declare function pickUnitPlaylist(playlists: readonly ClassCrunchLabsPlaylist[], unit: string): ClassCrunchLabsPlaylist | null;
107
+ /**
108
+ * Match lesson videos to playlist items by lesson and step. Two videos that
109
+ * share a step (a materials-prep and a hands-on video) are told apart by the
110
+ * item title naming their title or kind; if that cannot decide, they are left
111
+ * unmatched as `ambiguous` rather than guessed. Each item is used once.
112
+ */
113
+ export declare function matchClassCrunchLabsVideos(videos: readonly ClassCrunchLabsVideoName[], playlist: ClassCrunchLabsPlaylist | null): {
114
+ matched: ClassCrunchLabsVideoMatch[];
115
+ unmatched: ClassCrunchLabsVideoMiss[];
116
+ unusedItems: number;
117
+ };
118
+ export interface ClassCrunchLabsBuildOptions {
119
+ files: ClassCrunchLabsFileSource;
120
+ /** Without one, videos are reported unmatched (`no_playlist`) and no reference is written. */
121
+ playlists?: ClassCrunchLabsPlaylistSource;
122
+ /** Which unit when the download holds several; matched ignoring case and punctuation. */
123
+ unit?: string;
124
+ /**
125
+ * How many pages a mission log has, to write its lesson page range. Without
126
+ * one, or when it returns null, the lesson gets no page rows (a warning says so).
127
+ */
128
+ pageCounter?: ClassCrunchLabsPageCounter;
129
+ /**
130
+ * The unit-wide "(all lessons)" files (the combined manual, deck, mission log,
131
+ * status checks and handouts) repeat the per-lesson files and are large, so they
132
+ * are left out by default. The supply list, posters and other unit-wide extras
133
+ * are always course members.
134
+ */
135
+ includeUnitWideAggregates?: boolean;
136
+ /** Largest bundle part in bytes; default 90 MiB, never above the bundle archive limit. */
137
+ maxPartBytes?: number;
138
+ }
139
+ export interface ClassCrunchLabsReport {
140
+ unit: string;
141
+ lessons: number;
142
+ members: number;
143
+ courseMembers: number;
144
+ /** Bundles the unit was split into (1 unless it is large). */
145
+ parts: number;
146
+ pages: Array<{
147
+ lesson: number;
148
+ path: string;
149
+ pages: number;
150
+ }>;
151
+ videos: {
152
+ playlist: {
153
+ id: string;
154
+ title: string;
155
+ } | null;
156
+ matched: ClassCrunchLabsVideoMatch[];
157
+ unmatched: ClassCrunchLabsVideoMiss[];
158
+ unusedPlaylistItems: number;
159
+ /** Unit-level videos (a teaser): a course has no video of its own, so none is written. */
160
+ unitLevel: string[];
161
+ };
162
+ /** Same bytes under another name or place: only the preferred copy is bundled. */
163
+ duplicates: Array<{
164
+ path: string;
165
+ duplicateOf: string;
166
+ }>;
167
+ /** The same file in more than one export of the unit. */
168
+ duplicateExports: number;
169
+ /** A file that differs between exports: the newer export is used. */
170
+ superseded: number;
171
+ ignored: Array<{
172
+ path: string;
173
+ reason: string;
174
+ }>;
175
+ warnings: string[];
176
+ }
177
+ /** One importable bundle: a manifest version 2 and the files it names. */
178
+ export interface ClassCrunchLabsBundlePart {
179
+ bundle: {
180
+ files: Array<{
181
+ path: string;
182
+ bytes: Uint8Array;
183
+ }>;
184
+ };
185
+ manifest: Record<string, unknown>;
186
+ /** The lesson numbers this part carries. */
187
+ lessons: number[];
188
+ }
189
+ export interface ClassCrunchLabsBuild {
190
+ unit: string;
191
+ /**
192
+ * The bundles to import, in order, each with `CourseBundleImportService`. A
193
+ * unit that fits one archive is one part; a large one is split by lesson
194
+ * (course-level members go in the first part), never by file.
195
+ */
196
+ parts: ClassCrunchLabsBundlePart[];
197
+ /** The first part, for the usual single-bundle unit. */
198
+ bundle: ClassCrunchLabsBundlePart['bundle'];
199
+ manifest: Record<string, unknown>;
200
+ /** A family's own copy of a unit is a personal-use copy. */
201
+ licenseKind: typeof CLASS_CRUNCHLABS_LICENSE_KIND;
202
+ report: ClassCrunchLabsReport;
203
+ }
204
+ /** Read a Class CrunchLabs unit download and build a manifest version 2 bundle. */
205
+ export declare function buildClassCrunchLabsBundle(options: ClassCrunchLabsBuildOptions): Promise<ClassCrunchLabsBuild>;
206
+ /**
207
+ * A page counter for mission logs: PDFs are counted directly (`pdf-lib`), Word
208
+ * and PowerPoint files by asking the injected converter to render them. Without
209
+ * a converter, only PDFs are counted. The count is a convenience for the page
210
+ * range; the importer still renders the member itself.
211
+ */
212
+ export declare function createClassCrunchLabsPageCounter(options?: {
213
+ converter?: DocumentConverter;
214
+ timeoutMs?: number;
215
+ maxBytes?: number;
216
+ }): ClassCrunchLabsPageCounter;
217
+ //# sourceMappingURL=class-crunchlabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class-crunchlabs.d.ts","sourceRoot":"","sources":["../../src/sources/class-crunchlabs.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,21 @@ import { type Asset, type AssetRuntime, type AssetRuntimeOptions } from '@happyv
2
2
  import type { DatabaseInterface } from '@happyvertical/sql';
3
3
  import type { CatalogAuthorizer } from './catalog-service.js';
4
4
  import { type LearnerAuthorizer, type LearnerRequest, LearnerService, LearnerValidationError } from './learner-service.js';
5
+ import { type ExternalVideoProvider, type LessonAssetRelationship, type MaterialAudience } from './lesson-assets.js';
6
+ import type { WorkAssistance } from './lesson-work-contracts.js';
7
+ import { type LessonActivity } from './lesson-work-models.js';
5
8
  import type { Grade, Submission, SubmissionKind } from './submissions.js';
6
9
  /** A single captured page. No model patches or pre-existing asset IDs are accepted. */
7
10
  export interface SubmissionPage {
8
11
  name: string;
9
12
  mimeType: 'image/jpeg' | 'image/png' | 'image/webp' | 'application/pdf';
10
13
  data: Buffer;
14
+ /**
15
+ * The lesson page this file is (`p1`, `p12-back`); default `p<position>`.
16
+ * A correction may carry only the pages it replaces: a page keeps its key
17
+ * across the correction chain, so a host can show "page 2: v1, v2".
18
+ */
19
+ pageKey?: string;
11
20
  }
12
21
  export interface SubmissionAssetClaim {
13
22
  enrollmentId: string;
@@ -45,6 +54,7 @@ export type SubmissionView = Readonly<{
45
54
  pages: ReadonlyArray<{
46
55
  assetId: string;
47
56
  sortOrder: number;
57
+ pageKey: string;
48
58
  }>;
49
59
  /** Guardian-origin photo work remains private until explicit feedback release. */
50
60
  awaitingParentRelease?: boolean;
@@ -89,10 +99,36 @@ type CaptureRequest = LessonRequest & {
89
99
  notes?: string;
90
100
  intake?: SubmissionIntake;
91
101
  };
92
- /** Workbook scaffolding can only be mutated through its owning workflow. */
93
- export declare class WorkbookWorkflowRequiredError extends Error {
102
+ /**
103
+ * Book and loose-page work is captured only through `LessonWorkService`, which
104
+ * owns its receipt, correction-identity and release checks.
105
+ */
106
+ export declare class LessonWorkWorkflowRequiredError extends Error {
94
107
  constructor();
95
108
  }
109
+ /** An external video reference is not an allowlisted YouTube id or URL. */
110
+ export declare class ExternalVideoReferenceError extends LearnerValidationError {
111
+ constructor();
112
+ }
113
+ /** One material as a learner or guardian may see it. */
114
+ export type LessonMaterialView = Readonly<{
115
+ id: string;
116
+ kind: 'file' | 'external-video';
117
+ scope: 'lesson' | 'course';
118
+ relationship: LessonAssetRelationship;
119
+ audience: MaterialAudience;
120
+ title: string;
121
+ /** Sort order for files, step order for videos. */
122
+ order: number;
123
+ /** Files only; sign with `signLessonMaterial` / `signCourseMaterial`. */
124
+ assetId: string | null;
125
+ provider: ExternalVideoProvider | null;
126
+ videoId: string | null;
127
+ /** Privacy-enhanced embed URL for an external video. */
128
+ embedUrl: string | null;
129
+ }>;
130
+ /** The page key a file carries: its own, or `p<position>` for older rows. */
131
+ export declare function submissionPageKey(pageKey: string, sortOrder: number): string;
96
132
  /** Failure includes fresh asset identities only, for explicit storage reconciliation. */
97
133
  export declare class SubmissionStorageCleanupError extends Error {
98
134
  readonly assetIds: readonly string[];
@@ -122,20 +158,42 @@ export declare class SubmissionService extends LearnerService {
122
158
  guardianOrigin: boolean;
123
159
  released: boolean;
124
160
  }>;
161
+ /**
162
+ * A submission's learner-owned page files and whether they are withheld
163
+ * from this actor (guardian-origin source awaiting release). The caller has
164
+ * already authorized the submission's learner and enrollment.
165
+ */
166
+ protected submissionPages(row: Submission, actorUserId: string, pagesOnly?: boolean): Promise<{
167
+ pages: Array<{
168
+ assetId: string;
169
+ sortOrder: number;
170
+ pageKey: string;
171
+ }>;
172
+ awaitingParentRelease: boolean;
173
+ guardianOrigin: boolean;
174
+ learnerUserId: string;
175
+ }>;
125
176
  private view;
126
177
  /** Recheck the exact assignment without creating progress or accepting bytes.
127
178
  * Trusted intake bridges call this before reading retained evidence.
128
179
  */
129
180
  assertLessonAssignment(request: LessonRequest): Promise<void>;
130
- /** Reject legacy upload/review entry points using authoritative owned scope. */
131
- assertNonWorkbookSubmissionScope(request: LearnerRequest & {
181
+ /**
182
+ * Refuse generic upload entry points for book and loose-page work, using
183
+ * the authoritative enrollment, lesson and predecessor. Hosts call this
184
+ * before creating a generic intake receipt.
185
+ */
186
+ assertOrdinarySubmissionScope(request: LearnerRequest & {
132
187
  enrollmentId: string;
133
188
  lessonId?: string;
134
189
  previousSubmissionId?: string;
135
190
  }): Promise<void>;
136
191
  captureSubmission(request: CaptureRequest): Promise<SubmissionView>;
137
192
  /** Owning workflow extension; no browser input can grant this scoped path. */
138
- protected captureWorkbookSubmission(request: CaptureRequest, activityId: string): Promise<SubmissionView>;
193
+ protected captureActivitySubmission(request: CaptureRequest, scope: {
194
+ activityId: string;
195
+ assistance: WorkAssistance;
196
+ }): Promise<SubmissionView>;
139
197
  private captureSubmissionInScope;
140
198
  /** Capture a blank workbook scan without claiming completion or a grade. */
141
199
  captureBlankReference(request: LessonRequest & {
@@ -155,6 +213,22 @@ export declare class SubmissionService extends LearnerService {
155
213
  getSubmission(request: SubmissionRequest): Promise<SubmissionView>;
156
214
  /** Latest retained completed-work evidence; lesson completion is independent. */
157
215
  getLatestLessonSubmission(request: LessonRequest): Promise<SubmissionView | null>;
216
+ /** The course work policy a new attempt snapshots (its enrollment's course). */
217
+ protected workPolicy(activity: LessonActivity): Promise<{
218
+ reviewRequired: boolean;
219
+ policyVersion: number;
220
+ }>;
221
+ /**
222
+ * Record a completed-work hand-in in the lesson work pipeline: the learner's
223
+ * activity on this lesson (created on first capture) and one immutable
224
+ * attempt bound to the submission, continuing its predecessor's episode.
225
+ */
226
+ protected recordAttempt(request: LessonRequest, row: Submission, pages: readonly SubmissionPage[], assetIds: readonly string[], scope: {
227
+ activity: LessonActivity | null;
228
+ assistance: WorkAssistance;
229
+ }): Promise<void>;
230
+ /** A guardian grade on an ordinary lesson's current attempt completes it. */
231
+ private recordGradeCompletion;
158
232
  private grade;
159
233
  reviewSubmission(request: SubmissionRequest & {
160
234
  score?: number | null;
@@ -196,6 +270,62 @@ export declare class SubmissionService extends LearnerService {
196
270
  expiresAt: Date;
197
271
  }>;
198
272
  /** Sign only an exact authorized printable join; answer keys never qualify. */
273
+ /** Whether the actor is the learner themself (learner audience only). */
274
+ private learnerAudienceOnly;
275
+ private visibleTo;
276
+ private materialName;
277
+ /**
278
+ * A lesson's materials for this actor: files by role and audience, then
279
+ * external video references in step order. A learner sees only
280
+ * learner-audience material; keys and guidance never reach them.
281
+ */
282
+ listLessonMaterials(request: LessonRequest): Promise<LessonMaterialView[]>;
283
+ /** Course-level materials (supply lists, posters) under the same audience rule. */
284
+ listCourseMaterials(request: LearnerRequest & {
285
+ enrollmentId: string;
286
+ }): Promise<LessonMaterialView[]>;
287
+ private signMaterial;
288
+ /** Sign one lesson file the actor may see (learners: learner audience only). */
289
+ signLessonMaterial(request: LessonRequest & {
290
+ materialId: string;
291
+ }): Promise<{
292
+ url: string;
293
+ expiresAt: Date;
294
+ }>;
295
+ /** Sign one course-level file the actor may see. */
296
+ signCourseMaterial(request: LearnerRequest & {
297
+ enrollmentId: string;
298
+ materialId: string;
299
+ }): Promise<{
300
+ url: string;
301
+ expiresAt: Date;
302
+ }>;
303
+ /** Re-save a family material join under the exact private-asset capability. */
304
+ private saveFamilyMaterial;
305
+ /** Family-owned, non-authored course rows only; authored material changes through authoring. */
306
+ private familyMaterialCourse;
307
+ /**
308
+ * Change who a family-owned material is for, within its role's bounds
309
+ * (keys and assessment guidance stay guardian-only). Guardian planning.
310
+ */
311
+ setMaterialAudience(request: LearnerRequest & {
312
+ enrollmentId: string;
313
+ scope: 'lesson' | 'course';
314
+ kind: 'file' | 'external-video';
315
+ materialId: string;
316
+ audience: MaterialAudience;
317
+ }): Promise<LessonMaterialView>;
318
+ /**
319
+ * Add an allowlisted external video (a YouTube id or URL) to a family-owned
320
+ * lesson, with its title and step order. Nothing is downloaded. A replay of
321
+ * the same video, title, step and audience returns the same reference.
322
+ */
323
+ addLessonVideo(request: LessonRequest & {
324
+ reference: string;
325
+ title: string;
326
+ stepOrder: number;
327
+ audience?: MaterialAudience;
328
+ }): Promise<LessonMaterialView>;
199
329
  signLessonPrintable(request: LessonRequest & {
200
330
  assetId: string;
201
331
  }): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"submission-service.d.ts","sourceRoot":"","sources":["../src/submission-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"submission-service.d.ts","sourceRoot":"","sources":["../src/submission-service.ts"],"names":[],"mappings":"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"}
@@ -89,6 +89,8 @@ export declare class SubmissionAsset extends SmrtObject {
89
89
  assetId: string;
90
90
  relationship: SubmissionAssetRelationship;
91
91
  sortOrder: number;
92
+ /** Lesson page this file is; '' on older rows reads as `p<sortOrder+1>`. */
93
+ pageKey: string;
92
94
  constructor(options?: Record<string, unknown>);
93
95
  save(options?: SmrtSaveOptions): Promise<this>;
94
96
  }
@@ -1 +1 @@
1
- {"version":3,"file":"submissions.d.ts","sourceRoot":"","sources":["../src/submissions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"submissions.d.ts","sourceRoot":"","sources":["../src/submissions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { WorkAnswerRegions, WorkQuestion } from './lesson-work-contracts.js';
2
+ /** Normalize presentation only. Never change answers, layout or verified anchors. */
3
+ export declare function normalizeWorkAnswerRegions(value: unknown, questions: readonly WorkQuestion[], sources: readonly {
4
+ assetId: string;
5
+ sha256?: string;
6
+ pageCount: number;
7
+ }[]): {
8
+ answerRegions?: WorkAnswerRegions;
9
+ answerRegionsOmission?: 'invalid';
10
+ };
11
+ //# sourceMappingURL=work-answer-regions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-answer-regions.d.ts","sourceRoot":"","sources":["../src/work-answer-regions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EACb,MAAM,4BAA4B,CAAC;AACpC,qFAAqF;AACrF,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,SAAS,YAAY,EAAE,EAClC,OAAO,EAAE,SAAS;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,GAC1E;IACD,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,qBAAqB,CAAC,EAAE,SAAS,CAAC;CACnC,CAoEA"}
@@ -0,0 +1,13 @@
1
+ import type { WorkObservedLayout, WorkQuestion } from './lesson-work-contracts.js';
2
+ /** Copy only bounded observed metadata, dropping the entire layout on any error.
3
+ * This browser-safe helper never changes questions or grants source geometry.
4
+ */
5
+ export declare function normalizeWorkObservedLayout(value: unknown, questions: readonly WorkQuestion[], sources: readonly {
6
+ assetId: string;
7
+ sha256?: string;
8
+ pageCount: number;
9
+ }[]): {
10
+ layout?: WorkObservedLayout;
11
+ layoutOmission?: 'invalid';
12
+ };
13
+ //# sourceMappingURL=work-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-layout.d.ts","sourceRoot":"","sources":["../src/work-layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACb,MAAM,4BAA4B,CAAC;AASpC;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,SAAS,YAAY,EAAE,EAClC,OAAO,EAAE,SAAS;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,GAC1E;IAAE,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAAC,cAAc,CAAC,EAAE,SAAS,CAAA;CAAE,CAgG7D"}
@@ -1,4 +1,4 @@
1
- import type { WorkbookActivityView } from './workbook-contracts.js';
1
+ import type { LessonActivityView } from './lesson-work-contracts.js';
2
2
  /** Activity keys identify a printed lesson, potentially spanning multiple pages. */
3
3
  export interface WorkbookPhotoIdentification {
4
4
  kind: 'lesson' | 'work' | 'cover' | 'reference' | 'uncertain';
@@ -23,19 +23,19 @@ export interface WorkbookPhotoProposal {
23
23
  identityEvidence: string[];
24
24
  /** A printed lesson/exercise identifier, never the page number alone. */
25
25
  lessonEvidence: string;
26
- /** Optional exact existing workbook candidate selected from authorized discovery. */
26
+ /** Optional exact existing book course candidate (course id) from authorized discovery. */
27
27
  workbookId?: string;
28
28
  }
29
29
  export interface WorkbookPhotoIntakeView {
30
30
  id: string;
31
31
  itemId: string;
32
- /** Exact latest retained book-context resolution, independent of activity filing. */
33
- workbookId?: string | null;
32
+ /** Book course of the exact latest retained book-context resolution, independent of filing. */
33
+ bookCourseId: string | null;
34
34
  learnerId: string;
35
35
  status: 'pending' | 'resolved' | 'captured';
36
36
  identification: WorkbookPhotoIdentification | null;
37
37
  proposal: WorkbookPhotoProposal | null;
38
- activity: WorkbookActivityView | null;
38
+ activity: LessonActivityView | null;
39
39
  submissionId: string | null;
40
40
  originals: {
41
41
  assetId: string;
@@ -45,9 +45,11 @@ export interface WorkbookPhotoIntakeView {
45
45
  }[];
46
46
  }
47
47
  export declare function validateWorkbookPhotoIdentification(value: WorkbookPhotoIdentification): void;
48
- export interface WorkbookPhotoWorkbookView {
48
+ /** A family book course offered to photo identification and the guardian picker. */
49
+ export interface PhotoBookCourseView {
50
+ /** Course id; the provider wire field `workbookId` carries this value. */
49
51
  id: string;
50
- workbookKey: string;
52
+ bookKey: string;
51
53
  title: string;
52
54
  edition: string;
53
55
  publisher?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"workbook-photo-contracts.d.ts","sourceRoot":"","sources":["../src/workbook-photo-contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,oFAAoF;AACpF,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,CAAC;IAC9D,QAAQ,CAAC,EAAE;QACT,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,SAAS,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,2BAA2B,CAAC;IAC5C,UAAU,EAAE,WAAW,GAAG,WAAW,CAAC;IACtC,iFAAiF;IACjF,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,yEAAyE;IACzE,cAAc,EAAE,MAAM,CAAC;IACvB,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AACD,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;IAC5C,cAAc,EAAE,2BAA2B,GAAG,IAAI,CAAC;IACnD,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACvC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACtC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,EAAE,CAAC;CACL;AACD,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,2BAA2B,GACjC,IAAI,CA0CN;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
1
+ {"version":3,"file":"workbook-photo-contracts.d.ts","sourceRoot":"","sources":["../src/workbook-photo-contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,oFAAoF;AACpF,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,CAAC;IAC9D,QAAQ,CAAC,EAAE;QACT,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,SAAS,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,2BAA2B,CAAC;IAC5C,UAAU,EAAE,WAAW,GAAG,WAAW,CAAC;IACtC,iFAAiF;IACjF,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,yEAAyE;IACzE,cAAc,EAAE,MAAM,CAAC;IACvB,2FAA2F;IAC3F,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AACD,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,+FAA+F;IAC/F,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;IAC5C,cAAc,EAAE,2BAA2B,GAAG,IAAI,CAAC;IACnD,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACvC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACpC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,EAAE,CAAC;CACL;AACD,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,2BAA2B,GACjC,IAAI,CA0CN;AAED,oFAAoF;AACpF,MAAM,WAAW,mBAAmB;IAClC,0EAA0E;IAC1E,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
@@ -64,7 +64,7 @@ export declare function processWorkbookPhotoAnalysis(input: Parameters<typeof pr
64
64
  revision: number;
65
65
  };
66
66
  intake: import("./workbook-photo-contracts.js").WorkbookPhotoIntakeView;
67
- capture: import("./workbook-contracts.js").WorkbookAttemptView | null;
67
+ capture: import("./lesson-work-contracts.js").WorkAttemptView | null;
68
68
  assessmentRequired: boolean;
69
69
  }>;
70
70
  //# sourceMappingURL=workbook-photo-ingestion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workbook-photo-ingestion.d.ts","sourceRoot":"","sources":["../src/workbook-photo-ingestion.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EAErB,KAAK,YAAY,EAClB,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAM3D,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,6BAA6B,CAAC;AAGrC,eAAO,MAAM,sBAAsB,0DACsB,CAAC;AAsF1D,+FAA+F;AAC/F,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,SAAS,EAAE,oBAAoB,CAAC;IAChC,OAAO,EAAE,cAAc,CAAC;CACzB,GAAG,gBAAgB,EAAE,CAoHrB;AAID,8EAA8E;AAC9E,wBAAgB,iCAAiC,CAAC,KAAK,EAAE;IACvD,SAAS,EAAE,oBAAoB,CAAC;IAChC,OAAO,EAAE,cAAc,CAAC;CACzB,GAAG,OAAO,yCAAyC,EAAE,sBAAsB,CAAC,cAAc,CAAC,CAwB3F;AACD,mGAAmG;AACnG,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,SAAS,EAAE,gBAAgB,CAAC;IAC5B,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAChC,SAAS,EAAE,oBAAoB,CAAC;IAChC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,YAAY,CAAC;CACvB;;;;;;;;;;GAWA;AACD,yFAAyF;AACzF,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,SAAS,EAAE,gBAAgB,CAAC;IAC5B,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAChC,SAAS,EAAE,oBAAoB,CAAC;IAChC,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB,4EA2CA;AACD,+FAA+F;AAC/F,wBAAsB,mCAAmC,CAAC,KAAK,EAAE;IAC/D,SAAS,EAAE,gBAAgB,CAAC;IAC5B,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAChC,SAAS,EAAE,oBAAoB,CAAC;IAChC,OAAO,EAAE,cAAc,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD,4EAyFA;AACD,uFAAuF;AACvF,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC,GAAG;IACtD,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAChC,SAAS,EAAE,oBAAoB,CAAC;IAChC,OAAO,EAAE,cAAc,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;;;;;;;;;;GA8BF"}
1
+ {"version":3,"file":"workbook-photo-ingestion.d.ts","sourceRoot":"","sources":["../src/workbook-photo-ingestion.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EAErB,KAAK,YAAY,EAClB,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAO3D,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,6BAA6B,CAAC;AAGrC,eAAO,MAAM,sBAAsB,0DACsB,CAAC;AAsF1D,+FAA+F;AAC/F,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,SAAS,EAAE,oBAAoB,CAAC;IAChC,OAAO,EAAE,cAAc,CAAC;CACzB,GAAG,gBAAgB,EAAE,CAqHrB;AAQD,8EAA8E;AAC9E,wBAAgB,iCAAiC,CAAC,KAAK,EAAE;IACvD,SAAS,EAAE,oBAAoB,CAAC;IAChC,OAAO,EAAE,cAAc,CAAC;CACzB,GAAG,OAAO,yCAAyC,EAAE,sBAAsB,CAAC,cAAc,CAAC,CAwB3F;AACD,mGAAmG;AACnG,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,SAAS,EAAE,gBAAgB,CAAC;IAC5B,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAChC,SAAS,EAAE,oBAAoB,CAAC;IAChC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,YAAY,CAAC;CACvB;;;;;;;;;;GAWA;AACD,yFAAyF;AACzF,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,SAAS,EAAE,gBAAgB,CAAC;IAC5B,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAChC,SAAS,EAAE,oBAAoB,CAAC;IAChC,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB,4EA2CA;AACD,+FAA+F;AAC/F,wBAAsB,mCAAmC,CAAC,KAAK,EAAE;IAC/D,SAAS,EAAE,gBAAgB,CAAC;IAC5B,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAChC,SAAS,EAAE,oBAAoB,CAAC;IAChC,OAAO,EAAE,cAAc,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD,4EAyFA;AACD,uFAAuF;AACvF,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC,GAAG;IACtD,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAChC,SAAS,EAAE,oBAAoB,CAAC;IAChC,OAAO,EAAE,cAAc,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;;;;;;;;;;GA8BF"}
@@ -47,18 +47,18 @@ export declare class WorkbookPhotoDecision extends SmrtObject {
47
47
  export declare class WorkbookPhotoDecisionCollection extends SmrtCollection<WorkbookPhotoDecision> {
48
48
  static readonly _itemClass: typeof WorkbookPhotoDecision;
49
49
  }
50
- /** Versioned contextual metadata; never edits Workbook identity or learning evidence. */
51
- export declare class WorkbookContextRevision extends SmrtObject {
50
+ /** Versioned contextual metadata; never edits book identity or learning evidence. */
51
+ export declare class BookContextRevision extends SmrtObject {
52
52
  tenantId: string;
53
53
  learnerId: string;
54
54
  delete(): Promise<void>;
55
- workbookId: string;
55
+ courseId: string;
56
56
  decisionId: string;
57
57
  metadataJson: string;
58
58
  constructor(options?: Record<string, unknown>);
59
59
  save(options?: SmrtSaveOptions): Promise<this>;
60
60
  }
61
- export declare class WorkbookContextRevisionCollection extends SmrtCollection<WorkbookContextRevision> {
62
- static readonly _itemClass: typeof WorkbookContextRevision;
61
+ export declare class BookContextRevisionCollection extends SmrtCollection<BookContextRevision> {
62
+ static readonly _itemClass: typeof BookContextRevision;
63
63
  }
64
64
  //# sourceMappingURL=workbook-photo-models.d.ts.map