@happyvertical/smrt-education 0.60.5 → 0.60.7

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/dist/ingestion.js CHANGED
@@ -1,4 +1,4 @@
1
- import { F as normalizeWorkObservedLayout, I as normalizeWorkAnswerRegions, It as FamilyIntakeAssetCollection, Lt as FamilyIntakeCollection, M as QuestionExtractionPendingError, N as QuestionExtractionValidationError, Nt as WorkbookPhotoIntakeCollection, P as LessonWorkService, Tt as familyIntakeScopeId, Y as LearnerAuthorizationError, a as questionExtractionProposalDigest, an as aggregateWorkQuestions, kt as WorkbookPhotoAssetCollection, n as preservePhotoProposal, nn as WORK_MATH_VOCABULARY, on as validateWorkAssessment, r as validateWorkbookPhotoIdentification, rn as WorkAssessmentValidationError, sn as workAggregateFeedback, t as WorkbookPhotoService, u as QUESTION_EXTRACTION_ARGS_SCHEMA, zt as FamilyIntakeDecisionCollection } from "./chunks/workbook-photo-service-DEb2LSC0.js";
1
+ import { F as normalizeWorkObservedLayout, I as normalizeWorkAnswerRegions, It as FamilyIntakeAssetCollection, Lt as FamilyIntakeCollection, M as QuestionExtractionPendingError, N as QuestionExtractionValidationError, Nt as WorkbookPhotoIntakeCollection, P as LessonWorkService, Tt as familyIntakeScopeId, Y as LearnerAuthorizationError, a as questionExtractionProposalDigest, an as aggregateWorkQuestions, kt as WorkbookPhotoAssetCollection, n as preservePhotoProposal, nn as WORK_MATH_VOCABULARY, on as validateWorkAssessment, r as validateWorkbookPhotoIdentification, rn as WorkAssessmentValidationError, sn as workAggregateFeedback, t as WorkbookPhotoService, u as QUESTION_EXTRACTION_ARGS_SCHEMA, zt as FamilyIntakeDecisionCollection } from "./chunks/workbook-photo-service-CLOEhbyR.js";
2
2
  import { getCurrentTenant, withTenant } from "@happyvertical/smrt-tenancy";
3
3
  import { withPrivateAssetAccess } from "@happyvertical/smrt-assets";
4
4
  import { registerPermissionDefinitions } from "@happyvertical/smrt-users";
@@ -2,7 +2,7 @@
2
2
  "version": "1.0.0",
3
3
  "timestamp": 0,
4
4
  "packageName": "@happyvertical/smrt-education",
