@happyvertical/smrt-education 0.60.3 → 0.60.4
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/agents/course-bundle-import.md +12 -2
- package/agents/lesson-materials.md +1 -1
- package/dist/chunks/{workbook-photo-service-DGIkYT6Q.js → workbook-photo-service-wqZZWGLb.js} +8 -2
- package/dist/chunks/workbook-photo-service-wqZZWGLb.js.map +1 -0
- package/dist/course-bundle-service.d.ts +7 -0
- package/dist/course-bundle-service.d.ts.map +1 -1
- package/dist/index.js +31 -7
- package/dist/index.js.map +1 -1
- package/dist/ingestion.js +1 -1
- package/dist/lesson-assets.d.ts +6 -0
- package/dist/lesson-assets.d.ts.map +1 -1
- package/dist/manifest.json +23 -5
- package/dist/smrt-knowledge.json +14 -7
- package/dist/submission-service.d.ts.map +1 -1
- package/package.json +8 -8
- package/dist/chunks/workbook-photo-service-DGIkYT6Q.js.map +0 -1
|
@@ -251,7 +251,16 @@ plus `skipped` for declared members that were unsupported, refused or failed
|
|
|
251
251
|
rendering. A duplicate member resolves to the earlier identical member's bytes
|
|
252
252
|
(`assetPath`) and one material per (place, role, content).
|
|
253
253
|
|
|
254
|
-
`receiveMember` also gets `audience` and `courseLevel
|
|
254
|
+
`receiveMember` also gets `audience` and `courseLevel`, and an optional `title`
|
|
255
|
+
(SMRT #4653): the manifest title of the one material the member holds ("Teacher
|
|
256
|
+
Mission Manual"), so a host can name the assets it stores. It is absent when the
|
|
257
|
+
manifest gave none or the member backs several materials with different titles.
|
|
258
|
+
**Material titles**: `attachCourse` records that title on the `lesson_assets` /
|
|
259
|
+
`course_assets` row (`title`; null on a lesson row without one, `''` on a course
|
|
260
|
+
row), the same for the original and rendered halves of a pair. Lesson and course
|
|
261
|
+
material views show the row title and fall back to the stored asset's name when
|
|
262
|
+
there is none. A re-attach fills a missing title; a different one is a
|
|
263
|
+
`conflict` unless `supersede` restates it. **Slides** keep the original
|
|
255
264
|
deck (hand `bytes` to the host as a private asset: "Open in PowerPoint") and its
|
|
256
265
|
rendered pages (`rendered`: "Present").
|
|
257
266
|
|
|
@@ -318,7 +327,8 @@ tenant rules and lock order (import row, then unit row) as any attach.
|
|
|
318
327
|
rewritten. Sections and lessons the newer build no longer lists stay.
|
|
319
328
|
- **Part count change** stays `unit-mismatch`, supersede or not.
|
|
320
329
|
- **Materials**: the newer build's materials are attached; an existing row
|
|
321
|
-
(same lesson, asset, role) is restated in place (order, title, current again
|
|
330
|
+
(same lesson, asset, role) is restated in place (order, title, current again; a
|
|
331
|
+
renamed material shows its new title though it keeps its earlier asset),
|
|
322
332
|
not a `conflict`; its audience stays the family's. Pages are restated and
|
|
323
333
|
never retired (learner work points at page keys).
|
|
324
334
|
- **Retirement**: file materials and external videos the replaced build wrote
|
|
@@ -35,7 +35,7 @@ must be private.
|
|
|
35
35
|
|
|
36
36
|
`listLessonMaterials({enrollmentId, lessonId})` and `listCourseMaterials({enrollmentId})`
|
|
37
37
|
return `LessonMaterialView`s (`id`, `kind` file or external-video, `scope`, role,
|
|
38
|
-
audience, title, order, `assetId` or provider/videoId/`embedUrl`, and for files
|
|
38
|
+
audience, title (the bundle's material title, else the stored asset's name), order, `assetId` or provider/videoId/`embedUrl`, and for files
|
|
39
39
|
`mimeType` from the stored asset, `rendition`, `pairedMaterialId` (the other half
|
|
40
40
|
of an original/rendered pair, only when this actor sees both) and
|
|
41
41
|
`thumbnailAssetId`). Hosts read these instead of guessing by file extension. The learner
|
package/dist/chunks/{workbook-photo-service-DGIkYT6Q.js → workbook-photo-service-wqZZWGLb.js}
RENAMED
|
@@ -678,6 +678,7 @@ var LessonAsset = class extends SmrtObject {
|
|
|
678
678
|
rendition = "";
|
|
679
679
|
renditionOfAssetId = null;
|
|
680
680
|
thumbnailAssetId = null;
|
|
681
|
+
title = null;
|
|
681
682
|
retiredAt = null;
|
|
682
683
|
sourceImportId = null;
|
|
683
684
|
constructor(options = {}) {
|
|
@@ -686,6 +687,7 @@ var LessonAsset = class extends SmrtObject {
|
|
|
686
687
|
}
|
|
687
688
|
async save(options) {
|
|
688
689
|
materialAudience(this.relationship, this.audience);
|
|
690
|
+
if (this.title !== null && (typeof this.title !== "string" || this.title.length > 200)) throw new Error("Invalid lesson material title");
|
|
689
691
|
const lesson = await this.db.get("lessons", { id: this.lessonId });
|
|
690
692
|
if (!lesson) throw new Error(`education lesson ${this.lessonId} does not exist`);
|
|
691
693
|
if (!await this.db.get("lessons", {
|
|
@@ -711,6 +713,10 @@ __decorateClass$10([crossPackageRef("@happyvertical/smrt-assets:Asset", { requir
|
|
|
711
713
|
__decorateClass$10([field({ required: true })], LessonAsset.prototype, "relationship", 2);
|
|
712
714
|
__decorateClass$10([crossPackageRef("@happyvertical/smrt-assets:Asset", { nullable: true })], LessonAsset.prototype, "renditionOfAssetId", 2);
|
|
713
715
|
__decorateClass$10([crossPackageRef("@happyvertical/smrt-assets:Asset", { nullable: true })], LessonAsset.prototype, "thumbnailAssetId", 2);
|
|
716
|
+
__decorateClass$10([field({
|
|
717
|
+
type: "text",
|
|
718
|
+
nullable: true
|
|
719
|
+
})], LessonAsset.prototype, "title", 2);
|
|
714
720
|
__decorateClass$10([field({
|
|
715
721
|
type: "datetime",
|
|
716
722
|
nullable: true
|
|
@@ -33309,7 +33315,7 @@ var SubmissionService = class SubmissionService extends LearnerService {
|
|
|
33309
33315
|
scope,
|
|
33310
33316
|
relationship: row.relationship,
|
|
33311
33317
|
audience: materialAudience(String(row.relationship), String(row.audience ?? "")),
|
|
33312
|
-
title:
|
|
33318
|
+
title: String(row.title ?? "") || asset.name,
|
|
33313
33319
|
order: Number(row.sort_order) || 0,
|
|
33314
33320
|
assetId: String(row.asset_id),
|
|
33315
33321
|
provider: null,
|
|
@@ -36970,4 +36976,4 @@ var WorkbookPhotoService = class WorkbookPhotoService extends LessonWorkService
|
|
|
36970
36976
|
//#endregion
|
|
36971
36977
|
export { LessonAlreadyCompleteError as $, Curriculum as $i, QUESTION_COMPLETION_MODES as $n, ReleasedLesson as $r, WorkFeedbackRelease as $t, QUESTION_EXTRACTION_VERSION as A, Attestation as Ai, QuestionRevision as An, CourseCoverChangeCollection as Ar, WorkbookPhotoDecision as At, SELF_ATTESTABLE_LESSON_KINDS as B, CourseAsset as Bi, normalizeQuestionContent as Bn, CourseUpgradeChoiceCollection as Br, WorkCompletionDecision as Bt, MAX_EXTRACTED_OMISSIONS as C, ReadingCollection as Ci, LearningObjectiveCollection as Cn, MAX_REFUSAL_EXPLANATION_LENGTH as Cr, canonicalGroupSharingPolicy as Ct, MAX_EXTRACTED_STUDENT_WORK as D, SubmissionIntakeBindingCollection as Di, QuestionCollection as Dn, CourseArchiveDecision as Dr, BookContextRevisionCollection as Dt, MAX_EXTRACTED_SECTIONS as E, SubmissionCollection as Ei, Question as En, readDelegation as Er, BookContextRevision as Et, normalizeWorkObservedLayout as F, Submission as Fi, resolveEnrollmentLessons as Fn, CourseRelease as Fr, FamilyIntakeAsset as Ft, EnrollmentNotActiveError as G, LESSON_ASSET_RELATIONSHIPS as Gi, MAX_PRINTABLE_ITEMS as Gn, EnrollmentAssignmentRecord as Gr, LessonWorkFiling as Gt, SubmissionStorageCleanupError as H, EXTERNAL_VIDEO_PROVIDERS as Hi, GENERATED_PRINTABLE_RELATIONSHIPS as Hn, CourseVisibilityChangeCollection as Hr, readWorkCompletion as Ht, normalizeWorkAnswerRegions as I, SubmissionAsset as Ii, applyProposalFields as In, CourseReleaseCollection as Ir, FamilyIntakeAssetCollection as It, InterestThemeError as J, LessonExternalVideoCollection as Ji, MAX_PRINTABLE_TOTAL_TEXT as Jn, EnrollmentAutoUpgradeSkipCollection as Jr, WorkAssessmentRevisionCollection as Jt, EnrollmentPaceError as K, LessonAsset as Ki, MAX_PRINTABLE_PAGES as Kn, EnrollmentAssignmentRecordCollection as Kr, LessonWorkFilingCollection as Kt, LessonWorkWorkflowRequiredError as L, SubmissionIntakeBinding as Li, draftFromRevision as Ln, CourseRevision as Lr, FamilyIntakeCollection as Lt, QuestionExtractionPendingError as M, Grade as Mi, CourseAuthoringService as Mn, CourseDiscardTombstoneCollection as Mr, WorkbookPhotoIntake as Mt, QuestionExtractionValidationError as N, LessonSelfAttestation as Ni, authoredVisibilityPermitsGroups as Nn, CourseDraftHead as Nr, WorkbookPhotoIntakeCollection as Nt, MAX_EXTRACTED_TEXT as O, VideoCollection as Oi, QuestionResponse as On, CourseArchiveDecisionCollection as Or, WorkbookPhotoAsset as Ot, LessonWorkService as P, ScannedSubmission as Pi, effectiveCourseVisibility as Pn, CourseDraftHeadCollection as Pr, FamilyIntake as Pt, LearnerValidationError as Q, parseYouTubeReference as Qi, PrintableStorageNotConfiguredError as Qn, LessonRevisionCollection as Qr, WorkFeedbackDeliveryCollection as Qt, OwnAttestationConflictError as R, parseQuestionRubric as Ri, planProposal as Rn, CourseRevisionCollection as Rr, FamilyIntakeDecision as Rt, MAX_EXTRACTED_ANCHORS as S, LessonSelfAttestationCollection as Si, LearningObjective as Sn, MAX_REFUSAL_CATEGORY_LENGTH as Sr, GroupSharingPolicyValidationError as St, MAX_EXTRACTED_QUESTIONS as T, SubmissionAssetCollection as Ti, LearningObjectiveRevisionCollection as Tn, delegationRecordFields as Tr, familyIntakeScopeId as Tt, submissionPageKey as U, GUARDIAN_ONLY_RELATIONSHIPS as Ui, LearningObjectiveKeyConflictError as Un, CurriculumCreationRecord as Ur, LessonActivity as Ut, SubmissionService as V, CourseAssetCollection as Vi, GENERATED_PRINTABLE_AUDIENCES as Vn, CourseVisibilityChange as Vr, WorkCompletionDecisionCollection as Vt, ENROLLMENT_STATUS_TRANSITIONS as W, LESSON_ASSET_DEFAULT_AUDIENCE as Wi, LearningObjectiveNotFoundError as Wn, CurriculumCreationRecordCollection as Wr, LessonActivityCollection as Wt, LearnerHistoryUnavailableError as X, externalVideoEmbedUrl as Xi, PrintableOwnerError as Xn, EnrollmentReleasePinCollection as Xr, WorkAttemptCollection as Xt, LearnerAuthorizationError as Y, MATERIAL_RENDITIONS as Yi, MAX_RESOLVE_QUESTION_REVISIONS as Yn, EnrollmentReleasePin as Yr, WorkAttempt as Yt, LearnerService as Z, materialAudience as Zi, PrintableStorageCleanupError as Zn, LessonRevision as Zr, WorkFeedbackDelivery as Zt, EXTRACTED_OMISSION_REASONS as _, GradeCollection as _i, renderGuardianWorksheetPdf as _n, CourseProposalFieldError as _r, LessonProgressTransitionCollection as _t, questionExtractionProposalDigest as a, interestThemeFromColumns as aa, mostRestrictiveLicense as ai, aggregateWorkQuestions as an, QuestionReferenceError as ar, MIN_LESSONS_PER_WEEK as at, EXTRACTED_QUESTION_STATUSES as b, LessonCollection as bi, GeneratedPrintable as bn, MAX_GENERATION_GRADE as br, GroupSharingAuthorizationError as bt, QuestionExtractionRecord as c, COURSE_VISIBILITIES as ca, AttestationCollection as ci, LessonPage as cn, COURSE_GENERATION_STATUSES as cr, EnrollmentPaceChange as ct, extractedQuestionContent as d, Exercise as da, CourseSectionCollection as di, validLessonPageKey as dn, CourseGenerationBriefError as dr, EnrollmentStatusChangeCollection as dt, Enrollment as ea, ReleasedLessonCollection as ei, WorkFeedbackReleaseCollection as en, QUESTION_FIELDS as er, LessonPutBackError as et, matchExtractedQuestions as f, ExternalCourse as fa, CurriculumCollection as fi, QuestionAuthoringService as fn, CourseGenerationInProgressError as fr, LearnerInterestThemeChange as ft, EXTRACTED_MEDIA_KINDS as g, Worksheet as ga, ExternalCourseCollection as gi, worksheetVersionId as gn, CourseGeneratorNotConfiguredError as gr, LessonProgressTransition as gt, EXTRACTED_LEGIBILITY as h, Video as ha, ExternalCompletionCollection as hi, canonical$2 as hn, CourseGenerationRefusal as hr, LessonCompletionRecordCollection as ht, QuestionExtractionService as i, MAX_INTEREST_THEME_LABEL_CHARS as ia, isGroupShareableLicense as ii, WorkCompletionConflictError as in, QuestionNotFoundError as ir, MAX_NEXT_LESSONS_COUNT as it, QuestionExtractionNotFoundError as j, ExternalCompletion as ji, QuestionRevisionCollection as jn, CourseDiscardTombstone as jr, WorkbookPhotoDecisionCollection as jt, QUESTION_EXTRACTION_SOURCE_KINDS as k, WorksheetCollection as ki, QuestionResponseCollection as kn, CourseCoverChange as kr, WorkbookPhotoAssetCollection as kt, QuestionExtractionRecordCollection as l, Course as la, AuthoredCourseCollection as li, LessonPageCollection as ln, COURSE_GENERATION_TARGETS as lr, EnrollmentPaceChangeCollection as lt, questionExtractionSourceIdentity as m, Reading as ma, ExerciseCollection as mi, buildLearnerWorksheet as mn, CourseGenerationOutputError as mr, LessonCompletionRecord as mt, preservePhotoProposal as n, LessonProgress as na, AUTHORED_RELEASE_SOURCE_KEY as ni, WORK_MATH_VOCABULARY as nn, QUESTION_PROVENANCES as nr, LessonWorkOwnedError as nt, ExtractedQuestionLink as o, parseInterestTheme as oa, CatalogAuthorizationError as oi, validateWorkAssessment as on, WorksheetVersionMismatchError as or, enrollmentView as ot, normalizeQuestionExtraction as p, Lesson as pa, EnrollmentCollection as pi, buildGuardianWorksheet as pn, CourseGenerationNotFoundError as pr, LearnerInterestThemeChangeCollection as pt, EnrollmentStatusTransitionError as q, LessonExternalVideo as qi, MAX_PRINTABLE_TEXT_LENGTH as qn, EnrollmentAutoUpgradeSkip as qr, WorkAssessmentRevision as qt, validateWorkbookPhotoIdentification as r, MAX_INTEREST_THEME_KEY_CHARS as ra, isAuthoredReleaseGroupShareable as ri, WorkAssessmentValidationError as rn, QUESTION_RESPONSE_TYPES as rr, MAX_LESSONS_PER_WEEK as rt, ExtractedQuestionLinkCollection as s, AuthoredCourse as sa, CatalogService as si, workAggregateFeedback as sn, groupSharingDigest as sr, requirePolicyBasis as st, WorkbookPhotoService as t, Learner as ta, AUTHORED_IDENTITY_SOURCE_KEY as ti, LessonWorkPlacementError as tn, QUESTION_PROMPT_SUMMARY_LENGTH as tr, LessonSkippedError as tt, QUESTION_EXTRACTION_ARGS_SCHEMA as u, CourseSection as ua, CourseCollection as ui, lessonPageView as un, COURSE_GENERATION_TERMINAL as ur, EnrollmentStatusChange as ut, EXTRACTED_ORIGINS as v, LearnerCollection as vi, renderLearnerWorksheetPdf as vn, CourseProposalNotFoundError as vr, evaluateGroupSharingPolicy as vt, MAX_EXTRACTED_PAGES as w, ScannedSubmissionCollection as wi, LearningObjectiveRevision as wn, delegationActorFields as wr, validateGroupSharingPolicy as wt, EXTRACTED_READABILITY as x, LessonProgressCollection as xi, GeneratedPrintableCollection as xn, MAX_GENERATION_OBJECTIVE_CHARS as xr, GroupSharingConflictError as xt, EXTRACTED_PAGE_ROLES as y, LessonAssetCollection as yi, es_exports as yn, MAX_GENERATION_BRIEF_FIELD_CHARS as yr, summarizeWorkEvidence as yt, OwnAttestationLessonKindError as z, validateRubricResults as zi, validateCourseGenerationOutput as zn, CourseUpgradeChoice as zr, FamilyIntakeDecisionCollection as zt };
|
|
36972
36978
|
|
|
36973
|
-
//# sourceMappingURL=workbook-photo-service-
|
|
36979
|
+
//# sourceMappingURL=workbook-photo-service-wqZZWGLb.js.map
|