@happyvertical/smrt-education 0.57.44 → 0.57.46
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.md +2 -1
- package/agents/question-records.md +42 -2
- package/dist/chunks/{workbook-photo-service-BxvZDqjM.js → workbook-photo-service-DKgoUHeb.js} +4743 -4743
- package/dist/chunks/workbook-photo-service-DKgoUHeb.js.map +1 -0
- package/dist/course-authoring-contracts.d.ts +1 -1
- package/dist/course-authoring-contracts.d.ts.map +1 -1
- package/dist/course-generation-contracts.d.ts +38 -2
- package/dist/course-generation-contracts.d.ts.map +1 -1
- package/dist/course-generation-review-service.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +575 -11
- package/dist/index.js.map +1 -1
- package/dist/ingestion.js +1 -1
- package/dist/manifest.json +445 -1
- package/dist/question-authoring-service.d.ts +30 -1
- package/dist/question-authoring-service.d.ts.map +1 -1
- package/dist/question-contracts.d.ts +52 -0
- package/dist/question-contracts.d.ts.map +1 -1
- package/dist/question-models.d.ts +27 -0
- package/dist/question-models.d.ts.map +1 -1
- package/dist/question-printable.d.ts +9 -0
- package/dist/question-printable.d.ts.map +1 -0
- package/dist/smrt-knowledge.json +172 -11
- package/dist/submission-service.d.ts.map +1 -1
- package/package.json +8 -8
- package/dist/chunks/workbook-photo-service-BxvZDqjM.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"question-models.d.ts","sourceRoot":"","sources":["../src/question-models.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"question-models.d.ts","sourceRoot":"","sources":["../src/question-models.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type GuardianWorksheetBundle, type LearnerWorksheetBundle } from './question-contracts.js';
|
|
2
|
+
/**
|
|
3
|
+
* Learner copy. It takes the keyless learner bundle, whose type has no key,
|
|
4
|
+
* rubric or provenance members, so a key cannot reach the PDF.
|
|
5
|
+
*/
|
|
6
|
+
export declare function renderLearnerWorksheetPdf(bundle: LearnerWorksheetBundle, title: string): Promise<Uint8Array>;
|
|
7
|
+
/** Guardian copy: the same layout plus answer keys, explanations and rubric summaries. */
|
|
8
|
+
export declare function renderGuardianWorksheetPdf(bundle: GuardianWorksheetBundle, title: string): Promise<Uint8Array>;
|
|
9
|
+
//# sourceMappingURL=question-printable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"question-printable.d.ts","sourceRoot":"","sources":["../src/question-printable.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,uBAAuB,EAE5B,KAAK,sBAAsB,EAO5B,MAAM,yBAAyB,CAAC;AAkUjC;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,sBAAsB,EAC9B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,UAAU,CAAC,CAMrB;AAED,0FAA0F;AAC1F,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,uBAAuB,EAC/B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,UAAU,CAAC,CAMrB"}
|
package/dist/smrt-knowledge.json
CHANGED
|
@@ -3,20 +3,20 @@
|
|
|
3
3
|
"sensitiveFieldsExcluded": true,
|
|
4
4
|
"generatedAt": "1970-01-01T00:00:00.000Z",
|
|
5
5
|
"packageName": "@happyvertical/smrt-education",
|
|
6
|
-
"packageVersion": "0.57.
|
|
6
|
+
"packageVersion": "0.57.46",
|
|
7
7
|
"sourceManifestPath": "dist/manifest.json",
|
|
8
8
|
"agentDocPath": "AGENTS.md",
|
|
9
9
|
"sourceHashes": {
|
|
10
|
-
"manifest": "
|
|
11
|
-
"packageJson": "
|
|
12
|
-
"agents": "
|
|
10
|
+
"manifest": "c5e585b8bbf4ba004fa381349a5bbd77cb834ad41b40ea452c188a319870c46a",
|
|
11
|
+
"packageJson": "94831ed17f24489215be11ef71781fd0add57cbb2192d3658b8ae2e30c7c96bf",
|
|
12
|
+
"agents": "57c43cd254f4d22602c8829fb01699a3cea56c9717ca0ef2a571c61bffac5507",
|
|
13
13
|
"moduleDoc:agents/learner-service.md": "8ad25eb6afd23d7ba04ecccbed02b154be83c24d3a54bd172b19faae30601f98",
|
|
14
14
|
"moduleDoc:agents/submission-service.md": "ae22d789d5e6a695787a2c64bf6720430c91196aab2bbc2892f831b3155bb1ce",
|
|
15
15
|
"moduleDoc:agents/workbook-service.md": "ae3a0f208b42766e417eac226e4a24ec15fe17c1ba9cde26a325ded982614278",
|
|
16
16
|
"moduleDoc:agents/photo-intake.md": "3b7057201ee30b2361aad23ea52e8a55c8ed5354e7a7e4a8193b7de17ca2f0db",
|
|
17
17
|
"moduleDoc:agents/course-authoring-service.md": "9ac4b8d85974e0dd3e43457fd18c4befd2c42c865bb26446cffdfe2712febab8",
|
|
18
18
|
"moduleDoc:agents/course-generation-review.md": "579b960994e96a9c17a935ae18920a323e95dfbf968b25e6628f424e75ebab7f",
|
|
19
|
-
"moduleDoc:agents/question-records.md": "
|
|
19
|
+
"moduleDoc:agents/question-records.md": "335fe247f7294c6b891885d43d4eaccb20885bfb4a861cf66ae245e8be1fa781",
|
|
20
20
|
"moduleDoc:agents/source-import.md": "30ee823589d655442bcf1abcd86a2132172065b4bc5e3c4d89b1e8b7afcc66bc",
|
|
21
21
|
"moduleDoc:agents/family-intake.md": "540b6d37f438496acb0208b6ac7258264e2142bce3d2f986967b7741606fe4f7",
|
|
22
22
|
"moduleDoc:agents/catalog-previews.md": "5f4e0352274009b3ce00408017a16666036d24df695a7078c27317ba4e66f0a7",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"smrt"
|
|
67
67
|
],
|
|
68
68
|
"risks": [
|
|
69
|
-
"cross-package-refs:
|
|
69
|
+
"cross-package-refs:22",
|
|
70
70
|
"sensitive-fields-excluded",
|
|
71
71
|
"sti-inheritance"
|
|
72
72
|
],
|
|
@@ -9283,6 +9283,167 @@
|
|
|
9283
9283
|
"tags": [],
|
|
9284
9284
|
"risks": []
|
|
9285
9285
|
},
|
|
9286
|
+
{
|
|
9287
|
+
"name": "GeneratedPrintable",
|
|
9288
|
+
"qualifiedName": "@happyvertical/smrt-education:GeneratedPrintable",
|
|
9289
|
+
"collection": "generatedprintables",
|
|
9290
|
+
"description": "Append-only record that a released lesson's worksheet render was attached to the print queue: one row per tenant, lesson, worksheet version and audience.",
|
|
9291
|
+
"tableName": "generated_printables",
|
|
9292
|
+
"packageName": "@happyvertical/smrt-education",
|
|
9293
|
+
"extends": "SmrtObject",
|
|
9294
|
+
"fields": [
|
|
9295
|
+
{
|
|
9296
|
+
"name": "tenantId",
|
|
9297
|
+
"type": "text",
|
|
9298
|
+
"required": true,
|
|
9299
|
+
"columnType": "UUID"
|
|
9300
|
+
},
|
|
9301
|
+
{
|
|
9302
|
+
"name": "lessonId",
|
|
9303
|
+
"type": "foreignKey",
|
|
9304
|
+
"required": true,
|
|
9305
|
+
"related": "Lesson",
|
|
9306
|
+
"columnType": "UUID"
|
|
9307
|
+
},
|
|
9308
|
+
{
|
|
9309
|
+
"name": "worksheetVersionId",
|
|
9310
|
+
"type": "text",
|
|
9311
|
+
"required": false,
|
|
9312
|
+
"columnType": "TEXT"
|
|
9313
|
+
},
|
|
9314
|
+
{
|
|
9315
|
+
"name": "audience",
|
|
9316
|
+
"type": "text",
|
|
9317
|
+
"required": false,
|
|
9318
|
+
"columnType": "TEXT",
|
|
9319
|
+
"default": "learner"
|
|
9320
|
+
},
|
|
9321
|
+
{
|
|
9322
|
+
"name": "assetId",
|
|
9323
|
+
"type": "crossPackageRef",
|
|
9324
|
+
"required": true,
|
|
9325
|
+
"related": "@happyvertical/smrt-assets:Asset",
|
|
9326
|
+
"columnType": "UUID"
|
|
9327
|
+
},
|
|
9328
|
+
{
|
|
9329
|
+
"name": "lessonRevisionId",
|
|
9330
|
+
"type": "text",
|
|
9331
|
+
"required": false,
|
|
9332
|
+
"columnType": "TEXT"
|
|
9333
|
+
},
|
|
9334
|
+
{
|
|
9335
|
+
"name": "generatedByUserId",
|
|
9336
|
+
"type": "text",
|
|
9337
|
+
"required": false,
|
|
9338
|
+
"columnType": "TEXT"
|
|
9339
|
+
},
|
|
9340
|
+
{
|
|
9341
|
+
"name": "delegatingGuardianUserId",
|
|
9342
|
+
"type": "text",
|
|
9343
|
+
"required": false,
|
|
9344
|
+
"columnType": "TEXT"
|
|
9345
|
+
},
|
|
9346
|
+
{
|
|
9347
|
+
"name": "delegationId",
|
|
9348
|
+
"type": "text",
|
|
9349
|
+
"required": false,
|
|
9350
|
+
"columnType": "TEXT"
|
|
9351
|
+
},
|
|
9352
|
+
{
|
|
9353
|
+
"name": "recordedAt",
|
|
9354
|
+
"type": "text",
|
|
9355
|
+
"required": false,
|
|
9356
|
+
"columnType": "TEXT"
|
|
9357
|
+
}
|
|
9358
|
+
],
|
|
9359
|
+
"relationships": [
|
|
9360
|
+
{
|
|
9361
|
+
"name": "lessonId",
|
|
9362
|
+
"type": "foreignKey",
|
|
9363
|
+
"required": true,
|
|
9364
|
+
"related": "Lesson",
|
|
9365
|
+
"columnType": "UUID"
|
|
9366
|
+
},
|
|
9367
|
+
{
|
|
9368
|
+
"name": "assetId",
|
|
9369
|
+
"type": "crossPackageRef",
|
|
9370
|
+
"required": true,
|
|
9371
|
+
"related": "@happyvertical/smrt-assets:Asset",
|
|
9372
|
+
"columnType": "UUID"
|
|
9373
|
+
}
|
|
9374
|
+
],
|
|
9375
|
+
"methods": [
|
|
9376
|
+
"delete",
|
|
9377
|
+
"save"
|
|
9378
|
+
],
|
|
9379
|
+
"methodSignatures": [
|
|
9380
|
+
{
|
|
9381
|
+
"name": "delete",
|
|
9382
|
+
"async": true,
|
|
9383
|
+
"returns": "Promise<void>"
|
|
9384
|
+
},
|
|
9385
|
+
{
|
|
9386
|
+
"name": "save",
|
|
9387
|
+
"async": true,
|
|
9388
|
+
"params": [
|
|
9389
|
+
"options?: SmrtSaveOptions"
|
|
9390
|
+
],
|
|
9391
|
+
"returns": "Promise<this>"
|
|
9392
|
+
}
|
|
9393
|
+
],
|
|
9394
|
+
"tenant": {
|
|
9395
|
+
"scoped": true,
|
|
9396
|
+
"mode": "required",
|
|
9397
|
+
"field": "tenantId"
|
|
9398
|
+
},
|
|
9399
|
+
"conflictColumns": [
|
|
9400
|
+
"tenant_id",
|
|
9401
|
+
"lesson_id",
|
|
9402
|
+
"worksheet_version_id",
|
|
9403
|
+
"audience"
|
|
9404
|
+
],
|
|
9405
|
+
"surfaces": [],
|
|
9406
|
+
"withheldSurfaces": [
|
|
9407
|
+
{
|
|
9408
|
+
"kind": "api",
|
|
9409
|
+
"operation": "delete",
|
|
9410
|
+
"code": "api-disabled",
|
|
9411
|
+
"reason": "api is disabled",
|
|
9412
|
+
"objectName": "@happyvertical/smrt-education:GeneratedPrintable"
|
|
9413
|
+
},
|
|
9414
|
+
{
|
|
9415
|
+
"kind": "api",
|
|
9416
|
+
"operation": "save",
|
|
9417
|
+
"code": "api-disabled",
|
|
9418
|
+
"reason": "api is disabled",
|
|
9419
|
+
"objectName": "@happyvertical/smrt-education:GeneratedPrintable"
|
|
9420
|
+
}
|
|
9421
|
+
],
|
|
9422
|
+
"relationshipFeatures": [
|
|
9423
|
+
"crossPackageRef",
|
|
9424
|
+
"foreignKey",
|
|
9425
|
+
"uuidColumns"
|
|
9426
|
+
],
|
|
9427
|
+
"tags": [],
|
|
9428
|
+
"risks": []
|
|
9429
|
+
},
|
|
9430
|
+
{
|
|
9431
|
+
"name": "GeneratedPrintableCollection",
|
|
9432
|
+
"qualifiedName": "@happyvertical/smrt-education:GeneratedPrintableCollection",
|
|
9433
|
+
"collection": "generatedprintables",
|
|
9434
|
+
"tableName": "generated_printables",
|
|
9435
|
+
"packageName": "@happyvertical/smrt-education",
|
|
9436
|
+
"extends": "SmrtCollection",
|
|
9437
|
+
"fields": [],
|
|
9438
|
+
"relationships": [],
|
|
9439
|
+
"methods": [],
|
|
9440
|
+
"surfaces": [],
|
|
9441
|
+
"relationshipFeatures": [
|
|
9442
|
+
"uuidColumns"
|
|
9443
|
+
],
|
|
9444
|
+
"tags": [],
|
|
9445
|
+
"risks": []
|
|
9446
|
+
},
|
|
9286
9447
|
{
|
|
9287
9448
|
"name": "Submission",
|
|
9288
9449
|
"qualifiedName": "@happyvertical/smrt-education:Submission",
|
|
@@ -12265,14 +12426,14 @@
|
|
|
12265
12426
|
"surfaces": [],
|
|
12266
12427
|
"prompts": [],
|
|
12267
12428
|
"relationshipsV2": {
|
|
12268
|
-
"foreignKeyFields":
|
|
12269
|
-
"crossPackageRefFields":
|
|
12429
|
+
"foreignKeyFields": 154,
|
|
12430
|
+
"crossPackageRefFields": 22,
|
|
12270
12431
|
"junctionCollections": 2,
|
|
12271
12432
|
"hierarchicalObjects": 0,
|
|
12272
12433
|
"polymorphicAssociations": 0,
|
|
12273
|
-
"uuidColumns":
|
|
12434
|
+
"uuidColumns": 650
|
|
12274
12435
|
},
|
|
12275
|
-
"agentDoc": "# smrt-education\n\nCatalog objects are optional-tenant scoped and have no generated REST, CLI, MCP,\nor AI surface. Applications use `CatalogService`, supplying their actor-bound\nauthorization decision and the trusted `TenantCollection.withTenantCatalogReadScope`\nadapter from smrt-users. Catalog authorization receives the exact shared collection\nexecutor; live session/permission checks must use that executor. That read scope may widen only an allowlisted catalog\ncollection's `list` to self, ancestors, and globals; it never authorizes a get,\nwrite, raw query, sibling, or descendant read.\n\n`personal-use-copy` courses and all `answer-key` lesson assets are private\nfamily material. Do not publish them, promote them, or expose them through a\nlearner-facing result. `LessonAsset` is the sole owner join for lesson files;\ndo not add asset-id fields to lesson subclasses.\n\nLearner objects require exact tenant ownership and close generated surfaces.\n`LearnerService` owns actor/resource authorization and transactional planning and\nstart-progress; see [learner contract](agents/learner-service.md). Guardian\nrelationships require a host decision about their type and effective terms.\nNever expose direct collection writes as learner handlers, reset progress on a\nretry, or treat an unscored nullable decimal as zero.\n\nSubmission capture, guardian grading and private PDF packet splitting use\n`SubmissionService`; see [submission contract](agents/submission-service.md).\nKeep asset metadata on the same transaction and compensate only newly planned\nfiles after rollback; never expose source URIs or accept learner grade patches.\n\nValidation: `pnpm --filter @happyvertical/smrt-education test`,\n`test:postgres`, `typecheck`, and `build`.\n\nPhysical workbook capture, immutable assessment/feedback history and descriptive\nevidence use [WorkbookService](agents/workbook-service.md). Keep provisional\nsharing separate from guardian Grade authority. Photo-first receipt/context\ncapture uses [WorkbookPhotoService](agents/photo-intake.md); covers/references\nnever create learning evidence, and blank exercises need explicit work intent.\n\nRevisioned authored courses, release, archive, enrollment pins and licence use\n[CourseAuthoringService](agents/course-authoring-service.md). Keep history\nappend-only, require request keys, and never weaken personal-use-copy rules.\n\nGeneration proposals into new draft revisions and revision-bound educational\nreview use [CourseGenerationReviewService](agents/course-generation-review.md).\nKeep supplied content unless a decision is recorded; reviews carry no score.\n\nImmutable questions, answer keys/rubrics, stable learning objectives, worksheet\nrender ids and exact-revision references use [QuestionAuthoringService](agents/question-records.md).\nKeep keys out of learner bundles; a missing key stays null
|
|
12436
|
+
"agentDoc": "# smrt-education\n\nCatalog objects are optional-tenant scoped and have no generated REST, CLI, MCP,\nor AI surface. Applications use `CatalogService`, supplying their actor-bound\nauthorization decision and the trusted `TenantCollection.withTenantCatalogReadScope`\nadapter from smrt-users. Catalog authorization receives the exact shared collection\nexecutor; live session/permission checks must use that executor. That read scope may widen only an allowlisted catalog\ncollection's `list` to self, ancestors, and globals; it never authorizes a get,\nwrite, raw query, sibling, or descendant read.\n\n`personal-use-copy` courses and all `answer-key` lesson assets are private\nfamily material. Do not publish them, promote them, or expose them through a\nlearner-facing result. `LessonAsset` is the sole owner join for lesson files;\ndo not add asset-id fields to lesson subclasses.\n\nLearner objects require exact tenant ownership and close generated surfaces.\n`LearnerService` owns actor/resource authorization and transactional planning and\nstart-progress; see [learner contract](agents/learner-service.md). Guardian\nrelationships require a host decision about their type and effective terms.\nNever expose direct collection writes as learner handlers, reset progress on a\nretry, or treat an unscored nullable decimal as zero.\n\nSubmission capture, guardian grading and private PDF packet splitting use\n`SubmissionService`; see [submission contract](agents/submission-service.md).\nKeep asset metadata on the same transaction and compensate only newly planned\nfiles after rollback; never expose source URIs or accept learner grade patches.\n\nValidation: `pnpm --filter @happyvertical/smrt-education test`,\n`test:postgres`, `typecheck`, and `build`.\n\nPhysical workbook capture, immutable assessment/feedback history and descriptive\nevidence use [WorkbookService](agents/workbook-service.md). Keep provisional\nsharing separate from guardian Grade authority. Photo-first receipt/context\ncapture uses [WorkbookPhotoService](agents/photo-intake.md); covers/references\nnever create learning evidence, and blank exercises need explicit work intent.\n\nRevisioned authored courses, release, archive, enrollment pins and licence use\n[CourseAuthoringService](agents/course-authoring-service.md). Keep history\nappend-only, require request keys, and never weaken personal-use-copy rules.\n\nGeneration proposals into new draft revisions and revision-bound educational\nreview use [CourseGenerationReviewService](agents/course-generation-review.md).\nKeep supplied content unless a decision is recorded; reviews carry no score.\n\nImmutable questions, answer keys/rubrics, stable learning objectives, worksheet\nrender ids and exact-revision references use [QuestionAuthoringService](agents/question-records.md).\nKeep keys out of learner bundles; a missing key stays null. `attachGeneratedPrintable`\nstores the rendered PDFs; the guardian copy is always an `answer-key`, never `printable`.\n\nSource import: [host boundary and transaction contract](agents/source-import.md).\n`SourceImportService` requires host opt-in, matching active actor/tenant and\nexplicit licensing authorization; never add a system/global write bypass.\n\nFamily-owned unassigned originals and audited learner adoption use\n[FamilyIntakeService](agents/family-intake.md). Keep family source scope immutable;\nassignment alone never creates learning history or grants learner inbox access.\n\nPublisher catalog previews use [the preview contract](agents/catalog-previews.md).\nKeep independent image rights and source revisions; serve via `CatalogPreviewService`\nwith live actor/tenant authorization, never direct provider image URLs.\n\nEnrollment Plan projections and guardian-only parent notes use\n[the Plan contract](agents/learner-plan.md). Keep awaiting review separate from\nContinue; note authority/provenance never grants learner access or learning evidence.\n\nHomeschool group sharing uses [GroupSharingService](agents/group-sharing.md),\nits read-only reader and revision comment service. Group tenants never become\nfamily ancestors or guardians. Enumerate only the group-owned opaque roster index,\nthen revalidate each exact family edge and current policy. Media delivery must call\nthe reader on every request; signed storage URLs are not a sharing grant. Saved\nparent comment visibility applies on every child read. Progress with feedback\ndisabled contains counts only, never correctness, scores or concept labels.\n",
|
|
12276
12437
|
"moduleDocs": [
|
|
12277
12438
|
{
|
|
12278
12439
|
"path": "agents/learner-service.md",
|
|
@@ -12307,7 +12468,7 @@
|
|
|
12307
12468
|
{
|
|
12308
12469
|
"path": "agents/question-records.md",
|
|
12309
12470
|
"module": "question-records",
|
|
12310
|
-
"content": "# Question and learning-objective records\n\n`QuestionAuthoringService` (SMRT #4515, extends `CourseAuthoringService`, consumed\nby Hearth #68) keeps authored questions and learning objectives. Risk is high:\nschema and public contract. It reuses the course authorizer: writes need\n`education.course.author` (plus `generate` for generated provenance), reads that\nreturn answer keys need `education.course.read-draft`; every call receives the\ntransaction executor and the operation (`create-question`, `save-question`,\n`link-objectives`, `create-objective`, `save-objective`, `read-question`,\n`read-worksheet`, `resolve-question-revisions`). Tenant is required; foreign ids are not-found.\n\n## Models (closed, required tenant, no REST/CLI/MCP/AI, append-only)\n\n`Question` (identity, optional authored `courseId`), `QuestionRevision`,\n`LearningObjective` (identity with tenant-unique stable `externalKey`, for\ncoordination with hearthed.org#35), `LearningObjectiveRevision`,\n`QuestionResponse`. `save()` on an existing row and `delete()` throw. There is no\nhead row: the head is the highest `sequence`, and writes take an expected-head\ntoken under a row lock and a unique `(identity, sequence)` index.\n\nA revision holds prompt, response type, choices, subparts, media (tenant assets),\nobjective identity ids, concept ids, answer key, rubric and points. A missing key\nor rubric is stored NULL and read back `null`; an empty key is invalid and is never\ninferred. Provenance (`supplied|inferred|generated|edited|extracted`) is recorded\nfor each present field, defaulting to the revision's; provenance for an absent\nfield is refused. Objectives are linked by identity id, so wording changes, variants\nand themes keep the same objective.\n\n## Writes\n\n`createQuestion`, `saveQuestionRevision`, `linkObjectives`,\n`createLearningObjective`, `saveLearningObjectiveRevision`. Every write needs a\nrequest key; a retry replays its original result and the same key with another\npayload throws `CourseRequestKeyConflictError`. A stale head throws\n`CourseStaleHeadError`; a reused objective key throws\n`LearningObjectiveKeyConflictError`. Errors keep stable `code`s.\n\n`resolveQuestionRevisions({ revisionIds })` (`read-draft`, no course; the executor and delegation fields\nare passed) returns `{ items, missing }`: per found id `revisionId`, `questionId`, `sequence`,\n`responseType`, `promptSummary` (plain text, whitespace collapsed, at most 200 characters) and, when\nlinked, `learningObjectiveKeys`. Never keys, rubrics, choices, media or provenance. 1-200 ids (else\nvalidation error), de-duplicated, request order. An id with no revision in this tenant, foreign or\nunknown alike, appears only in `missing`.\n\n## Lessons, attempts, grades\n\nA lesson input may carry ordered `questions` (revision id, section, column, source\npage/rect anchor) and flat `layoutParams`; they are part of the lesson revision\ndigest, and saving requires each id to be an existing question revision of the\ntenant (`QuestionReferenceError`). Newer question revisions never move a pin.\n\n`WorkbookQuestion.questionRevisionId`/`lessonRevisionId` and the nullable\n`Grade.questionRevisionId` are additive. A referenced revision must exist in the\ntenant; `Grade.rubricResults` must then fit its rubric (criterion id, number or\n`{points}` up to `maxPoints`; empty stays unscored; results need a rubric).\nUnreferenced legacy records are unchanged. `QuestionResponse` is an append-only\nlearner response to one exact revision with completion mode\n(`printable|online|interactive`), assistance, a correction chain, `episodeId` and\nthe `worksheetVersionId` seen, a numbered `attemptNumber` and the writing request's\n`payloadDigest`. Writes go through `QuestionResponseService` below.\n\n## Responses (`QuestionResponseService`)\n\nExtends `LearnerService`, so it uses the learner authorizer, active-actor/tenant\nchecks and executor-bound policy reads. New authorizer actions:\n`education.learner.respond` (the learner's own enrollment; a guardian never starts\nan attempt) and `education.learner.review-response` (guardian only; a learner\nclaiming it is refused before the host is asked).\n\n- `recordResponse`: online attempt (new episode, next `attemptNumber`) or, with\n `correctsResponseId`, the learner's correction in the same episode.\n- `recordGuardianCorrection`: names the response it corrects; `response` omitted\n records assistance only and keeps the answer. Both append; nothing is rewritten.\n- `readLessonResponses`: the audience follows the actor. The learner gets the\n keyless bundle (keys never leave the database call), the guardian the keyed one.\n\nThe question revision must be in the enrollment's effective lesson set\n(`resolveEnrollmentLessons`, then the lesson revision's `questions`); otherwise\n`QuestionResponseScopeError`. Unpinned enrollments have no authored questions.\nThe response is a closed shape (`text`, `numeric`, `choiceIds`, `parts`) checked\nagainst the revision's choices and subparts (`QuestionResponseValidationError`).\nEvery write needs a request key (unique per learner); a replay returns the stored\nrow, another payload throws `CourseRequestKeyConflictError`. Other errors:\n`QuestionResponseNotFoundError`, `LearnerAuthorizationError`.\n\n## Rendering\n\n`getWorksheet` (or the pure `buildLearnerWorksheet`/`buildGuardianWorksheet`)\nbuilds one bundle from a release lesson's pinned revisions. `worksheetVersionId` is\na digest of ordered revision ids, placement and layout params, so printable and\nonline renders of the same revision match and a scan can be matched later. The\nlearner bundle is built from an allowlist and has no key, rubric or provenance\ntype members; only the guardian bundle carries them. Both service audiences need\n`read-draft`; learner delivery belongs to the host.\n\n## Migration\n\nSchema ships through normal manifest migrations:
|
|
12471
|
+
"content": "# Question and learning-objective records\n\n`QuestionAuthoringService` (SMRT #4515, extends `CourseAuthoringService`, consumed\nby Hearth #68) keeps authored questions and learning objectives. Risk is high:\nschema and public contract. It reuses the course authorizer: writes need\n`education.course.author` (plus `generate` for generated provenance), reads that\nreturn answer keys need `education.course.read-draft`; every call receives the\ntransaction executor and the operation (`create-question`, `save-question`,\n`link-objectives`, `create-objective`, `save-objective`, `read-question`,\n`read-worksheet`, `resolve-question-revisions`, `attach-printable`). Tenant is required; foreign ids are not-found.\n\n## Models (closed, required tenant, no REST/CLI/MCP/AI, append-only)\n\n`Question` (identity, optional authored `courseId`), `QuestionRevision`,\n`LearningObjective` (identity with tenant-unique stable `externalKey`, for\ncoordination with hearthed.org#35), `LearningObjectiveRevision`,\n`QuestionResponse`. `save()` on an existing row and `delete()` throw. There is no\nhead row: the head is the highest `sequence`, and writes take an expected-head\ntoken under a row lock and a unique `(identity, sequence)` index.\n\nA revision holds prompt, response type, choices, subparts, media (tenant assets),\nobjective identity ids, concept ids, answer key, rubric and points. A missing key\nor rubric is stored NULL and read back `null`; an empty key is invalid and is never\ninferred. Provenance (`supplied|inferred|generated|edited|extracted`) is recorded\nfor each present field, defaulting to the revision's; provenance for an absent\nfield is refused. Objectives are linked by identity id, so wording changes, variants\nand themes keep the same objective.\n\n## Writes\n\n`createQuestion`, `saveQuestionRevision`, `linkObjectives`,\n`createLearningObjective`, `saveLearningObjectiveRevision`. Every write needs a\nrequest key; a retry replays its original result and the same key with another\npayload throws `CourseRequestKeyConflictError`. A stale head throws\n`CourseStaleHeadError`; a reused objective key throws\n`LearningObjectiveKeyConflictError`. Errors keep stable `code`s.\n\n`resolveQuestionRevisions({ revisionIds })` (`read-draft`, no course; the executor and delegation fields\nare passed) returns `{ items, missing }`: per found id `revisionId`, `questionId`, `sequence`,\n`responseType`, `promptSummary` (plain text, whitespace collapsed, at most 200 characters) and, when\nlinked, `learningObjectiveKeys`. Never keys, rubrics, choices, media or provenance. 1-200 ids (else\nvalidation error), de-duplicated, request order. An id with no revision in this tenant, foreign or\nunknown alike, appears only in `missing`.\n\n## Lessons, attempts, grades\n\nA lesson input may carry ordered `questions` (revision id, section, column, source\npage/rect anchor) and flat `layoutParams`; they are part of the lesson revision\ndigest, and saving requires each id to be an existing question revision of the\ntenant (`QuestionReferenceError`). Newer question revisions never move a pin.\n\n`WorkbookQuestion.questionRevisionId`/`lessonRevisionId` and the nullable\n`Grade.questionRevisionId` are additive. A referenced revision must exist in the\ntenant; `Grade.rubricResults` must then fit its rubric (criterion id, number or\n`{points}` up to `maxPoints`; empty stays unscored; results need a rubric).\nUnreferenced legacy records are unchanged. `QuestionResponse` is an append-only\nlearner response to one exact revision with completion mode\n(`printable|online|interactive`), assistance, a correction chain, `episodeId` and\nthe `worksheetVersionId` seen, a numbered `attemptNumber` and the writing request's\n`payloadDigest`. Writes go through `QuestionResponseService` below.\n\n## Responses (`QuestionResponseService`)\n\nExtends `LearnerService`, so it uses the learner authorizer, active-actor/tenant\nchecks and executor-bound policy reads. New authorizer actions:\n`education.learner.respond` (the learner's own enrollment; a guardian never starts\nan attempt) and `education.learner.review-response` (guardian only; a learner\nclaiming it is refused before the host is asked).\n\n- `recordResponse`: online attempt (new episode, next `attemptNumber`) or, with\n `correctsResponseId`, the learner's correction in the same episode.\n- `recordGuardianCorrection`: names the response it corrects; `response` omitted\n records assistance only and keeps the answer. Both append; nothing is rewritten.\n- `readLessonResponses`: the audience follows the actor. The learner gets the\n keyless bundle (keys never leave the database call), the guardian the keyed one.\n\nThe question revision must be in the enrollment's effective lesson set\n(`resolveEnrollmentLessons`, then the lesson revision's `questions`); otherwise\n`QuestionResponseScopeError`. Unpinned enrollments have no authored questions.\nThe response is a closed shape (`text`, `numeric`, `choiceIds`, `parts`) checked\nagainst the revision's choices and subparts (`QuestionResponseValidationError`).\nEvery write needs a request key (unique per learner); a replay returns the stored\nrow, another payload throws `CourseRequestKeyConflictError`. Other errors:\n`QuestionResponseNotFoundError`, `LearnerAuthorizationError`.\n\n## Rendering\n\n`getWorksheet` (or the pure `buildLearnerWorksheet`/`buildGuardianWorksheet`)\nbuilds one bundle from a release lesson's pinned revisions. `worksheetVersionId` is\na digest of ordered revision ids, placement and layout params, so printable and\nonline renders of the same revision match and a scan can be matched later. The\nlearner bundle is built from an allowlist and has no key, rubric or provenance\ntype members; only the guardian bundle carries them. Both service audiences need\n`read-draft`; learner delivery belongs to the host.\n\n## Generated printables (`attachGeneratedPrintable`)\n\nHosts render worksheets from `QuestionRevision` records but cannot write `LessonAsset`\nrows. `attachGeneratedPrintable({ ...actor, lessonId, worksheetVersionId, audience })`\n(`audience`: `learner` or `guardian`) renders the released lesson's worksheet to a PDF\nupstream with `pdf-lib` (no host PDF dependency), stores it as a private education-owned\nasset and links it to the lesson, so the durable print queue can serve it. It returns the\nclosed `{ lessonId, worksheetVersionId, audience, assetId, relationship, created }`; never keys,\nanswers or source URIs.\n\n- `lessonId` is the materialised `lessons` row id of a released lesson (`released_lessons.lesson_id`),\n resolved in the actor's tenant; unknown and foreign ids alike are `QuestionNotFoundError`.\n `worksheetVersionId` must equal the digest of that lesson revision's refs and layout, else\n `WorksheetVersionMismatchError` (`worksheet-version-mismatch`), so a later scan matches. A lesson with no\n questions is a validation error.\n- Relationship rules: the learner copy is built from the keyless learner bundle only and linked\n `printable`; the guardian copy is built from the keyed bundle (answer keys, explanations, rubric summaries)\n and linked `answer-key`. `SubmissionService.signLessonPrintable` matches only `printable` joins\n (explicit filter, test-pinned), so an answer-key copy is never signed for a learner.\n- Authorization: `education.course.author` for either audience, plus `education.course.read-draft`\n for `guardian` (the audience only picks the artefact and never widens authority). A learner of the\n tenant, or a delegation naming one as actor or delegating guardian, is refused with\n `CourseAuthoringAuthorizationError` before the host authorizer is asked. Delegated agents use\n `verifyDelegation` like every authoring call (refused without it).\n- Idempotent per (tenant, lesson, worksheet version, audience) via the append-only closed\n `GeneratedPrintable` model (unique index). A repeat returns the same asset with `created: false` and\n renders and stores nothing. The lesson row is locked before the check; a lost unique-index race is\n compensated and replayed once, so concurrent first calls converge on one asset with no orphan file.\n- Storage: pass `printableAssets: { storage, storeOptions? }` (same shape as `SubmissionService`) to the\n service. Without it the call throws `PrintableStorageNotConfiguredError`. The PDF is a `private` asset\n (`typeSlug` `education-page`) owned by the acting guardian's profile, or for a delegated agent the delegating\n guardian's; none available is `PrintableOwnerError`. Asset rows, the join and the model row commit in one\n transaction; newly planned files are removed after rollback unless the asset row committed\n (`PrintableStorageCleanupError` carries fresh asset ids if removal fails).\n- Renderer limits: standard Helvetica fonts only, Letter pages. Characters outside WinAnsi are replaced\n with `?` (never an error); media refs print as a short placeholder line, never the media. Bounded:\n 200 items, 10,000 characters per text value, 400,000 in total, 150 pages (`CourseAuthoringValidationError`).\n Output is deterministic: fixed creation/modification dates, footer on every page with the worksheet\n version id and audience, PDF title/subject/keywords carrying the version id.\n\n## Migration\n\nSchema ships through normal manifest migrations: six new tables (`question_responses` and `generated_printables` included) plus nullable\ncolumns on `grades` (`question_revision_id`) and `lesson_revisions` (`questions_json`,\n`layout_params_json`); test-pinned as additive. The runtime never creates tables.\n"
|
|
12311
12472
|
},
|
|
12312
12473
|
{
|
|
12313
12474
|
"path": "agents/source-import.md",
|
|
@@ -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.57.
|
|
3
|
+
"version": "0.57.46",
|
|
4
4
|
"smrtJsdoc": "strict",
|
|
5
5
|
"description": "Tenant-aware learning catalog models and authorized catalog access for SMRT",
|
|
6
6
|
"type": "module",
|
|
@@ -25,18 +25,18 @@
|
|
|
25
25
|
}
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@happyvertical/smrt-assets": "0.57.
|
|
29
|
-
"@happyvertical/smrt-core": "0.57.
|
|
30
|
-
"@happyvertical/smrt-profiles": "0.57.
|
|
31
|
-
"@happyvertical/smrt-tenancy": "0.57.
|
|
32
|
-
"@happyvertical/smrt-users": "0.57.
|
|
28
|
+
"@happyvertical/smrt-assets": "0.57.46",
|
|
29
|
+
"@happyvertical/smrt-core": "0.57.46",
|
|
30
|
+
"@happyvertical/smrt-profiles": "0.57.46",
|
|
31
|
+
"@happyvertical/smrt-tenancy": "0.57.46",
|
|
32
|
+
"@happyvertical/smrt-users": "0.57.46",
|
|
33
33
|
"@happyvertical/files": "^0.111.0",
|
|
34
34
|
"@happyvertical/sql": "^0.111.0",
|
|
35
35
|
"pdf-lib": "1.17.1",
|
|
36
|
-
"@happyvertical/smrt-ingestion": "0.57.
|
|
36
|
+
"@happyvertical/smrt-ingestion": "0.57.46"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@happyvertical/smrt-vitest": "0.57.
|
|
39
|
+
"@happyvertical/smrt-vitest": "0.57.46",
|
|
40
40
|
"@types/node": "24.13.6",
|
|
41
41
|
"typescript": "6.0.3",
|
|
42
42
|
"vite": "8.1.6",
|