5
- "packageVersion": "0.60.5",
5
+ "packageVersion": "0.60.7",
6
6
  "objects": {
7
7
  "@happyvertical/smrt-education:CatalogProviderCollection": {
8
8
  "name": "catalogprovidercollection",
@@ -3,16 +3,16 @@
3
3
  "sensitiveFieldsExcluded": true,
4
4
  "generatedAt": "1970-01-01T00:00:00.000Z",
5
5
  "packageName": "@happyvertical/smrt-education",
6
- "packageVersion": "0.60.5",
6
+ "packageVersion": "0.60.7",
7
7
  "sourceManifestPath": "dist/manifest.json",
8
8
  "agentDocPath": "AGENTS.md",
9
9
  "sourceHashes": {
10
- "manifest": "fe462568374ef4ba509893c8c3f5b6c9d4abcd3bc14872b47f78c5ed6b584b3c",
11
- "packageJson": "030b416125352caf14142da4884dc177bcf5fd2b354e3feb025ee1c7006116b2",
10
+ "manifest": "9551a6eab61d7e5cd1cb8bf5052bbe931a5993f7c8631448991ee73f1dc28639",
11
+ "packageJson": "48c910d1b25dcee264f8527bb3ce2d02f72b8c44de0025c46161bdf098295c01",
12
12
  "agents": "44f253815661ccb7ef613ae3a517a31c022c583940ba2afce2974017c32a972d",
13
13
  "moduleDoc:agents/lesson-materials.md": "f58c0fc813a366c1d69bb636a67c99996996ad90d5b6b3ccc724ea1034e4d0d0",
14
14
  "moduleDoc:agents/learner-service.md": "d7edf68000aec96b52920fb5e8dc4ff4e20b1d81b34413809e8212a885e1c3f9",
15
- "moduleDoc:agents/submission-service.md": "0bb827a62848a3e0708fe2545eac7b64f829a6c9be96eee849c8f16c1fa631d0",
15
+ "moduleDoc:agents/submission-service.md": "16db48f36d8654528d6bcb1e73c46d9d26d7b229d9f1fd029556449a86cfa560",
16
16
  "moduleDoc:agents/lesson-work-service.md": "286dd0197b9bc8471636d58b67f9e11591a175eb5bafb1f7af03d5fee988b86d",
17
17
  "moduleDoc:agents/course-work-design.md": "9d95031139a52273c2bea84e7d33ef95b21d61a3599448b2b11c7d1230490163",
18
18
  "moduleDoc:agents/photo-intake.md": "01f42f0460d04d2b3ca49b5115ec2adae219cf18ead00d750c4b667ea3e5cfa6",
@@ -16459,7 +16459,7 @@
16459
16459
  {
16460
16460
  "path": "agents/submission-service.md",
16461
16461
  "module": "submission-service",
16462
- "content": "# Submission and paper workflow\n\nConstruct `SubmissionService(db, authorizeLearner, authorizeCatalog, {storage,\nstoreOptions?, signAsset?})` from trusted server configuration. It extends\n`LearnerService`: the same active actor/tenant, memberships, linked person,\ndirected guardian relationship and host permission checks apply. The host must\nallow `education.learner.submit`, `education.learner.grade` or\n`education.learner.packet` as appropriate. Grade and packet actions always reject\nthe learner's own identity, even if the host authorizer returns true.\n\nThe protected transaction/auth hooks are internal owning-service extension\npoints. They are not handler APIs. All public service results remain data-only.\nUse the callback's service in `withTransaction`; escaped services are closed.\nSubmission operations share its serial queue, poison-on-failure behavior and\nPostgreSQL enrollment lock. No runtime schema creation occurs.\n\n## Capture and grading\n\nEvery completed-work capture and correction is lesson work: the same transaction\nrecords the learner's `LessonActivity` for the enrollment and lesson and one\nimmutable `WorkAttempt` bound to the submission (a correction continues its\npredecessor's episode); see [lesson work](lesson-work-service.md#one-pipeline).\nThe lesson work tables are therefore required; a host without them gets\n`LearnerHistoryUnavailableError`. Book and loose-page work is refused here with\n`LessonWorkWorkflowRequiredError`; call `assertOrdinarySubmissionScope` before\ncreating a generic intake receipt.\n\nEach page may carry a `pageKey` (1-200 printable characters, distinct within the\ncapture; default `p<position>`). Submission views list `pages` with their\n`pageKey`; older rows read as `p<sortOrder+1>`. A correction (`resubmitSubmission`)\nmay carry only the pages it replaces; the attempt view folds the versions, while\neach grade stays bound to the submission it was given on (#4613).\n\n`captureSubmission` takes the learner request, `enrollmentId`, `lessonId`, a\nnonempty stable `requestKey`, and `pages` containing `name`, `mimeType` and Buffer\n`data`. Each upload becomes a fresh Asset owned by the learner's profile and\nexact tenant, joined solely through `SubmissionAsset`. Up to 100 uploads of\n25 MiB each are accepted (JPEG, PNG, WebP, or PDF). It atomically creates the\nsubmission/asset metadata and moves only that enrollment's progress to\n`submitted`, incrementing attempts once. Caller status, score, grader, asset ID,\nand answer-key flags are never patches. Equal request-key/content retries return\nthe existing submission; altered retries fail. Submitted/review/complete/skipped\nprogress rejects new captures. Content includes ordered filenames, MIME types,\nbytes and notes. Hosts should impose tighter request/body limits as needed.\n\n`captureBlankReference` records a workbook-page scan as immutable\n`blank_reference` evidence without advancing completion or creating a grade.\nTrusted ingestion scopes each receipt to the exact `enrollmentId` and calls\n`assertLessonAssignment` before reading retained evidence; it proves the active\ntenant, actor, learner, enrollment, and lesson without creating progress. A\nstable `intakeItemId` is claimed once in the durable tenant/item binding table,\nthen bound to the tenant, learner, lesson, progress, kind and predecessor; an\naltered retry fails. The binding is database-unique across enrollments while\nordinary uploads remain unbound. `resubmitSubmission` requires the current completed-work predecessor and\ncreates a new immutable `completed_work` attempt. Old pages, grades and feedback\nremain history; stale predecessors cannot be graded or replaced. A correction may\nreopen submitted, review or complete progress, while an AI proposal remains a\nnon-authoritative Grade until guardian review.\n\n`reviewSubmission` accepts an existing authorized submission and optional score\nand feedback. `attestLesson` creates/reuses an Attestation for a matching progress\nitem without requiring uploads. Both require a verified guardian and create a\nnew guardian Grade and set submission to `graded`. On an ordinary lesson the\nprogress becomes `complete` and the grade on the current attempt is recorded as\nthat attempt's lesson work completion decision. Book and loose-page work (its\ncourse has a book key, or it is unfiled photo work) instead uses its explicit\nparent completion decision; grading alone leaves it in progress, including through\na plain SubmissionService instance. The authoritative activity and course decide\nthis, never a caller flag.\n`attestOwnLesson({ enrollmentId, lessonId, policyBasis, notes? })` is the\nlearner's own \"I read it\" / \"I watched it\" for `SELF_ATTESTABLE_LESSON_KINDS`\n(Reading, Video) under `education.learner.attest-own`. Any other actor is\nrefused before the host authorizer; the host decides from its own setting\n(passed as `policyBasis`, 1-200 characters) whether the learner may. It writes\nan ungraded `Attestation` and an insert-only `LessonSelfAttestation` (learner\nactor, basis), moves progress to `submitted` with one attempt, and creates no\nGrade: it is not a grade and never completes the lesson. A repeat returns the\nsame attestation. Other kinds throw `OwnAttestationLessonKindError`;\nsubmitted, review, complete, skipped or already-attested progress throws\n`OwnAttestationConflictError`. Submission views carry `selfReported: true` for\nit; a guardian confirms with `attestLesson` (which grades that attestation) or\n`reviewSubmission`, and the guardian grade then distinguishes confirmed from\nself-reported evidence. A host without `lesson_self_attestations` gets\n`LearnerHistoryUnavailableError`.\nOmitted/null score is unscored; zero is a real score. The latest guardian grade\nwins over auto/AI/instructor proposals, and its score replaces progress's score.\nReview history is retained. ExternalCompletion is available for trusted server\npersistence; phase-zero learner handlers cannot forge reported scores. Online\nsubmissions and automatic grading are not implemented.\n\n`getSubmission` returns only submission metadata, page asset IDs and the selected\ngrade. It does not include catalog answers, extracted answers, storage paths,\nmodel objects, or database handles.\n\n`getLatestLessonSubmission` takes the learner request, `enrollmentId` and\n`lessonId`, repeats live read authorization and exact enrollment/catalog lesson\nscope, and returns the same safe view or `null` when no eligible work exists.\nIt reads at most one submission for that exact progress, choosing `completed_work`\nin `captured`, `needs_review` or `graded` status by `submittedAt DESC, id DESC`.\nBlank references, extracting and rejected work are excluded. Committed capture\nis retained evidence; it does not assert lesson completion. Hosts select completed\nlessons from authorized progress separately. An empty safe page list does not\nfall back to older work; asset signing still requires its own live authorization.\n\n## Storage and signed routes\n\nThe service creates an AssetRuntime bound to the operation's transaction. It\nrequires a resolved URI whose filename retains the fresh asset UUID and MIME\nextension; custom resolvers may choose its provider/directory but must route\nthat URI to the corresponding unique file. Shared existing locators are\nrejected before preservation or cleanup registration. It plans and persists\nthat unique asset URI before writing, registering that new\nasset for cleanup before the provider can partially write. After rollback,\nfiles are removed through the runtime store. Before deletion, the root database\nmust confirm that no asset owner committed: uncertain commit/read failures never\ncause committed bytes to be removed. Only this operation's newly created assets\nare candidates; pre-existing files are never adopted into its cleanup ledger.\n\nDatabase metadata is atomic; external storage uses compensation, not a database\ntransaction. If cleanup cannot complete, `SubmissionStorageCleanupError` contains\nfresh asset IDs and the original cause. Operators must reconcile those IDs in\nthe configured `education-page/<id>.<extension>` storage namespace (custom\nresolvers must retain their routing audit). A successful retry uses fresh IDs\nand cannot delete or reuse orphaned bytes. Process termination may also leave\nunreferenced files; hosts need storage orphan reconciliation. Do not suppress\ncleanup failures or claim crash-safe distributed atomicity.\n\n`signSubmissionAsset` verifies the submission/enrollment/learner ownership and\nits noun join, then verifies the Asset's tenant and learner profile before\ncalling the configured trusted signer. Claims contain actor, tenant, learner,\nenrollment, submission, asset and a five-minute expiry; no static source URI is\nreturned. The host signs every claim and its serving endpoint must verify the\nsignature, expiry, current actor/tenant and object authorization before serving.\nA bearer URL must never become a cross-family or sibling access bypass.\n\n`signLessonPrintable` signs only the exact authorized `printable` LessonAsset\njoin for an enrolled lesson. It never accepts an answer-key join and carries the\nsame tenant, actor, learner and enrollment scope as a submission claim.\n\n## Personal worksheet packets\n\n`splitWorksheetPacket` takes the guardian learner request, exact-owned\n`personal-use-copy` `courseId`, PDF bytes and ranges `{lessonId, firstPage,\nlastPage}`. Page bounds are inclusive and one-based. Ranges must be in bounds,\ndisjoint and target distinct Worksheet lessons in that private course. The\n50 MiB / 100-range limits are enforced before PDF parsing. `pdf-lib` extracts\nactual pages into independent PDFs and records private printable LessonAssets.\nAll resulting metadata commits together; storage failure compensates new PDFs.\nThe source packet is not retained. No shared/global course is accepted and no\nanswer-key join is created. A successful repeated packet upload intentionally\nadds another printable version; a failed upload can be retried safely.\n\nShared integration workflows run on SQLite and real PostgreSQL. Full DuckDB\nworkflow support remains outside the existing supported schema boundary.\n\n## Private asset boundary\n\nCaptured pages and split packet pages use `Asset.accessMode: 'private'` from their\ninitial insert. Ordinary generated Asset REST/MCP operations cannot list, hydrate,\nupdate or delete them, including through the parent STI model. The service opens\nan exact tenant/actor/learner-owner/asset-ID capability only after its normal learner\nrelationship checks. A host's signed serving route must repeat authorization and\nopen that exact capability before loading the asset. See the owning\n[private asset contract](../../assets/agents/private-assets.md).\n\nStorage must be private (including provider ACLs). Public HTTP(S) source locators\nare rejected; a hidden URL alone cannot protect publicly accessible bytes. Apply\nthe manifest migration adding `assets.access_mode` before deploying this runtime;\nlegacy ordinary assets retain the public default. Runtime creates no schema.\n\nPrivate lesson files must already be private Assets in the same tenant. Saving\nan answer-key join, or any join under a personal-use-copy course, requires the\nhost's exact actor/owner/asset capability; a public asset is never automatically\npromoted. Packet splitting retains this capability while creating each join.\nPersisted course tenant/license and section/lesson parent identity cannot change;\ncreate new structure and explicitly re-author its joins instead. Mandatory\nwrite predicates enforce this even for natural-key adoption and concurrent writes.\nOrdinary content and metadata refresh remains supported. This\nprevents existing public material being reclassified by moving its parent.\n\nFor pre-existing invalid joins, an authorized host must inventory private-material\njoins and remove invalid associations, recreate the bytes in private storage as a\nnew privately classified Asset, then re-author the join under its exact capability.\nDo not merely hide the URI, mutate access_mode with raw SQL, or delete shared\npublic bytes. This repair requires explicit storage/ownership authorization;\nnormal runtime does not migrate existing records.\n"
16462
+ "content": "# Submission and paper workflow\n\nConstruct `SubmissionService(db, authorizeLearner, authorizeCatalog, {storage,\nstoreOptions?, signAsset?})` from trusted server configuration. It extends\n`LearnerService`: the same active actor/tenant, memberships, linked person,\ndirected guardian relationship and host permission checks apply. The host must\nallow `education.learner.submit`, `education.learner.grade` or\n`education.learner.packet` as appropriate. Grade and packet actions always reject\nthe learner's own identity, even if the host authorizer returns true.\n\nThe protected transaction/auth hooks are internal owning-service extension\npoints. They are not handler APIs. All public service results remain data-only.\nUse the callback's service in `withTransaction`; escaped services are closed.\nSubmission operations share its serial queue, poison-on-failure behavior and\nPostgreSQL enrollment lock. No runtime schema creation occurs.\n\n## Capture and grading\n\nEvery completed-work capture and correction is lesson work: the same transaction\nrecords the learner's `LessonActivity` for the enrollment and lesson and one\nimmutable `WorkAttempt` bound to the submission (a correction continues its\npredecessor's episode); see [lesson work](lesson-work-service.md#one-pipeline).\nThe lesson work tables are therefore required; a host without them gets\n`LearnerHistoryUnavailableError`. Book and loose-page work is refused here with\n`LessonWorkWorkflowRequiredError`; call `assertOrdinarySubmissionScope` before\ncreating a generic intake receipt.\n\nEach page may carry a `pageKey` (1-200 printable characters, distinct within the\ncapture; default `p<position>`). Submission views list `pages` with their\n`pageKey`; older rows read as `p<sortOrder+1>`. A correction (`resubmitSubmission`)\nmay carry only the pages it replaces; the attempt view folds the versions, while\neach grade stays bound to the submission it was given on (#4613).\n\n`captureSubmission` takes the learner request, `enrollmentId`, `lessonId`, a\nnonempty stable `requestKey`, and `pages` containing `name`, `mimeType` and Buffer\n`data`. Each upload becomes a fresh Asset owned by the learner's profile and\nexact tenant, joined solely through `SubmissionAsset`. Up to 100 uploads of\n25 MiB each are accepted (JPEG, PNG, WebP, or PDF). It atomically creates the\nsubmission/asset metadata and moves only that enrollment's progress to\n`submitted`, incrementing attempts once. Caller status, score, grader, asset ID,\nand answer-key flags are never patches. Equal request-key/content retries return\nthe existing submission; altered retries fail. Submitted/review/complete/skipped\nprogress rejects new captures. Content includes ordered filenames, MIME types,\nbytes and notes. Hosts should impose tighter request/body limits as needed.\n\n`captureBlankReference` records a workbook-page scan as immutable\n`blank_reference` evidence without advancing completion or creating a grade.\nTrusted ingestion scopes each receipt to the exact `enrollmentId` and calls\n`assertLessonAssignment` before reading retained evidence; it proves the active\ntenant, actor, learner, enrollment, and lesson without creating progress. A\nstable `intakeItemId` is claimed once in the durable tenant/item binding table,\nthen bound to the tenant, learner, lesson, progress, kind and predecessor; an\naltered retry fails. The binding is database-unique across enrollments while\nordinary uploads remain unbound. `resubmitSubmission` requires the current completed-work predecessor and\ncreates a new immutable `completed_work` attempt. Old pages, grades and feedback\nremain history; stale predecessors cannot be graded or replaced. A correction may\nreopen submitted, review or complete progress, while an AI proposal remains a\nnon-authoritative Grade until guardian review.\n\n`reviewSubmission` accepts an existing authorized submission and optional score\nand feedback. `attestLesson` creates/reuses an Attestation for a matching progress\nitem without requiring uploads. Both require a verified guardian and create a\nnew guardian Grade and set submission to `graded`. On an ordinary lesson the\nprogress becomes `complete` and the grade on the current attempt is recorded as\nthat attempt's lesson work completion decision. Book and loose-page work (its\ncourse has a book key, or it is unfiled photo work) instead uses its explicit\nparent completion decision; grading alone leaves it in progress, including through\na plain SubmissionService instance. The authoritative activity and course decide\nthis, never a caller flag.\n`attestOwnLesson({ enrollmentId, lessonId, policyBasis, notes? })` is the\nlearner's own \"I read it\" / \"I watched it\" for `SELF_ATTESTABLE_LESSON_KINDS`\n(Reading, Video by default) under `education.learner.attest-own`. Any other actor is\nrefused before the host authorizer; the host decides from its own setting\n(passed as `policyBasis`, 1-200 characters) whether the learner may. It writes\nan ungraded `Attestation` and an insert-only `LessonSelfAttestation` (learner\nactor, basis), moves progress to `submitted` with one attempt, and creates no\nGrade: it is not a grade and never completes the lesson. A repeat returns the\nsame attestation. Other kinds throw `OwnAttestationLessonKindError`. A host widens the set with the server-owned\n`selfAttestableKinds: '*' | readonly string[]` constructor option (never from request data), e.g. when a learner's \"I'm done\" sends any\nlesson to a guardian for review; every other check is unchanged;\nsubmitted, review, complete, skipped or already-attested progress throws\n`OwnAttestationConflictError`. Submission views carry `selfReported: true` for\nit; a guardian confirms with `attestLesson` (which grades that attestation) or\n`reviewSubmission`, and the guardian grade then distinguishes confirmed from\nself-reported evidence. A host without `lesson_self_attestations` gets\n`LearnerHistoryUnavailableError`.\nOmitted/null score is unscored; zero is a real score. The latest guardian grade\nwins over auto/AI/instructor proposals, and its score replaces progress's score.\nReview history is retained. ExternalCompletion is available for trusted server\npersistence; phase-zero learner handlers cannot forge reported scores. Online\nsubmissions and automatic grading are not implemented.\n\n`getSubmission` returns only submission metadata, page asset IDs and the selected\ngrade. It does not include catalog answers, extracted answers, storage paths,\nmodel objects, or database handles.\n\n`getLatestLessonSubmission` takes the learner request, `enrollmentId` and\n`lessonId`, repeats live read authorization and exact enrollment/catalog lesson\nscope, and returns the same safe view or `null` when no eligible work exists.\nIt reads at most one submission for that exact progress, choosing `completed_work`\nin `captured`, `needs_review` or `graded` status by `submittedAt DESC, id DESC`.\nBlank references, extracting and rejected work are excluded. Committed capture\nis retained evidence; it does not assert lesson completion. Hosts select completed\nlessons from authorized progress separately. An empty safe page list does not\nfall back to older work; asset signing still requires its own live authorization.\n\n## Storage and signed routes\n\nThe service creates an AssetRuntime bound to the operation's transaction. It\nrequires a resolved URI whose filename retains the fresh asset UUID and MIME\nextension; custom resolvers may choose its provider/directory but must route\nthat URI to the corresponding unique file. Shared existing locators are\nrejected before preservation or cleanup registration. It plans and persists\nthat unique asset URI before writing, registering that new\nasset for cleanup before the provider can partially write. After rollback,\nfiles are removed through the runtime store. Before deletion, the root database\nmust confirm that no asset owner committed: uncertain commit/read failures never\ncause committed bytes to be removed. Only this operation's newly created assets\nare candidates; pre-existing files are never adopted into its cleanup ledger.\n\nDatabase metadata is atomic; external storage uses compensation, not a database\ntransaction. If cleanup cannot complete, `SubmissionStorageCleanupError` contains\nfresh asset IDs and the original cause. Operators must reconcile those IDs in\nthe configured `education-page/<id>.<extension>` storage namespace (custom\nresolvers must retain their routing audit). A successful retry uses fresh IDs\nand cannot delete or reuse orphaned bytes. Process termination may also leave\nunreferenced files; hosts need storage orphan reconciliation. Do not suppress\ncleanup failures or claim crash-safe distributed atomicity.\n\n`signSubmissionAsset` verifies the submission/enrollment/learner ownership and\nits noun join, then verifies the Asset's tenant and learner profile before\ncalling the configured trusted signer. Claims contain actor, tenant, learner,\nenrollment, submission, asset and a five-minute expiry; no static source URI is\nreturned. The host signs every claim and its serving endpoint must verify the\nsignature, expiry, current actor/tenant and object authorization before serving.\nA bearer URL must never become a cross-family or sibling access bypass.\n\n`signLessonPrintable` signs only the exact authorized `printable` LessonAsset\njoin for an enrolled lesson. It never accepts an answer-key join and carries the\nsame tenant, actor, learner and enrollment scope as a submission claim.\n\n## Personal worksheet packets\n\n`splitWorksheetPacket` takes the guardian learner request, exact-owned\n`personal-use-copy` `courseId`, PDF bytes and ranges `{lessonId, firstPage,\nlastPage}`. Page bounds are inclusive and one-based. Ranges must be in bounds,\ndisjoint and target distinct Worksheet lessons in that private course. The\n50 MiB / 100-range limits are enforced before PDF parsing. `pdf-lib` extracts\nactual pages into independent PDFs and records private printable LessonAssets.\nAll resulting metadata commits together; storage failure compensates new PDFs.\nThe source packet is not retained. No shared/global course is accepted and no\nanswer-key join is created. A successful repeated packet upload intentionally\nadds another printable version; a failed upload can be retried safely.\n\nShared integration workflows run on SQLite and real PostgreSQL. Full DuckDB\nworkflow support remains outside the existing supported schema boundary.\n\n## Private asset boundary\n\nCaptured pages and split packet pages use `Asset.accessMode: 'private'` from their\ninitial insert. Ordinary generated Asset REST/MCP operations cannot list, hydrate,\nupdate or delete them, including through the parent STI model. The service opens\nan exact tenant/actor/learner-owner/asset-ID capability only after its normal learner\nrelationship checks. A host's signed serving route must repeat authorization and\nopen that exact capability before loading the asset. See the owning\n[private asset contract](../../assets/agents/private-assets.md).\n\nStorage must be private (including provider ACLs). Public HTTP(S) source locators\nare rejected; a hidden URL alone cannot protect publicly accessible bytes. Apply\nthe manifest migration adding `assets.access_mode` before deploying this runtime;\nlegacy ordinary assets retain the public default. Runtime creates no schema.\n\nPrivate lesson files must already be private Assets in the same tenant. Saving\nan answer-key join, or any join under a personal-use-copy course, requires the\nhost's exact actor/owner/asset capability; a public asset is never automatically\npromoted. Packet splitting retains this capability while creating each join.\nPersisted course tenant/license and section/lesson parent identity cannot change;\ncreate new structure and explicitly re-author its joins instead. Mandatory\nwrite predicates enforce this even for natural-key adoption and concurrent writes.\nOrdinary content and metadata refresh remains supported. This\nprevents existing public material being reclassified by moving its parent.\n\nFor pre-existing invalid joins, an authorized host must inventory private-material\njoins and remove invalid associations, recreate the bytes in private storage as a\nnew privately classified Asset, then re-author the join under its exact capability.\nDo not merely hide the URI, mutate access_mode with raw SQL, or delete shared\npublic bytes. This repair requires explicit storage/ownership authorization;\nnormal runtime does not migrate existing records.\n"
16463
16463
  },
16464
16464
  {
16465
16465
  "path": "agents/lesson-work-service.md",
@@ -39,6 +39,12 @@ export interface SubmissionServiceOptions {
39
39
  storeOptions?: AssetRuntimeOptions['storeOptions'];
40
40
  /** Sign a short-lived route claim. Its serving endpoint must verify every claim. */
41
41
  signAsset?: (claim: Readonly<SubmissionAssetClaim>) => Promise<string>;
42
+ /**
43
+ * Lesson kinds a learner may self-report with `attestOwnLesson`: a list of
44
+ * kind names, or `'*'` for every kind. Defaults to
45
+ * `SELF_ATTESTABLE_LESSON_KINDS` (Reading, Video).
46
+ */
47
+ selfAttestableKinds?: '*' | ReadonlyArray<string>;
42
48
  }
43
49
  export type SubmissionView = Readonly<{
44
50
  id: string;
@@ -75,7 +81,7 @@ export type SubmissionView = Readonly<{
75
81
  }>;
76
82
  /** Lesson kinds a learner may attest on their own: nothing to photograph. */
77
83
  export declare const SELF_ATTESTABLE_LESSON_KINDS: ReadonlyArray<string>;
78
- /** `attestOwnLesson` was asked for a lesson that is not Reading or Video. */
84
+ /** `attestOwnLesson` was asked for a lesson kind the host does not allow (default Reading or Video). */
79
85
  export declare class OwnAttestationLessonKindError extends LearnerValidationError {
80
86
  readonly kind: string;
81
87
  constructor(kind: string);
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@happyvertical/smrt-education",
3
- "version": "0.60.5",
3
+ "version": "0.60.7",
4
4
  "smrtJsdoc": "strict",
5
5
  "description": "Tenant-aware learning catalog models and authorized catalog access for SMRT",
6
6
  "type": "module",
@@ -29,18 +29,18 @@
29
29
  }
30
30
  },
31
31
  "dependencies": {
32
- "@happyvertical/smrt-assets": "0.60.5",
33
- "@happyvertical/smrt-core": "0.60.5",
34
- "@happyvertical/smrt-profiles": "0.60.5",
35
- "@happyvertical/smrt-tenancy": "0.60.5",
36
- "@happyvertical/smrt-users": "0.60.5",
32
+ "@happyvertical/smrt-assets": "0.60.7",
33
+ "@happyvertical/smrt-core": "0.60.7",
34
+ "@happyvertical/smrt-profiles": "0.60.7",
35
+ "@happyvertical/smrt-tenancy": "0.60.7",
36
+ "@happyvertical/smrt-users": "0.60.7",
37
37
  "@happyvertical/files": "^0.111.3",
38
38
  "@happyvertical/sql": "^0.111.3",
39
39
  "pdf-lib": "1.17.1",
40
- "@happyvertical/smrt-ingestion": "0.60.5"
40
+ "@happyvertical/smrt-ingestion": "0.60.7"
41
41
  },
42
42
  "devDependencies": {
43
- "@happyvertical/smrt-vitest": "0.60.5",
43
+ "@happyvertical/smrt-vitest": "0.60.7",
44
44
  "@types/node": "24.13.6",
45
45
  "typescript": "6.0.3",
46
46
  "vite": "8.1.6",