@happyvertical/smrt-education 0.57.33 → 0.57.34
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 +8 -1
- package/README.md +117 -13
- package/agents/catalog-sync.md +46 -0
- package/agents/photo-intake.md +249 -0
- package/agents/workbook-service.md +355 -0
- package/agents/workbook-test-matrix.md +74 -0
- package/dist/catalog-acquisition-service.d.ts.map +1 -1
- package/dist/catalog-capability.d.ts +21 -0
- package/dist/catalog-capability.d.ts.map +1 -0
- package/dist/catalog-contracts.d.ts +40 -0
- package/dist/catalog-contracts.d.ts.map +1 -1
- package/dist/catalog-database-sync-store.d.ts.map +1 -1
- package/dist/catalog-models.d.ts +5 -1
- package/dist/catalog-models.d.ts.map +1 -1
- package/dist/catalog-read-service.d.ts +2 -1
- package/dist/catalog-read-service.d.ts.map +1 -1
- package/dist/catalog-service.d.ts +5 -0
- package/dist/catalog-service.d.ts.map +1 -1
- package/dist/chunks/workbook-photo-service-1wcnf-Xf.js +27359 -0
- package/dist/chunks/workbook-photo-service-1wcnf-Xf.js.map +1 -0
- package/dist/index.d.ts +11 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +339 -24864
- package/dist/index.js.map +1 -1
- package/dist/ingestion.d.ts +37 -0
- package/dist/ingestion.d.ts.map +1 -1
- package/dist/ingestion.js +829 -20
- package/dist/ingestion.js.map +1 -1
- package/dist/learner-service.d.ts +15 -0
- package/dist/learner-service.d.ts.map +1 -1
- package/dist/manifest.json +4735 -6
- package/dist/smrt-knowledge.json +1760 -26
- package/dist/sources/public-illustrative-mathematics-adapter.d.ts.map +1 -1
- package/dist/sources/public-illustrative-mathematics-parser.d.ts.map +1 -1
- package/dist/submission-service.d.ts +38 -11
- package/dist/submission-service.d.ts.map +1 -1
- package/dist/workbook-answer-regions.d.ts +11 -0
- package/dist/workbook-answer-regions.d.ts.map +1 -0
- package/dist/workbook-contracts.d.ts +224 -0
- package/dist/workbook-contracts.d.ts.map +1 -0
- package/dist/workbook-layout.d.ts +13 -0
- package/dist/workbook-layout.d.ts.map +1 -0
- package/dist/workbook-models.d.ts +129 -0
- package/dist/workbook-models.d.ts.map +1 -0
- package/dist/workbook-photo-contracts.d.ts +56 -0
- package/dist/workbook-photo-contracts.d.ts.map +1 -0
- package/dist/workbook-photo-ingestion.d.ts +70 -0
- package/dist/workbook-photo-ingestion.d.ts.map +1 -0
- package/dist/workbook-photo-models.d.ts +63 -0
- package/dist/workbook-photo-models.d.ts.map +1 -0
- package/dist/workbook-photo-service.d.ts +72 -0
- package/dist/workbook-photo-service.d.ts.map +1 -0
- package/dist/workbook-service.d.ts +158 -0
- package/dist/workbook-service.d.ts.map +1 -0
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-illustrative-mathematics-adapter.d.ts","sourceRoot":"","sources":["../../src/sources/public-illustrative-mathematics-adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"public-illustrative-mathematics-adapter.d.ts","sourceRoot":"","sources":["../../src/sources/public-illustrative-mathematics-adapter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,qBAAqB,EAErB,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AAYjC,MAAM,WAAW,+CAA+C;IAC9D,qFAAqF;IACrF,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAuID;;;;;GAKG;AACH,wBAAgB,sDAAsD,CACpE,MAAM,GAAE,+CAAoD,GAC3D,kBAAkB,GAAG,qBAAqB,CAsY5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-illustrative-mathematics-parser.d.ts","sourceRoot":"","sources":["../../src/sources/public-illustrative-mathematics-parser.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,eAAO,MAAM,SAAS,+BAA+B,CAAC;AACtD,eAAO,MAAM,eAAe,mDAAmD,CAAC;AAChF,eAAO,MAAM,UAAU,iDAAiD,CAAC;AACzE,eAAO,MAAM,QAAQ,UAIpB,CAAC;AAEF,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAS5C;AACD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AACD,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAiCxD;AACD,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS,CAUtD;AACD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEjE;AACD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAS7D;AACD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AACD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAiLD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GACX,YAAY,
|
|
1
|
+
{"version":3,"file":"public-illustrative-mathematics-parser.d.ts","sourceRoot":"","sources":["../../src/sources/public-illustrative-mathematics-parser.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,eAAO,MAAM,SAAS,+BAA+B,CAAC;AACtD,eAAO,MAAM,eAAe,mDAAmD,CAAC;AAChF,eAAO,MAAM,UAAU,iDAAiD,CAAC;AACzE,eAAO,MAAM,QAAQ,UAIpB,CAAC;AAEF,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAS5C;AACD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AACD,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAiCxD;AACD,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS,CAUtD;AACD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEjE;AACD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAS7D;AACD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AACD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAiLD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GACX,YAAY,CA2Jd"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type AssetRuntimeOptions } from '@happyvertical/smrt-assets';
|
|
1
|
+
import { type Asset, type AssetRuntime, type AssetRuntimeOptions } from '@happyvertical/smrt-assets';
|
|
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 } from './learner-service.js';
|
|
@@ -46,6 +46,10 @@ export type SubmissionView = Readonly<{
|
|
|
46
46
|
assetId: string;
|
|
47
47
|
sortOrder: number;
|
|
48
48
|
}>;
|
|
49
|
+
/** Guardian-origin photo work remains private until explicit feedback release. */
|
|
50
|
+
awaitingParentRelease?: boolean;
|
|
51
|
+
/** Effective source privacy: every derived revision needs explicit release. */
|
|
52
|
+
sourceRequiresParentRelease?: boolean;
|
|
49
53
|
grade: null | {
|
|
50
54
|
id: string;
|
|
51
55
|
graderKind: Grade['graderKind'];
|
|
@@ -61,6 +65,16 @@ type SubmissionRequest = LearnerRequest & {
|
|
|
61
65
|
enrollmentId: string;
|
|
62
66
|
submissionId: string;
|
|
63
67
|
};
|
|
68
|
+
type CaptureRequest = LessonRequest & {
|
|
69
|
+
requestKey: string;
|
|
70
|
+
pages: readonly SubmissionPage[];
|
|
71
|
+
notes?: string;
|
|
72
|
+
intake?: SubmissionIntake;
|
|
73
|
+
};
|
|
74
|
+
/** Workbook scaffolding can only be mutated through its owning workflow. */
|
|
75
|
+
export declare class WorkbookWorkflowRequiredError extends Error {
|
|
76
|
+
constructor();
|
|
77
|
+
}
|
|
64
78
|
/** Failure includes fresh asset identities only, for explicit storage reconciliation. */
|
|
65
79
|
export declare class SubmissionStorageCleanupError extends Error {
|
|
66
80
|
readonly assetIds: readonly string[];
|
|
@@ -74,23 +88,36 @@ export declare class SubmissionService extends LearnerService {
|
|
|
74
88
|
constructor(db: DatabaseInterface, authorize: LearnerAuthorizer, authorizeCatalog: CatalogAuthorizer, options: SubmissionServiceOptions);
|
|
75
89
|
protected createTransactionService(db: DatabaseInterface): this;
|
|
76
90
|
protected rollbackResources(cause: unknown, rootDb: DatabaseInterface): Promise<void>;
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
91
|
+
protected assets(): Promise<AssetRuntime>;
|
|
92
|
+
protected storePage(request: LearnerRequest, profileId: string, page: SubmissionPage): Promise<Asset>;
|
|
93
|
+
protected validatePages(pages: readonly SubmissionPage[]): void;
|
|
80
94
|
private progress;
|
|
81
95
|
private requireSubmission;
|
|
96
|
+
/** Persisted origin/release evidence, shared by base submission and workbook
|
|
97
|
+
* projections. Call only after normal actor/resource authorization. Old hosts
|
|
98
|
+
* without photo tables preserve ordinary submission behavior. */
|
|
99
|
+
protected workbookPhotoSource(request: Pick<LearnerRequest, 'tenantId' | 'learnerId'>, selector: {
|
|
100
|
+
intakeItemId?: string | null;
|
|
101
|
+
submissionId?: string;
|
|
102
|
+
}): Promise<{
|
|
103
|
+
guardianOrigin: boolean;
|
|
104
|
+
released: boolean;
|
|
105
|
+
}>;
|
|
82
106
|
private view;
|
|
83
107
|
/** Recheck the exact assignment without creating progress or accepting bytes.
|
|
84
108
|
* Trusted intake bridges call this before reading retained evidence.
|
|
85
109
|
*/
|
|
86
110
|
assertLessonAssignment(request: LessonRequest): Promise<void>;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
111
|
+
/** Reject legacy upload/review entry points using authoritative owned scope. */
|
|
112
|
+
assertNonWorkbookSubmissionScope(request: LearnerRequest & {
|
|
113
|
+
enrollmentId: string;
|
|
114
|
+
lessonId?: string;
|
|
115
|
+
previousSubmissionId?: string;
|
|
116
|
+
}): Promise<void>;
|
|
117
|
+
captureSubmission(request: CaptureRequest): Promise<SubmissionView>;
|
|
118
|
+
/** Owning workflow extension; no browser input can grant this scoped path. */
|
|
119
|
+
protected captureWorkbookSubmission(request: CaptureRequest, activityId: string): Promise<SubmissionView>;
|
|
120
|
+
private captureSubmissionInScope;
|
|
94
121
|
/** Capture a blank workbook scan without claiming completion or a grade. */
|
|
95
122
|
captureBlankReference(request: LessonRequest & {
|
|
96
123
|
requestKey: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submission-service.d.ts","sourceRoot":"","sources":["../src/submission-service.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"submission-service.d.ts","sourceRoot":"","sources":["../src/submission-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { WorkbookAnswerRegions, WorkbookQuestion } from './workbook-contracts.js';
|
|
2
|
+
/** Normalize presentation only. Never change answers, layout or verified anchors. */
|
|
3
|
+
export declare function normalizeWorkbookAnswerRegions(value: unknown, questions: readonly WorkbookQuestion[], sources: readonly {
|
|
4
|
+
assetId: string;
|
|
5
|
+
sha256?: string;
|
|
6
|
+
pageCount: number;
|
|
7
|
+
}[]): {
|
|
8
|
+
answerRegions?: WorkbookAnswerRegions;
|
|
9
|
+
answerRegionsOmission?: 'invalid';
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=workbook-answer-regions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workbook-answer-regions.d.ts","sourceRoot":"","sources":["../src/workbook-answer-regions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AACjC,qFAAqF;AACrF,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,SAAS,gBAAgB,EAAE,EACtC,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,qBAAqB,CAAC;IACtC,qBAAqB,CAAC,EAAE,SAAS,CAAC;CACnC,CAoEA"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/** Explicit help observations; absence never attests independence. */
|
|
2
|
+
export type WorkbookAssistance = 'independent' | 'assisted' | 'unknown';
|
|
3
|
+
export interface WorkbookConcept {
|
|
4
|
+
id: string;
|
|
5
|
+
label: string;
|
|
6
|
+
}
|
|
7
|
+
export interface WorkbookAnchor {
|
|
8
|
+
assetId: string;
|
|
9
|
+
sha256: string;
|
|
10
|
+
page: number | null;
|
|
11
|
+
/** Source means the complete original; page means extraction-verified page. */
|
|
12
|
+
grounding?: 'source' | 'page';
|
|
13
|
+
extractionAttemptId?: string;
|
|
14
|
+
/** Normalized x, y, width, height on the retained page. */
|
|
15
|
+
rect: [number, number, number, number];
|
|
16
|
+
}
|
|
17
|
+
export interface WorkbookQuestion {
|
|
18
|
+
/** Stable within this activity, including occurrence/subpart (e.g. page7:q1:a). */
|
|
19
|
+
id: string;
|
|
20
|
+
prompt: string;
|
|
21
|
+
answer: string;
|
|
22
|
+
result: 'correct' | 'incorrect' | 'partially_correct' | 'unassessed';
|
|
23
|
+
reason: 'none' | 'unanswered' | 'illegible' | 'missing_context' | 'unsupported' | 'not_present';
|
|
24
|
+
feedback: string;
|
|
25
|
+
points: number | null;
|
|
26
|
+
possiblePoints: number | null;
|
|
27
|
+
anchors: WorkbookAnchor[];
|
|
28
|
+
conceptIds: string[];
|
|
29
|
+
markingCertainty?: 'clear' | 'uncertain' | 'unknown';
|
|
30
|
+
mappingCertainty?: 'clear' | 'uncertain' | 'unknown';
|
|
31
|
+
mappingProvenance?: 'proposed' | 'guardian-reviewed' | 'unknown';
|
|
32
|
+
evidenceLimitations?: string[];
|
|
33
|
+
}
|
|
34
|
+
export interface WorkbookPreservationState {
|
|
35
|
+
activityId: string;
|
|
36
|
+
submissionId: string;
|
|
37
|
+
intakeItemId: string | null;
|
|
38
|
+
retainedAnalyses: {
|
|
39
|
+
assessmentRevisionId: string;
|
|
40
|
+
analysisAttemptId: string;
|
|
41
|
+
analysisRevision: number | null;
|
|
42
|
+
}[];
|
|
43
|
+
}
|
|
44
|
+
export interface WorkbookAggregate {
|
|
45
|
+
correct: number;
|
|
46
|
+
incorrect: number;
|
|
47
|
+
partiallyCorrect: number;
|
|
48
|
+
unassessed: number;
|
|
49
|
+
points: number | null;
|
|
50
|
+
possiblePoints: number | null;
|
|
51
|
+
score: number | null;
|
|
52
|
+
}
|
|
53
|
+
export declare class WorkbookAssessmentValidationError extends Error {
|
|
54
|
+
readonly reason: 'invalid_assessment' | 'ungrounded_source' | 'ambiguous_proposal';
|
|
55
|
+
constructor(message: string, reason?: 'invalid_assessment' | 'ungrounded_source' | 'ambiguous_proposal');
|
|
56
|
+
}
|
|
57
|
+
/** Exact arithmetic over validated questions, never a provider's rounded score. */
|
|
58
|
+
export declare function aggregateWorkbookQuestions(questions: readonly WorkbookQuestion[]): WorkbookAggregate;
|
|
59
|
+
export declare function workbookAggregateFeedback(aggregate: WorkbookAggregate): string;
|
|
60
|
+
/** Advisory observed structure; never verified source geometry or identity. */
|
|
61
|
+
export interface WorkbookObservedLayout {
|
|
62
|
+
version: 1;
|
|
63
|
+
provenance: 'observed';
|
|
64
|
+
sections: {
|
|
65
|
+
id: string;
|
|
66
|
+
label?: string;
|
|
67
|
+
columns: number;
|
|
68
|
+
readingOrder?: 'rows' | 'columns';
|
|
69
|
+
source: {
|
|
70
|
+
assetId: string;
|
|
71
|
+
page: number | null;
|
|
72
|
+
};
|
|
73
|
+
}[];
|
|
74
|
+
placements: {
|
|
75
|
+
questionId: string;
|
|
76
|
+
sectionId: string;
|
|
77
|
+
row: number;
|
|
78
|
+
column: number;
|
|
79
|
+
/** Sort parts only when all cell placements specify one; ties use question order. */
|
|
80
|
+
part?: number;
|
|
81
|
+
}[];
|
|
82
|
+
}
|
|
83
|
+
/** Approximate image observations, not verified OCR boxes or answer identity. */
|
|
84
|
+
export interface WorkbookAnswerRegions {
|
|
85
|
+
version: 1;
|
|
86
|
+
provenance: 'observed';
|
|
87
|
+
coordinateSpace: 'display-oriented';
|
|
88
|
+
regions: {
|
|
89
|
+
questionId: string;
|
|
90
|
+
source: {
|
|
91
|
+
assetId: string;
|
|
92
|
+
page: 1;
|
|
93
|
+
};
|
|
94
|
+
rect: [number, number, number, number];
|
|
95
|
+
observationId: string;
|
|
96
|
+
}[];
|
|
97
|
+
}
|
|
98
|
+
export interface WorkbookAssessment {
|
|
99
|
+
version: 1;
|
|
100
|
+
aggregate?: WorkbookAggregate;
|
|
101
|
+
feedback: string;
|
|
102
|
+
layout?: WorkbookObservedLayout;
|
|
103
|
+
layoutOmission?: 'invalid';
|
|
104
|
+
answerRegions?: WorkbookAnswerRegions;
|
|
105
|
+
answerRegionsOmission?: 'invalid';
|
|
106
|
+
questions: WorkbookQuestion[];
|
|
107
|
+
provenance: {
|
|
108
|
+
provider: string;
|
|
109
|
+
model: string;
|
|
110
|
+
configurationVersion: string;
|
|
111
|
+
rubricVersion: string;
|
|
112
|
+
inputHash: string;
|
|
113
|
+
analysisId: string;
|
|
114
|
+
/** Current interpretation revision, distinct from its extraction-source revision. */
|
|
115
|
+
analysisRevision?: number;
|
|
116
|
+
/** Digest of validated structured proposal arguments, never model-authored. */
|
|
117
|
+
proposalDigest?: string;
|
|
118
|
+
providerVersion?: string;
|
|
119
|
+
sourceAnalysis?: {
|
|
120
|
+
attemptId: string;
|
|
121
|
+
revision: number;
|
|
122
|
+
inputDigest: string;
|
|
123
|
+
outputDigest: string;
|
|
124
|
+
evidenceDigest: string;
|
|
125
|
+
};
|
|
126
|
+
catalogDigest?: string;
|
|
127
|
+
policyVersions?: string[];
|
|
128
|
+
};
|
|
129
|
+
vocabulary: {
|
|
130
|
+
namespace: string;
|
|
131
|
+
version: string;
|
|
132
|
+
concepts: WorkbookConcept[];
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
export interface WorkbookActivityView {
|
|
136
|
+
filing?: {
|
|
137
|
+
state: 'unfiled' | 'filed' | 'identified';
|
|
138
|
+
workbookId: string | null;
|
|
139
|
+
canonicalActivityId: string | null;
|
|
140
|
+
revisionId: string | null;
|
|
141
|
+
};
|
|
142
|
+
id: string;
|
|
143
|
+
learnerId: string;
|
|
144
|
+
workbookKey: string;
|
|
145
|
+
title: string;
|
|
146
|
+
edition: string;
|
|
147
|
+
pageKey: string;
|
|
148
|
+
pageLabel: string;
|
|
149
|
+
enrollmentId: string;
|
|
150
|
+
lessonId: string;
|
|
151
|
+
reviewRequired: boolean;
|
|
152
|
+
policyVersion: number;
|
|
153
|
+
}
|
|
154
|
+
export interface WorkbookRevisionView {
|
|
155
|
+
id: string;
|
|
156
|
+
kind: 'ai' | 'guardian';
|
|
157
|
+
supersedesId: string | null;
|
|
158
|
+
createdAt: Date;
|
|
159
|
+
actorUserId: string;
|
|
160
|
+
sourceRevisionId: string | null;
|
|
161
|
+
decisionReason: string;
|
|
162
|
+
assessment: WorkbookAssessment;
|
|
163
|
+
}
|
|
164
|
+
export interface WorkbookReleaseView {
|
|
165
|
+
id: string;
|
|
166
|
+
revisionId: string;
|
|
167
|
+
createdAt: Date;
|
|
168
|
+
actorUserId: string;
|
|
169
|
+
}
|
|
170
|
+
export interface WorkbookAttemptView {
|
|
171
|
+
id: string;
|
|
172
|
+
submissionId: string;
|
|
173
|
+
activityId: string;
|
|
174
|
+
previousAttemptId: string | null;
|
|
175
|
+
episodeId: string;
|
|
176
|
+
reviewRequired: boolean;
|
|
177
|
+
policyVersion: number;
|
|
178
|
+
assistance: WorkbookAssistance;
|
|
179
|
+
submission: import('./submission-service.js').SubmissionView;
|
|
180
|
+
}
|
|
181
|
+
export interface WorkbookTimeline {
|
|
182
|
+
activity: WorkbookActivityView;
|
|
183
|
+
attempts: (WorkbookAttemptView & {
|
|
184
|
+
revisions: WorkbookRevisionView[];
|
|
185
|
+
releases: WorkbookReleaseView[];
|
|
186
|
+
deliveries: WorkbookReleaseView[];
|
|
187
|
+
headId: string | null;
|
|
188
|
+
})[];
|
|
189
|
+
nextCursor: string | null;
|
|
190
|
+
}
|
|
191
|
+
export interface WorkbookConceptSummary {
|
|
192
|
+
namespace: string;
|
|
193
|
+
version: string;
|
|
194
|
+
conceptId: string;
|
|
195
|
+
label: string;
|
|
196
|
+
confirmed: {
|
|
197
|
+
independent: number;
|
|
198
|
+
assisted: number;
|
|
199
|
+
unknown: number;
|
|
200
|
+
correct: number;
|
|
201
|
+
needsCorrection: number;
|
|
202
|
+
unassessed: number;
|
|
203
|
+
};
|
|
204
|
+
provisional: number;
|
|
205
|
+
episodes: string[];
|
|
206
|
+
revisionIds: string[];
|
|
207
|
+
cues: string[];
|
|
208
|
+
observations: {
|
|
209
|
+
submissionId: string;
|
|
210
|
+
revisionId: string;
|
|
211
|
+
questionId: string;
|
|
212
|
+
episodeId: string;
|
|
213
|
+
result: WorkbookQuestion['result'];
|
|
214
|
+
assistance: WorkbookAssistance;
|
|
215
|
+
isCorrection: boolean;
|
|
216
|
+
capturedAt: Date;
|
|
217
|
+
confirmed: boolean;
|
|
218
|
+
}[];
|
|
219
|
+
}
|
|
220
|
+
/** Validate at every external/persistence boundary; unknown enum values fail closed. */
|
|
221
|
+
export declare function validateWorkbookAssessment(value: WorkbookAssessment): void;
|
|
222
|
+
/** A deliberately small curated vocabulary; hosts may supply a different one. */
|
|
223
|
+
export declare const WORKBOOK_MATH_VOCABULARY: WorkbookAssessment['vocabulary'];
|
|
224
|
+
//# sourceMappingURL=workbook-contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workbook-contracts.d.ts","sourceRoot":"","sources":["../src/workbook-contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { WorkbookObservedLayout, WorkbookQuestion } from './workbook-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 normalizeWorkbookObservedLayout(value: unknown, questions: readonly WorkbookQuestion[], sources: readonly {
|
|
6
|
+
assetId: string;
|
|
7
|
+
sha256?: string;
|
|
8
|
+
pageCount: number;
|
|
9
|
+
}[]): {
|
|
10
|
+
layout?: WorkbookObservedLayout;
|
|
11
|
+
layoutOmission?: 'invalid';
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=workbook-layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workbook-layout.d.ts","sourceRoot":"","sources":["../src/workbook-layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AASjC;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,SAAS,gBAAgB,EAAE,EACtC,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,sBAAsB,CAAC;IAAC,cAAc,CAAC,EAAE,SAAS,CAAA;CAAE,CAgGjE"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { SmrtCollection, SmrtObject } from '@happyvertical/smrt-core';
|
|
2
|
+
/** Education-owned private workbook record. Mutations go through WorkbookService. */
|
|
3
|
+
export declare class Workbook extends SmrtObject {
|
|
4
|
+
tenantId: string;
|
|
5
|
+
learnerId: string;
|
|
6
|
+
workbookKey: string;
|
|
7
|
+
title: string;
|
|
8
|
+
edition: string;
|
|
9
|
+
reviewRequired: boolean;
|
|
10
|
+
policyVersion: number;
|
|
11
|
+
constructor(options?: Record<string, unknown>);
|
|
12
|
+
save(): Promise<this>;
|
|
13
|
+
}
|
|
14
|
+
export declare class WorkbookCollection extends SmrtCollection<Workbook> {
|
|
15
|
+
static readonly _itemClass: typeof Workbook;
|
|
16
|
+
}
|
|
17
|
+
/** Education-owned private workbook record. Mutations go through WorkbookService. */
|
|
18
|
+
export declare class WorkbookActivity extends SmrtObject {
|
|
19
|
+
tenantId: string;
|
|
20
|
+
learnerId: string;
|
|
21
|
+
workbookId: string | null;
|
|
22
|
+
captureKind: string;
|
|
23
|
+
photoIntakeId: string | null;
|
|
24
|
+
enrollmentId: string;
|
|
25
|
+
lessonId: string;
|
|
26
|
+
pageKey: string;
|
|
27
|
+
pageLabel: string;
|
|
28
|
+
constructor(options?: Record<string, unknown>);
|
|
29
|
+
delete(): Promise<void>;
|
|
30
|
+
save(): Promise<this>;
|
|
31
|
+
}
|
|
32
|
+
export declare class WorkbookActivityCollection extends SmrtCollection<WorkbookActivity> {
|
|
33
|
+
static readonly _itemClass: typeof WorkbookActivity;
|
|
34
|
+
}
|
|
35
|
+
/** Append-only association; the source work unit and its routing never move. */
|
|
36
|
+
export declare class WorkbookWorkFiling extends SmrtObject {
|
|
37
|
+
tenantId: string;
|
|
38
|
+
learnerId: string;
|
|
39
|
+
sourceActivityId: string;
|
|
40
|
+
workbookId: string;
|
|
41
|
+
canonicalActivityId: string | null;
|
|
42
|
+
previousRevisionId: string | null;
|
|
43
|
+
actorUserId: string;
|
|
44
|
+
requestKey: string;
|
|
45
|
+
reason: string;
|
|
46
|
+
digest: string;
|
|
47
|
+
constructor(options?: Record<string, unknown>);
|
|
48
|
+
delete(): Promise<void>;
|
|
49
|
+
save(): Promise<this>;
|
|
50
|
+
}
|
|
51
|
+
export declare class WorkbookWorkFilingCollection extends SmrtCollection<WorkbookWorkFiling> {
|
|
52
|
+
static readonly _itemClass: typeof WorkbookWorkFiling;
|
|
53
|
+
}
|
|
54
|
+
/** Education-owned private workbook record. Mutations go through WorkbookService. */
|
|
55
|
+
export declare class WorkbookAttempt extends SmrtObject {
|
|
56
|
+
tenantId: string;
|
|
57
|
+
learnerId: string;
|
|
58
|
+
activityId: string;
|
|
59
|
+
submissionId: string;
|
|
60
|
+
previousAttemptId: string | null;
|
|
61
|
+
capturedAt: Date;
|
|
62
|
+
episodeId: string;
|
|
63
|
+
reviewRequired: boolean;
|
|
64
|
+
policyVersion: number;
|
|
65
|
+
assistance: string;
|
|
66
|
+
actorUserId: string;
|
|
67
|
+
sourceHashes: string;
|
|
68
|
+
constructor(options?: Record<string, unknown>);
|
|
69
|
+
delete(): Promise<void>;
|
|
70
|
+
save(): Promise<this>;
|
|
71
|
+
}
|
|
72
|
+
export declare class WorkbookAttemptCollection extends SmrtCollection<WorkbookAttempt> {
|
|
73
|
+
static readonly _itemClass: typeof WorkbookAttempt;
|
|
74
|
+
}
|
|
75
|
+
/** Education-owned private workbook record. Mutations go through WorkbookService. */
|
|
76
|
+
export declare class WorkbookAssessmentRevision extends SmrtObject {
|
|
77
|
+
tenantId: string;
|
|
78
|
+
learnerId: string;
|
|
79
|
+
attemptId: string;
|
|
80
|
+
requestKey: string;
|
|
81
|
+
requestDigest: string;
|
|
82
|
+
kind: string;
|
|
83
|
+
actorUserId: string;
|
|
84
|
+
sourceRevisionId: string | null;
|
|
85
|
+
decisionReason: string;
|
|
86
|
+
supersedesId: string | null;
|
|
87
|
+
assessmentJson: string;
|
|
88
|
+
recordedAt: Date;
|
|
89
|
+
constructor(options?: Record<string, unknown>);
|
|
90
|
+
delete(): Promise<void>;
|
|
91
|
+
save(): Promise<this>;
|
|
92
|
+
}
|
|
93
|
+
export declare class WorkbookAssessmentRevisionCollection extends SmrtCollection<WorkbookAssessmentRevision> {
|
|
94
|
+
static readonly _itemClass: typeof WorkbookAssessmentRevision;
|
|
95
|
+
}
|
|
96
|
+
/** Education-owned private workbook record. Mutations go through WorkbookService. */
|
|
97
|
+
export declare class WorkbookFeedbackRelease extends SmrtObject {
|
|
98
|
+
tenantId: string;
|
|
99
|
+
learnerId: string;
|
|
100
|
+
attemptId: string;
|
|
101
|
+
revisionId: string;
|
|
102
|
+
expectedHeadId: string | null;
|
|
103
|
+
requestKey: string;
|
|
104
|
+
actorUserId: string;
|
|
105
|
+
recordedAt: Date;
|
|
106
|
+
constructor(options?: Record<string, unknown>);
|
|
107
|
+
delete(): Promise<void>;
|
|
108
|
+
save(): Promise<this>;
|
|
109
|
+
}
|
|
110
|
+
export declare class WorkbookFeedbackReleaseCollection extends SmrtCollection<WorkbookFeedbackRelease> {
|
|
111
|
+
static readonly _itemClass: typeof WorkbookFeedbackRelease;
|
|
112
|
+
}
|
|
113
|
+
/** Authenticated delivery acknowledgment; this does not assert comprehension. */
|
|
114
|
+
export declare class WorkbookFeedbackDelivery extends SmrtObject {
|
|
115
|
+
tenantId: string;
|
|
116
|
+
learnerId: string;
|
|
117
|
+
attemptId: string;
|
|
118
|
+
revisionId: string;
|
|
119
|
+
actorUserId: string;
|
|
120
|
+
requestKey: string;
|
|
121
|
+
recordedAt: Date;
|
|
122
|
+
constructor(options?: Record<string, unknown>);
|
|
123
|
+
save(): Promise<this>;
|
|
124
|
+
delete(): Promise<void>;
|
|
125
|
+
}
|
|
126
|
+
export declare class WorkbookFeedbackDeliveryCollection extends SmrtCollection<WorkbookFeedbackDelivery> {
|
|
127
|
+
static readonly _itemClass: typeof WorkbookFeedbackDelivery;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=workbook-models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workbook-models.d.ts","sourceRoot":"","sources":["../src/workbook-models.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { WorkbookActivityView } from './workbook-contracts.js';
|
|
2
|
+
/** Activity keys identify a printed lesson, potentially spanning multiple pages. */
|
|
3
|
+
export interface WorkbookPhotoIdentification {
|
|
4
|
+
kind: 'lesson' | 'work' | 'cover' | 'reference' | 'uncertain';
|
|
5
|
+
workbook?: {
|
|
6
|
+
workbookKey: string;
|
|
7
|
+
title: string;
|
|
8
|
+
edition?: string;
|
|
9
|
+
publisher?: string;
|
|
10
|
+
isbn?: string;
|
|
11
|
+
};
|
|
12
|
+
activity?: {
|
|
13
|
+
pageKey: string;
|
|
14
|
+
pageLabel: string;
|
|
15
|
+
};
|
|
16
|
+
workState?: 'blank' | 'completed' | 'unknown';
|
|
17
|
+
notes?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface WorkbookPhotoProposal {
|
|
20
|
+
identification: WorkbookPhotoIdentification;
|
|
21
|
+
confidence: 'confident' | 'uncertain';
|
|
22
|
+
/** Exact visible printed identity quotations; absence cannot imply certainty. */
|
|
23
|
+
identityEvidence: string[];
|
|
24
|
+
/** A printed lesson/exercise identifier, never the page number alone. */
|
|
25
|
+
lessonEvidence: string;
|
|
26
|
+
/** Optional exact existing workbook candidate selected from authorized discovery. */
|
|
27
|
+
workbookId?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface WorkbookPhotoIntakeView {
|
|
30
|
+
id: string;
|
|
31
|
+
itemId: string;
|
|
32
|
+
/** Exact latest retained book-context resolution, independent of activity filing. */
|
|
33
|
+
workbookId?: string | null;
|
|
34
|
+
learnerId: string;
|
|
35
|
+
status: 'pending' | 'resolved' | 'captured';
|
|
36
|
+
identification: WorkbookPhotoIdentification | null;
|
|
37
|
+
proposal: WorkbookPhotoProposal | null;
|
|
38
|
+
activity: WorkbookActivityView | null;
|
|
39
|
+
submissionId: string | null;
|
|
40
|
+
originals: {
|
|
41
|
+
assetId: string;
|
|
42
|
+
name: string;
|
|
43
|
+
mimeType: string;
|
|
44
|
+
sha256: string;
|
|
45
|
+
}[];
|
|
46
|
+
}
|
|
47
|
+
export declare function validateWorkbookPhotoIdentification(value: WorkbookPhotoIdentification): void;
|
|
48
|
+
export interface WorkbookPhotoWorkbookView {
|
|
49
|
+
id: string;
|
|
50
|
+
workbookKey: string;
|
|
51
|
+
title: string;
|
|
52
|
+
edition: string;
|
|
53
|
+
publisher?: string;
|
|
54
|
+
isbn?: string;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=workbook-photo-contracts.d.ts.map
|
|
@@ -0,0 +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"}
|