@happyvertical/smrt-education 0.57.45 → 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/dist/index.js CHANGED
@@ -4,7 +4,7 @@ import { TenantScoped, getCurrentTenant, tenantId, withTenant } from "@happyvert
4
4
  import { createAssetRuntime, withPrivateAssetAccess } from "@happyvertical/smrt-assets";
5
5
  import { SessionCollection, TenantCollection, TenantService } from "@happyvertical/smrt-users";
6
6
  //#region src/__smrt-register__.ts
7
- ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-education","packageVersion":"0.57.45","objects":{"@happyvertical/smrt-education:CatalogProviderCollection":{"name":"catalogprovidercollection","className":"CatalogProviderCollection","qualifiedName":"@happyvertical/smrt-education:CatalogProviderCollection","collection":"catalogproviders","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog-collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CatalogProvider","exportName":"CatalogProviderCollection","collectionExportName":"CatalogProviderCollectionCollection","schema":{"tableName":"catalog_providers","ddl":"CREATE TABLE IF NOT EXISTS \\"catalog_providers\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"provider_id\\" TEXT NOT NULL,\\n \\"name\\" TEXT NOT NULL,\\n \\"active\\" BOOLEAN NOT NULL DEFAULT TRUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"provider_id":{"type":"TEXT","notNull":true,"unique":false},"name":{"type":"TEXT","notNull":true,"unique":false},"active":{"type":"BOOLEAN","notNull":true,"unique":false,"default":true}},"indexes":[{"name":"catalog_providers_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"catalog_providers_created_at_idx","columns":["created_at"]}],"version":"f35557a4"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CatalogResourceCollection":{"name":"catalogresourcecollection","className":"CatalogResourceCollection","qualifiedName":"@happyvertical/smrt-education:CatalogResourceCollection","collection":"catalogresources","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog-collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CatalogResource","exportName":"CatalogResourceCollection","collectionExportName":"CatalogResourceCollectionCollection","schema":{"tableName":"catalog_resources","ddl":"CREATE TABLE IF NOT EXISTS \\"catalog_resources\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"provider_id\\" TEXT NOT NULL,\\n \\"stable_id\\" TEXT NOT NULL,\\n \\"revision\\" TEXT NOT NULL,\\n \\"canonical_url\\" TEXT,\\n \\"title\\" TEXT NOT NULL,\\n \\"supplied_description\\" TEXT,\\n \\"author\\" TEXT,\\n \\"subjects\\" TEXT,\\n \\"grades\\" TEXT,\\n \\"language\\" TEXT,\\n \\"resource_type\\" TEXT,\\n \\"parent_stable_id\\" TEXT,\\n \\"available_formats\\" TEXT,\\n \\"representation\\" TEXT,\\n \\"preview\\" TEXT,\\n \\"license_evidence\\" TEXT,\\n \\"license_state\\" TEXT DEFAULT 'unknown',\\n \\"visibility\\" TEXT DEFAULT 'catalog',\\n \\"last_seen_run_id\\" TEXT,\\n \\"withdrawn_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"provider_id":{"type":"TEXT","notNull":true,"unique":false},"stable_id":{"type":"TEXT","notNull":true,"unique":false},"revision":{"type":"TEXT","notNull":true,"unique":false},"canonical_url":{"type":"TEXT","notNull":false,"unique":false},"title":{"type":"TEXT","notNull":true,"unique":false},"supplied_description":{"type":"TEXT","notNull":false,"unique":false},"author":{"type":"TEXT","notNull":false,"unique":false},"subjects":{"type":"TEXT","notNull":false,"unique":false},"grades":{"type":"TEXT","notNull":false,"unique":false},"language":{"type":"TEXT","notNull":false,"unique":false},"resource_type":{"type":"TEXT","notNull":false,"unique":false},"parent_stable_id":{"type":"TEXT","notNull":false,"unique":false},"available_formats":{"type":"TEXT","notNull":false,"unique":false},"representation":{"type":"TEXT","notNull":false,"unique":false},"preview":{"type":"TEXT","notNull":false,"unique":false},"license_evidence":{"type":"TEXT","notNull":false,"unique":false},"license_state":{"type":"TEXT","notNull":false,"unique":false,"default":"unknown"},"visibility":{"type":"TEXT","notNull":false,"unique":false,"default":"catalog"},"last_seen_run_id":{"type":"TEXT","notNull":false,"unique":false},"withdrawn_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"catalog_resources_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"catalog_resources_created_at_idx","columns":["created_at"]}],"version":"6ea66f0d"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CatalogSyncStateCollection":{"name":"catalogsyncstatecollection","className":"CatalogSyncStateCollection","qualifiedName":"@happyvertical/smrt-education:CatalogSyncStateCollection","collection":"catalogsyncstates","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog-collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CatalogSyncState","exportName":"CatalogSyncStateCollection","collectionExportName":"CatalogSyncStateCollectionCollection","schema":{"tableName":"catalog_sync_states","ddl":"CREATE TABLE IF NOT EXISTS \\"catalog_sync_states\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"provider_id\\" TEXT NOT NULL,\\n \\"cursor\\" TEXT,\\n \\"run_id\\" TEXT,\\n \\"complete\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"paused\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"pause_reason\\" TEXT,\\n \\"imported_count\\" INTEGER NOT NULL DEFAULT 0,\\n \\"failures\\" TEXT,\\n \\"last_successful_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"provider_id":{"type":"TEXT","notNull":true,"unique":false},"cursor":{"type":"TEXT","notNull":false,"unique":false},"run_id":{"type":"TEXT","notNull":false,"unique":false},"complete":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"paused":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"pause_reason":{"type":"TEXT","notNull":false,"unique":false},"imported_count":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"failures":{"type":"TEXT","notNull":false,"unique":false},"last_successful_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"catalog_sync_states_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"catalog_sync_states_created_at_idx","columns":["created_at"]}],"version":"52dc3ee1"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CatalogSelectionCollection":{"name":"catalogselectioncollection","className":"CatalogSelectionCollection","qualifiedName":"@happyvertical/smrt-education:CatalogSelectionCollection","collection":"catalogselections","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog-collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CatalogSelection","exportName":"CatalogSelectionCollection","collectionExportName":"CatalogSelectionCollectionCollection","schema":{"tableName":"catalog_selections","ddl":"CREATE TABLE IF NOT EXISTS \\"catalog_selections\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"resource_id\\" UUID NOT NULL,\\n \\"selected_by_user_id\\" TEXT NOT NULL,\\n \\"selected_revision\\" TEXT NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"resource_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"catalog_resources","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"selected_by_user_id":{"type":"TEXT","notNull":true,"unique":false},"selected_revision":{"type":"TEXT","notNull":true,"unique":false}},"indexes":[{"name":"catalog_selections_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"catalog_selections_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"catalog_selections_resource_id_idx","columns":["resource_id"]}],"version":"c6b02eb9"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CatalogAcquisitionCollection":{"name":"catalogacquisitioncollection","className":"CatalogAcquisitionCollection","qualifiedName":"@happyvertical/smrt-education:CatalogAcquisitionCollection","collection":"catalogacquisitions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog-collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CatalogAcquisition","exportName":"CatalogAcquisitionCollection","collectionExportName":"CatalogAcquisitionCollectionCollection","schema":{"tableName":"catalog_acquisitions","ddl":"CREATE TABLE IF NOT EXISTS \\"catalog_acquisitions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"resource_id\\" UUID NOT NULL,\\n \\"selection_id\\" UUID NOT NULL,\\n \\"revision\\" TEXT NOT NULL,\\n \\"format\\" TEXT NOT NULL,\\n \\"sha256\\" TEXT NOT NULL,\\n \\"attribution\\" TEXT,\\n \\"notices\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"resource_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"catalog_resources","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"selection_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"catalog_selections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"revision":{"type":"TEXT","notNull":true,"unique":false},"format":{"type":"TEXT","notNull":true,"unique":false},"sha256":{"type":"TEXT","notNull":true,"unique":false},"attribution":{"type":"TEXT","notNull":false,"unique":false},"notices":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"catalog_acquisitions_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"catalog_acquisitions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"catalog_acquisitions_resource_id_idx","columns":["resource_id"]},{"name":"catalog_acquisitions_selection_id_idx","columns":["selection_id"]}],"version":"ee9c5add"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CatalogProvider":{"name":"catalogprovider","className":"CatalogProvider","qualifiedName":"@happyvertical/smrt-education:CatalogProvider","collection":"catalogproviders","description":"Globally visible provider registration. Hosts configure adapters and credentials out of band.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog-models.ts","packageName":"@happyvertical/smrt-education","fields":{"providerId":{"type":"text","required":true,"_meta":{"required":true}},"name":{"type":"text","required":true,"_meta":{"required":true}},"active":{"type":"boolean","required":true,"default":true}},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtObject","exportName":"CatalogProvider","collectionExportName":"CatalogProviderCollection","displayLabelField":"name","validationRules":[{"field":"providerId","rule":"required","fieldType":"text"},{"field":"name","rule":"required","fieldType":"text"},{"field":"active","rule":"required","fieldType":"boolean"}],"schema":{"tableName":"catalog_providers","ddl":"CREATE TABLE IF NOT EXISTS \\"catalog_providers\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"provider_id\\" TEXT NOT NULL,\\n \\"name\\" TEXT NOT NULL,\\n \\"active\\" BOOLEAN NOT NULL DEFAULT TRUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"provider_id":{"type":"TEXT","notNull":true,"unique":false},"name":{"type":"TEXT","notNull":true,"unique":false},"active":{"type":"BOOLEAN","notNull":true,"unique":false,"default":true}},"indexes":[{"name":"catalog_providers_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"catalog_providers_created_at_idx","columns":["created_at"]}],"version":"f35557a4"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CatalogResource":{"name":"catalogresource","className":"CatalogResource","qualifiedName":"@happyvertical/smrt-education:CatalogResource","collection":"catalogresources","description":"A provider-native record. Rows are intentionally not merged across providers.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog-models.ts","packageName":"@happyvertical/smrt-education","fields":{"providerId":{"type":"text","required":true,"_meta":{"required":true}},"stableId":{"type":"text","required":true,"_meta":{"required":true}},"revision":{"type":"text","required":true,"_meta":{"required":true}},"canonicalUrl":{"type":"text","required":false},"title":{"type":"text","required":true,"_meta":{"required":true}},"suppliedDescription":{"type":"text","required":false},"author":{"type":"text","required":false},"subjects":{"type":"text","required":false},"grades":{"type":"text","required":false},"language":{"type":"text","required":false},"resourceType":{"type":"text","required":false},"parentStableId":{"type":"text","required":false},"availableFormats":{"type":"text","required":false},"representation":{"type":"text","required":false},"preview":{"type":"text","required":false},"licenseEvidence":{"type":"text","required":false},"licenseState":{"type":"text","required":false,"default":"unknown","enum":["verified","unknown","conflicting","restricted"]},"visibility":{"type":"text","required":false,"default":"catalog","enum":["catalog","teacher"]},"lastSeenRunId":{"type":"text","required":false},"withdrawnAt":{"type":"text","required":false}},"methods":{"getPreview":{"name":"getPreview","async":false,"parameters":[],"returnType":"CatalogPreview | undefined","isStatic":false,"isPublic":true},"setPreview":{"name":"setPreview","async":false,"parameters":[{"name":"value","type":"CatalogPreview | undefined","optional":false,"unionBranches":[{"type":"CatalogPreview"},{"type":"undefined"}]}],"returnType":"void","isStatic":false,"isPublic":true},"getRepresentation":{"name":"getRepresentation","async":false,"parameters":[],"returnType":"CatalogResourceRepresentation | undefined","isStatic":false,"isPublic":true},"setRepresentation":{"name":"setRepresentation","async":false,"parameters":[{"name":"value","type":"CatalogResourceRepresentation | undefined","optional":false,"unionBranches":[{"type":"CatalogResourceRepresentation"},{"type":"undefined"}]}],"returnType":"void","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtObject","exportName":"CatalogResource","collectionExportName":"CatalogResourceCollection","displayLabelField":"title","validationRules":[{"field":"providerId","rule":"required","fieldType":"text"},{"field":"stableId","rule":"required","fieldType":"text"},{"field":"revision","rule":"required","fieldType":"text"},{"field":"title","rule":"required","fieldType":"text"}],"schema":{"tableName":"catalog_resources","ddl":"CREATE TABLE IF NOT EXISTS \\"catalog_resources\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"provider_id\\" TEXT NOT NULL,\\n \\"stable_id\\" TEXT NOT NULL,\\n \\"revision\\" TEXT NOT NULL,\\n \\"canonical_url\\" TEXT,\\n \\"title\\" TEXT NOT NULL,\\n \\"supplied_description\\" TEXT,\\n \\"author\\" TEXT,\\n \\"subjects\\" TEXT,\\n \\"grades\\" TEXT,\\n \\"language\\" TEXT,\\n \\"resource_type\\" TEXT,\\n \\"parent_stable_id\\" TEXT,\\n \\"available_formats\\" TEXT,\\n \\"representation\\" TEXT,\\n \\"preview\\" TEXT,\\n \\"license_evidence\\" TEXT,\\n \\"license_state\\" TEXT DEFAULT 'unknown',\\n \\"visibility\\" TEXT DEFAULT 'catalog',\\n \\"last_seen_run_id\\" TEXT,\\n \\"withdrawn_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"provider_id":{"type":"TEXT","notNull":true,"unique":false},"stable_id":{"type":"TEXT","notNull":true,"unique":false},"revision":{"type":"TEXT","notNull":true,"unique":false},"canonical_url":{"type":"TEXT","notNull":false,"unique":false},"title":{"type":"TEXT","notNull":true,"unique":false},"supplied_description":{"type":"TEXT","notNull":false,"unique":false},"author":{"type":"TEXT","notNull":false,"unique":false},"subjects":{"type":"TEXT","notNull":false,"unique":false},"grades":{"type":"TEXT","notNull":false,"unique":false},"language":{"type":"TEXT","notNull":false,"unique":false},"resource_type":{"type":"TEXT","notNull":false,"unique":false},"parent_stable_id":{"type":"TEXT","notNull":false,"unique":false},"available_formats":{"type":"TEXT","notNull":false,"unique":false},"representation":{"type":"TEXT","notNull":false,"unique":false},"preview":{"type":"TEXT","notNull":false,"unique":false},"license_evidence":{"type":"TEXT","notNull":false,"unique":false},"license_state":{"type":"TEXT","notNull":false,"unique":false,"default":"unknown"},"visibility":{"type":"TEXT","notNull":false,"unique":false,"default":"catalog"},"last_seen_run_id":{"type":"TEXT","notNull":false,"unique":false},"withdrawn_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"catalog_resources_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"catalog_resources_created_at_idx","columns":["created_at"]}],"version":"6ea66f0d"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CatalogSyncState":{"name":"catalogsyncstate","className":"CatalogSyncState","qualifiedName":"@happyvertical/smrt-education:CatalogSyncState","collection":"catalogsyncstates","description":"Durable per-provider enumeration state. A failed or partial feed is never complete.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog-models.ts","packageName":"@happyvertical/smrt-education","fields":{"providerId":{"type":"text","required":true,"_meta":{"required":true}},"cursor":{"type":"text","required":false},"runId":{"type":"text","required":false},"complete":{"type":"boolean","required":true,"default":false},"paused":{"type":"boolean","required":true,"default":false},"pauseReason":{"type":"text","required":false},"importedCount":{"type":"integer","required":true,"default":0},"failures":{"type":"text","required":false},"lastSuccessfulAt":{"type":"text","required":false}},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtObject","exportName":"CatalogSyncState","collectionExportName":"CatalogSyncStateCollection","validationRules":[{"field":"providerId","rule":"required","fieldType":"text"},{"field":"complete","rule":"required","fieldType":"boolean"},{"field":"paused","rule":"required","fieldType":"boolean"},{"field":"importedCount","rule":"required","fieldType":"integer"}],"schema":{"tableName":"catalog_sync_states","ddl":"CREATE TABLE IF NOT EXISTS \\"catalog_sync_states\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"provider_id\\" TEXT NOT NULL,\\n \\"cursor\\" TEXT,\\n \\"run_id\\" TEXT,\\n \\"complete\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"paused\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"pause_reason\\" TEXT,\\n \\"imported_count\\" INTEGER NOT NULL DEFAULT 0,\\n \\"failures\\" TEXT,\\n \\"last_successful_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"provider_id":{"type":"TEXT","notNull":true,"unique":false},"cursor":{"type":"TEXT","notNull":false,"unique":false},"run_id":{"type":"TEXT","notNull":false,"unique":false},"complete":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"paused":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"pause_reason":{"type":"TEXT","notNull":false,"unique":false},"imported_count":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"failures":{"type":"TEXT","notNull":false,"unique":false},"last_successful_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"catalog_sync_states_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"catalog_sync_states_created_at_idx","columns":["created_at"]}],"version":"52dc3ee1"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CatalogSelection":{"name":"catalogselection","className":"CatalogSelection","qualifiedName":"@happyvertical/smrt-education:CatalogSelection","collection":"catalogselections","description":"Tenant-owned intent to use a metadata record, distinct from acquiring bytes.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"resourceId":{"type":"foreignKey","required":true,"related":"CatalogResource","_meta":{"required":true}},"selectedByUserId":{"type":"text","required":true,"_meta":{"required":true}},"selectedRevision":{"type":"text","required":true,"_meta":{"required":true}}},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"CatalogSelection","collectionExportName":"CatalogSelectionCollection","validationRules":[{"field":"resourceId","rule":"required","fieldType":"foreignKey"},{"field":"selectedByUserId","rule":"required","fieldType":"text"},{"field":"selectedRevision","rule":"required","fieldType":"text"}],"schema":{"tableName":"catalog_selections","ddl":"CREATE TABLE IF NOT EXISTS \\"catalog_selections\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"resource_id\\" UUID NOT NULL,\\n \\"selected_by_user_id\\" TEXT NOT NULL,\\n \\"selected_revision\\" TEXT NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"resource_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"catalog_resources","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"selected_by_user_id":{"type":"TEXT","notNull":true,"unique":false},"selected_revision":{"type":"TEXT","notNull":true,"unique":false}},"indexes":[{"name":"catalog_selections_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"catalog_selections_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"catalog_selections_resource_id_idx","columns":["resource_id"]}],"version":"c6b02eb9"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CatalogAcquisition":{"name":"catalogacquisition","className":"CatalogAcquisition","qualifiedName":"@happyvertical/smrt-education:CatalogAcquisition","collection":"catalogacquisitions","description":"A pinned, tenant-owned acquisition record. Bytes belong in a host storage service.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"resourceId":{"type":"foreignKey","required":true,"related":"CatalogResource","_meta":{"required":true}},"selectionId":{"type":"foreignKey","required":true,"related":"CatalogSelection","_meta":{"required":true}},"revision":{"type":"text","required":true,"_meta":{"required":true}},"format":{"type":"text","required":true,"_meta":{"required":true}},"sha256":{"type":"text","required":true,"_meta":{"required":true}},"attribution":{"type":"text","required":false},"notices":{"type":"text","required":false}},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"CatalogAcquisition","collectionExportName":"CatalogAcquisitionCollection","validationRules":[{"field":"resourceId","rule":"required","fieldType":"foreignKey"},{"field":"selectionId","rule":"required","fieldType":"foreignKey"},{"field":"revision","rule":"required","fieldType":"text"},{"field":"format","rule":"required","fieldType":"text"},{"field":"sha256","rule":"required","fieldType":"text"}],"schema":{"tableName":"catalog_acquisitions","ddl":"CREATE TABLE IF NOT EXISTS \\"catalog_acquisitions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"resource_id\\" UUID NOT NULL,\\n \\"selection_id\\" UUID NOT NULL,\\n \\"revision\\" TEXT NOT NULL,\\n \\"format\\" TEXT NOT NULL,\\n \\"sha256\\" TEXT NOT NULL,\\n \\"attribution\\" TEXT,\\n \\"notices\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"resource_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"catalog_resources","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"selection_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"catalog_selections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"revision":{"type":"TEXT","notNull":true,"unique":false},"format":{"type":"TEXT","notNull":true,"unique":false},"sha256":{"type":"TEXT","notNull":true,"unique":false},"attribution":{"type":"TEXT","notNull":false,"unique":false},"notices":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"catalog_acquisitions_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"catalog_acquisitions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"catalog_acquisitions_resource_id_idx","columns":["resource_id"]},{"name":"catalog_acquisitions_selection_id_idx","columns":["selection_id"]}],"version":"ee9c5add"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Course":{"name":"course","className":"Course","qualifiedName":"@happyvertical/smrt-education:Course","collection":"courses","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"title":{"type":"text","required":true,"_meta":{"required":true}},"summary":{"type":"text","required":false},"description":{"type":"text","required":false},"sourceKey":{"type":"text","required":false},"sourceUrl":{"type":"text","required":false},"sourceRef":{"type":"text","required":false},"license":{"type":"text","required":false},"licenseKind":{"type":"text","required":false,"default":"own-work","enum":["own-work","open-license","personal-use-copy","licensed-for-sharing"]},"licenseNote":{"type":"text","required":false},"attestedBy":{"type":"text","required":false},"subject":{"type":"text","required":false},"tags":{"type":"text","required":false},"levelMin":{"type":"integer","required":true,"default":0},"levelMax":{"type":"integer","required":true,"default":0},"difficulty":{"type":"decimal","required":true,"default":0},"estimatedMinutes":{"type":"integer","required":true,"default":0},"modality":{"type":"text","required":false,"default":"online","enum":["online","printable","kit","video","game","mixed"]},"status":{"type":"text","required":false,"default":"draft","enum":["draft","published","archived"]}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"Course","collectionExportName":"CourseCollection","displayLabelField":"title","validationRules":[{"field":"title","rule":"required","fieldType":"text"},{"field":"levelMin","rule":"required","fieldType":"integer"},{"field":"levelMax","rule":"required","fieldType":"integer"},{"field":"difficulty","rule":"required","fieldType":"decimal"},{"field":"estimatedMinutes","rule":"required","fieldType":"integer"}],"schema":{"tableName":"courses","ddl":"CREATE TABLE IF NOT EXISTS \\"courses\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"summary\\" TEXT,\\n \\"description\\" TEXT,\\n \\"source_key\\" TEXT,\\n \\"source_url\\" TEXT,\\n \\"source_ref\\" TEXT,\\n \\"license\\" TEXT,\\n \\"license_kind\\" TEXT DEFAULT 'own-work',\\n \\"license_note\\" TEXT,\\n \\"attested_by\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"tags\\" TEXT,\\n \\"level_min\\" INTEGER DEFAULT 0,\\n \\"level_max\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"status\\" TEXT DEFAULT 'draft'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"title":{"type":"TEXT","notNull":false},"summary":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false},"source_key":{"type":"TEXT","notNull":false},"source_url":{"type":"TEXT","notNull":false},"source_ref":{"type":"TEXT","notNull":false},"license":{"type":"TEXT","notNull":false},"license_kind":{"type":"TEXT","notNull":false,"default":"own-work"},"license_note":{"type":"TEXT","notNull":false},"attested_by":{"type":"TEXT","notNull":false},"subject":{"type":"TEXT","notNull":false},"tags":{"type":"TEXT","notNull":false},"level_min":{"type":"INTEGER","notNull":false,"default":0},"level_max":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"status":{"type":"TEXT","notNull":false,"default":"draft"}},"indexes":[{"name":"courses_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"courses_meta_type_idx","columns":["_meta_type"]},{"name":"courses_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"88cc23ab"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:ExternalCourse":{"name":"externalcourse","className":"ExternalCourse","qualifiedName":"@happyvertical/smrt-education:ExternalCourse","collection":"courses","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true}}},"title":{"type":"text","required":true,"_meta":{"required":true}},"summary":{"type":"text","required":false},"description":{"type":"text","required":false},"sourceKey":{"type":"text","required":false},"sourceUrl":{"type":"text","required":false},"sourceRef":{"type":"text","required":false},"license":{"type":"text","required":false},"licenseKind":{"type":"text","required":false,"default":"own-work","enum":["own-work","open-license","personal-use-copy","licensed-for-sharing"]},"licenseNote":{"type":"text","required":false},"attestedBy":{"type":"text","required":false},"subject":{"type":"text","required":false},"tags":{"type":"text","required":false},"levelMin":{"type":"integer","required":true,"default":0},"levelMax":{"type":"integer","required":true,"default":0},"difficulty":{"type":"decimal","required":true,"default":0},"estimatedMinutes":{"type":"integer","required":true,"default":0},"modality":{"type":"text","required":false,"default":"online","enum":["online","printable","kit","video","game","mixed"]},"status":{"type":"text","required":false,"default":"draft","enum":["draft","published","archived"]}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"courses","api":false,"mcp":false,"cli":false,"tableStrategy":"sti"},"extends":"Course","exportName":"ExternalCourse","collectionExportName":"ExternalCourseCollection","displayLabelField":"title","validationRules":[{"field":"title","rule":"required","fieldType":"text"},{"field":"levelMin","rule":"required","fieldType":"integer"},{"field":"levelMax","rule":"required","fieldType":"integer"},{"field":"difficulty","rule":"required","fieldType":"decimal"},{"field":"estimatedMinutes","rule":"required","fieldType":"integer"}],"schema":{"tableName":"courses","ddl":"CREATE TABLE IF NOT EXISTS \\"courses\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"summary\\" TEXT,\\n \\"description\\" TEXT,\\n \\"source_key\\" TEXT,\\n \\"source_url\\" TEXT,\\n \\"source_ref\\" TEXT,\\n \\"license\\" TEXT,\\n \\"license_kind\\" TEXT DEFAULT 'own-work',\\n \\"license_note\\" TEXT,\\n \\"attested_by\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"tags\\" TEXT,\\n \\"level_min\\" INTEGER DEFAULT 0,\\n \\"level_max\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"status\\" TEXT DEFAULT 'draft'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"title":{"type":"TEXT","notNull":false},"summary":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false},"source_key":{"type":"TEXT","notNull":false},"source_url":{"type":"TEXT","notNull":false},"source_ref":{"type":"TEXT","notNull":false},"license":{"type":"TEXT","notNull":false},"license_kind":{"type":"TEXT","notNull":false,"default":"own-work"},"license_note":{"type":"TEXT","notNull":false},"attested_by":{"type":"TEXT","notNull":false},"subject":{"type":"TEXT","notNull":false},"tags":{"type":"TEXT","notNull":false},"level_min":{"type":"INTEGER","notNull":false,"default":0},"level_max":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"status":{"type":"TEXT","notNull":false,"default":"draft"}},"indexes":[{"name":"courses_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"courses_meta_type_idx","columns":["_meta_type"]},{"name":"courses_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"88cc23ab"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:AuthoredCourse":{"name":"authoredcourse","className":"AuthoredCourse","qualifiedName":"@happyvertical/smrt-education:AuthoredCourse","collection":"courses","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true}}},"title":{"type":"text","required":true,"_meta":{"required":true}},"summary":{"type":"text","required":false},"description":{"type":"text","required":false},"sourceKey":{"type":"text","required":false},"sourceUrl":{"type":"text","required":false},"sourceRef":{"type":"text","required":false},"license":{"type":"text","required":false},"licenseKind":{"type":"text","required":false,"default":"own-work","enum":["own-work","open-license","personal-use-copy","licensed-for-sharing"]},"licenseNote":{"type":"text","required":false},"attestedBy":{"type":"text","required":false},"subject":{"type":"text","required":false},"tags":{"type":"text","required":false},"levelMin":{"type":"integer","required":true,"default":0},"levelMax":{"type":"integer","required":true,"default":0},"difficulty":{"type":"decimal","required":true,"default":0},"estimatedMinutes":{"type":"integer","required":true,"default":0},"modality":{"type":"text","required":false,"default":"online","enum":["online","printable","kit","video","game","mixed"]},"status":{"type":"text","required":false,"default":"draft","enum":["draft","published","archived"]}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"courses","api":false,"mcp":false,"cli":false,"tableStrategy":"sti"},"extends":"Course","exportName":"AuthoredCourse","collectionExportName":"AuthoredCourseCollection","displayLabelField":"title","validationRules":[{"field":"title","rule":"required","fieldType":"text"},{"field":"levelMin","rule":"required","fieldType":"integer"},{"field":"levelMax","rule":"required","fieldType":"integer"},{"field":"difficulty","rule":"required","fieldType":"decimal"},{"field":"estimatedMinutes","rule":"required","fieldType":"integer"}],"schema":{"tableName":"courses","ddl":"CREATE TABLE IF NOT EXISTS \\"courses\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"summary\\" TEXT,\\n \\"description\\" TEXT,\\n \\"source_key\\" TEXT,\\n \\"source_url\\" TEXT,\\n \\"source_ref\\" TEXT,\\n \\"license\\" TEXT,\\n \\"license_kind\\" TEXT DEFAULT 'own-work',\\n \\"license_note\\" TEXT,\\n \\"attested_by\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"tags\\" TEXT,\\n \\"level_min\\" INTEGER DEFAULT 0,\\n \\"level_max\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"status\\" TEXT DEFAULT 'draft'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"title":{"type":"TEXT","notNull":false},"summary":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false},"source_key":{"type":"TEXT","notNull":false},"source_url":{"type":"TEXT","notNull":false},"source_ref":{"type":"TEXT","notNull":false},"license":{"type":"TEXT","notNull":false},"license_kind":{"type":"TEXT","notNull":false,"default":"own-work"},"license_note":{"type":"TEXT","notNull":false},"attested_by":{"type":"TEXT","notNull":false},"subject":{"type":"TEXT","notNull":false},"tags":{"type":"TEXT","notNull":false},"level_min":{"type":"INTEGER","notNull":false,"default":0},"level_max":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"status":{"type":"TEXT","notNull":false,"default":"draft"}},"indexes":[{"name":"courses_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"courses_meta_type_idx","columns":["_meta_type"]},{"name":"courses_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"88cc23ab"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseSection":{"name":"coursesection","className":"CourseSection","qualifiedName":"@happyvertical/smrt-education:CourseSection","collection":"coursesections","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"title":{"type":"text","required":true,"_meta":{"required":true}},"sortOrder":{"type":"integer","required":true,"default":0}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"CourseSection","collectionExportName":"CourseSectionCollection","displayLabelField":"title","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"title","rule":"required","fieldType":"text"},{"field":"sortOrder","rule":"required","fieldType":"integer"}],"schema":{"tableName":"course_sections","ddl":"CREATE TABLE IF NOT EXISTS \\"course_sections\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"course_id\\" UUID NOT NULL,\\n \\"title\\" TEXT NOT NULL,\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":true,"unique":false},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"course_sections_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"course_sections_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_sections_course_id_idx","columns":["course_id"]}],"version":"e20480d7"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Lesson":{"name":"lesson","className":"Lesson","qualifiedName":"@happyvertical/smrt-education:Lesson","collection":"lessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"sectionId":{"type":"foreignKey","required":true,"related":"CourseSection","_meta":{"required":true}},"title":{"type":"text","required":true,"_meta":{"required":true}},"body":{"type":"text","required":false},"sortOrder":{"type":"integer","required":true,"default":0},"estimatedMinutes":{"type":"integer","required":true,"default":0},"difficulty":{"type":"decimal","required":true,"default":0},"modality":{"type":"text","required":false,"default":"online","enum":["online","printable","kit","video","game","mixed"]},"completionRule":{"type":"text","required":false,"default":"attest","enum":["attest","submit","score","external"]},"externalRef":{"type":"text","required":false},"externalUrl":{"type":"text","required":false}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"Lesson","collectionExportName":"LessonCollection","displayLabelField":"title","validationRules":[{"field":"sectionId","rule":"required","fieldType":"foreignKey"},{"field":"title","rule":"required","fieldType":"text"},{"field":"sortOrder","rule":"required","fieldType":"integer"},{"field":"estimatedMinutes","rule":"required","fieldType":"integer"},{"field":"difficulty","rule":"required","fieldType":"decimal"}],"schema":{"tableName":"lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"section_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"completion_rule\\" TEXT DEFAULT 'attest',\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"video_url\\" TEXT,\\n \\"printable_url\\" TEXT,\\n \\"answer_url\\" TEXT,\\n \\"pages\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false},"body":{"type":"TEXT","notNull":false},"sort_order":{"type":"INTEGER","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"completion_rule":{"type":"TEXT","notNull":false,"default":"attest"},"external_ref":{"type":"TEXT","notNull":false},"external_url":{"type":"TEXT","notNull":false},"video_url":{"type":"TEXT","notNull":false},"printable_url":{"type":"TEXT","notNull":false},"answer_url":{"type":"TEXT","notNull":false},"pages":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"lessons_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"lessons_meta_type_idx","columns":["_meta_type"]},{"name":"lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lessons_section_id_idx","columns":["section_id"]}],"version":"092df043"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Reading":{"name":"reading","className":"Reading","qualifiedName":"@happyvertical/smrt-education:Reading","collection":"lessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true}}},"sectionId":{"type":"foreignKey","required":true,"related":"CourseSection","_meta":{"required":true}},"title":{"type":"text","required":true,"_meta":{"required":true}},"body":{"type":"text","required":false},"sortOrder":{"type":"integer","required":true,"default":0},"estimatedMinutes":{"type":"integer","required":true,"default":0},"difficulty":{"type":"decimal","required":true,"default":0},"modality":{"type":"text","required":false,"default":"online","enum":["online","printable","kit","video","game","mixed"]},"completionRule":{"type":"text","required":false,"default":"attest","enum":["attest","submit","score","external"]},"externalRef":{"type":"text","required":false},"externalUrl":{"type":"text","required":false}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"lessons","api":false,"mcp":false,"cli":false,"tableStrategy":"sti"},"extends":"Lesson","exportName":"Reading","collectionExportName":"ReadingCollection","displayLabelField":"title","validationRules":[{"field":"sectionId","rule":"required","fieldType":"foreignKey"},{"field":"title","rule":"required","fieldType":"text"},{"field":"sortOrder","rule":"required","fieldType":"integer"},{"field":"estimatedMinutes","rule":"required","fieldType":"integer"},{"field":"difficulty","rule":"required","fieldType":"decimal"}],"schema":{"tableName":"lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"section_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"completion_rule\\" TEXT DEFAULT 'attest',\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"video_url\\" TEXT,\\n \\"printable_url\\" TEXT,\\n \\"answer_url\\" TEXT,\\n \\"pages\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false},"body":{"type":"TEXT","notNull":false},"sort_order":{"type":"INTEGER","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"completion_rule":{"type":"TEXT","notNull":false,"default":"attest"},"external_ref":{"type":"TEXT","notNull":false},"external_url":{"type":"TEXT","notNull":false},"video_url":{"type":"TEXT","notNull":false},"printable_url":{"type":"TEXT","notNull":false},"answer_url":{"type":"TEXT","notNull":false},"pages":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"lessons_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"lessons_meta_type_idx","columns":["_meta_type"]},{"name":"lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lessons_section_id_idx","columns":["section_id"]}],"version":"9d8b6fcd"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Video":{"name":"video","className":"Video","qualifiedName":"@happyvertical/smrt-education:Video","collection":"lessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true}}},"sectionId":{"type":"foreignKey","required":true,"related":"CourseSection","_meta":{"required":true}},"title":{"type":"text","required":true,"_meta":{"required":true}},"body":{"type":"text","required":false},"sortOrder":{"type":"integer","required":true,"default":0},"estimatedMinutes":{"type":"integer","required":true,"default":0},"difficulty":{"type":"decimal","required":true,"default":0},"modality":{"type":"text","required":false,"default":"online","enum":["online","printable","kit","video","game","mixed"]},"completionRule":{"type":"text","required":false,"default":"attest","enum":["attest","submit","score","external"]},"externalRef":{"type":"text","required":false},"externalUrl":{"type":"text","required":false},"videoUrl":{"type":"text","required":false}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"lessons","api":false,"mcp":false,"cli":false,"tableStrategy":"sti"},"extends":"Lesson","exportName":"Video","collectionExportName":"VideoCollection","displayLabelField":"title","validationRules":[{"field":"sectionId","rule":"required","fieldType":"foreignKey"},{"field":"title","rule":"required","fieldType":"text"},{"field":"sortOrder","rule":"required","fieldType":"integer"},{"field":"estimatedMinutes","rule":"required","fieldType":"integer"},{"field":"difficulty","rule":"required","fieldType":"decimal"}],"schema":{"tableName":"lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"section_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"completion_rule\\" TEXT DEFAULT 'attest',\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"video_url\\" TEXT,\\n \\"printable_url\\" TEXT,\\n \\"answer_url\\" TEXT,\\n \\"pages\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false},"body":{"type":"TEXT","notNull":false},"sort_order":{"type":"INTEGER","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"completion_rule":{"type":"TEXT","notNull":false,"default":"attest"},"external_ref":{"type":"TEXT","notNull":false},"external_url":{"type":"TEXT","notNull":false},"video_url":{"type":"TEXT","notNull":false},"printable_url":{"type":"TEXT","notNull":false},"answer_url":{"type":"TEXT","notNull":false},"pages":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"lessons_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"lessons_meta_type_idx","columns":["_meta_type"]},{"name":"lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lessons_section_id_idx","columns":["section_id"]}],"version":"9e0ef984"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Worksheet":{"name":"worksheet","className":"Worksheet","qualifiedName":"@happyvertical/smrt-education:Worksheet","collection":"lessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true}}},"sectionId":{"type":"foreignKey","required":true,"related":"CourseSection","_meta":{"required":true}},"title":{"type":"text","required":true,"_meta":{"required":true}},"body":{"type":"text","required":false},"sortOrder":{"type":"integer","required":true,"default":0},"estimatedMinutes":{"type":"integer","required":true,"default":0},"difficulty":{"type":"decimal","required":true,"default":0},"modality":{"type":"text","required":false,"default":"online","enum":["online","printable","kit","video","game","mixed"]},"completionRule":{"type":"text","required":false,"default":"submit","enum":["attest","submit","score","external"]},"externalRef":{"type":"text","required":false},"externalUrl":{"type":"text","required":false},"printableUrl":{"type":"text","required":false},"answerUrl":{"type":"text","required":false},"pages":{"type":"integer","required":true,"default":0}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"lessons","api":false,"mcp":false,"cli":false,"tableStrategy":"sti"},"extends":"Lesson","exportName":"Worksheet","collectionExportName":"WorksheetCollection","displayLabelField":"title","validationRules":[{"field":"sectionId","rule":"required","fieldType":"foreignKey"},{"field":"title","rule":"required","fieldType":"text"},{"field":"sortOrder","rule":"required","fieldType":"integer"},{"field":"estimatedMinutes","rule":"required","fieldType":"integer"},{"field":"difficulty","rule":"required","fieldType":"decimal"},{"field":"pages","rule":"required","fieldType":"integer"}],"schema":{"tableName":"lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"section_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"completion_rule\\" TEXT DEFAULT 'attest',\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"video_url\\" TEXT,\\n \\"printable_url\\" TEXT,\\n \\"answer_url\\" TEXT,\\n \\"pages\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false},"body":{"type":"TEXT","notNull":false},"sort_order":{"type":"INTEGER","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"completion_rule":{"type":"TEXT","notNull":false,"default":"attest"},"external_ref":{"type":"TEXT","notNull":false},"external_url":{"type":"TEXT","notNull":false},"video_url":{"type":"TEXT","notNull":false},"printable_url":{"type":"TEXT","notNull":false},"answer_url":{"type":"TEXT","notNull":false},"pages":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"lessons_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"lessons_meta_type_idx","columns":["_meta_type"]},{"name":"lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lessons_section_id_idx","columns":["section_id"]}],"version":"10976938"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Exercise":{"name":"exercise","className":"Exercise","qualifiedName":"@happyvertical/smrt-education:Exercise","collection":"lessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true}}},"sectionId":{"type":"foreignKey","required":true,"related":"CourseSection","_meta":{"required":true}},"title":{"type":"text","required":true,"_meta":{"required":true}},"body":{"type":"text","required":false},"sortOrder":{"type":"integer","required":true,"default":0},"estimatedMinutes":{"type":"integer","required":true,"default":0},"difficulty":{"type":"decimal","required":true,"default":0},"modality":{"type":"text","required":false,"default":"online","enum":["online","printable","kit","video","game","mixed"]},"completionRule":{"type":"text","required":false,"default":"attest","enum":["attest","submit","score","external"]},"externalRef":{"type":"text","required":false},"externalUrl":{"type":"text","required":false}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"lessons","api":false,"mcp":false,"cli":false,"tableStrategy":"sti"},"extends":"Lesson","exportName":"Exercise","collectionExportName":"ExerciseCollection","displayLabelField":"title","validationRules":[{"field":"sectionId","rule":"required","fieldType":"foreignKey"},{"field":"title","rule":"required","fieldType":"text"},{"field":"sortOrder","rule":"required","fieldType":"integer"},{"field":"estimatedMinutes","rule":"required","fieldType":"integer"},{"field":"difficulty","rule":"required","fieldType":"decimal"}],"schema":{"tableName":"lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"section_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"completion_rule\\" TEXT DEFAULT 'attest',\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"video_url\\" TEXT,\\n \\"printable_url\\" TEXT,\\n \\"answer_url\\" TEXT,\\n \\"pages\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false},"body":{"type":"TEXT","notNull":false},"sort_order":{"type":"INTEGER","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"completion_rule":{"type":"TEXT","notNull":false,"default":"attest"},"external_ref":{"type":"TEXT","notNull":false},"external_url":{"type":"TEXT","notNull":false},"video_url":{"type":"TEXT","notNull":false},"printable_url":{"type":"TEXT","notNull":false},"answer_url":{"type":"TEXT","notNull":false},"pages":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"lessons_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"lessons_meta_type_idx","columns":["_meta_type"]},{"name":"lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lessons_section_id_idx","columns":["section_id"]}],"version":"145eadbe"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseCollection":{"name":"coursecollection","className":"CourseCollection","qualifiedName":"@happyvertical/smrt-education:CourseCollection","collection":"courses","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Course","exportName":"CourseCollection","collectionExportName":"CourseCollectionCollection","schema":{"tableName":"courses","ddl":"CREATE TABLE IF NOT EXISTS \\"courses\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"summary\\" TEXT,\\n \\"description\\" TEXT,\\n \\"source_key\\" TEXT,\\n \\"source_url\\" TEXT,\\n \\"source_ref\\" TEXT,\\n \\"license\\" TEXT,\\n \\"license_kind\\" TEXT DEFAULT 'own-work',\\n \\"license_note\\" TEXT,\\n \\"attested_by\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"tags\\" TEXT,\\n \\"level_min\\" INTEGER DEFAULT 0,\\n \\"level_max\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"status\\" TEXT DEFAULT 'draft'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"title":{"type":"TEXT","notNull":false},"summary":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false},"source_key":{"type":"TEXT","notNull":false},"source_url":{"type":"TEXT","notNull":false},"source_ref":{"type":"TEXT","notNull":false},"license":{"type":"TEXT","notNull":false},"license_kind":{"type":"TEXT","notNull":false,"default":"own-work"},"license_note":{"type":"TEXT","notNull":false},"attested_by":{"type":"TEXT","notNull":false},"subject":{"type":"TEXT","notNull":false},"tags":{"type":"TEXT","notNull":false},"level_min":{"type":"INTEGER","notNull":false,"default":0},"level_max":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"status":{"type":"TEXT","notNull":false,"default":"draft"}},"indexes":[{"name":"courses_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"courses_meta_type_idx","columns":["_meta_type"]},{"name":"courses_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"88cc23ab"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:ExternalCourseCollection":{"name":"externalcoursecollection","className":"ExternalCourseCollection","qualifiedName":"@happyvertical/smrt-education:ExternalCourseCollection","collection":"courses","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"courses","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"ExternalCourse","exportName":"ExternalCourseCollection","collectionExportName":"ExternalCourseCollectionCollection","schema":{"tableName":"courses","ddl":"CREATE TABLE IF NOT EXISTS \\"courses\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"summary\\" TEXT,\\n \\"description\\" TEXT,\\n \\"source_key\\" TEXT,\\n \\"source_url\\" TEXT,\\n \\"source_ref\\" TEXT,\\n \\"license\\" TEXT,\\n \\"license_kind\\" TEXT DEFAULT 'own-work',\\n \\"license_note\\" TEXT,\\n \\"attested_by\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"tags\\" TEXT,\\n \\"level_min\\" INTEGER DEFAULT 0,\\n \\"level_max\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"status\\" TEXT DEFAULT 'draft'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"title":{"type":"TEXT","notNull":false},"summary":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false},"source_key":{"type":"TEXT","notNull":false},"source_url":{"type":"TEXT","notNull":false},"source_ref":{"type":"TEXT","notNull":false},"license":{"type":"TEXT","notNull":false},"license_kind":{"type":"TEXT","notNull":false,"default":"own-work"},"license_note":{"type":"TEXT","notNull":false},"attested_by":{"type":"TEXT","notNull":false},"subject":{"type":"TEXT","notNull":false},"tags":{"type":"TEXT","notNull":false},"level_min":{"type":"INTEGER","notNull":false,"default":0},"level_max":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"status":{"type":"TEXT","notNull":false,"default":"draft"}},"indexes":[{"name":"courses_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"courses_meta_type_idx","columns":["_meta_type"]},{"name":"courses_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"88cc23ab"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:AuthoredCourseCollection":{"name":"authoredcoursecollection","className":"AuthoredCourseCollection","qualifiedName":"@happyvertical/smrt-education:AuthoredCourseCollection","collection":"courses","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"courses","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"AuthoredCourse","exportName":"AuthoredCourseCollection","collectionExportName":"AuthoredCourseCollectionCollection","schema":{"tableName":"courses","ddl":"CREATE TABLE IF NOT EXISTS \\"courses\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"summary\\" TEXT,\\n \\"description\\" TEXT,\\n \\"source_key\\" TEXT,\\n \\"source_url\\" TEXT,\\n \\"source_ref\\" TEXT,\\n \\"license\\" TEXT,\\n \\"license_kind\\" TEXT DEFAULT 'own-work',\\n \\"license_note\\" TEXT,\\n \\"attested_by\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"tags\\" TEXT,\\n \\"level_min\\" INTEGER DEFAULT 0,\\n \\"level_max\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"status\\" TEXT DEFAULT 'draft'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"title":{"type":"TEXT","notNull":false},"summary":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false},"source_key":{"type":"TEXT","notNull":false},"source_url":{"type":"TEXT","notNull":false},"source_ref":{"type":"TEXT","notNull":false},"license":{"type":"TEXT","notNull":false},"license_kind":{"type":"TEXT","notNull":false,"default":"own-work"},"license_note":{"type":"TEXT","notNull":false},"attested_by":{"type":"TEXT","notNull":false},"subject":{"type":"TEXT","notNull":false},"tags":{"type":"TEXT","notNull":false},"level_min":{"type":"INTEGER","notNull":false,"default":0},"level_max":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"status":{"type":"TEXT","notNull":false,"default":"draft"}},"indexes":[{"name":"courses_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"courses_meta_type_idx","columns":["_meta_type"]},{"name":"courses_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"88cc23ab"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseSectionCollection":{"name":"coursesectioncollection","className":"CourseSectionCollection","qualifiedName":"@happyvertical/smrt-education:CourseSectionCollection","collection":"coursesections","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseSection","exportName":"CourseSectionCollection","collectionExportName":"CourseSectionCollectionCollection","schema":{"tableName":"course_sections","ddl":"CREATE TABLE IF NOT EXISTS \\"course_sections\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"course_id\\" UUID NOT NULL,\\n \\"title\\" TEXT NOT NULL,\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":true,"unique":false},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"course_sections_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"course_sections_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_sections_course_id_idx","columns":["course_id"]}],"version":"e20480d7"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LessonCollection":{"name":"lessoncollection","className":"LessonCollection","qualifiedName":"@happyvertical/smrt-education:LessonCollection","collection":"lessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Lesson","exportName":"LessonCollection","collectionExportName":"LessonCollectionCollection","schema":{"tableName":"lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"section_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"completion_rule\\" TEXT DEFAULT 'attest',\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"video_url\\" TEXT,\\n \\"printable_url\\" TEXT,\\n \\"answer_url\\" TEXT,\\n \\"pages\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false},"body":{"type":"TEXT","notNull":false},"sort_order":{"type":"INTEGER","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"completion_rule":{"type":"TEXT","notNull":false,"default":"attest"},"external_ref":{"type":"TEXT","notNull":false},"external_url":{"type":"TEXT","notNull":false},"video_url":{"type":"TEXT","notNull":false},"printable_url":{"type":"TEXT","notNull":false},"answer_url":{"type":"TEXT","notNull":false},"pages":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"lessons_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"lessons_meta_type_idx","columns":["_meta_type"]},{"name":"lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lessons_section_id_idx","columns":["section_id"]}],"version":"092df043"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:ReadingCollection":{"name":"readingcollection","className":"ReadingCollection","qualifiedName":"@happyvertical/smrt-education:ReadingCollection","collection":"lessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"lessons","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Reading","exportName":"ReadingCollection","collectionExportName":"ReadingCollectionCollection","schema":{"tableName":"lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"section_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"completion_rule\\" TEXT DEFAULT 'attest',\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"video_url\\" TEXT,\\n \\"printable_url\\" TEXT,\\n \\"answer_url\\" TEXT,\\n \\"pages\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false},"body":{"type":"TEXT","notNull":false},"sort_order":{"type":"INTEGER","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"completion_rule":{"type":"TEXT","notNull":false,"default":"attest"},"external_ref":{"type":"TEXT","notNull":false},"external_url":{"type":"TEXT","notNull":false},"video_url":{"type":"TEXT","notNull":false},"printable_url":{"type":"TEXT","notNull":false},"answer_url":{"type":"TEXT","notNull":false},"pages":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"lessons_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"lessons_meta_type_idx","columns":["_meta_type"]},{"name":"lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lessons_section_id_idx","columns":["section_id"]}],"version":"9d8b6fcd"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:VideoCollection":{"name":"videocollection","className":"VideoCollection","qualifiedName":"@happyvertical/smrt-education:VideoCollection","collection":"lessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"lessons","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Video","exportName":"VideoCollection","collectionExportName":"VideoCollectionCollection","schema":{"tableName":"lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"section_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"completion_rule\\" TEXT DEFAULT 'attest',\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"video_url\\" TEXT,\\n \\"printable_url\\" TEXT,\\n \\"answer_url\\" TEXT,\\n \\"pages\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false},"body":{"type":"TEXT","notNull":false},"sort_order":{"type":"INTEGER","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"completion_rule":{"type":"TEXT","notNull":false,"default":"attest"},"external_ref":{"type":"TEXT","notNull":false},"external_url":{"type":"TEXT","notNull":false},"video_url":{"type":"TEXT","notNull":false},"printable_url":{"type":"TEXT","notNull":false},"answer_url":{"type":"TEXT","notNull":false},"pages":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"lessons_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"lessons_meta_type_idx","columns":["_meta_type"]},{"name":"lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lessons_section_id_idx","columns":["section_id"]}],"version":"9e0ef984"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorksheetCollection":{"name":"worksheetcollection","className":"WorksheetCollection","qualifiedName":"@happyvertical/smrt-education:WorksheetCollection","collection":"lessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"lessons","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Worksheet","exportName":"WorksheetCollection","collectionExportName":"WorksheetCollectionCollection","schema":{"tableName":"lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"section_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"completion_rule\\" TEXT DEFAULT 'attest',\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"video_url\\" TEXT,\\n \\"printable_url\\" TEXT,\\n \\"answer_url\\" TEXT,\\n \\"pages\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false},"body":{"type":"TEXT","notNull":false},"sort_order":{"type":"INTEGER","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"completion_rule":{"type":"TEXT","notNull":false,"default":"attest"},"external_ref":{"type":"TEXT","notNull":false},"external_url":{"type":"TEXT","notNull":false},"video_url":{"type":"TEXT","notNull":false},"printable_url":{"type":"TEXT","notNull":false},"answer_url":{"type":"TEXT","notNull":false},"pages":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"lessons_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"lessons_meta_type_idx","columns":["_meta_type"]},{"name":"lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lessons_section_id_idx","columns":["section_id"]}],"version":"10976938"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:ExerciseCollection":{"name":"exercisecollection","className":"ExerciseCollection","qualifiedName":"@happyvertical/smrt-education:ExerciseCollection","collection":"lessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"lessons","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Exercise","exportName":"ExerciseCollection","collectionExportName":"ExerciseCollectionCollection","schema":{"tableName":"lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"section_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"completion_rule\\" TEXT DEFAULT 'attest',\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"video_url\\" TEXT,\\n \\"printable_url\\" TEXT,\\n \\"answer_url\\" TEXT,\\n \\"pages\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false},"body":{"type":"TEXT","notNull":false},"sort_order":{"type":"INTEGER","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"completion_rule":{"type":"TEXT","notNull":false,"default":"attest"},"external_ref":{"type":"TEXT","notNull":false},"external_url":{"type":"TEXT","notNull":false},"video_url":{"type":"TEXT","notNull":false},"printable_url":{"type":"TEXT","notNull":false},"answer_url":{"type":"TEXT","notNull":false},"pages":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"lessons_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"lessons_meta_type_idx","columns":["_meta_type"]},{"name":"lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lessons_section_id_idx","columns":["section_id"]}],"version":"145eadbe"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LessonAssetCollection":{"name":"lessonassetcollection","className":"LessonAssetCollection","qualifiedName":"@happyvertical/smrt-education:LessonAssetCollection","collection":"lessonassets","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{"byRight":{"name":"byRight","async":true,"parameters":[{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<TItem[]>","isStatic":false,"isPublic":true},"byLeft":{"name":"byLeft","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<TItem[]>","isStatic":false,"isPublic":true},"attach":{"name":"attach","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<TItem>","isStatic":false,"isPublic":true},"detach":{"name":"detach","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightIds","type":"string[]","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"lesson_assets","api":false,"mcp":false,"cli":false},"extends":"SmrtJunction","extendsTypeArg":"LessonAsset","exportName":"LessonAssetCollection","collectionExportName":"LessonAssetCollectionCollection","schema":{"tableName":"lesson_assets","ddl":"CREATE TABLE IF NOT EXISTS \\"lesson_assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"lesson_id\\" UUID NOT NULL,\\n \\"asset_id\\" UUID NOT NULL,\\n \\"relationship\\" TEXT NOT NULL DEFAULT 'attachment',\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"relationship":{"type":"TEXT","notNull":true,"unique":false,"default":"attachment"},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"lesson_assets_tenant_id_lesson_id_idx","columns":["tenant_id","lesson_id","asset_id","relationship"],"unique":true,"nullsNotDistinct":true},{"name":"lesson_assets_slug_context_idx","columns":["slug","context"]},{"name":"lesson_assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lesson_assets_lesson_id_idx","columns":["lesson_id"]},{"name":"lesson_assets_asset_id_idx","columns":["asset_id"]}],"version":"d96385c6"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LearnerCollection":{"name":"learnercollection","className":"LearnerCollection","qualifiedName":"@happyvertical/smrt-education:LearnerCollection","collection":"learners","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Learner","exportName":"LearnerCollection","collectionExportName":"LearnerCollectionCollection","schema":{"tableName":"learners","ddl":"CREATE TABLE IF NOT EXISTS \\"learners\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"user_id\\" UUID NOT NULL,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"display_name\\" TEXT,\\n \\"birth_date\\" TIMESTAMP,\\n \\"level\\" INTEGER NOT NULL DEFAULT 0,\\n \\"settings\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"display_name":{"type":"TEXT","notNull":false,"unique":false},"birth_date":{"type":"TIMESTAMP","notNull":false,"unique":false},"level":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"settings":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"learners_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"learners_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"learners_user_id_idx","columns":["user_id"]},{"name":"learners_profile_id_idx","columns":["profile_id"]}],"version":"ca9907b5"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CurriculumCollection":{"name":"curriculumcollection","className":"CurriculumCollection","qualifiedName":"@happyvertical/smrt-education:CurriculumCollection","collection":"curriculums","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"curricula","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Curriculum","exportName":"CurriculumCollection","collectionExportName":"CurriculumCollectionCollection","schema":{"tableName":"curricula","ddl":"CREATE TABLE IF NOT EXISTS \\"curricula\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"title\\" TEXT NOT NULL,\\n \\"starts_on\\" TIMESTAMP,\\n \\"ends_on\\" TIMESTAMP,\\n \\"status\\" TEXT DEFAULT 'planned'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":true,"unique":false},"starts_on":{"type":"TIMESTAMP","notNull":false,"unique":false},"ends_on":{"type":"TIMESTAMP","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"planned"}},"indexes":[{"name":"curricula_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"curricula_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"curricula_learner_id_idx","columns":["learner_id"]}],"version":"b7e90cbd"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EnrollmentCollection":{"name":"enrollmentcollection","className":"EnrollmentCollection","qualifiedName":"@happyvertical/smrt-education:EnrollmentCollection","collection":"enrollments","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Enrollment","exportName":"EnrollmentCollection","collectionExportName":"EnrollmentCollectionCollection","schema":{"tableName":"enrollments","ddl":"CREATE TABLE IF NOT EXISTS \\"enrollments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"curriculum_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"status\\" TEXT DEFAULT 'planned',\\n \\"started_at\\" TIMESTAMP,\\n \\"completed_at\\" TIMESTAMP,\\n \\"target_minutes_per_week\\" INTEGER NOT NULL DEFAULT 0,\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"curriculum_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"curricula","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"planned"},"started_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"completed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"target_minutes_per_week":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"enrollments_tenant_id_curriculum_id_idx","columns":["tenant_id","curriculum_id","course_id"],"unique":true},{"name":"enrollments_slug_context_idx","columns":["slug","context"]},{"name":"enrollments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"enrollments_curriculum_id_idx","columns":["curriculum_id"]},{"name":"enrollments_learner_id_idx","columns":["learner_id"]},{"name":"enrollments_course_id_idx","columns":["course_id"]}],"version":"2a34b5ee"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LessonProgressCollection":{"name":"lessonprogresscollection","className":"LessonProgressCollection","qualifiedName":"@happyvertical/smrt-education:LessonProgressCollection","collection":"lessonprogresses","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"lesson_progress","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"LessonProgress","exportName":"LessonProgressCollection","collectionExportName":"LessonProgressCollectionCollection","schema":{"tableName":"lesson_progress","ddl":"CREATE TABLE IF NOT EXISTS \\"lesson_progress\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"lesson_id\\" UUID NOT NULL,\\n \\"status\\" TEXT DEFAULT 'not_started',\\n \\"started_at\\" TIMESTAMP,\\n \\"completed_at\\" TIMESTAMP,\\n \\"time_spent_seconds\\" INTEGER NOT NULL DEFAULT 0,\\n \\"attempts\\" INTEGER NOT NULL DEFAULT 0,\\n \\"best_score\\" REAL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"not_started"},"started_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"completed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"time_spent_seconds":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"attempts":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"best_score":{"type":"REAL","notNull":false,"unique":false}},"indexes":[{"name":"lesson_progress_tenant_id_enrollment_id_idx","columns":["tenant_id","enrollment_id","lesson_id"],"unique":true},{"name":"lesson_progress_slug_context_idx","columns":["slug","context"]},{"name":"lesson_progress_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lesson_progress_enrollment_id_idx","columns":["enrollment_id"]},{"name":"lesson_progress_learner_id_idx","columns":["learner_id"]},{"name":"lesson_progress_lesson_id_idx","columns":["lesson_id"]}],"version":"36704fbd"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:SubmissionCollection":{"name":"submissioncollection","className":"SubmissionCollection","qualifiedName":"@happyvertical/smrt-education:SubmissionCollection","collection":"submissions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Submission","exportName":"SubmissionCollection","collectionExportName":"SubmissionCollectionCollection","schema":{"tableName":"submissions","ddl":"CREATE TABLE IF NOT EXISTS \\"submissions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"learner_id\\" UUID,\\n \\"lesson_id\\" UUID,\\n \\"progress_id\\" UUID,\\n \\"submitted_at\\" TEXT,\\n \\"status\\" TEXT DEFAULT 'captured',\\n \\"notes\\" TEXT,\\n \\"capture_key\\" TEXT,\\n \\"capture_digest\\" TEXT,\\n \\"kind\\" TEXT DEFAULT 'completed_work',\\n \\"previous_submission_id\\" UUID,\\n \\"intake_item_id\\" TEXT,\\n \\"page_count\\" INTEGER DEFAULT 0,\\n \\"ocr_text\\" TEXT,\\n \\"extracted\\" TEXT,\\n \\"reported_by\\" TEXT DEFAULT 'learner',\\n \\"evidence_url\\" TEXT,\\n \\"reported_score\\" REAL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"progress_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lesson_progress","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submitted_at":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false,"default":"captured"},"notes":{"type":"TEXT","notNull":false},"capture_key":{"type":"TEXT","notNull":false},"capture_digest":{"type":"TEXT","notNull":false},"kind":{"type":"TEXT","notNull":false,"default":"completed_work"},"previous_submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_item_id":{"type":"TEXT","notNull":false},"page_count":{"type":"INTEGER","notNull":false,"default":0},"ocr_text":{"type":"TEXT","notNull":false},"extracted":{"type":"TEXT","notNull":false},"reported_by":{"type":"TEXT","notNull":false,"default":"learner"},"evidence_url":{"type":"TEXT","notNull":false},"reported_score":{"type":"REAL","notNull":false}},"indexes":[{"name":"submissions_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"submissions_meta_type_idx","columns":["_meta_type"]},{"name":"submissions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submissions_learner_id_idx","columns":["learner_id"]},{"name":"submissions_lesson_id_idx","columns":["lesson_id"]},{"name":"submissions_progress_id_idx","columns":["progress_id"]},{"name":"submissions_previous_submission_id_idx","columns":["previous_submission_id"]}],"version":"27a21ab4"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:SubmissionIntakeBindingCollection":{"name":"submissionintakebindingcollection","className":"SubmissionIntakeBindingCollection","qualifiedName":"@happyvertical/smrt-education:SubmissionIntakeBindingCollection","collection":"submissionintakebindings","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"submission_intake_bindings","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"SubmissionIntakeBinding","exportName":"SubmissionIntakeBindingCollection","collectionExportName":"SubmissionIntakeBindingCollectionCollection","schema":{"tableName":"submission_intake_bindings","ddl":"CREATE TABLE IF NOT EXISTS \\"submission_intake_bindings\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"intake_item_id\\" TEXT NOT NULL,\\n \\"submission_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"intake_item_id":{"type":"TEXT","notNull":true,"unique":false},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"submission_intake_bindings_tenant_id_intake_item_id_idx","columns":["tenant_id","intake_item_id"],"unique":true},{"name":"submission_intake_bindings_slug_context_idx","columns":["slug","context"]},{"name":"submission_intake_bindings_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submission_intake_bindings_submission_id_idx","columns":["submission_id"]}],"version":"7102c909"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:ScannedSubmissionCollection":{"name":"scannedsubmissioncollection","className":"ScannedSubmissionCollection","qualifiedName":"@happyvertical/smrt-education:ScannedSubmissionCollection","collection":"submissions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"submissions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"ScannedSubmission","exportName":"ScannedSubmissionCollection","collectionExportName":"ScannedSubmissionCollectionCollection","schema":{"tableName":"submissions","ddl":"CREATE TABLE IF NOT EXISTS \\"submissions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"learner_id\\" UUID,\\n \\"lesson_id\\" UUID,\\n \\"progress_id\\" UUID,\\n \\"submitted_at\\" TEXT,\\n \\"status\\" TEXT DEFAULT 'captured',\\n \\"notes\\" TEXT,\\n \\"capture_key\\" TEXT,\\n \\"capture_digest\\" TEXT,\\n \\"kind\\" TEXT DEFAULT 'completed_work',\\n \\"previous_submission_id\\" UUID,\\n \\"intake_item_id\\" TEXT,\\n \\"page_count\\" INTEGER DEFAULT 0,\\n \\"ocr_text\\" TEXT,\\n \\"extracted\\" TEXT,\\n \\"reported_by\\" TEXT DEFAULT 'learner',\\n \\"evidence_url\\" TEXT,\\n \\"reported_score\\" REAL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"progress_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lesson_progress","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submitted_at":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false,"default":"captured"},"notes":{"type":"TEXT","notNull":false},"capture_key":{"type":"TEXT","notNull":false},"capture_digest":{"type":"TEXT","notNull":false},"kind":{"type":"TEXT","notNull":false,"default":"completed_work"},"previous_submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_item_id":{"type":"TEXT","notNull":false},"page_count":{"type":"INTEGER","notNull":false,"default":0},"ocr_text":{"type":"TEXT","notNull":false},"extracted":{"type":"TEXT","notNull":false},"reported_by":{"type":"TEXT","notNull":false,"default":"learner"},"evidence_url":{"type":"TEXT","notNull":false},"reported_score":{"type":"REAL","notNull":false}},"indexes":[{"name":"submissions_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"submissions_meta_type_idx","columns":["_meta_type"]},{"name":"submissions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submissions_learner_id_idx","columns":["learner_id"]},{"name":"submissions_lesson_id_idx","columns":["lesson_id"]},{"name":"submissions_progress_id_idx","columns":["progress_id"]},{"name":"submissions_previous_submission_id_idx","columns":["previous_submission_id"]}],"version":"7c394510"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:ExternalCompletionCollection":{"name":"externalcompletioncollection","className":"ExternalCompletionCollection","qualifiedName":"@happyvertical/smrt-education:ExternalCompletionCollection","collection":"submissions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"submissions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"ExternalCompletion","exportName":"ExternalCompletionCollection","collectionExportName":"ExternalCompletionCollectionCollection","schema":{"tableName":"submissions","ddl":"CREATE TABLE IF NOT EXISTS \\"submissions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"learner_id\\" UUID,\\n \\"lesson_id\\" UUID,\\n \\"progress_id\\" UUID,\\n \\"submitted_at\\" TEXT,\\n \\"status\\" TEXT DEFAULT 'captured',\\n \\"notes\\" TEXT,\\n \\"capture_key\\" TEXT,\\n \\"capture_digest\\" TEXT,\\n \\"kind\\" TEXT DEFAULT 'completed_work',\\n \\"previous_submission_id\\" UUID,\\n \\"intake_item_id\\" TEXT,\\n \\"page_count\\" INTEGER DEFAULT 0,\\n \\"ocr_text\\" TEXT,\\n \\"extracted\\" TEXT,\\n \\"reported_by\\" TEXT DEFAULT 'learner',\\n \\"evidence_url\\" TEXT,\\n \\"reported_score\\" REAL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"progress_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lesson_progress","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submitted_at":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false,"default":"captured"},"notes":{"type":"TEXT","notNull":false},"capture_key":{"type":"TEXT","notNull":false},"capture_digest":{"type":"TEXT","notNull":false},"kind":{"type":"TEXT","notNull":false,"default":"completed_work"},"previous_submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_item_id":{"type":"TEXT","notNull":false},"page_count":{"type":"INTEGER","notNull":false,"default":0},"ocr_text":{"type":"TEXT","notNull":false},"extracted":{"type":"TEXT","notNull":false},"reported_by":{"type":"TEXT","notNull":false,"default":"learner"},"evidence_url":{"type":"TEXT","notNull":false},"reported_score":{"type":"REAL","notNull":false}},"indexes":[{"name":"submissions_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"submissions_meta_type_idx","columns":["_meta_type"]},{"name":"submissions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submissions_learner_id_idx","columns":["learner_id"]},{"name":"submissions_lesson_id_idx","columns":["lesson_id"]},{"name":"submissions_progress_id_idx","columns":["progress_id"]},{"name":"submissions_previous_submission_id_idx","columns":["previous_submission_id"]}],"version":"eff3715d"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:AttestationCollection":{"name":"attestationcollection","className":"AttestationCollection","qualifiedName":"@happyvertical/smrt-education:AttestationCollection","collection":"submissions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"submissions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Attestation","exportName":"AttestationCollection","collectionExportName":"AttestationCollectionCollection","schema":{"tableName":"submissions","ddl":"CREATE TABLE IF NOT EXISTS \\"submissions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"learner_id\\" UUID,\\n \\"lesson_id\\" UUID,\\n \\"progress_id\\" UUID,\\n \\"submitted_at\\" TEXT,\\n \\"status\\" TEXT DEFAULT 'captured',\\n \\"notes\\" TEXT,\\n \\"capture_key\\" TEXT,\\n \\"capture_digest\\" TEXT,\\n \\"kind\\" TEXT DEFAULT 'completed_work',\\n \\"previous_submission_id\\" UUID,\\n \\"intake_item_id\\" TEXT,\\n \\"page_count\\" INTEGER DEFAULT 0,\\n \\"ocr_text\\" TEXT,\\n \\"extracted\\" TEXT,\\n \\"reported_by\\" TEXT DEFAULT 'learner',\\n \\"evidence_url\\" TEXT,\\n \\"reported_score\\" REAL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"progress_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lesson_progress","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submitted_at":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false,"default":"captured"},"notes":{"type":"TEXT","notNull":false},"capture_key":{"type":"TEXT","notNull":false},"capture_digest":{"type":"TEXT","notNull":false},"kind":{"type":"TEXT","notNull":false,"default":"completed_work"},"previous_submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_item_id":{"type":"TEXT","notNull":false},"page_count":{"type":"INTEGER","notNull":false,"default":0},"ocr_text":{"type":"TEXT","notNull":false},"extracted":{"type":"TEXT","notNull":false},"reported_by":{"type":"TEXT","notNull":false,"default":"learner"},"evidence_url":{"type":"TEXT","notNull":false},"reported_score":{"type":"REAL","notNull":false}},"indexes":[{"name":"submissions_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"submissions_meta_type_idx","columns":["_meta_type"]},{"name":"submissions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submissions_learner_id_idx","columns":["learner_id"]},{"name":"submissions_lesson_id_idx","columns":["lesson_id"]},{"name":"submissions_progress_id_idx","columns":["progress_id"]},{"name":"submissions_previous_submission_id_idx","columns":["previous_submission_id"]}],"version":"4f3230a3"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GradeCollection":{"name":"gradecollection","className":"GradeCollection","qualifiedName":"@happyvertical/smrt-education:GradeCollection","collection":"grades","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Grade","exportName":"GradeCollection","collectionExportName":"GradeCollectionCollection","schema":{"tableName":"grades","ddl":"CREATE TABLE IF NOT EXISTS \\"grades\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"submission_id\\" UUID NOT NULL,\\n \\"grader_kind\\" TEXT NOT NULL DEFAULT 'auto',\\n \\"grader_profile_id\\" UUID,\\n \\"score\\" REAL,\\n \\"points_earned\\" INTEGER,\\n \\"points_possible\\" INTEGER,\\n \\"rubric_results\\" TEXT,\\n \\"question_revision_id\\" TEXT,\\n \\"feedback\\" TEXT,\\n \\"graded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"grader_kind":{"type":"TEXT","notNull":true,"unique":false,"default":"auto"},"grader_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"score":{"type":"REAL","notNull":false,"unique":false},"points_earned":{"type":"INTEGER","notNull":false,"unique":false},"points_possible":{"type":"INTEGER","notNull":false,"unique":false},"rubric_results":{"type":"TEXT","notNull":false,"unique":false},"question_revision_id":{"type":"TEXT","notNull":false,"unique":false},"feedback":{"type":"TEXT","notNull":false,"unique":false},"graded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"grades_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"grades_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"grades_submission_id_idx","columns":["submission_id"]},{"name":"grades_grader_profile_id_idx","columns":["grader_profile_id"]}],"version":"0ccd729e"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:SubmissionAssetCollection":{"name":"submissionassetcollection","className":"SubmissionAssetCollection","qualifiedName":"@happyvertical/smrt-education:SubmissionAssetCollection","collection":"submissionassets","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{"byRight":{"name":"byRight","async":true,"parameters":[{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<TItem[]>","isStatic":false,"isPublic":true},"byLeft":{"name":"byLeft","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<TItem[]>","isStatic":false,"isPublic":true},"attach":{"name":"attach","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<TItem>","isStatic":false,"isPublic":true},"detach":{"name":"detach","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightIds","type":"string[]","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"submission_assets","api":false,"mcp":false,"cli":false},"extends":"SmrtJunction","extendsTypeArg":"SubmissionAsset","exportName":"SubmissionAssetCollection","collectionExportName":"SubmissionAssetCollectionCollection","schema":{"tableName":"submission_assets","ddl":"CREATE TABLE IF NOT EXISTS \\"submission_assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"submission_id\\" UUID NOT NULL,\\n \\"asset_id\\" UUID NOT NULL,\\n \\"relationship\\" TEXT NOT NULL DEFAULT 'page',\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"relationship":{"type":"TEXT","notNull":true,"unique":false,"default":"page"},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"submission_assets_tenant_id_submission_id_idx","columns":["tenant_id","submission_id","asset_id","relationship"],"unique":true},{"name":"submission_assets_slug_context_idx","columns":["slug","context"]},{"name":"submission_assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submission_assets_submission_id_idx","columns":["submission_id"]},{"name":"submission_assets_asset_id_idx","columns":["asset_id"]}],"version":"d9b61c8a"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseRevision":{"name":"courserevision","className":"CourseRevision","qualifiedName":"@happyvertical/smrt-education:CourseRevision","collection":"courserevisions","description":"Immutable snapshot of one authored course draft. The head row selects the draft.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"parentRevisionId":{"type":"foreignKey","required":false,"related":"CourseRevision","_meta":{"nullable":true}},"sequence":{"type":"integer","required":true,"default":1},"authorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"provenance":{"type":"text","required":false},"fieldProvenanceJson":{"type":"text","required":false,"_meta":{}},"title":{"type":"text","required":false},"summary":{"type":"text","required":false,"_meta":{}},"subject":{"type":"text","required":false},"theme":{"type":"text","required":false},"levelMin":{"type":"integer","required":true,"default":0},"levelMax":{"type":"integer","required":true,"default":0},"objectivesJson":{"type":"text","required":false,"_meta":{}},"sectionsJson":{"type":"text","required":false,"_meta":{}},"licenseKind":{"type":"text","required":false,"default":"own-work","enum":["own-work","open-license","personal-use-copy","licensed-for-sharing"]},"requestKey":{"type":"text","required":false},"payloadDigest":{"type":"text","required":false},"contentDigest":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_revisions","conflictColumns":["tenant_id","course_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseRevision","collectionExportName":"CourseRevisionCollection","displayLabelField":"title","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"sequence","rule":"required","fieldType":"integer"},{"field":"levelMin","rule":"required","fieldType":"integer"},{"field":"levelMax","rule":"required","fieldType":"integer"}],"schema":{"tableName":"course_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"course_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"parent_revision_id\\" UUID,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"author_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"provenance\\" TEXT,\\n \\"field_provenance_json\\" TEXT,\\n \\"title\\" TEXT,\\n \\"summary\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"theme\\" TEXT,\\n \\"level_min\\" INTEGER NOT NULL DEFAULT 0,\\n \\"level_max\\" INTEGER NOT NULL DEFAULT 0,\\n \\"objectives_json\\" TEXT,\\n \\"sections_json\\" TEXT,\\n \\"license_kind\\" TEXT DEFAULT 'own-work',\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"content_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"parent_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"author_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"provenance":{"type":"TEXT","notNull":false,"unique":false},"field_provenance_json":{"type":"TEXT","notNull":false,"unique":false},"title":{"type":"TEXT","notNull":false,"unique":false},"summary":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"theme":{"type":"TEXT","notNull":false,"unique":false},"level_min":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"level_max":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"objectives_json":{"type":"TEXT","notNull":false,"unique":false},"sections_json":{"type":"TEXT","notNull":false,"unique":false},"license_kind":{"type":"TEXT","notNull":false,"unique":false,"default":"own-work"},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"content_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_revisions_tenant_id_course_id_idx","columns":["tenant_id","course_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_revisions_slug_context_idx","columns":["slug","context"]},{"name":"course_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_revisions_course_id_idx","columns":["course_id"]},{"name":"course_revisions_parent_revision_id_idx","columns":["parent_revision_id"]}],"version":"4356dc02"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseRevisionCollection":{"name":"courserevisioncollection","className":"CourseRevisionCollection","qualifiedName":"@happyvertical/smrt-education:CourseRevisionCollection","collection":"courserevisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_revisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseRevision","exportName":"CourseRevisionCollection","collectionExportName":"CourseRevisionCollectionCollection","schema":{"tableName":"course_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"course_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"parent_revision_id\\" UUID,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"author_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"provenance\\" TEXT,\\n \\"field_provenance_json\\" TEXT,\\n \\"title\\" TEXT,\\n \\"summary\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"theme\\" TEXT,\\n \\"level_min\\" INTEGER NOT NULL DEFAULT 0,\\n \\"level_max\\" INTEGER NOT NULL DEFAULT 0,\\n \\"objectives_json\\" TEXT,\\n \\"sections_json\\" TEXT,\\n \\"license_kind\\" TEXT DEFAULT 'own-work',\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"content_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"parent_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"author_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"provenance":{"type":"TEXT","notNull":false,"unique":false},"field_provenance_json":{"type":"TEXT","notNull":false,"unique":false},"title":{"type":"TEXT","notNull":false,"unique":false},"summary":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"theme":{"type":"TEXT","notNull":false,"unique":false},"level_min":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"level_max":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"objectives_json":{"type":"TEXT","notNull":false,"unique":false},"sections_json":{"type":"TEXT","notNull":false,"unique":false},"license_kind":{"type":"TEXT","notNull":false,"unique":false,"default":"own-work"},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"content_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_revisions_tenant_id_course_id_idx","columns":["tenant_id","course_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_revisions_slug_context_idx","columns":["slug","context"]},{"name":"course_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_revisions_course_id_idx","columns":["course_id"]},{"name":"course_revisions_parent_revision_id_idx","columns":["parent_revision_id"]}],"version":"4356dc02"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LessonRevision":{"name":"lessonrevision","className":"LessonRevision","qualifiedName":"@happyvertical/smrt-education:LessonRevision","collection":"lessonrevisions","description":"Immutable lesson snapshot with a stable cross-version lessonKey.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"lessonKey":{"type":"text","required":false},"parentRevisionId":{"type":"foreignKey","required":false,"related":"LessonRevision","_meta":{"nullable":true}},"title":{"type":"text","required":false},"body":{"type":"text","required":false,"_meta":{}},"lessonType":{"type":"text","required":false},"completionRule":{"type":"text","required":false},"estimatedMinutes":{"type":"integer","required":true,"default":0},"difficulty":{"type":"decimal","required":true,"default":0},"modality":{"type":"text","required":false},"externalRef":{"type":"text","required":false},"externalUrl":{"type":"text","required":false},"licenseKind":{"type":"text","required":false,"default":"own-work","enum":["own-work","open-license","personal-use-copy","licensed-for-sharing"]},"ownLicenseKind":{"type":"text","required":false},"materialsJson":{"type":"text","required":false,"_meta":{}},"questionsJson":{"type":"text","required":false,"_meta":{}},"layoutParamsJson":{"type":"text","required":false,"_meta":{}},"provenance":{"type":"text","required":false},"fieldProvenanceJson":{"type":"text","required":false,"_meta":{}},"authorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"contentDigest":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"lesson_revisions","conflictColumns":["tenant_id","course_id","lesson_key","content_digest"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"LessonRevision","collectionExportName":"LessonRevisionCollection","displayLabelField":"title","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"estimatedMinutes","rule":"required","fieldType":"integer"},{"field":"difficulty","rule":"required","fieldType":"decimal"}],"schema":{"tableName":"lesson_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"lesson_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"lesson_key\\" TEXT,\\n \\"parent_revision_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"lesson_type\\" TEXT,\\n \\"completion_rule\\" TEXT,\\n \\"estimated_minutes\\" INTEGER NOT NULL DEFAULT 0,\\n \\"difficulty\\" REAL NOT NULL DEFAULT 0,\\n \\"modality\\" TEXT,\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"license_kind\\" TEXT DEFAULT 'own-work',\\n \\"own_license_kind\\" TEXT,\\n \\"materials_json\\" TEXT,\\n \\"questions_json\\" TEXT,\\n \\"layout_params_json\\" TEXT,\\n \\"provenance\\" TEXT,\\n \\"field_provenance_json\\" TEXT,\\n \\"author_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"content_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"lesson_key":{"type":"TEXT","notNull":false,"unique":false},"parent_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"lesson_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false,"unique":false},"body":{"type":"TEXT","notNull":false,"unique":false},"lesson_type":{"type":"TEXT","notNull":false,"unique":false},"completion_rule":{"type":"TEXT","notNull":false,"unique":false},"estimated_minutes":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"difficulty":{"type":"REAL","notNull":true,"unique":false,"default":0},"modality":{"type":"TEXT","notNull":false,"unique":false},"external_ref":{"type":"TEXT","notNull":false,"unique":false},"external_url":{"type":"TEXT","notNull":false,"unique":false},"license_kind":{"type":"TEXT","notNull":false,"unique":false,"default":"own-work"},"own_license_kind":{"type":"TEXT","notNull":false,"unique":false},"materials_json":{"type":"TEXT","notNull":false,"unique":false},"questions_json":{"type":"TEXT","notNull":false,"unique":false},"layout_params_json":{"type":"TEXT","notNull":false,"unique":false},"provenance":{"type":"TEXT","notNull":false,"unique":false},"field_provenance_json":{"type":"TEXT","notNull":false,"unique":false},"author_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"content_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"lesson_revisions_tenant_id_course_id_idx","columns":["tenant_id","course_id","lesson_key","content_digest"],"unique":true,"nullsNotDistinct":true},{"name":"lesson_revisions_slug_context_idx","columns":["slug","context"]},{"name":"lesson_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lesson_revisions_course_id_idx","columns":["course_id"]},{"name":"lesson_revisions_parent_revision_id_idx","columns":["parent_revision_id"]}],"version":"17555fb2"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LessonRevisionCollection":{"name":"lessonrevisioncollection","className":"LessonRevisionCollection","qualifiedName":"@happyvertical/smrt-education:LessonRevisionCollection","collection":"lessonrevisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"lesson_revisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"LessonRevision","exportName":"LessonRevisionCollection","collectionExportName":"LessonRevisionCollectionCollection","schema":{"tableName":"lesson_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"lesson_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"lesson_key\\" TEXT,\\n \\"parent_revision_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"lesson_type\\" TEXT,\\n \\"completion_rule\\" TEXT,\\n \\"estimated_minutes\\" INTEGER NOT NULL DEFAULT 0,\\n \\"difficulty\\" REAL NOT NULL DEFAULT 0,\\n \\"modality\\" TEXT,\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"license_kind\\" TEXT DEFAULT 'own-work',\\n \\"own_license_kind\\" TEXT,\\n \\"materials_json\\" TEXT,\\n \\"questions_json\\" TEXT,\\n \\"layout_params_json\\" TEXT,\\n \\"provenance\\" TEXT,\\n \\"field_provenance_json\\" TEXT,\\n \\"author_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"content_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"lesson_key":{"type":"TEXT","notNull":false,"unique":false},"parent_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"lesson_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false,"unique":false},"body":{"type":"TEXT","notNull":false,"unique":false},"lesson_type":{"type":"TEXT","notNull":false,"unique":false},"completion_rule":{"type":"TEXT","notNull":false,"unique":false},"estimated_minutes":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"difficulty":{"type":"REAL","notNull":true,"unique":false,"default":0},"modality":{"type":"TEXT","notNull":false,"unique":false},"external_ref":{"type":"TEXT","notNull":false,"unique":false},"external_url":{"type":"TEXT","notNull":false,"unique":false},"license_kind":{"type":"TEXT","notNull":false,"unique":false,"default":"own-work"},"own_license_kind":{"type":"TEXT","notNull":false,"unique":false},"materials_json":{"type":"TEXT","notNull":false,"unique":false},"questions_json":{"type":"TEXT","notNull":false,"unique":false},"layout_params_json":{"type":"TEXT","notNull":false,"unique":false},"provenance":{"type":"TEXT","notNull":false,"unique":false},"field_provenance_json":{"type":"TEXT","notNull":false,"unique":false},"author_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"content_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"lesson_revisions_tenant_id_course_id_idx","columns":["tenant_id","course_id","lesson_key","content_digest"],"unique":true,"nullsNotDistinct":true},{"name":"lesson_revisions_slug_context_idx","columns":["slug","context"]},{"name":"lesson_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lesson_revisions_course_id_idx","columns":["course_id"]},{"name":"lesson_revisions_parent_revision_id_idx","columns":["parent_revision_id"]}],"version":"17555fb2"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseDraftHead":{"name":"coursedrafthead","className":"CourseDraftHead","qualifiedName":"@happyvertical/smrt-education:CourseDraftHead","collection":"coursedraftheads","description":"The only mutable authoring row: the draft head. It moves solely through the service's expected-head compare-and-swap; its identity never changes.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"headRevisionId":{"type":"foreignKey","required":true,"related":"CourseRevision","_meta":{"required":true}},"version":{"type":"integer","required":true,"default":1},"updatedByUserId":{"type":"text","required":false},"updatedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_draft_heads","conflictColumns":["tenant_id","course_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseDraftHead","collectionExportName":"CourseDraftHeadCollection","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"headRevisionId","rule":"required","fieldType":"foreignKey"},{"field":"version","rule":"required","fieldType":"integer"}],"schema":{"tableName":"course_draft_heads","ddl":"CREATE TABLE IF NOT EXISTS \\"course_draft_heads\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"head_revision_id\\" UUID NOT NULL,\\n \\"version\\" INTEGER NOT NULL DEFAULT 1,\\n \\"updated_by_user_id\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"head_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"version":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"updated_by_user_id":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_draft_heads_tenant_id_course_id_idx","columns":["tenant_id","course_id"],"unique":true},{"name":"course_draft_heads_slug_context_idx","columns":["slug","context"]},{"name":"course_draft_heads_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_draft_heads_course_id_idx","columns":["course_id"]},{"name":"course_draft_heads_head_revision_id_idx","columns":["head_revision_id"]}],"version":"57e2bfc6"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseDraftHeadCollection":{"name":"coursedraftheadcollection","className":"CourseDraftHeadCollection","qualifiedName":"@happyvertical/smrt-education:CourseDraftHeadCollection","collection":"coursedraftheads","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_draft_heads","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseDraftHead","exportName":"CourseDraftHeadCollection","collectionExportName":"CourseDraftHeadCollectionCollection","schema":{"tableName":"course_draft_heads","ddl":"CREATE TABLE IF NOT EXISTS \\"course_draft_heads\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"head_revision_id\\" UUID NOT NULL,\\n \\"version\\" INTEGER NOT NULL DEFAULT 1,\\n \\"updated_by_user_id\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"head_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"version":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"updated_by_user_id":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_draft_heads_tenant_id_course_id_idx","columns":["tenant_id","course_id"],"unique":true},{"name":"course_draft_heads_slug_context_idx","columns":["slug","context"]},{"name":"course_draft_heads_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_draft_heads_course_id_idx","columns":["course_id"]},{"name":"course_draft_heads_head_revision_id_idx","columns":["head_revision_id"]}],"version":"57e2bfc6"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseRelease":{"name":"courserelease","className":"CourseRelease","qualifiedName":"@happyvertical/smrt-education:CourseRelease","collection":"coursereleases","description":"Append-only release decision bound to one revision and the review that allowed it.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"revisionId":{"type":"foreignKey","required":true,"related":"CourseRevision","_meta":{"required":true}},"releaseCourseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"releaseNumber":{"type":"integer","required":true,"default":1},"reviewId":{"type":"text","required":false},"actorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_releases","conflictColumns":["tenant_id","course_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseRelease","collectionExportName":"CourseReleaseCollection","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"revisionId","rule":"required","fieldType":"foreignKey"},{"field":"releaseCourseId","rule":"required","fieldType":"foreignKey"},{"field":"releaseNumber","rule":"required","fieldType":"integer"}],"schema":{"tableName":"course_releases","ddl":"CREATE TABLE IF NOT EXISTS \\"course_releases\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"release_course_id\\" UUID NOT NULL,\\n \\"release_number\\" INTEGER NOT NULL DEFAULT 1,\\n \\"review_id\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"release_course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"release_number":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"review_id":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_releases_tenant_id_course_id_idx","columns":["tenant_id","course_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_releases_slug_context_idx","columns":["slug","context"]},{"name":"course_releases_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_releases_course_id_idx","columns":["course_id"]},{"name":"course_releases_revision_id_idx","columns":["revision_id"]},{"name":"course_releases_release_course_id_idx","columns":["release_course_id"]}],"version":"6362ce70"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseReleaseCollection":{"name":"coursereleasecollection","className":"CourseReleaseCollection","qualifiedName":"@happyvertical/smrt-education:CourseReleaseCollection","collection":"coursereleases","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_releases","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseRelease","exportName":"CourseReleaseCollection","collectionExportName":"CourseReleaseCollectionCollection","schema":{"tableName":"course_releases","ddl":"CREATE TABLE IF NOT EXISTS \\"course_releases\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"release_course_id\\" UUID NOT NULL,\\n \\"release_number\\" INTEGER NOT NULL DEFAULT 1,\\n \\"review_id\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"release_course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"release_number":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"review_id":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_releases_tenant_id_course_id_idx","columns":["tenant_id","course_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_releases_slug_context_idx","columns":["slug","context"]},{"name":"course_releases_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_releases_course_id_idx","columns":["course_id"]},{"name":"course_releases_revision_id_idx","columns":["revision_id"]},{"name":"course_releases_release_course_id_idx","columns":["release_course_id"]}],"version":"6362ce70"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:ReleasedLesson":{"name":"releasedlesson","className":"ReleasedLesson","qualifiedName":"@happyvertical/smrt-education:ReleasedLesson","collection":"releasedlessons","description":"Stable lesson identity for one release's immutable Lesson row.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"releaseId":{"type":"foreignKey","required":true,"related":"CourseRelease","_meta":{"required":true}},"lessonKey":{"type":"text","required":false},"lessonRevisionId":{"type":"foreignKey","required":true,"related":"LessonRevision","_meta":{"required":true}},"lessonId":{"type":"foreignKey","required":true,"related":"Lesson","_meta":{"required":true}},"sectionId":{"type":"foreignKey","required":true,"related":"CourseSection","_meta":{"required":true}}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"released_lessons","conflictColumns":["tenant_id","release_id","lesson_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"ReleasedLesson","collectionExportName":"ReleasedLessonCollection","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"releaseId","rule":"required","fieldType":"foreignKey"},{"field":"lessonRevisionId","rule":"required","fieldType":"foreignKey"},{"field":"lessonId","rule":"required","fieldType":"foreignKey"},{"field":"sectionId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"released_lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"released_lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"release_id\\" UUID NOT NULL,\\n \\"lesson_key\\" TEXT,\\n \\"lesson_revision_id\\" UUID NOT NULL,\\n \\"lesson_id\\" UUID NOT NULL,\\n \\"section_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"release_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_releases","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"lesson_key":{"type":"TEXT","notNull":false,"unique":false},"lesson_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lesson_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"released_lessons_tenant_id_release_id_idx","columns":["tenant_id","release_id","lesson_key"],"unique":true,"nullsNotDistinct":true},{"name":"released_lessons_slug_context_idx","columns":["slug","context"]},{"name":"released_lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"released_lessons_course_id_idx","columns":["course_id"]},{"name":"released_lessons_release_id_idx","columns":["release_id"]},{"name":"released_lessons_lesson_revision_id_idx","columns":["lesson_revision_id"]},{"name":"released_lessons_lesson_id_idx","columns":["lesson_id"]},{"name":"released_lessons_section_id_idx","columns":["section_id"]}],"version":"7aac699d"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:ReleasedLessonCollection":{"name":"releasedlessoncollection","className":"ReleasedLessonCollection","qualifiedName":"@happyvertical/smrt-education:ReleasedLessonCollection","collection":"releasedlessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"released_lessons","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"ReleasedLesson","exportName":"ReleasedLessonCollection","collectionExportName":"ReleasedLessonCollectionCollection","schema":{"tableName":"released_lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"released_lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"release_id\\" UUID NOT NULL,\\n \\"lesson_key\\" TEXT,\\n \\"lesson_revision_id\\" UUID NOT NULL,\\n \\"lesson_id\\" UUID NOT NULL,\\n \\"section_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"release_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_releases","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"lesson_key":{"type":"TEXT","notNull":false,"unique":false},"lesson_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lesson_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"released_lessons_tenant_id_release_id_idx","columns":["tenant_id","release_id","lesson_key"],"unique":true,"nullsNotDistinct":true},{"name":"released_lessons_slug_context_idx","columns":["slug","context"]},{"name":"released_lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"released_lessons_course_id_idx","columns":["course_id"]},{"name":"released_lessons_release_id_idx","columns":["release_id"]},{"name":"released_lessons_lesson_revision_id_idx","columns":["lesson_revision_id"]},{"name":"released_lessons_lesson_id_idx","columns":["lesson_id"]},{"name":"released_lessons_section_id_idx","columns":["section_id"]}],"version":"7aac699d"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseArchiveDecision":{"name":"coursearchivedecision","className":"CourseArchiveDecision","qualifiedName":"@happyvertical/smrt-education:CourseArchiveDecision","collection":"coursearchivedecisions","description":"Reversible archive/unarchive decisions; the latest sequence is the state.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"action":{"type":"text","required":false},"sequence":{"type":"integer","required":true,"default":1},"actorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_archive_decisions","conflictColumns":["tenant_id","course_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseArchiveDecision","collectionExportName":"CourseArchiveDecisionCollection","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"sequence","rule":"required","fieldType":"integer"}],"schema":{"tableName":"course_archive_decisions","ddl":"CREATE TABLE IF NOT EXISTS \\"course_archive_decisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"action\\" TEXT,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"action":{"type":"TEXT","notNull":false,"unique":false},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_archive_decisions_tenant_id_course_id_idx","columns":["tenant_id","course_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_archive_decisions_slug_context_idx","columns":["slug","context"]},{"name":"course_archive_decisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_archive_decisions_course_id_idx","columns":["course_id"]}],"version":"75687c4b"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseArchiveDecisionCollection":{"name":"coursearchivedecisioncollection","className":"CourseArchiveDecisionCollection","qualifiedName":"@happyvertical/smrt-education:CourseArchiveDecisionCollection","collection":"coursearchivedecisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_archive_decisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseArchiveDecision","exportName":"CourseArchiveDecisionCollection","collectionExportName":"CourseArchiveDecisionCollectionCollection","schema":{"tableName":"course_archive_decisions","ddl":"CREATE TABLE IF NOT EXISTS \\"course_archive_decisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"action\\" TEXT,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"action":{"type":"TEXT","notNull":false,"unique":false},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_archive_decisions_tenant_id_course_id_idx","columns":["tenant_id","course_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_archive_decisions_slug_context_idx","columns":["slug","context"]},{"name":"course_archive_decisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_archive_decisions_course_id_idx","columns":["course_id"]}],"version":"75687c4b"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseDiscardTombstone":{"name":"coursediscardtombstone","className":"CourseDiscardTombstone","qualifiedName":"@happyvertical/smrt-education:CourseDiscardTombstone","collection":"coursediscardtombstones","description":"Audit record left when an unreferenced draft is discarded.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"title":{"type":"text","required":false},"headRevisionId":{"type":"text","required":false},"revisionCount":{"type":"integer","required":true,"default":0},"reason":{"type":"text","required":false},"actorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_discard_tombstones","conflictColumns":["tenant_id","course_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseDiscardTombstone","collectionExportName":"CourseDiscardTombstoneCollection","displayLabelField":"title","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"revisionCount","rule":"required","fieldType":"integer"}],"schema":{"tableName":"course_discard_tombstones","ddl":"CREATE TABLE IF NOT EXISTS \\"course_discard_tombstones\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"title\\" TEXT,\\n \\"head_revision_id\\" TEXT,\\n \\"revision_count\\" INTEGER NOT NULL DEFAULT 0,\\n \\"reason\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false,"unique":false},"head_revision_id":{"type":"TEXT","notNull":false,"unique":false},"revision_count":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"reason":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_discard_tombstones_tenant_id_course_id_idx","columns":["tenant_id","course_id"],"unique":true},{"name":"course_discard_tombstones_slug_context_idx","columns":["slug","context"]},{"name":"course_discard_tombstones_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_discard_tombstones_course_id_idx","columns":["course_id"]}],"version":"d228594d"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseDiscardTombstoneCollection":{"name":"coursediscardtombstonecollection","className":"CourseDiscardTombstoneCollection","qualifiedName":"@happyvertical/smrt-education:CourseDiscardTombstoneCollection","collection":"coursediscardtombstones","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_discard_tombstones","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseDiscardTombstone","exportName":"CourseDiscardTombstoneCollection","collectionExportName":"CourseDiscardTombstoneCollectionCollection","schema":{"tableName":"course_discard_tombstones","ddl":"CREATE TABLE IF NOT EXISTS \\"course_discard_tombstones\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"title\\" TEXT,\\n \\"head_revision_id\\" TEXT,\\n \\"revision_count\\" INTEGER NOT NULL DEFAULT 0,\\n \\"reason\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false,"unique":false},"head_revision_id":{"type":"TEXT","notNull":false,"unique":false},"revision_count":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"reason":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_discard_tombstones_tenant_id_course_id_idx","columns":["tenant_id","course_id"],"unique":true},{"name":"course_discard_tombstones_slug_context_idx","columns":["slug","context"]},{"name":"course_discard_tombstones_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_discard_tombstones_course_id_idx","columns":["course_id"]}],"version":"d228594d"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EnrollmentReleasePin":{"name":"enrollmentreleasepin","className":"EnrollmentReleasePin","qualifiedName":"@happyvertical/smrt-education:EnrollmentReleasePin","collection":"enrollmentreleasepins","description":"Append-only record of which release an enrollment follows.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"enrollmentId":{"type":"foreignKey","required":true,"related":"Enrollment","_meta":{"required":true}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"releaseId":{"type":"foreignKey","required":true,"related":"CourseRelease","_meta":{"required":true}},"previousReleaseId":{"type":"foreignKey","required":false,"related":"CourseRelease","_meta":{"nullable":true}},"kind":{"type":"text","required":false},"sequence":{"type":"integer","required":true,"default":1},"actorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"optInDelegationId":{"type":"text","required":false},"policyBasis":{"type":"text","required":false},"optInScope":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"enrollment_release_pins","conflictColumns":["tenant_id","enrollment_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"EnrollmentReleasePin","collectionExportName":"EnrollmentReleasePinCollection","validationRules":[{"field":"enrollmentId","rule":"required","fieldType":"foreignKey"},{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"releaseId","rule":"required","fieldType":"foreignKey"},{"field":"sequence","rule":"required","fieldType":"integer"}],"schema":{"tableName":"enrollment_release_pins","ddl":"CREATE TABLE IF NOT EXISTS \\"enrollment_release_pins\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"release_id\\" UUID NOT NULL,\\n \\"previous_release_id\\" UUID,\\n \\"kind\\" TEXT,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"opt_in_delegation_id\\" TEXT,\\n \\"policy_basis\\" TEXT,\\n \\"opt_in_scope\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"release_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_releases","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"previous_release_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"course_releases","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"kind":{"type":"TEXT","notNull":false,"unique":false},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"opt_in_delegation_id":{"type":"TEXT","notNull":false,"unique":false},"policy_basis":{"type":"TEXT","notNull":false,"unique":false},"opt_in_scope":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"enrollment_release_pins_tenant_id_enrollment_id_idx","columns":["tenant_id","enrollment_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"enrollment_release_pins_slug_context_idx","columns":["slug","context"]},{"name":"enrollment_release_pins_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"enrollment_release_pins_enrollment_id_idx","columns":["enrollment_id"]},{"name":"enrollment_release_pins_learner_id_idx","columns":["learner_id"]},{"name":"enrollment_release_pins_course_id_idx","columns":["course_id"]},{"name":"enrollment_release_pins_release_id_idx","columns":["release_id"]},{"name":"enrollment_release_pins_previous_release_id_idx","columns":["previous_release_id"]}],"version":"0132e978"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EnrollmentReleasePinCollection":{"name":"enrollmentreleasepincollection","className":"EnrollmentReleasePinCollection","qualifiedName":"@happyvertical/smrt-education:EnrollmentReleasePinCollection","collection":"enrollmentreleasepins","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"enrollment_release_pins","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"EnrollmentReleasePin","exportName":"EnrollmentReleasePinCollection","collectionExportName":"EnrollmentReleasePinCollectionCollection","schema":{"tableName":"enrollment_release_pins","ddl":"CREATE TABLE IF NOT EXISTS \\"enrollment_release_pins\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"release_id\\" UUID NOT NULL,\\n \\"previous_release_id\\" UUID,\\n \\"kind\\" TEXT,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"opt_in_delegation_id\\" TEXT,\\n \\"policy_basis\\" TEXT,\\n \\"opt_in_scope\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"release_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_releases","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"previous_release_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"course_releases","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"kind":{"type":"TEXT","notNull":false,"unique":false},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"opt_in_delegation_id":{"type":"TEXT","notNull":false,"unique":false},"policy_basis":{"type":"TEXT","notNull":false,"unique":false},"opt_in_scope":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"enrollment_release_pins_tenant_id_enrollment_id_idx","columns":["tenant_id","enrollment_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"enrollment_release_pins_slug_context_idx","columns":["slug","context"]},{"name":"enrollment_release_pins_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"enrollment_release_pins_enrollment_id_idx","columns":["enrollment_id"]},{"name":"enrollment_release_pins_learner_id_idx","columns":["learner_id"]},{"name":"enrollment_release_pins_course_id_idx","columns":["course_id"]},{"name":"enrollment_release_pins_release_id_idx","columns":["release_id"]},{"name":"enrollment_release_pins_previous_release_id_idx","columns":["previous_release_id"]}],"version":"0132e978"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseUpgradeChoice":{"name":"courseupgradechoice","className":"CourseUpgradeChoice","qualifiedName":"@happyvertical/smrt-education:CourseUpgradeChoice","collection":"courseupgradechoices","description":"Recorded opt-in/out of auto-upgrade at course or enrollment scope.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"enrollmentId":{"type":"text","required":false},"enabled":{"type":"boolean","required":true,"default":false},"sequence":{"type":"integer","required":true,"default":1},"actorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"policyBasis":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_upgrade_choices","conflictColumns":["tenant_id","course_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseUpgradeChoice","collectionExportName":"CourseUpgradeChoiceCollection","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"enabled","rule":"required","fieldType":"boolean"},{"field":"sequence","rule":"required","fieldType":"integer"}],"schema":{"tableName":"course_upgrade_choices","ddl":"CREATE TABLE IF NOT EXISTS \\"course_upgrade_choices\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" TEXT,\\n \\"enabled\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"policy_basis\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"enrollment_id":{"type":"TEXT","notNull":false,"unique":false},"enabled":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"policy_basis":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_upgrade_choices_tenant_id_course_id_idx","columns":["tenant_id","course_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_upgrade_choices_slug_context_idx","columns":["slug","context"]},{"name":"course_upgrade_choices_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_upgrade_choices_course_id_idx","columns":["course_id"]}],"version":"69f800ad"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseUpgradeChoiceCollection":{"name":"courseupgradechoicecollection","className":"CourseUpgradeChoiceCollection","qualifiedName":"@happyvertical/smrt-education:CourseUpgradeChoiceCollection","collection":"courseupgradechoices","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_upgrade_choices","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseUpgradeChoice","exportName":"CourseUpgradeChoiceCollection","collectionExportName":"CourseUpgradeChoiceCollectionCollection","schema":{"tableName":"course_upgrade_choices","ddl":"CREATE TABLE IF NOT EXISTS \\"course_upgrade_choices\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" TEXT,\\n \\"enabled\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"policy_basis\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"enrollment_id":{"type":"TEXT","notNull":false,"unique":false},"enabled":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"policy_basis":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_upgrade_choices_tenant_id_course_id_idx","columns":["tenant_id","course_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_upgrade_choices_slug_context_idx","columns":["slug","context"]},{"name":"course_upgrade_choices_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_upgrade_choices_course_id_idx","columns":["course_id"]}],"version":"69f800ad"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EnrollmentAutoUpgradeSkip":{"name":"enrollmentautoupgradeskip","className":"EnrollmentAutoUpgradeSkip","qualifiedName":"@happyvertical/smrt-education:EnrollmentAutoUpgradeSkip","collection":"enrollmentautoupgradeskips","description":"Append-only record of an automatic upgrade that was not performed because the host denied the per-learner assignment decision. The enrollment stays pinned.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"enrollmentId":{"type":"foreignKey","required":true,"related":"Enrollment","_meta":{"required":true}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"releaseId":{"type":"foreignKey","required":true,"related":"CourseRelease","_meta":{"required":true}},"optInScope":{"type":"text","required":false},"optInActorUserId":{"type":"text","required":false},"optInDelegatingGuardianUserId":{"type":"text","required":false},"optInDelegationId":{"type":"text","required":false},"policyBasis":{"type":"text","required":false},"reason":{"type":"text","required":false},"code":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"enrollment_auto_upgrade_skips","conflictColumns":["tenant_id","enrollment_id","release_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"EnrollmentAutoUpgradeSkip","collectionExportName":"EnrollmentAutoUpgradeSkipCollection","displayLabelField":"code","validationRules":[{"field":"enrollmentId","rule":"required","fieldType":"foreignKey"},{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"releaseId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"enrollment_auto_upgrade_skips","ddl":"CREATE TABLE IF NOT EXISTS \\"enrollment_auto_upgrade_skips\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"release_id\\" UUID NOT NULL,\\n \\"opt_in_scope\\" TEXT,\\n \\"opt_in_actor_user_id\\" TEXT,\\n \\"opt_in_delegating_guardian_user_id\\" TEXT,\\n \\"opt_in_delegation_id\\" TEXT,\\n \\"policy_basis\\" TEXT,\\n \\"reason\\" TEXT,\\n \\"code\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"release_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_releases","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"opt_in_scope":{"type":"TEXT","notNull":false,"unique":false},"opt_in_actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"opt_in_delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"opt_in_delegation_id":{"type":"TEXT","notNull":false,"unique":false},"policy_basis":{"type":"TEXT","notNull":false,"unique":false},"reason":{"type":"TEXT","notNull":false,"unique":false},"code":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"enrollment_auto_upgrade_skips_tenant_id_enrollment_id_idx","columns":["tenant_id","enrollment_id","release_id"],"unique":true},{"name":"enrollment_auto_upgrade_skips_slug_context_idx","columns":["slug","context"]},{"name":"enrollment_auto_upgrade_skips_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"enrollment_auto_upgrade_skips_enrollment_id_idx","columns":["enrollment_id"]},{"name":"enrollment_auto_upgrade_skips_learner_id_idx","columns":["learner_id"]},{"name":"enrollment_auto_upgrade_skips_course_id_idx","columns":["course_id"]},{"name":"enrollment_auto_upgrade_skips_release_id_idx","columns":["release_id"]}],"version":"b4751d0d"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EnrollmentAutoUpgradeSkipCollection":{"name":"enrollmentautoupgradeskipcollection","className":"EnrollmentAutoUpgradeSkipCollection","qualifiedName":"@happyvertical/smrt-education:EnrollmentAutoUpgradeSkipCollection","collection":"enrollmentautoupgradeskips","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"enrollment_auto_upgrade_skips","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"EnrollmentAutoUpgradeSkip","exportName":"EnrollmentAutoUpgradeSkipCollection","collectionExportName":"EnrollmentAutoUpgradeSkipCollectionCollection","schema":{"tableName":"enrollment_auto_upgrade_skips","ddl":"CREATE TABLE IF NOT EXISTS \\"enrollment_auto_upgrade_skips\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"release_id\\" UUID NOT NULL,\\n \\"opt_in_scope\\" TEXT,\\n \\"opt_in_actor_user_id\\" TEXT,\\n \\"opt_in_delegating_guardian_user_id\\" TEXT,\\n \\"opt_in_delegation_id\\" TEXT,\\n \\"policy_basis\\" TEXT,\\n \\"reason\\" TEXT,\\n \\"code\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"release_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_releases","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"opt_in_scope":{"type":"TEXT","notNull":false,"unique":false},"opt_in_actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"opt_in_delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"opt_in_delegation_id":{"type":"TEXT","notNull":false,"unique":false},"policy_basis":{"type":"TEXT","notNull":false,"unique":false},"reason":{"type":"TEXT","notNull":false,"unique":false},"code":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"enrollment_auto_upgrade_skips_tenant_id_enrollment_id_idx","columns":["tenant_id","enrollment_id","release_id"],"unique":true},{"name":"enrollment_auto_upgrade_skips_slug_context_idx","columns":["slug","context"]},{"name":"enrollment_auto_upgrade_skips_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"enrollment_auto_upgrade_skips_enrollment_id_idx","columns":["enrollment_id"]},{"name":"enrollment_auto_upgrade_skips_learner_id_idx","columns":["learner_id"]},{"name":"enrollment_auto_upgrade_skips_course_id_idx","columns":["course_id"]},{"name":"enrollment_auto_upgrade_skips_release_id_idx","columns":["release_id"]}],"version":"b4751d0d"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EnrollmentAssignmentRecord":{"name":"enrollmentassignmentrecord","className":"EnrollmentAssignmentRecord","qualifiedName":"@happyvertical/smrt-education:EnrollmentAssignmentRecord","collection":"enrollmentassignmentrecords","description":"Append-only audit of a delegated-agent assignment: the agent that created the enrollment, the guardian it acted for and the host's delegation id.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"enrollmentId":{"type":"foreignKey","required":true,"related":"Enrollment","_meta":{"required":true}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"actorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"enrollment_assignment_records","conflictColumns":["tenant_id","enrollment_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"EnrollmentAssignmentRecord","collectionExportName":"EnrollmentAssignmentRecordCollection","validationRules":[{"field":"enrollmentId","rule":"required","fieldType":"foreignKey"},{"field":"learnerId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"enrollment_assignment_records","ddl":"CREATE TABLE IF NOT EXISTS \\"enrollment_assignment_records\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"enrollment_assignment_records_tenant_id_enrollment_id_idx","columns":["tenant_id","enrollment_id"],"unique":true},{"name":"enrollment_assignment_records_slug_context_idx","columns":["slug","context"]},{"name":"enrollment_assignment_records_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"enrollment_assignment_records_enrollment_id_idx","columns":["enrollment_id"]},{"name":"enrollment_assignment_records_learner_id_idx","columns":["learner_id"]}],"version":"dc2f3b8a"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EnrollmentAssignmentRecordCollection":{"name":"enrollmentassignmentrecordcollection","className":"EnrollmentAssignmentRecordCollection","qualifiedName":"@happyvertical/smrt-education:EnrollmentAssignmentRecordCollection","collection":"enrollmentassignmentrecords","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"enrollment_assignment_records","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"EnrollmentAssignmentRecord","exportName":"EnrollmentAssignmentRecordCollection","collectionExportName":"EnrollmentAssignmentRecordCollectionCollection","schema":{"tableName":"enrollment_assignment_records","ddl":"CREATE TABLE IF NOT EXISTS \\"enrollment_assignment_records\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"enrollment_assignment_records_tenant_id_enrollment_id_idx","columns":["tenant_id","enrollment_id"],"unique":true},{"name":"enrollment_assignment_records_slug_context_idx","columns":["slug","context"]},{"name":"enrollment_assignment_records_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"enrollment_assignment_records_enrollment_id_idx","columns":["enrollment_id"]},{"name":"enrollment_assignment_records_learner_id_idx","columns":["learner_id"]}],"version":"dc2f3b8a"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CurriculumCreationRecord":{"name":"curriculumcreationrecord","className":"CurriculumCreationRecord","qualifiedName":"@happyvertical/smrt-education:CurriculumCreationRecord","collection":"curriculumcreationrecords","description":"Append-only audit of a delegated-agent curriculum creation: the agent, the guardian it acted for and the host's delegation id.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"curriculumId":{"type":"foreignKey","required":true,"related":"Curriculum","_meta":{"required":true}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"actorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"curriculum_creation_records","conflictColumns":["tenant_id","curriculum_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CurriculumCreationRecord","collectionExportName":"CurriculumCreationRecordCollection","validationRules":[{"field":"curriculumId","rule":"required","fieldType":"foreignKey"},{"field":"learnerId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"curriculum_creation_records","ddl":"CREATE TABLE IF NOT EXISTS \\"curriculum_creation_records\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"curriculum_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"curriculum_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"curricula","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"curriculum_creation_records_tenant_id_curriculum_id_idx","columns":["tenant_id","curriculum_id"],"unique":true},{"name":"curriculum_creation_records_slug_context_idx","columns":["slug","context"]},{"name":"curriculum_creation_records_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"curriculum_creation_records_curriculum_id_idx","columns":["curriculum_id"]},{"name":"curriculum_creation_records_learner_id_idx","columns":["learner_id"]}],"version":"92de6b72"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CurriculumCreationRecordCollection":{"name":"curriculumcreationrecordcollection","className":"CurriculumCreationRecordCollection","qualifiedName":"@happyvertical/smrt-education:CurriculumCreationRecordCollection","collection":"curriculumcreationrecords","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"curriculum_creation_records","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CurriculumCreationRecord","exportName":"CurriculumCreationRecordCollection","collectionExportName":"CurriculumCreationRecordCollectionCollection","schema":{"tableName":"curriculum_creation_records","ddl":"CREATE TABLE IF NOT EXISTS \\"curriculum_creation_records\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"curriculum_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"curriculum_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"curricula","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"curriculum_creation_records_tenant_id_curriculum_id_idx","columns":["tenant_id","curriculum_id"],"unique":true},{"name":"curriculum_creation_records_slug_context_idx","columns":["slug","context"]},{"name":"curriculum_creation_records_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"curriculum_creation_records_curriculum_id_idx","columns":["curriculum_id"]},{"name":"curriculum_creation_records_learner_id_idx","columns":["learner_id"]}],"version":"92de6b72"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseGenerationJob":{"name":"coursegenerationjob","className":"CourseGenerationJob","qualifiedName":"@happyvertical/smrt-education:CourseGenerationJob","collection":"coursegenerationjobs","description":"Immutable generation request with its retained input snapshot.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-generation-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"baseRevisionId":{"type":"foreignKey","required":true,"related":"CourseRevision","_meta":{"required":true}},"requestKey":{"type":"text","required":false},"payloadDigest":{"type":"text","required":false},"instruction":{"type":"text","required":false,"_meta":{}},"inputJson":{"type":"text","required":false,"_meta":{}},"requestedByUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_generation_jobs","conflictColumns":["tenant_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseGenerationJob","collectionExportName":"CourseGenerationJobCollection","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"baseRevisionId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"course_generation_jobs","ddl":"CREATE TABLE IF NOT EXISTS \\"course_generation_jobs\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"base_revision_id\\" UUID NOT NULL,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"instruction\\" TEXT,\\n \\"input_json\\" TEXT,\\n \\"requested_by_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"base_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"instruction":{"type":"TEXT","notNull":false,"unique":false},"input_json":{"type":"TEXT","notNull":false,"unique":false},"requested_by_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_generation_jobs_tenant_id_request_key_idx","columns":["tenant_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_generation_jobs_slug_context_idx","columns":["slug","context"]},{"name":"course_generation_jobs_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_generation_jobs_course_id_idx","columns":["course_id"]},{"name":"course_generation_jobs_base_revision_id_idx","columns":["base_revision_id"]}],"version":"736ab1a1"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseGenerationJobCollection":{"name":"coursegenerationjobcollection","className":"CourseGenerationJobCollection","qualifiedName":"@happyvertical/smrt-education:CourseGenerationJobCollection","collection":"coursegenerationjobs","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-generation-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_generation_jobs","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseGenerationJob","exportName":"CourseGenerationJobCollection","collectionExportName":"CourseGenerationJobCollectionCollection","schema":{"tableName":"course_generation_jobs","ddl":"CREATE TABLE IF NOT EXISTS \\"course_generation_jobs\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"base_revision_id\\" UUID NOT NULL,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"instruction\\" TEXT,\\n \\"input_json\\" TEXT,\\n \\"requested_by_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"base_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"instruction":{"type":"TEXT","notNull":false,"unique":false},"input_json":{"type":"TEXT","notNull":false,"unique":false},"requested_by_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_generation_jobs_tenant_id_request_key_idx","columns":["tenant_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_generation_jobs_slug_context_idx","columns":["slug","context"]},{"name":"course_generation_jobs_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_generation_jobs_course_id_idx","columns":["course_id"]},{"name":"course_generation_jobs_base_revision_id_idx","columns":["base_revision_id"]}],"version":"736ab1a1"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseGenerationEvent":{"name":"coursegenerationevent","className":"CourseGenerationEvent","qualifiedName":"@happyvertical/smrt-education:CourseGenerationEvent","collection":"coursegenerationevents","description":"Append-only status log; the highest sequence is the job's status and outcome.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-generation-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"jobId":{"type":"foreignKey","required":true,"related":"CourseGenerationJob","_meta":{"required":true}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"sequence":{"type":"integer","required":true,"default":1},"status":{"type":"text","required":false},"provider":{"type":"text","required":false},"model":{"type":"text","required":false},"version":{"type":"text","required":false},"responseModel":{"type":"text","required":false},"inputTokens":{"type":"integer","required":false,"_meta":{"nullable":true}},"outputTokens":{"type":"integer","required":false,"_meta":{"nullable":true}},"cost":{"type":"decimal","required":false,"_meta":{"nullable":true}},"costCurrency":{"type":"text","required":false,"_meta":{"nullable":true}},"usageJson":{"type":"text","required":false,"_meta":{}},"errorCode":{"type":"text","required":false,"_meta":{"nullable":true}},"detail":{"type":"text","required":false,"_meta":{}},"proposalId":{"type":"text","required":false,"_meta":{"nullable":true}},"resultRevisionId":{"type":"text","required":false,"_meta":{"nullable":true}},"actorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_generation_events","conflictColumns":["tenant_id","job_id","sequence"],"indexes":[{"name":"course_generation_events_sequence_unique","columns":["tenantId","jobId","sequence"],"unique":true}],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseGenerationEvent","collectionExportName":"CourseGenerationEventCollection","validationRules":[{"field":"jobId","rule":"required","fieldType":"foreignKey"},{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"sequence","rule":"required","fieldType":"integer"}],"schema":{"tableName":"course_generation_events","ddl":"CREATE TABLE IF NOT EXISTS \\"course_generation_events\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"job_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"status\\" TEXT,\\n \\"provider\\" TEXT,\\n \\"model\\" TEXT,\\n \\"version\\" TEXT,\\n \\"response_model\\" TEXT,\\n \\"input_tokens\\" INTEGER,\\n \\"output_tokens\\" INTEGER,\\n \\"cost\\" REAL,\\n \\"cost_currency\\" TEXT,\\n \\"usage_json\\" TEXT,\\n \\"error_code\\" TEXT,\\n \\"detail\\" TEXT,\\n \\"proposal_id\\" TEXT,\\n \\"result_revision_id\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"job_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_generation_jobs","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"status":{"type":"TEXT","notNull":false,"unique":false},"provider":{"type":"TEXT","notNull":false,"unique":false},"model":{"type":"TEXT","notNull":false,"unique":false},"version":{"type":"TEXT","notNull":false,"unique":false},"response_model":{"type":"TEXT","notNull":false,"unique":false},"input_tokens":{"type":"INTEGER","notNull":false,"unique":false},"output_tokens":{"type":"INTEGER","notNull":false,"unique":false},"cost":{"type":"REAL","notNull":false,"unique":false},"cost_currency":{"type":"TEXT","notNull":false,"unique":false},"usage_json":{"type":"TEXT","notNull":false,"unique":false},"error_code":{"type":"TEXT","notNull":false,"unique":false},"detail":{"type":"TEXT","notNull":false,"unique":false},"proposal_id":{"type":"TEXT","notNull":false,"unique":false},"result_revision_id":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_generation_events_tenant_id_job_id_idx","columns":["tenant_id","job_id","sequence"],"unique":true},{"name":"course_generation_events_slug_context_idx","columns":["slug","context"]},{"name":"course_generation_events_sequence_unique","columns":["tenant_id","job_id","sequence"],"unique":true},{"name":"course_generation_events_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_generation_events_job_id_idx","columns":["job_id"]},{"name":"course_generation_events_course_id_idx","columns":["course_id"]}],"version":"0dc29e4f"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseGenerationEventCollection":{"name":"coursegenerationeventcollection","className":"CourseGenerationEventCollection","qualifiedName":"@happyvertical/smrt-education:CourseGenerationEventCollection","collection":"coursegenerationevents","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-generation-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_generation_events","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseGenerationEvent","exportName":"CourseGenerationEventCollection","collectionExportName":"CourseGenerationEventCollectionCollection","schema":{"tableName":"course_generation_events","ddl":"CREATE TABLE IF NOT EXISTS \\"course_generation_events\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"job_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"status\\" TEXT,\\n \\"provider\\" TEXT,\\n \\"model\\" TEXT,\\n \\"version\\" TEXT,\\n \\"response_model\\" TEXT,\\n \\"input_tokens\\" INTEGER,\\n \\"output_tokens\\" INTEGER,\\n \\"cost\\" REAL,\\n \\"cost_currency\\" TEXT,\\n \\"usage_json\\" TEXT,\\n \\"error_code\\" TEXT,\\n \\"detail\\" TEXT,\\n \\"proposal_id\\" TEXT,\\n \\"result_revision_id\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"job_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_generation_jobs","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"status":{"type":"TEXT","notNull":false,"unique":false},"provider":{"type":"TEXT","notNull":false,"unique":false},"model":{"type":"TEXT","notNull":false,"unique":false},"version":{"type":"TEXT","notNull":false,"unique":false},"response_model":{"type":"TEXT","notNull":false,"unique":false},"input_tokens":{"type":"INTEGER","notNull":false,"unique":false},"output_tokens":{"type":"INTEGER","notNull":false,"unique":false},"cost":{"type":"REAL","notNull":false,"unique":false},"cost_currency":{"type":"TEXT","notNull":false,"unique":false},"usage_json":{"type":"TEXT","notNull":false,"unique":false},"error_code":{"type":"TEXT","notNull":false,"unique":false},"detail":{"type":"TEXT","notNull":false,"unique":false},"proposal_id":{"type":"TEXT","notNull":false,"unique":false},"result_revision_id":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_generation_events_tenant_id_job_id_idx","columns":["tenant_id","job_id","sequence"],"unique":true},{"name":"course_generation_events_slug_context_idx","columns":["slug","context"]},{"name":"course_generation_events_sequence_unique","columns":["tenant_id","job_id","sequence"],"unique":true},{"name":"course_generation_events_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_generation_events_job_id_idx","columns":["job_id"]},{"name":"course_generation_events_course_id_idx","columns":["course_id"]}],"version":"0dc29e4f"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseProposal":{"name":"courseproposal","className":"CourseProposal","qualifiedName":"@happyvertical/smrt-education:CourseProposal","collection":"courseproposals","description":"The validated proposal for one job and its supplied-versus-proposed plan.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-generation-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"jobId":{"type":"foreignKey","required":true,"related":"CourseGenerationJob","_meta":{"required":true}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"baseRevisionId":{"type":"foreignKey","required":true,"related":"CourseRevision","_meta":{"required":true}},"resultRevisionId":{"type":"foreignKey","required":true,"related":"CourseRevision","_meta":{"required":true}},"rationale":{"type":"text","required":false,"_meta":{}},"proposalJson":{"type":"text","required":false,"_meta":{}},"planJson":{"type":"text","required":false,"_meta":{}},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_proposals","conflictColumns":["tenant_id","job_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseProposal","collectionExportName":"CourseProposalCollection","validationRules":[{"field":"jobId","rule":"required","fieldType":"foreignKey"},{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"baseRevisionId","rule":"required","fieldType":"foreignKey"},{"field":"resultRevisionId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"course_proposals","ddl":"CREATE TABLE IF NOT EXISTS \\"course_proposals\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"job_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"base_revision_id\\" UUID NOT NULL,\\n \\"result_revision_id\\" UUID NOT NULL,\\n \\"rationale\\" TEXT,\\n \\"proposal_json\\" TEXT,\\n \\"plan_json\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"job_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_generation_jobs","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"base_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"result_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"rationale":{"type":"TEXT","notNull":false,"unique":false},"proposal_json":{"type":"TEXT","notNull":false,"unique":false},"plan_json":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_proposals_tenant_id_job_id_idx","columns":["tenant_id","job_id"],"unique":true},{"name":"course_proposals_slug_context_idx","columns":["slug","context"]},{"name":"course_proposals_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_proposals_job_id_idx","columns":["job_id"]},{"name":"course_proposals_course_id_idx","columns":["course_id"]},{"name":"course_proposals_base_revision_id_idx","columns":["base_revision_id"]},{"name":"course_proposals_result_revision_id_idx","columns":["result_revision_id"]}],"version":"cc650a3f"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseProposalCollection":{"name":"courseproposalcollection","className":"CourseProposalCollection","qualifiedName":"@happyvertical/smrt-education:CourseProposalCollection","collection":"courseproposals","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-generation-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_proposals","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseProposal","exportName":"CourseProposalCollection","collectionExportName":"CourseProposalCollectionCollection","schema":{"tableName":"course_proposals","ddl":"CREATE TABLE IF NOT EXISTS \\"course_proposals\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"job_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"base_revision_id\\" UUID NOT NULL,\\n \\"result_revision_id\\" UUID NOT NULL,\\n \\"rationale\\" TEXT,\\n \\"proposal_json\\" TEXT,\\n \\"plan_json\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"job_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_generation_jobs","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"base_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"result_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"rationale":{"type":"TEXT","notNull":false,"unique":false},"proposal_json":{"type":"TEXT","notNull":false,"unique":false},"plan_json":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_proposals_tenant_id_job_id_idx","columns":["tenant_id","job_id"],"unique":true},{"name":"course_proposals_slug_context_idx","columns":["slug","context"]},{"name":"course_proposals_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_proposals_job_id_idx","columns":["job_id"]},{"name":"course_proposals_course_id_idx","columns":["course_id"]},{"name":"course_proposals_base_revision_id_idx","columns":["base_revision_id"]},{"name":"course_proposals_result_revision_id_idx","columns":["result_revision_id"]}],"version":"cc650a3f"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseProposalDecision":{"name":"courseproposaldecision","className":"CourseProposalDecision","qualifiedName":"@happyvertical/smrt-education:CourseProposalDecision","collection":"courseproposaldecisions","description":"Explicit, recorded accept or reject of conflicting proposal fields.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-generation-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"proposalId":{"type":"foreignKey","required":true,"related":"CourseProposal","_meta":{"required":true}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"decision":{"type":"text","required":false},"fieldsJson":{"type":"text","required":false,"_meta":{}},"resultRevisionId":{"type":"text","required":false,"_meta":{"nullable":true}},"actorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"payloadDigest":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_proposal_decisions","conflictColumns":["tenant_id","proposal_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseProposalDecision","collectionExportName":"CourseProposalDecisionCollection","validationRules":[{"field":"proposalId","rule":"required","fieldType":"foreignKey"},{"field":"courseId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"course_proposal_decisions","ddl":"CREATE TABLE IF NOT EXISTS \\"course_proposal_decisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"proposal_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"decision\\" TEXT,\\n \\"fields_json\\" TEXT,\\n \\"result_revision_id\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"proposal_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_proposals","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"decision":{"type":"TEXT","notNull":false,"unique":false},"fields_json":{"type":"TEXT","notNull":false,"unique":false},"result_revision_id":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_proposal_decisions_tenant_id_proposal_id_idx","columns":["tenant_id","proposal_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_proposal_decisions_slug_context_idx","columns":["slug","context"]},{"name":"course_proposal_decisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_proposal_decisions_proposal_id_idx","columns":["proposal_id"]},{"name":"course_proposal_decisions_course_id_idx","columns":["course_id"]}],"version":"f66a9066"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseProposalDecisionCollection":{"name":"courseproposaldecisioncollection","className":"CourseProposalDecisionCollection","qualifiedName":"@happyvertical/smrt-education:CourseProposalDecisionCollection","collection":"courseproposaldecisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-generation-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_proposal_decisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseProposalDecision","exportName":"CourseProposalDecisionCollection","collectionExportName":"CourseProposalDecisionCollectionCollection","schema":{"tableName":"course_proposal_decisions","ddl":"CREATE TABLE IF NOT EXISTS \\"course_proposal_decisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"proposal_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"decision\\" TEXT,\\n \\"fields_json\\" TEXT,\\n \\"result_revision_id\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"proposal_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_proposals","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"decision":{"type":"TEXT","notNull":false,"unique":false},"fields_json":{"type":"TEXT","notNull":false,"unique":false},"result_revision_id":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_proposal_decisions_tenant_id_proposal_id_idx","columns":["tenant_id","proposal_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_proposal_decisions_slug_context_idx","columns":["slug","context"]},{"name":"course_proposal_decisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_proposal_decisions_proposal_id_idx","columns":["proposal_id"]},{"name":"course_proposal_decisions_course_id_idx","columns":["course_id"]}],"version":"f66a9066"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseReview":{"name":"coursereview","className":"CourseReview","qualifiedName":"@happyvertical/smrt-education:CourseReview","collection":"coursereviews","description":"Educational review bound to one exact course revision and a context digest. There is deliberately no score or rating member; findings carry the substance.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-review-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"revisionId":{"type":"foreignKey","required":true,"related":"CourseRevision","_meta":{"required":true}},"sequence":{"type":"integer","required":true,"default":1},"contextJson":{"type":"text","required":false,"_meta":{}},"contextDigest":{"type":"text","required":false},"disclaimer":{"type":"text","required":false,"_meta":{}},"generalSummary":{"type":"text","required":false,"_meta":{}},"learnerSummary":{"type":"text","required":false,"_meta":{}},"reviewerKind":{"type":"text","required":false},"reviewerProvider":{"type":"text","required":false},"reviewerModel":{"type":"text","required":false},"authorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"payloadDigest":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_reviews","conflictColumns":["tenant_id","course_id","request_key"],"indexes":[{"name":"course_reviews_sequence_unique","columns":["tenantId","courseId","revisionId","sequence"],"unique":true}],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseReview","collectionExportName":"CourseReviewCollection","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"revisionId","rule":"required","fieldType":"foreignKey"},{"field":"sequence","rule":"required","fieldType":"integer"}],"schema":{"tableName":"course_reviews","ddl":"CREATE TABLE IF NOT EXISTS \\"course_reviews\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"context_json\\" TEXT,\\n \\"context_digest\\" TEXT,\\n \\"disclaimer\\" TEXT,\\n \\"general_summary\\" TEXT,\\n \\"learner_summary\\" TEXT,\\n \\"reviewer_kind\\" TEXT,\\n \\"reviewer_provider\\" TEXT,\\n \\"reviewer_model\\" TEXT,\\n \\"author_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"context_json":{"type":"TEXT","notNull":false,"unique":false},"context_digest":{"type":"TEXT","notNull":false,"unique":false},"disclaimer":{"type":"TEXT","notNull":false,"unique":false},"general_summary":{"type":"TEXT","notNull":false,"unique":false},"learner_summary":{"type":"TEXT","notNull":false,"unique":false},"reviewer_kind":{"type":"TEXT","notNull":false,"unique":false},"reviewer_provider":{"type":"TEXT","notNull":false,"unique":false},"reviewer_model":{"type":"TEXT","notNull":false,"unique":false},"author_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_reviews_tenant_id_course_id_idx","columns":["tenant_id","course_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_reviews_slug_context_idx","columns":["slug","context"]},{"name":"course_reviews_sequence_unique","columns":["tenant_id","course_id","revision_id","sequence"],"unique":true},{"name":"course_reviews_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_reviews_course_id_idx","columns":["course_id"]},{"name":"course_reviews_revision_id_idx","columns":["revision_id"]}],"version":"09648ccc"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseReviewCollection":{"name":"coursereviewcollection","className":"CourseReviewCollection","qualifiedName":"@happyvertical/smrt-education:CourseReviewCollection","collection":"coursereviews","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-review-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_reviews","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseReview","exportName":"CourseReviewCollection","collectionExportName":"CourseReviewCollectionCollection","schema":{"tableName":"course_reviews","ddl":"CREATE TABLE IF NOT EXISTS \\"course_reviews\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"context_json\\" TEXT,\\n \\"context_digest\\" TEXT,\\n \\"disclaimer\\" TEXT,\\n \\"general_summary\\" TEXT,\\n \\"learner_summary\\" TEXT,\\n \\"reviewer_kind\\" TEXT,\\n \\"reviewer_provider\\" TEXT,\\n \\"reviewer_model\\" TEXT,\\n \\"author_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"context_json":{"type":"TEXT","notNull":false,"unique":false},"context_digest":{"type":"TEXT","notNull":false,"unique":false},"disclaimer":{"type":"TEXT","notNull":false,"unique":false},"general_summary":{"type":"TEXT","notNull":false,"unique":false},"learner_summary":{"type":"TEXT","notNull":false,"unique":false},"reviewer_kind":{"type":"TEXT","notNull":false,"unique":false},"reviewer_provider":{"type":"TEXT","notNull":false,"unique":false},"reviewer_model":{"type":"TEXT","notNull":false,"unique":false},"author_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_reviews_tenant_id_course_id_idx","columns":["tenant_id","course_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_reviews_slug_context_idx","columns":["slug","context"]},{"name":"course_reviews_sequence_unique","columns":["tenant_id","course_id","revision_id","sequence"],"unique":true},{"name":"course_reviews_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_reviews_course_id_idx","columns":["course_id"]},{"name":"course_reviews_revision_id_idx","columns":["revision_id"]}],"version":"09648ccc"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseReviewFinding":{"name":"coursereviewfinding","className":"CourseReviewFinding","qualifiedName":"@happyvertical/smrt-education:CourseReviewFinding","collection":"coursereviewfindings","description":"One concern about specific material; append-only.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-review-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"reviewId":{"type":"foreignKey","required":true,"related":"CourseReview","_meta":{"required":true}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"revisionId":{"type":"foreignKey","required":true,"related":"CourseRevision","_meta":{"required":true}},"ordinal":{"type":"integer","required":true,"default":0},"section":{"type":"text","required":false},"targetKind":{"type":"text","required":false},"targetId":{"type":"text","required":false},"targetField":{"type":"text","required":false},"targetRegion":{"type":"text","required":false},"concern":{"type":"text","required":false},"explanation":{"type":"text","required":false,"_meta":{}},"suggestedChange":{"type":"text","required":false,"_meta":{}},"uncertain":{"type":"boolean","required":true,"default":false},"humanVerificationRequired":{"type":"boolean","required":true,"default":false},"blocking":{"type":"boolean","required":true,"default":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_review_findings","conflictColumns":["tenant_id","review_id","ordinal"],"indexes":[{"name":"course_review_findings_ordinal_unique","columns":["tenantId","reviewId","ordinal"],"unique":true}],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseReviewFinding","collectionExportName":"CourseReviewFindingCollection","validationRules":[{"field":"reviewId","rule":"required","fieldType":"foreignKey"},{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"revisionId","rule":"required","fieldType":"foreignKey"},{"field":"ordinal","rule":"required","fieldType":"integer"},{"field":"uncertain","rule":"required","fieldType":"boolean"},{"field":"humanVerificationRequired","rule":"required","fieldType":"boolean"},{"field":"blocking","rule":"required","fieldType":"boolean"}],"schema":{"tableName":"course_review_findings","ddl":"CREATE TABLE IF NOT EXISTS \\"course_review_findings\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"review_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"ordinal\\" INTEGER NOT NULL DEFAULT 0,\\n \\"section\\" TEXT,\\n \\"target_kind\\" TEXT,\\n \\"target_id\\" TEXT,\\n \\"target_field\\" TEXT,\\n \\"target_region\\" TEXT,\\n \\"concern\\" TEXT,\\n \\"explanation\\" TEXT,\\n \\"suggested_change\\" TEXT,\\n \\"uncertain\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"human_verification_required\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"blocking\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"review_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_reviews","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"ordinal":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"section":{"type":"TEXT","notNull":false,"unique":false},"target_kind":{"type":"TEXT","notNull":false,"unique":false},"target_id":{"type":"TEXT","notNull":false,"unique":false},"target_field":{"type":"TEXT","notNull":false,"unique":false},"target_region":{"type":"TEXT","notNull":false,"unique":false},"concern":{"type":"TEXT","notNull":false,"unique":false},"explanation":{"type":"TEXT","notNull":false,"unique":false},"suggested_change":{"type":"TEXT","notNull":false,"unique":false},"uncertain":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"human_verification_required":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"blocking":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_review_findings_tenant_id_review_id_idx","columns":["tenant_id","review_id","ordinal"],"unique":true},{"name":"course_review_findings_slug_context_idx","columns":["slug","context"]},{"name":"course_review_findings_ordinal_unique","columns":["tenant_id","review_id","ordinal"],"unique":true},{"name":"course_review_findings_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_review_findings_review_id_idx","columns":["review_id"]},{"name":"course_review_findings_course_id_idx","columns":["course_id"]},{"name":"course_review_findings_revision_id_idx","columns":["revision_id"]}],"version":"473686cc"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseReviewFindingCollection":{"name":"coursereviewfindingcollection","className":"CourseReviewFindingCollection","qualifiedName":"@happyvertical/smrt-education:CourseReviewFindingCollection","collection":"coursereviewfindings","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-review-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_review_findings","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseReviewFinding","exportName":"CourseReviewFindingCollection","collectionExportName":"CourseReviewFindingCollectionCollection","schema":{"tableName":"course_review_findings","ddl":"CREATE TABLE IF NOT EXISTS \\"course_review_findings\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"review_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"ordinal\\" INTEGER NOT NULL DEFAULT 0,\\n \\"section\\" TEXT,\\n \\"target_kind\\" TEXT,\\n \\"target_id\\" TEXT,\\n \\"target_field\\" TEXT,\\n \\"target_region\\" TEXT,\\n \\"concern\\" TEXT,\\n \\"explanation\\" TEXT,\\n \\"suggested_change\\" TEXT,\\n \\"uncertain\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"human_verification_required\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"blocking\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"review_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_reviews","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"ordinal":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"section":{"type":"TEXT","notNull":false,"unique":false},"target_kind":{"type":"TEXT","notNull":false,"unique":false},"target_id":{"type":"TEXT","notNull":false,"unique":false},"target_field":{"type":"TEXT","notNull":false,"unique":false},"target_region":{"type":"TEXT","notNull":false,"unique":false},"concern":{"type":"TEXT","notNull":false,"unique":false},"explanation":{"type":"TEXT","notNull":false,"unique":false},"suggested_change":{"type":"TEXT","notNull":false,"unique":false},"uncertain":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"human_verification_required":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"blocking":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_review_findings_tenant_id_review_id_idx","columns":["tenant_id","review_id","ordinal"],"unique":true},{"name":"course_review_findings_slug_context_idx","columns":["slug","context"]},{"name":"course_review_findings_ordinal_unique","columns":["tenant_id","review_id","ordinal"],"unique":true},{"name":"course_review_findings_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_review_findings_review_id_idx","columns":["review_id"]},{"name":"course_review_findings_course_id_idx","columns":["course_id"]},{"name":"course_review_findings_revision_id_idx","columns":["revision_id"]}],"version":"473686cc"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseReviewOutdatedMarker":{"name":"coursereviewoutdatedmarker","className":"CourseReviewOutdatedMarker","qualifiedName":"@happyvertical/smrt-education:CourseReviewOutdatedMarker","collection":"coursereviewoutdatedmarkers","description":"Explicit record that a review stopped being current; one per review, never removed.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-review-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"reviewId":{"type":"foreignKey","required":true,"related":"CourseReview","_meta":{"required":true}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"reason":{"type":"text","required":false},"supersedingRevisionId":{"type":"text","required":false,"_meta":{"nullable":true}},"newContextDigest":{"type":"text","required":false},"actorUserId":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_review_outdated_markers","conflictColumns":["tenant_id","review_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseReviewOutdatedMarker","collectionExportName":"CourseReviewOutdatedMarkerCollection","validationRules":[{"field":"reviewId","rule":"required","fieldType":"foreignKey"},{"field":"courseId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"course_review_outdated_markers","ddl":"CREATE TABLE IF NOT EXISTS \\"course_review_outdated_markers\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"review_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"reason\\" TEXT,\\n \\"superseding_revision_id\\" TEXT,\\n \\"new_context_digest\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"review_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_reviews","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"reason":{"type":"TEXT","notNull":false,"unique":false},"superseding_revision_id":{"type":"TEXT","notNull":false,"unique":false},"new_context_digest":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_review_outdated_markers_tenant_id_review_id_idx","columns":["tenant_id","review_id"],"unique":true},{"name":"course_review_outdated_markers_slug_context_idx","columns":["slug","context"]},{"name":"course_review_outdated_markers_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_review_outdated_markers_review_id_idx","columns":["review_id"]},{"name":"course_review_outdated_markers_course_id_idx","columns":["course_id"]}],"version":"32a61299"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseReviewOutdatedMarkerCollection":{"name":"coursereviewoutdatedmarkercollection","className":"CourseReviewOutdatedMarkerCollection","qualifiedName":"@happyvertical/smrt-education:CourseReviewOutdatedMarkerCollection","collection":"coursereviewoutdatedmarkers","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-review-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_review_outdated_markers","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseReviewOutdatedMarker","exportName":"CourseReviewOutdatedMarkerCollection","collectionExportName":"CourseReviewOutdatedMarkerCollectionCollection","schema":{"tableName":"course_review_outdated_markers","ddl":"CREATE TABLE IF NOT EXISTS \\"course_review_outdated_markers\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"review_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"reason\\" TEXT,\\n \\"superseding_revision_id\\" TEXT,\\n \\"new_context_digest\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"review_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_reviews","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"reason":{"type":"TEXT","notNull":false,"unique":false},"superseding_revision_id":{"type":"TEXT","notNull":false,"unique":false},"new_context_digest":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_review_outdated_markers_tenant_id_review_id_idx","columns":["tenant_id","review_id"],"unique":true},{"name":"course_review_outdated_markers_slug_context_idx","columns":["slug","context"]},{"name":"course_review_outdated_markers_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_review_outdated_markers_review_id_idx","columns":["review_id"]},{"name":"course_review_outdated_markers_course_id_idx","columns":["course_id"]}],"version":"32a61299"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseFindingResolution":{"name":"coursefindingresolution","className":"CourseFindingResolution","qualifiedName":"@happyvertical/smrt-education:CourseFindingResolution","collection":"coursefindingresolutions","description":"How a finding was dealt with; a finding has at most one resolution.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-review-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"findingId":{"type":"foreignKey","required":true,"related":"CourseReviewFinding","_meta":{"required":true}},"reviewId":{"type":"foreignKey","required":true,"related":"CourseReview","_meta":{"required":true}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"resolution":{"type":"text","required":false},"note":{"type":"text","required":false,"_meta":{}},"actorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"payloadDigest":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_finding_resolutions","conflictColumns":["tenant_id","finding_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseFindingResolution","collectionExportName":"CourseFindingResolutionCollection","validationRules":[{"field":"findingId","rule":"required","fieldType":"foreignKey"},{"field":"reviewId","rule":"required","fieldType":"foreignKey"},{"field":"courseId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"course_finding_resolutions","ddl":"CREATE TABLE IF NOT EXISTS \\"course_finding_resolutions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"finding_id\\" UUID NOT NULL,\\n \\"review_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"resolution\\" TEXT,\\n \\"note\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"finding_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_review_findings","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"review_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_reviews","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"resolution":{"type":"TEXT","notNull":false,"unique":false},"note":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_finding_resolutions_tenant_id_finding_id_idx","columns":["tenant_id","finding_id"],"unique":true},{"name":"course_finding_resolutions_slug_context_idx","columns":["slug","context"]},{"name":"course_finding_resolutions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_finding_resolutions_finding_id_idx","columns":["finding_id"]},{"name":"course_finding_resolutions_review_id_idx","columns":["review_id"]},{"name":"course_finding_resolutions_course_id_idx","columns":["course_id"]}],"version":"e7629ad4"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseFindingResolutionCollection":{"name":"coursefindingresolutioncollection","className":"CourseFindingResolutionCollection","qualifiedName":"@happyvertical/smrt-education:CourseFindingResolutionCollection","collection":"coursefindingresolutions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-review-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_finding_resolutions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseFindingResolution","exportName":"CourseFindingResolutionCollection","collectionExportName":"CourseFindingResolutionCollectionCollection","schema":{"tableName":"course_finding_resolutions","ddl":"CREATE TABLE IF NOT EXISTS \\"course_finding_resolutions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"finding_id\\" UUID NOT NULL,\\n \\"review_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"resolution\\" TEXT,\\n \\"note\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"finding_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_review_findings","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"review_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_reviews","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"resolution":{"type":"TEXT","notNull":false,"unique":false},"note":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_finding_resolutions_tenant_id_finding_id_idx","columns":["tenant_id","finding_id"],"unique":true},{"name":"course_finding_resolutions_slug_context_idx","columns":["slug","context"]},{"name":"course_finding_resolutions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_finding_resolutions_finding_id_idx","columns":["finding_id"]},{"name":"course_finding_resolutions_review_id_idx","columns":["review_id"]},{"name":"course_finding_resolutions_course_id_idx","columns":["course_id"]}],"version":"e7629ad4"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseSource":{"name":"coursesource","className":"CourseSource","qualifiedName":"@happyvertical/smrt-education:CourseSource","collection":"coursesources","description":"Host-managed source policy; deliberately has no generated CRUD surface.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-source.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"key":{"type":"text","required":true,"_meta":{"required":true}},"name":{"type":"text","required":true,"_meta":{"required":true}},"kind":{"type":"text","required":false,"default":"adapter","enum":["manual","url","adapter"]},"adapterKey":{"type":"text","required":false},"config":{"type":"text","required":false},"sharing":{"type":"text","required":false,"default":"private","enum":["private","group","global"]}},"methods":{"getConfig":{"name":"getConfig","async":false,"parameters":[],"returnType":"CourseSourceConfig","isStatic":false,"isPublic":true},"setConfig":{"name":"setConfig","async":false,"parameters":[{"name":"value","type":"CourseSourceConfig","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"cli":false,"mcp":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"CourseSource","collectionExportName":"CourseSourceCollection","displayLabelField":"name","validationRules":[{"field":"key","rule":"required","fieldType":"text"},{"field":"name","rule":"required","fieldType":"text"}],"schema":{"tableName":"course_sources","ddl":"CREATE TABLE IF NOT EXISTS \\"course_sources\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"key\\" TEXT NOT NULL,\\n \\"name\\" TEXT NOT NULL,\\n \\"kind\\" TEXT DEFAULT 'adapter',\\n \\"adapter_key\\" TEXT,\\n \\"config\\" TEXT,\\n \\"sharing\\" TEXT DEFAULT 'private'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"key":{"type":"TEXT","notNull":true,"unique":false},"name":{"type":"TEXT","notNull":true,"unique":false},"kind":{"type":"TEXT","notNull":false,"unique":false,"default":"adapter"},"adapter_key":{"type":"TEXT","notNull":false,"unique":false},"config":{"type":"TEXT","notNull":false,"unique":false},"sharing":{"type":"TEXT","notNull":false,"unique":false,"default":"private"}},"indexes":[{"name":"course_sources_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"course_sources_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"98177eb3"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseSourceCollection":{"name":"coursesourcecollection","className":"CourseSourceCollection","qualifiedName":"@happyvertical/smrt-education:CourseSourceCollection","collection":"coursesources","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-source.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseSource","exportName":"CourseSourceCollection","collectionExportName":"CourseSourceCollectionCollection","schema":{"tableName":"course_sources","ddl":"CREATE TABLE IF NOT EXISTS \\"course_sources\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"key\\" TEXT NOT NULL,\\n \\"name\\" TEXT NOT NULL,\\n \\"kind\\" TEXT DEFAULT 'adapter',\\n \\"adapter_key\\" TEXT,\\n \\"config\\" TEXT,\\n \\"sharing\\" TEXT DEFAULT 'private'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"key":{"type":"TEXT","notNull":true,"unique":false},"name":{"type":"TEXT","notNull":true,"unique":false},"kind":{"type":"TEXT","notNull":false,"unique":false,"default":"adapter"},"adapter_key":{"type":"TEXT","notNull":false,"unique":false},"config":{"type":"TEXT","notNull":false,"unique":false},"sharing":{"type":"TEXT","notNull":false,"unique":false,"default":"private"}},"indexes":[{"name":"course_sources_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"course_sources_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"98177eb3"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EnrollmentParentNote":{"name":"enrollmentparentnote","className":"EnrollmentParentNote","qualifiedName":"@happyvertical/smrt-education:EnrollmentParentNote","collection":"enrollmentparentnotes","description":"Private guardian annotations, separate from learning and assessment history.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/enrollment-notes.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"enrollmentId":{"type":"foreignKey","required":true,"related":"Enrollment","_meta":{"required":true}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"authorUserId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:User"},"authorLabel":{"type":"text","required":false},"text":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"tableName":"enrollment_parent_notes","conflictColumns":["tenant_id","enrollment_id","request_key"],"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"EnrollmentParentNote","collectionExportName":"EnrollmentParentNoteCollection","validationRules":[{"field":"enrollmentId","rule":"required","fieldType":"foreignKey"},{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"authorUserId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"enrollment_parent_notes","ddl":"CREATE TABLE IF NOT EXISTS \\"enrollment_parent_notes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"author_user_id\\" UUID NOT NULL,\\n \\"author_label\\" TEXT,\\n \\"text\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"author_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"author_label":{"type":"TEXT","notNull":false,"unique":false},"text":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"enrollment_parent_notes_tenant_id_enrollment_id_idx","columns":["tenant_id","enrollment_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"enrollment_parent_notes_slug_context_idx","columns":["slug","context"]},{"name":"enrollment_parent_notes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"enrollment_parent_notes_enrollment_id_idx","columns":["enrollment_id"]},{"name":"enrollment_parent_notes_learner_id_idx","columns":["learner_id"]},{"name":"enrollment_parent_notes_author_user_id_idx","columns":["author_user_id"]}],"version":"f8d2db23"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EnrollmentParentNoteCollection":{"name":"enrollmentparentnotecollection","className":"EnrollmentParentNoteCollection","qualifiedName":"@happyvertical/smrt-education:EnrollmentParentNoteCollection","collection":"enrollmentparentnotes","filePath":"/home/runner/work/smrt/smrt/packages/education/src/enrollment-notes.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"enrollment_parent_notes","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"EnrollmentParentNote","exportName":"EnrollmentParentNoteCollection","collectionExportName":"EnrollmentParentNoteCollectionCollection","schema":{"tableName":"enrollment_parent_notes","ddl":"CREATE TABLE IF NOT EXISTS \\"enrollment_parent_notes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"author_user_id\\" UUID NOT NULL,\\n \\"author_label\\" TEXT,\\n \\"text\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"author_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"author_label":{"type":"TEXT","notNull":false,"unique":false},"text":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"enrollment_parent_notes_tenant_id_enrollment_id_idx","columns":["tenant_id","enrollment_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"enrollment_parent_notes_slug_context_idx","columns":["slug","context"]},{"name":"enrollment_parent_notes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"enrollment_parent_notes_enrollment_id_idx","columns":["enrollment_id"]},{"name":"enrollment_parent_notes_learner_id_idx","columns":["learner_id"]},{"name":"enrollment_parent_notes_author_user_id_idx","columns":["author_user_id"]}],"version":"f8d2db23"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:FamilyIntake":{"name":"familyintake","className":"FamilyIntake","qualifiedName":"@happyvertical/smrt-education:FamilyIntake","collection":"familyintakes","description":"Family-owned receipt, independent of learner attribution and ingestion expiry.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/family-intake-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"itemId":{"type":"text","required":false},"actorUserId":{"type":"text","required":false},"ownerProfileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile"},"contentDigest":{"type":"text","required":false},"sourceJson":{"type":"text","required":false,"_meta":{}}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"family_intakes","conflictColumns":["tenant_id","item_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"FamilyIntake","collectionExportName":"FamilyIntakeCollection","validationRules":[],"schema":{"tableName":"family_intakes","ddl":"CREATE TABLE IF NOT EXISTS \\"family_intakes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"item_id\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"owner_profile_id\\" UUID,\\n \\"content_digest\\" TEXT,\\n \\"source_json\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"item_id":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"owner_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"content_digest":{"type":"TEXT","notNull":false,"unique":false},"source_json":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"family_intakes_tenant_id_item_id_idx","columns":["tenant_id","item_id"],"unique":true,"nullsNotDistinct":true},{"name":"family_intakes_slug_context_idx","columns":["slug","context"]},{"name":"family_intakes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"family_intakes_owner_profile_id_idx","columns":["owner_profile_id"]}],"version":"2577578b"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:FamilyIntakeCollection":{"name":"familyintakecollection","className":"FamilyIntakeCollection","qualifiedName":"@happyvertical/smrt-education:FamilyIntakeCollection","collection":"familyintakes","filePath":"/home/runner/work/smrt/smrt/packages/education/src/family-intake-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"family_intakes","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"FamilyIntake","exportName":"FamilyIntakeCollection","collectionExportName":"FamilyIntakeCollectionCollection","schema":{"tableName":"family_intakes","ddl":"CREATE TABLE IF NOT EXISTS \\"family_intakes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"item_id\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"owner_profile_id\\" UUID,\\n \\"content_digest\\" TEXT,\\n \\"source_json\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"item_id":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"owner_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"content_digest":{"type":"TEXT","notNull":false,"unique":false},"source_json":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"family_intakes_tenant_id_item_id_idx","columns":["tenant_id","item_id"],"unique":true,"nullsNotDistinct":true},{"name":"family_intakes_slug_context_idx","columns":["slug","context"]},{"name":"family_intakes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"family_intakes_owner_profile_id_idx","columns":["owner_profile_id"]}],"version":"2577578b"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:FamilyIntakeAsset":{"name":"familyintakeasset","className":"FamilyIntakeAsset","qualifiedName":"@happyvertical/smrt-education:FamilyIntakeAsset","collection":"familyintakeassets","description":"Sole family owner join; adoption borrows this exact immutable original.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/family-intake-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"intakeId":{"type":"foreignKey","required":true,"related":"FamilyIntake","_meta":{"required":true}},"assetId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-assets:Asset"},"name":{"type":"text","required":false},"mimeType":{"type":"text","required":false},"sha256":{"type":"text","required":false},"position":{"type":"integer","required":true,"default":0}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"family_intake_assets","conflictColumns":["tenant_id","intake_id","asset_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"FamilyIntakeAsset","collectionExportName":"FamilyIntakeAssetCollection","displayLabelField":"name","validationRules":[{"field":"intakeId","rule":"required","fieldType":"foreignKey"},{"field":"position","rule":"required","fieldType":"integer"}],"schema":{"tableName":"family_intake_assets","ddl":"CREATE TABLE IF NOT EXISTS \\"family_intake_assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"intake_id\\" UUID NOT NULL,\\n \\"asset_id\\" UUID,\\n \\"name\\" TEXT,\\n \\"mime_type\\" TEXT,\\n \\"sha256\\" TEXT,\\n \\"position\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"family_intakes","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"mime_type":{"type":"TEXT","notNull":false,"unique":false},"sha256":{"type":"TEXT","notNull":false,"unique":false},"position":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"family_intake_assets_tenant_id_intake_id_idx","columns":["tenant_id","intake_id","asset_id"],"unique":true,"nullsNotDistinct":true},{"name":"family_intake_assets_slug_context_idx","columns":["slug","context"]},{"name":"family_intake_assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"family_intake_assets_intake_id_idx","columns":["intake_id"]},{"name":"family_intake_assets_asset_id_idx","columns":["asset_id"]}],"version":"3811d126"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:FamilyIntakeAssetCollection":{"name":"familyintakeassetcollection","className":"FamilyIntakeAssetCollection","qualifiedName":"@happyvertical/smrt-education:FamilyIntakeAssetCollection","collection":"familyintakeassets","filePath":"/home/runner/work/smrt/smrt/packages/education/src/family-intake-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"family_intake_assets","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"FamilyIntakeAsset","exportName":"FamilyIntakeAssetCollection","collectionExportName":"FamilyIntakeAssetCollectionCollection","schema":{"tableName":"family_intake_assets","ddl":"CREATE TABLE IF NOT EXISTS \\"family_intake_assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"intake_id\\" UUID NOT NULL,\\n \\"asset_id\\" UUID,\\n \\"name\\" TEXT,\\n \\"mime_type\\" TEXT,\\n \\"sha256\\" TEXT,\\n \\"position\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"family_intakes","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"mime_type":{"type":"TEXT","notNull":false,"unique":false},"sha256":{"type":"TEXT","notNull":false,"unique":false},"position":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"family_intake_assets_tenant_id_intake_id_idx","columns":["tenant_id","intake_id","asset_id"],"unique":true,"nullsNotDistinct":true},{"name":"family_intake_assets_slug_context_idx","columns":["slug","context"]},{"name":"family_intake_assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"family_intake_assets_intake_id_idx","columns":["intake_id"]},{"name":"family_intake_assets_asset_id_idx","columns":["asset_id"]}],"version":"3811d126"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:FamilyIntakeDecision":{"name":"familyintakedecision","className":"FamilyIntakeDecision","qualifiedName":"@happyvertical/smrt-education:FamilyIntakeDecision","collection":"familyintakedecisions","description":"Append-only attribution/adoption audit; no marks or learning outcomes.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/family-intake-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"intakeId":{"type":"foreignKey","required":true,"related":"FamilyIntake","_meta":{"required":true}},"requestKey":{"type":"text","required":false},"sequence":{"type":"integer","required":true,"default":0},"actorUserId":{"type":"text","required":false},"bodyJson":{"type":"text","required":false,"_meta":{}}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"family_intake_decisions","conflictColumns":["tenant_id","intake_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"FamilyIntakeDecision","collectionExportName":"FamilyIntakeDecisionCollection","validationRules":[{"field":"intakeId","rule":"required","fieldType":"foreignKey"},{"field":"sequence","rule":"required","fieldType":"integer"}],"schema":{"tableName":"family_intake_decisions","ddl":"CREATE TABLE IF NOT EXISTS \\"family_intake_decisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"intake_id\\" UUID NOT NULL,\\n \\"request_key\\" TEXT,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 0,\\n \\"actor_user_id\\" TEXT,\\n \\"body_json\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"family_intakes","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"request_key":{"type":"TEXT","notNull":false,"unique":false},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"body_json":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"family_intake_decisions_tenant_id_intake_id_idx","columns":["tenant_id","intake_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"family_intake_decisions_slug_context_idx","columns":["slug","context"]},{"name":"family_intake_decisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"family_intake_decisions_intake_id_idx","columns":["intake_id"]}],"version":"08875c81"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:FamilyIntakeDecisionCollection":{"name":"familyintakedecisioncollection","className":"FamilyIntakeDecisionCollection","qualifiedName":"@happyvertical/smrt-education:FamilyIntakeDecisionCollection","collection":"familyintakedecisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/family-intake-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"family_intake_decisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"FamilyIntakeDecision","exportName":"FamilyIntakeDecisionCollection","collectionExportName":"FamilyIntakeDecisionCollectionCollection","schema":{"tableName":"family_intake_decisions","ddl":"CREATE TABLE IF NOT EXISTS \\"family_intake_decisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"intake_id\\" UUID NOT NULL,\\n \\"request_key\\" TEXT,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 0,\\n \\"actor_user_id\\" TEXT,\\n \\"body_json\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"family_intakes","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"request_key":{"type":"TEXT","notNull":false,"unique":false},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"body_json":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"family_intake_decisions_tenant_id_intake_id_idx","columns":["tenant_id","intake_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"family_intake_decisions_slug_context_idx","columns":["slug","context"]},{"name":"family_intake_decisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"family_intake_decisions_intake_id_idx","columns":["intake_id"]}],"version":"08875c81"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EducationGroup":{"name":"educationgroup","className":"EducationGroup","qualifiedName":"@happyvertical/smrt-education:EducationGroup","collection":"educationgroups","description":"Independent group tenant metadata; no family authority is implied.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"name":{"type":"text","required":false},"active":{"type":"boolean","required":true,"default":true},"creatorUserId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:User"},"creatorProfileId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-profiles:Profile"}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"education_groups","conflictColumns":["tenant_id"],"api":false,"mcp":false,"cli":false,"ai":{"callable":[]},"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"EducationGroup","collectionExportName":"EducationGroupCollection","displayLabelField":"name","validationRules":[{"field":"active","rule":"required","fieldType":"boolean"},{"field":"creatorUserId","rule":"required","fieldType":"crossPackageRef"},{"field":"creatorProfileId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"education_groups","ddl":"CREATE TABLE IF NOT EXISTS \\"education_groups\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"name\\" TEXT,\\n \\"active\\" BOOLEAN NOT NULL DEFAULT TRUE,\\n \\"creator_user_id\\" UUID NOT NULL,\\n \\"creator_profile_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"active":{"type":"BOOLEAN","notNull":true,"unique":false,"default":true},"creator_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"creator_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false}},"indexes":[{"name":"education_groups_tenant_id_idx","columns":["tenant_id"],"unique":true},{"name":"education_groups_slug_context_idx","columns":["slug","context"]},{"name":"education_groups_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"education_groups_creator_user_id_idx","columns":["creator_user_id"]},{"name":"education_groups_creator_profile_id_idx","columns":["creator_profile_id"]}],"version":"6e17e39b"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EducationGroupCollection":{"name":"educationgroupcollection","className":"EducationGroupCollection","qualifiedName":"@happyvertical/smrt-education:EducationGroupCollection","collection":"educationgroups","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"education_groups","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"EducationGroup","exportName":"EducationGroupCollection","collectionExportName":"EducationGroupCollectionCollection","schema":{"tableName":"education_groups","ddl":"CREATE TABLE IF NOT EXISTS \\"education_groups\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"name\\" TEXT,\\n \\"active\\" BOOLEAN NOT NULL DEFAULT TRUE,\\n \\"creator_user_id\\" UUID NOT NULL,\\n \\"creator_profile_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"active":{"type":"BOOLEAN","notNull":true,"unique":false,"default":true},"creator_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"creator_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false}},"indexes":[{"name":"education_groups_tenant_id_idx","columns":["tenant_id"],"unique":true},{"name":"education_groups_slug_context_idx","columns":["slug","context"]},{"name":"education_groups_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"education_groups_creator_user_id_idx","columns":["creator_user_id"]},{"name":"education_groups_creator_profile_id_idx","columns":["creator_profile_id"]}],"version":"6e17e39b"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GroupLearnerInvitation":{"name":"grouplearnerinvitation","className":"GroupLearnerInvitation","qualifiedName":"@happyvertical/smrt-education:GroupLearnerInvitation","collection":"grouplearnerinvitations","description":"Group-owned target selectors are opaque until the exact parent accepts.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"groupId":{"type":"foreignKey","required":true,"related":"EducationGroup","_meta":{"required":true,"onDelete":"RESTRICT"}},"familyTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant"},"learnerId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","required":true}},"invitedParentUserId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:User"},"creatorUserId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:User"},"expiresAt":{"type":"text","required":false},"status":{"type":"text","required":false,"default":"pending","enum":["pending","accepted","revoked","declined"]},"acceptedMembershipId":{"type":"foreignKey","required":false,"related":"GroupLearnerMembership","_meta":{"nullable":true,"onDelete":"RESTRICT"}},"acceptedPolicyDigest":{"type":"text","required":false}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"group_learner_invitations","api":false,"mcp":false,"cli":false,"ai":{"callable":[]},"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"GroupLearnerInvitation","collectionExportName":"GroupLearnerInvitationCollection","validationRules":[{"field":"groupId","rule":"required","fieldType":"foreignKey"},{"field":"familyTenantId","rule":"required","fieldType":"crossPackageRef"},{"field":"learnerId","rule":"required","fieldType":"text"},{"field":"invitedParentUserId","rule":"required","fieldType":"crossPackageRef"},{"field":"creatorUserId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"group_learner_invitations","ddl":"CREATE TABLE IF NOT EXISTS \\"group_learner_invitations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"group_id\\" UUID NOT NULL,\\n \\"family_tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"invited_parent_user_id\\" UUID NOT NULL,\\n \\"creator_user_id\\" UUID NOT NULL,\\n \\"expires_at\\" TEXT,\\n \\"status\\" TEXT DEFAULT 'pending',\\n \\"accepted_membership_id\\" UUID,\\n \\"accepted_policy_digest\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"group_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"education_groups","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"family_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"learner_id":{"type":"UUID","notNull":true,"unique":false},"invited_parent_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"creator_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"expires_at":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"pending"},"accepted_membership_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"group_learner_memberships","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"accepted_policy_digest":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"group_learner_invitations_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"group_learner_invitations_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"group_learner_invitations_group_id_idx","columns":["group_id"]},{"name":"group_learner_invitations_family_tenant_id_idx","columns":["family_tenant_id"]},{"name":"group_learner_invitations_invited_parent_user_id_idx","columns":["invited_parent_user_id"]},{"name":"group_learner_invitations_creator_user_id_idx","columns":["creator_user_id"]},{"name":"group_learner_invitations_accepted_membership_id_idx","columns":["accepted_membership_id"]}],"version":"fd61d2dd"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GroupLearnerInvitationCollection":{"name":"grouplearnerinvitationcollection","className":"GroupLearnerInvitationCollection","qualifiedName":"@happyvertical/smrt-education:GroupLearnerInvitationCollection","collection":"grouplearnerinvitations","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"group_learner_invitations","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"GroupLearnerInvitation","exportName":"GroupLearnerInvitationCollection","collectionExportName":"GroupLearnerInvitationCollectionCollection","schema":{"tableName":"group_learner_invitations","ddl":"CREATE TABLE IF NOT EXISTS \\"group_learner_invitations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"group_id\\" UUID NOT NULL,\\n \\"family_tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"invited_parent_user_id\\" UUID NOT NULL,\\n \\"creator_user_id\\" UUID NOT NULL,\\n \\"expires_at\\" TEXT,\\n \\"status\\" TEXT DEFAULT 'pending',\\n \\"accepted_membership_id\\" UUID,\\n \\"accepted_policy_digest\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"group_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"education_groups","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"family_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"learner_id":{"type":"UUID","notNull":true,"unique":false},"invited_parent_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"creator_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"expires_at":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"pending"},"accepted_membership_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"group_learner_memberships","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"accepted_policy_digest":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"group_learner_invitations_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"group_learner_invitations_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"group_learner_invitations_group_id_idx","columns":["group_id"]},{"name":"group_learner_invitations_family_tenant_id_idx","columns":["family_tenant_id"]},{"name":"group_learner_invitations_invited_parent_user_id_idx","columns":["invited_parent_user_id"]},{"name":"group_learner_invitations_creator_user_id_idx","columns":["creator_user_id"]},{"name":"group_learner_invitations_accepted_membership_id_idx","columns":["accepted_membership_id"]}],"version":"fd61d2dd"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GroupLearnerMembership":{"name":"grouplearnermembership","className":"GroupLearnerMembership","qualifiedName":"@happyvertical/smrt-education:GroupLearnerMembership","collection":"grouplearnermemberships","description":"Family-owned per-child consent edge, never a users membership.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"groupId":{"type":"foreignKey","required":true,"related":"EducationGroup","_meta":{"required":true,"onDelete":"RESTRICT"}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true,"onDelete":"RESTRICT"}},"consentParentUserId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:User"},"status":{"type":"text","required":false,"default":"active","enum":["active","revoked"]},"policyVersion":{"type":"integer","required":true,"default":1,"min":1,"_meta":{"min":1,"required":true}}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"group_learner_memberships","conflictColumns":["tenant_id","learner_id","group_id"],"api":false,"mcp":false,"cli":false,"ai":{"callable":[]},"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"GroupLearnerMembership","collectionExportName":"GroupLearnerMembershipCollection","validationRules":[{"field":"groupId","rule":"required","fieldType":"foreignKey"},{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"consentParentUserId","rule":"required","fieldType":"crossPackageRef"},{"field":"policyVersion","rule":"required","fieldType":"integer"},{"field":"policyVersion","rule":"min","value":1,"fieldType":"integer"}],"schema":{"tableName":"group_learner_memberships","ddl":"CREATE TABLE IF NOT EXISTS \\"group_learner_memberships\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"group_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"consent_parent_user_id\\" UUID NOT NULL,\\n \\"status\\" TEXT DEFAULT 'active',\\n \\"policy_version\\" INTEGER NOT NULL DEFAULT 1\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"group_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"education_groups","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"consent_parent_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"active"},"policy_version":{"type":"INTEGER","notNull":true,"unique":false,"default":1}},"indexes":[{"name":"group_learner_memberships_tenant_id_learner_id_idx","columns":["tenant_id","learner_id","group_id"],"unique":true},{"name":"group_learner_memberships_slug_context_idx","columns":["slug","context"]},{"name":"group_learner_memberships_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"group_learner_memberships_group_id_idx","columns":["group_id"]},{"name":"group_learner_memberships_learner_id_idx","columns":["learner_id"]},{"name":"group_learner_memberships_consent_parent_user_id_idx","columns":["consent_parent_user_id"]}],"version":"86b9feeb"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GroupLearnerMembershipCollection":{"name":"grouplearnermembershipcollection","className":"GroupLearnerMembershipCollection","qualifiedName":"@happyvertical/smrt-education:GroupLearnerMembershipCollection","collection":"grouplearnermemberships","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"group_learner_memberships","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"GroupLearnerMembership","exportName":"GroupLearnerMembershipCollection","collectionExportName":"GroupLearnerMembershipCollectionCollection","schema":{"tableName":"group_learner_memberships","ddl":"CREATE TABLE IF NOT EXISTS \\"group_learner_memberships\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"group_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"consent_parent_user_id\\" UUID NOT NULL,\\n \\"status\\" TEXT DEFAULT 'active',\\n \\"policy_version\\" INTEGER NOT NULL DEFAULT 1\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"group_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"education_groups","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"consent_parent_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"active"},"policy_version":{"type":"INTEGER","notNull":true,"unique":false,"default":1}},"indexes":[{"name":"group_learner_memberships_tenant_id_learner_id_idx","columns":["tenant_id","learner_id","group_id"],"unique":true},{"name":"group_learner_memberships_slug_context_idx","columns":["slug","context"]},{"name":"group_learner_memberships_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"group_learner_memberships_group_id_idx","columns":["group_id"]},{"name":"group_learner_memberships_learner_id_idx","columns":["learner_id"]},{"name":"group_learner_memberships_consent_parent_user_id_idx","columns":["consent_parent_user_id"]}],"version":"86b9feeb"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GroupSharingPolicy":{"name":"groupsharingpolicy","className":"GroupSharingPolicy","qualifiedName":"@happyvertical/smrt-education:GroupSharingPolicy","collection":"groupsharingpolicies","description":"Immutable explicit policy snapshot.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"membershipId":{"type":"foreignKey","required":true,"related":"GroupLearnerMembership","_meta":{"required":true,"onDelete":"RESTRICT"}},"version":{"type":"integer","required":true,"default":1,"min":1,"_meta":{"min":1,"required":true}},"schemaVersion":{"type":"integer","required":true,"default":1,"min":1,"max":1,"_meta":{"min":1,"max":1,"required":true}},"policyJson":{"type":"text","required":true,"_meta":{"required":true}},"actorUserId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:User"},"recordedAt":{"type":"text","required":false}},"methods":{"getPolicy":{"name":"getPolicy","async":false,"parameters":[],"returnType":"GroupSharingPolicyV1","isStatic":false,"isPublic":true},"setPolicy":{"name":"setPolicy","async":false,"parameters":[{"name":"value","type":"unknown","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"group_sharing_policies","conflictColumns":["tenant_id","membership_id","version"],"api":false,"mcp":false,"cli":false,"ai":{"callable":[]},"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"GroupSharingPolicy","collectionExportName":"GroupSharingPolicyCollection","validationRules":[{"field":"membershipId","rule":"required","fieldType":"foreignKey"},{"field":"version","rule":"required","fieldType":"integer"},{"field":"version","rule":"min","value":1,"fieldType":"integer"},{"field":"schemaVersion","rule":"required","fieldType":"integer"},{"field":"schemaVersion","rule":"min","value":1,"fieldType":"integer"},{"field":"schemaVersion","rule":"max","value":1,"fieldType":"integer"},{"field":"policyJson","rule":"required","fieldType":"text"},{"field":"actorUserId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"group_sharing_policies","ddl":"CREATE TABLE IF NOT EXISTS \\"group_sharing_policies\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"membership_id\\" UUID NOT NULL,\\n \\"version\\" INTEGER NOT NULL DEFAULT 1,\\n \\"schema_version\\" INTEGER NOT NULL DEFAULT 1,\\n \\"policy_json\\" TEXT NOT NULL,\\n \\"actor_user_id\\" UUID NOT NULL,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"membership_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"group_learner_memberships","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"version":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"schema_version":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"policy_json":{"type":"TEXT","notNull":true,"unique":false},"actor_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"group_sharing_policies_tenant_id_membership_id_idx","columns":["tenant_id","membership_id","version"],"unique":true},{"name":"group_sharing_policies_slug_context_idx","columns":["slug","context"]},{"name":"group_sharing_policies_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"group_sharing_policies_membership_id_idx","columns":["membership_id"]},{"name":"group_sharing_policies_actor_user_id_idx","columns":["actor_user_id"]}],"version":"40a8f170"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GroupSharingPolicyCollection":{"name":"groupsharingpolicycollection","className":"GroupSharingPolicyCollection","qualifiedName":"@happyvertical/smrt-education:GroupSharingPolicyCollection","collection":"groupsharingpolicies","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"group_sharing_policies","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"GroupSharingPolicy","exportName":"GroupSharingPolicyCollection","collectionExportName":"GroupSharingPolicyCollectionCollection","schema":{"tableName":"group_sharing_policies","ddl":"CREATE TABLE IF NOT EXISTS \\"group_sharing_policies\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"membership_id\\" UUID NOT NULL,\\n \\"version\\" INTEGER NOT NULL DEFAULT 1,\\n \\"schema_version\\" INTEGER NOT NULL DEFAULT 1,\\n \\"policy_json\\" TEXT NOT NULL,\\n \\"actor_user_id\\" UUID NOT NULL,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"membership_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"group_learner_memberships","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"version":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"schema_version":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"policy_json":{"type":"TEXT","notNull":true,"unique":false},"actor_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"group_sharing_policies_tenant_id_membership_id_idx","columns":["tenant_id","membership_id","version"],"unique":true},{"name":"group_sharing_policies_slug_context_idx","columns":["slug","context"]},{"name":"group_sharing_policies_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"group_sharing_policies_membership_id_idx","columns":["membership_id"]},{"name":"group_sharing_policies_actor_user_id_idx","columns":["actor_user_id"]}],"version":"40a8f170"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GroupRevisionComment":{"name":"grouprevisioncomment","className":"GroupRevisionComment","qualifiedName":"@happyvertical/smrt-education:GroupRevisionComment","collection":"grouprevisioncomments","description":"Attributed revision comment, separate from grading and evidence.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"membershipId":{"type":"foreignKey","required":true,"related":"GroupLearnerMembership","_meta":{"required":true,"onDelete":"RESTRICT"}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true,"onDelete":"RESTRICT"}},"activityId":{"type":"foreignKey","required":true,"related":"WorkbookActivity","_meta":{"required":true,"onDelete":"RESTRICT"}},"attemptId":{"type":"foreignKey","required":true,"related":"WorkbookAttempt","_meta":{"required":true,"onDelete":"RESTRICT"}},"revisionId":{"type":"foreignKey","required":true,"related":"WorkbookAssessmentRevision","_meta":{"required":true,"onDelete":"RESTRICT"}},"authorUserId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:User"},"authorProfileId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-profiles:Profile"},"body":{"type":"text","required":false},"recordedAt":{"type":"text","required":false},"childVisible":{"type":"boolean","required":true,"default":false},"visibilityActorUserId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-users:User","_meta":{"nullable":true}},"visibilityChangedAt":{"type":"datetime","required":false},"visibilityVersion":{"type":"integer","required":true,"default":0,"min":0,"_meta":{"min":0,"required":true}}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"group_revision_comments","api":false,"mcp":false,"cli":false,"ai":{"callable":[]},"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"GroupRevisionComment","collectionExportName":"GroupRevisionCommentCollection","validationRules":[{"field":"membershipId","rule":"required","fieldType":"foreignKey"},{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"activityId","rule":"required","fieldType":"foreignKey"},{"field":"attemptId","rule":"required","fieldType":"foreignKey"},{"field":"revisionId","rule":"required","fieldType":"foreignKey"},{"field":"authorUserId","rule":"required","fieldType":"crossPackageRef"},{"field":"authorProfileId","rule":"required","fieldType":"crossPackageRef"},{"field":"childVisible","rule":"required","fieldType":"boolean"},{"field":"visibilityVersion","rule":"required","fieldType":"integer"},{"field":"visibilityVersion","rule":"min","value":0,"fieldType":"integer"}],"schema":{"tableName":"group_revision_comments","ddl":"CREATE TABLE IF NOT EXISTS \\"group_revision_comments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"membership_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"activity_id\\" UUID NOT NULL,\\n \\"attempt_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"author_user_id\\" UUID NOT NULL,\\n \\"author_profile_id\\" UUID NOT NULL,\\n \\"body\\" TEXT,\\n \\"recorded_at\\" TEXT,\\n \\"child_visible\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"visibility_actor_user_id\\" UUID,\\n \\"visibility_changed_at\\" TIMESTAMP,\\n \\"visibility_version\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"membership_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"group_learner_memberships","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"activity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_activities","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"author_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"author_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"body":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false},"child_visible":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"visibility_actor_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"visibility_changed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"visibility_version":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"group_revision_comments_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"group_revision_comments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"group_revision_comments_membership_id_idx","columns":["membership_id"]},{"name":"group_revision_comments_learner_id_idx","columns":["learner_id"]},{"name":"group_revision_comments_activity_id_idx","columns":["activity_id"]},{"name":"group_revision_comments_attempt_id_idx","columns":["attempt_id"]},{"name":"group_revision_comments_revision_id_idx","columns":["revision_id"]},{"name":"group_revision_comments_author_user_id_idx","columns":["author_user_id"]},{"name":"group_revision_comments_author_profile_id_idx","columns":["author_profile_id"]},{"name":"group_revision_comments_visibility_actor_user_id_idx","columns":["visibility_actor_user_id"]}],"version":"720fccdb"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GroupRevisionCommentCollection":{"name":"grouprevisioncommentcollection","className":"GroupRevisionCommentCollection","qualifiedName":"@happyvertical/smrt-education:GroupRevisionCommentCollection","collection":"grouprevisioncomments","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"group_revision_comments","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"GroupRevisionComment","exportName":"GroupRevisionCommentCollection","collectionExportName":"GroupRevisionCommentCollectionCollection","schema":{"tableName":"group_revision_comments","ddl":"CREATE TABLE IF NOT EXISTS \\"group_revision_comments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"membership_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"activity_id\\" UUID NOT NULL,\\n \\"attempt_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"author_user_id\\" UUID NOT NULL,\\n \\"author_profile_id\\" UUID NOT NULL,\\n \\"body\\" TEXT,\\n \\"recorded_at\\" TEXT,\\n \\"child_visible\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"visibility_actor_user_id\\" UUID,\\n \\"visibility_changed_at\\" TIMESTAMP,\\n \\"visibility_version\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"membership_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"group_learner_memberships","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"activity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_activities","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"author_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"author_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"body":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false},"child_visible":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"visibility_actor_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"visibility_changed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"visibility_version":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"group_revision_comments_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"group_revision_comments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"group_revision_comments_membership_id_idx","columns":["membership_id"]},{"name":"group_revision_comments_learner_id_idx","columns":["learner_id"]},{"name":"group_revision_comments_activity_id_idx","columns":["activity_id"]},{"name":"group_revision_comments_attempt_id_idx","columns":["attempt_id"]},{"name":"group_revision_comments_revision_id_idx","columns":["revision_id"]},{"name":"group_revision_comments_author_user_id_idx","columns":["author_user_id"]},{"name":"group_revision_comments_author_profile_id_idx","columns":["author_profile_id"]},{"name":"group_revision_comments_visibility_actor_user_id_idx","columns":["visibility_actor_user_id"]}],"version":"720fccdb"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GroupLearnerRosterEntry":{"name":"grouplearnerrosterentry","className":"GroupLearnerRosterEntry","qualifiedName":"@happyvertical/smrt-education:GroupLearnerRosterEntry","collection":"grouplearnerrosterentries","description":"Group-owned opaque roster index; authoritative consent remains family-owned.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"groupId":{"type":"foreignKey","required":true,"related":"EducationGroup","_meta":{"required":true,"onDelete":"RESTRICT"}},"familyTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant"},"learnerId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","required":true}},"membershipId":{"type":"foreignKey","required":true,"related":"GroupLearnerMembership","_meta":{"required":true,"onDelete":"RESTRICT"}}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"group_learner_roster_entries","conflictColumns":["tenant_id","group_id","membership_id"],"api":false,"mcp":false,"cli":false,"ai":{"callable":[]},"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"GroupLearnerRosterEntry","collectionExportName":"GroupLearnerRosterEntryCollection","validationRules":[{"field":"groupId","rule":"required","fieldType":"foreignKey"},{"field":"familyTenantId","rule":"required","fieldType":"crossPackageRef"},{"field":"learnerId","rule":"required","fieldType":"text"},{"field":"membershipId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"group_learner_roster_entries","ddl":"CREATE TABLE IF NOT EXISTS \\"group_learner_roster_entries\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"group_id\\" UUID NOT NULL,\\n \\"family_tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"membership_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"group_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"education_groups","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"family_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"learner_id":{"type":"UUID","notNull":true,"unique":false},"membership_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"group_learner_memberships","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}}},"indexes":[{"name":"group_learner_roster_entries_tenant_id_group_id_idx","columns":["tenant_id","group_id","membership_id"],"unique":true},{"name":"group_learner_roster_entries_slug_context_idx","columns":["slug","context"]},{"name":"group_learner_roster_entries_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"group_learner_roster_entries_group_id_idx","columns":["group_id"]},{"name":"group_learner_roster_entries_family_tenant_id_idx","columns":["family_tenant_id"]},{"name":"group_learner_roster_entries_membership_id_idx","columns":["membership_id"]}],"version":"c6ebaeb2"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GroupLearnerRosterEntryCollection":{"name":"grouplearnerrosterentrycollection","className":"GroupLearnerRosterEntryCollection","qualifiedName":"@happyvertical/smrt-education:GroupLearnerRosterEntryCollection","collection":"grouplearnerrosterentries","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"group_learner_roster_entries","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"GroupLearnerRosterEntry","exportName":"GroupLearnerRosterEntryCollection","collectionExportName":"GroupLearnerRosterEntryCollectionCollection","schema":{"tableName":"group_learner_roster_entries","ddl":"CREATE TABLE IF NOT EXISTS \\"group_learner_roster_entries\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"group_id\\" UUID NOT NULL,\\n \\"family_tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"membership_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"group_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"education_groups","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"family_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"learner_id":{"type":"UUID","notNull":true,"unique":false},"membership_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"group_learner_memberships","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}}},"indexes":[{"name":"group_learner_roster_entries_tenant_id_group_id_idx","columns":["tenant_id","group_id","membership_id"],"unique":true},{"name":"group_learner_roster_entries_slug_context_idx","columns":["slug","context"]},{"name":"group_learner_roster_entries_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"group_learner_roster_entries_group_id_idx","columns":["group_id"]},{"name":"group_learner_roster_entries_family_tenant_id_idx","columns":["family_tenant_id"]},{"name":"group_learner_roster_entries_membership_id_idx","columns":["membership_id"]}],"version":"c6ebaeb2"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Learner":{"name":"learner","className":"Learner","qualifiedName":"@happyvertical/smrt-education:Learner","collection":"learners","description":"A learner is a real user/profile identity with active family membership.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/learners.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"userId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:User"},"profileId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-profiles:Profile"},"displayName":{"type":"text","required":false},"birthDate":{"type":"datetime","required":false},"level":{"type":"integer","required":true,"default":0},"settings":{"type":"text","required":false}},"methods":{"getSettings":{"name":"getSettings","async":false,"parameters":[],"returnType":"Record<string, unknown>","isStatic":false,"isPublic":true},"setSettings":{"name":"setSettings","async":false,"parameters":[{"name":"value","type":"Record<string, unknown>","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"Learner","collectionExportName":"LearnerCollection","validationRules":[{"field":"userId","rule":"required","fieldType":"crossPackageRef"},{"field":"profileId","rule":"required","fieldType":"crossPackageRef"},{"field":"level","rule":"required","fieldType":"integer"}],"schema":{"tableName":"learners","ddl":"CREATE TABLE IF NOT EXISTS \\"learners\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"user_id\\" UUID NOT NULL,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"display_name\\" TEXT,\\n \\"birth_date\\" TIMESTAMP,\\n \\"level\\" INTEGER NOT NULL DEFAULT 0,\\n \\"settings\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"display_name":{"type":"TEXT","notNull":false,"unique":false},"birth_date":{"type":"TIMESTAMP","notNull":false,"unique":false},"level":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"settings":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"learners_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"learners_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"learners_user_id_idx","columns":["user_id"]},{"name":"learners_profile_id_idx","columns":["profile_id"]}],"version":"ca9907b5"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Curriculum":{"name":"curriculum","className":"Curriculum","qualifiedName":"@happyvertical/smrt-education:Curriculum","collection":"curriculums","description":"A distinct plan retains its own enrollment history.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/learners.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"title":{"type":"text","required":true,"_meta":{"required":true}},"startsOn":{"type":"datetime","required":false},"endsOn":{"type":"datetime","required":false},"status":{"type":"text","required":false,"default":"planned","enum":["planned","active","completed","archived"]}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"tableName":"curricula","tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"Curriculum","collectionExportName":"CurriculumCollection","displayLabelField":"title","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"title","rule":"required","fieldType":"text"}],"schema":{"tableName":"curricula","ddl":"CREATE TABLE IF NOT EXISTS \\"curricula\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"title\\" TEXT NOT NULL,\\n \\"starts_on\\" TIMESTAMP,\\n \\"ends_on\\" TIMESTAMP,\\n \\"status\\" TEXT DEFAULT 'planned'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":true,"unique":false},"starts_on":{"type":"TIMESTAMP","notNull":false,"unique":false},"ends_on":{"type":"TIMESTAMP","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"planned"}},"indexes":[{"name":"curricula_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"curricula_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"curricula_learner_id_idx","columns":["learner_id"]}],"version":"b7e90cbd"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Enrollment":{"name":"enrollment","className":"Enrollment","qualifiedName":"@happyvertical/smrt-education:Enrollment","collection":"enrollments","description":"One course in one curriculum; a new curriculum means a new enrollment.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/learners.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"curriculumId":{"type":"foreignKey","required":true,"related":"Curriculum","_meta":{"required":true}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"status":{"type":"text","required":false,"default":"planned","enum":["planned","active","paused","completed","dropped"]},"startedAt":{"type":"datetime","required":false},"completedAt":{"type":"datetime","required":false},"targetMinutesPerWeek":{"type":"integer","required":true,"default":0},"sortOrder":{"type":"integer","required":true,"default":0}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"conflictColumns":["tenant_id","curriculum_id","course_id"],"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"Enrollment","collectionExportName":"EnrollmentCollection","validationRules":[{"field":"curriculumId","rule":"required","fieldType":"foreignKey"},{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"targetMinutesPerWeek","rule":"required","fieldType":"integer"},{"field":"sortOrder","rule":"required","fieldType":"integer"}],"schema":{"tableName":"enrollments","ddl":"CREATE TABLE IF NOT EXISTS \\"enrollments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"curriculum_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"status\\" TEXT DEFAULT 'planned',\\n \\"started_at\\" TIMESTAMP,\\n \\"completed_at\\" TIMESTAMP,\\n \\"target_minutes_per_week\\" INTEGER NOT NULL DEFAULT 0,\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"curriculum_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"curricula","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"planned"},"started_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"completed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"target_minutes_per_week":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"enrollments_tenant_id_curriculum_id_idx","columns":["tenant_id","curriculum_id","course_id"],"unique":true},{"name":"enrollments_slug_context_idx","columns":["slug","context"]},{"name":"enrollments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"enrollments_curriculum_id_idx","columns":["curriculum_id"]},{"name":"enrollments_learner_id_idx","columns":["learner_id"]},{"name":"enrollments_course_id_idx","columns":["course_id"]}],"version":"2a34b5ee"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LessonProgress":{"name":"lessonprogress","className":"LessonProgress","qualifiedName":"@happyvertical/smrt-education:LessonProgress","collection":"lessonprogresses","description":"Progress identity is enrollment + lesson, never learner + lesson.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/learners.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"enrollmentId":{"type":"foreignKey","required":true,"related":"Enrollment","_meta":{"required":true}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"lessonId":{"type":"foreignKey","required":true,"related":"Lesson","_meta":{"required":true}},"status":{"type":"text","required":false,"default":"not_started","enum":["not_started","in_progress","submitted","needs_review","complete","skipped"]},"startedAt":{"type":"datetime","required":false},"completedAt":{"type":"datetime","required":false},"timeSpentSeconds":{"type":"integer","required":true,"default":0},"attempts":{"type":"integer","required":true,"default":0},"bestScore":{"type":"decimal","required":false,"_meta":{"nullable":true}}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"tableName":"lesson_progress","conflictColumns":["tenant_id","enrollment_id","lesson_id"],"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"LessonProgress","collectionExportName":"LessonProgressCollection","validationRules":[{"field":"enrollmentId","rule":"required","fieldType":"foreignKey"},{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"lessonId","rule":"required","fieldType":"foreignKey"},{"field":"timeSpentSeconds","rule":"required","fieldType":"integer"},{"field":"attempts","rule":"required","fieldType":"integer"}],"schema":{"tableName":"lesson_progress","ddl":"CREATE TABLE IF NOT EXISTS \\"lesson_progress\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"lesson_id\\" UUID NOT NULL,\\n \\"status\\" TEXT DEFAULT 'not_started',\\n \\"started_at\\" TIMESTAMP,\\n \\"completed_at\\" TIMESTAMP,\\n \\"time_spent_seconds\\" INTEGER NOT NULL DEFAULT 0,\\n \\"attempts\\" INTEGER NOT NULL DEFAULT 0,\\n \\"best_score\\" REAL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"not_started"},"started_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"completed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"time_spent_seconds":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"attempts":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"best_score":{"type":"REAL","notNull":false,"unique":false}},"indexes":[{"name":"lesson_progress_tenant_id_enrollment_id_idx","columns":["tenant_id","enrollment_id","lesson_id"],"unique":true},{"name":"lesson_progress_slug_context_idx","columns":["slug","context"]},{"name":"lesson_progress_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lesson_progress_enrollment_id_idx","columns":["enrollment_id"]},{"name":"lesson_progress_learner_id_idx","columns":["learner_id"]},{"name":"lesson_progress_lesson_id_idx","columns":["lesson_id"]}],"version":"36704fbd"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LessonAsset":{"name":"lessonasset","className":"LessonAsset","qualifiedName":"@happyvertical/smrt-education:LessonAsset","collection":"lessonassets","filePath":"/home/runner/work/smrt/smrt/packages/education/src/lesson-assets.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"lessonId":{"type":"foreignKey","required":true,"related":"Lesson","_meta":{"required":true}},"assetId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-assets:Asset"},"relationship":{"type":"text","required":true,"default":"attachment","_meta":{"required":true},"enum":["printable","answer-key","video","attachment"]},"sortOrder":{"type":"integer","required":true,"default":0}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"lesson_assets","conflictColumns":["tenant_id","lesson_id","asset_id","relationship"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"optional"}},"extends":"SmrtObject","exportName":"LessonAsset","collectionExportName":"LessonAssetCollection","validationRules":[{"field":"lessonId","rule":"required","fieldType":"foreignKey"},{"field":"assetId","rule":"required","fieldType":"crossPackageRef"},{"field":"relationship","rule":"required","fieldType":"text"},{"field":"sortOrder","rule":"required","fieldType":"integer"}],"schema":{"tableName":"lesson_assets","ddl":"CREATE TABLE IF NOT EXISTS \\"lesson_assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"lesson_id\\" UUID NOT NULL,\\n \\"asset_id\\" UUID NOT NULL,\\n \\"relationship\\" TEXT NOT NULL DEFAULT 'attachment',\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"relationship":{"type":"TEXT","notNull":true,"unique":false,"default":"attachment"},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"lesson_assets_tenant_id_lesson_id_idx","columns":["tenant_id","lesson_id","asset_id","relationship"],"unique":true,"nullsNotDistinct":true},{"name":"lesson_assets_slug_context_idx","columns":["slug","context"]},{"name":"lesson_assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lesson_assets_lesson_id_idx","columns":["lesson_id"]},{"name":"lesson_assets_asset_id_idx","columns":["asset_id"]}],"version":"d96385c6"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LearningObjective":{"name":"learningobjective","className":"LearningObjective","qualifiedName":"@happyvertical/smrt-education:LearningObjective","collection":"learningobjectives","description":"Stable learning-objective identity: survives wording changes, variants and themes.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"externalKey":{"type":"text","required":false},"createdByUserId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"learning_objectives","conflictColumns":["tenant_id","external_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"LearningObjective","collectionExportName":"LearningObjectiveCollection","validationRules":[],"schema":{"tableName":"learning_objectives","ddl":"CREATE TABLE IF NOT EXISTS \\"learning_objectives\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"external_key\\" TEXT,\\n \\"created_by_user_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"external_key":{"type":"TEXT","notNull":false,"unique":false},"created_by_user_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"learning_objectives_tenant_id_external_key_idx","columns":["tenant_id","external_key"],"unique":true,"nullsNotDistinct":true},{"name":"learning_objectives_slug_context_idx","columns":["slug","context"]},{"name":"learning_objectives_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"8ad7d951"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LearningObjectiveCollection":{"name":"learningobjectivecollection","className":"LearningObjectiveCollection","qualifiedName":"@happyvertical/smrt-education:LearningObjectiveCollection","collection":"learningobjectives","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"learning_objectives","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"LearningObjective","exportName":"LearningObjectiveCollection","collectionExportName":"LearningObjectiveCollectionCollection","schema":{"tableName":"learning_objectives","ddl":"CREATE TABLE IF NOT EXISTS \\"learning_objectives\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"external_key\\" TEXT,\\n \\"created_by_user_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"external_key":{"type":"TEXT","notNull":false,"unique":false},"created_by_user_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"learning_objectives_tenant_id_external_key_idx","columns":["tenant_id","external_key"],"unique":true,"nullsNotDistinct":true},{"name":"learning_objectives_slug_context_idx","columns":["slug","context"]},{"name":"learning_objectives_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"8ad7d951"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LearningObjectiveRevision":{"name":"learningobjectiverevision","className":"LearningObjectiveRevision","qualifiedName":"@happyvertical/smrt-education:LearningObjectiveRevision","collection":"learningobjectiverevisions","description":"Append-only objective wording; the highest sequence is the head.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"objectiveId":{"type":"foreignKey","required":true,"related":"LearningObjective","_meta":{"required":true}},"parentRevisionId":{"type":"foreignKey","required":false,"related":"LearningObjectiveRevision","_meta":{"nullable":true}},"sequence":{"type":"integer","required":true,"default":1},"statement":{"type":"text","required":false,"_meta":{}},"conceptIdsJson":{"type":"text","required":false,"_meta":{}},"subject":{"type":"text","required":false},"levelMin":{"type":"integer","required":true,"default":0},"levelMax":{"type":"integer","required":true,"default":0},"provenance":{"type":"text","required":false},"authorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"payloadDigest":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"learning_objective_revisions","conflictColumns":["tenant_id","objective_id","request_key"],"indexes":[{"name":"learning_objective_revisions_sequence_unique","columns":["tenantId","objectiveId","sequence"],"unique":true}],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"LearningObjectiveRevision","collectionExportName":"LearningObjectiveRevisionCollection","validationRules":[{"field":"objectiveId","rule":"required","fieldType":"foreignKey"},{"field":"sequence","rule":"required","fieldType":"integer"},{"field":"levelMin","rule":"required","fieldType":"integer"},{"field":"levelMax","rule":"required","fieldType":"integer"}],"schema":{"tableName":"learning_objective_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"learning_objective_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"objective_id\\" UUID NOT NULL,\\n \\"parent_revision_id\\" UUID,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"statement\\" TEXT,\\n \\"concept_ids_json\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"level_min\\" INTEGER NOT NULL DEFAULT 0,\\n \\"level_max\\" INTEGER NOT NULL DEFAULT 0,\\n \\"provenance\\" TEXT,\\n \\"author_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"objective_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learning_objectives","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"parent_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"learning_objective_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"statement":{"type":"TEXT","notNull":false,"unique":false},"concept_ids_json":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"level_min":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"level_max":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"provenance":{"type":"TEXT","notNull":false,"unique":false},"author_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"learning_objective_revisions_tenant_id_objective_id_idx","columns":["tenant_id","objective_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"learning_objective_revisions_slug_context_idx","columns":["slug","context"]},{"name":"learning_objective_revisions_sequence_unique","columns":["tenant_id","objective_id","sequence"],"unique":true},{"name":"learning_objective_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"learning_objective_revisions_objective_id_idx","columns":["objective_id"]},{"name":"learning_objective_revisions_parent_revision_id_idx","columns":["parent_revision_id"]}],"version":"2b12d65f"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LearningObjectiveRevisionCollection":{"name":"learningobjectiverevisioncollection","className":"LearningObjectiveRevisionCollection","qualifiedName":"@happyvertical/smrt-education:LearningObjectiveRevisionCollection","collection":"learningobjectiverevisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"learning_objective_revisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"LearningObjectiveRevision","exportName":"LearningObjectiveRevisionCollection","collectionExportName":"LearningObjectiveRevisionCollectionCollection","schema":{"tableName":"learning_objective_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"learning_objective_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"objective_id\\" UUID NOT NULL,\\n \\"parent_revision_id\\" UUID,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"statement\\" TEXT,\\n \\"concept_ids_json\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"level_min\\" INTEGER NOT NULL DEFAULT 0,\\n \\"level_max\\" INTEGER NOT NULL DEFAULT 0,\\n \\"provenance\\" TEXT,\\n \\"author_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"objective_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learning_objectives","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"parent_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"learning_objective_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"statement":{"type":"TEXT","notNull":false,"unique":false},"concept_ids_json":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"level_min":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"level_max":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"provenance":{"type":"TEXT","notNull":false,"unique":false},"author_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"learning_objective_revisions_tenant_id_objective_id_idx","columns":["tenant_id","objective_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"learning_objective_revisions_slug_context_idx","columns":["slug","context"]},{"name":"learning_objective_revisions_sequence_unique","columns":["tenant_id","objective_id","sequence"],"unique":true},{"name":"learning_objective_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"learning_objective_revisions_objective_id_idx","columns":["objective_id"]},{"name":"learning_objective_revisions_parent_revision_id_idx","columns":["parent_revision_id"]}],"version":"2b12d65f"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Question":{"name":"question","className":"Question","qualifiedName":"@happyvertical/smrt-education:Question","collection":"questions","description":"Stable question identity. Content lives only in immutable revisions.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":false,"related":"Course","_meta":{"nullable":true}},"createdByUserId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"questions","conflictColumns":["tenant_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"Question","collectionExportName":"QuestionCollection","validationRules":[],"schema":{"tableName":"questions","ddl":"CREATE TABLE IF NOT EXISTS \\"questions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID,\\n \\"created_by_user_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"created_by_user_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"questions_tenant_id_request_key_idx","columns":["tenant_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"questions_slug_context_idx","columns":["slug","context"]},{"name":"questions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"questions_course_id_idx","columns":["course_id"]}],"version":"7f403539"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:QuestionCollection":{"name":"questioncollection","className":"QuestionCollection","qualifiedName":"@happyvertical/smrt-education:QuestionCollection","collection":"questions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"questions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Question","exportName":"QuestionCollection","collectionExportName":"QuestionCollectionCollection","schema":{"tableName":"questions","ddl":"CREATE TABLE IF NOT EXISTS \\"questions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID,\\n \\"created_by_user_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"created_by_user_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"questions_tenant_id_request_key_idx","columns":["tenant_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"questions_slug_context_idx","columns":["slug","context"]},{"name":"questions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"questions_course_id_idx","columns":["course_id"]}],"version":"7f403539"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:QuestionRevision":{"name":"questionrevision","className":"QuestionRevision","qualifiedName":"@happyvertical/smrt-education:QuestionRevision","collection":"questionrevisions","description":"Immutable question snapshot. A missing answer key or rubric is stored as NULL and never as an empty object, zero or an inferred value.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"questionId":{"type":"foreignKey","required":true,"related":"Question","_meta":{"required":true}},"parentRevisionId":{"type":"foreignKey","required":false,"related":"QuestionRevision","_meta":{"nullable":true}},"sequence":{"type":"integer","required":true,"default":1},"prompt":{"type":"text","required":false,"_meta":{}},"responseType":{"type":"text","required":false},"choicesJson":{"type":"text","required":false,"_meta":{}},"subpartsJson":{"type":"text","required":false,"_meta":{}},"mediaJson":{"type":"text","required":false,"_meta":{}},"objectiveIdsJson":{"type":"text","required":false,"_meta":{}},"conceptIdsJson":{"type":"text","required":false,"_meta":{}},"answerKeyJson":{"type":"text","required":false,"_meta":{"nullable":true}},"rubricJson":{"type":"text","required":false,"_meta":{"nullable":true}},"pointsPossible":{"type":"decimal","required":false,"_meta":{"nullable":true}},"provenance":{"type":"text","required":false},"fieldProvenanceJson":{"type":"text","required":false,"_meta":{}},"authorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"payloadDigest":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"question_revisions","conflictColumns":["tenant_id","question_id","request_key"],"indexes":[{"name":"question_revisions_sequence_unique","columns":["tenantId","questionId","sequence"],"unique":true}],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"QuestionRevision","collectionExportName":"QuestionRevisionCollection","validationRules":[{"field":"questionId","rule":"required","fieldType":"foreignKey"},{"field":"sequence","rule":"required","fieldType":"integer"}],"schema":{"tableName":"question_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"question_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"question_id\\" UUID NOT NULL,\\n \\"parent_revision_id\\" UUID,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"prompt\\" TEXT,\\n \\"response_type\\" TEXT,\\n \\"choices_json\\" TEXT,\\n \\"subparts_json\\" TEXT,\\n \\"media_json\\" TEXT,\\n \\"objective_ids_json\\" TEXT,\\n \\"concept_ids_json\\" TEXT,\\n \\"answer_key_json\\" TEXT,\\n \\"rubric_json\\" TEXT,\\n \\"points_possible\\" REAL,\\n \\"provenance\\" TEXT,\\n \\"field_provenance_json\\" TEXT,\\n \\"author_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"question_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"questions","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"parent_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"question_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"prompt":{"type":"TEXT","notNull":false,"unique":false},"response_type":{"type":"TEXT","notNull":false,"unique":false},"choices_json":{"type":"TEXT","notNull":false,"unique":false},"subparts_json":{"type":"TEXT","notNull":false,"unique":false},"media_json":{"type":"TEXT","notNull":false,"unique":false},"objective_ids_json":{"type":"TEXT","notNull":false,"unique":false},"concept_ids_json":{"type":"TEXT","notNull":false,"unique":false},"answer_key_json":{"type":"TEXT","notNull":false,"unique":false},"rubric_json":{"type":"TEXT","notNull":false,"unique":false},"points_possible":{"type":"REAL","notNull":false,"unique":false},"provenance":{"type":"TEXT","notNull":false,"unique":false},"field_provenance_json":{"type":"TEXT","notNull":false,"unique":false},"author_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"question_revisions_tenant_id_question_id_idx","columns":["tenant_id","question_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"question_revisions_slug_context_idx","columns":["slug","context"]},{"name":"question_revisions_sequence_unique","columns":["tenant_id","question_id","sequence"],"unique":true},{"name":"question_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"question_revisions_question_id_idx","columns":["question_id"]},{"name":"question_revisions_parent_revision_id_idx","columns":["parent_revision_id"]}],"version":"d35db3ee"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:QuestionRevisionCollection":{"name":"questionrevisioncollection","className":"QuestionRevisionCollection","qualifiedName":"@happyvertical/smrt-education:QuestionRevisionCollection","collection":"questionrevisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"question_revisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"QuestionRevision","exportName":"QuestionRevisionCollection","collectionExportName":"QuestionRevisionCollectionCollection","schema":{"tableName":"question_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"question_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"question_id\\" UUID NOT NULL,\\n \\"parent_revision_id\\" UUID,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"prompt\\" TEXT,\\n \\"response_type\\" TEXT,\\n \\"choices_json\\" TEXT,\\n \\"subparts_json\\" TEXT,\\n \\"media_json\\" TEXT,\\n \\"objective_ids_json\\" TEXT,\\n \\"concept_ids_json\\" TEXT,\\n \\"answer_key_json\\" TEXT,\\n \\"rubric_json\\" TEXT,\\n \\"points_possible\\" REAL,\\n \\"provenance\\" TEXT,\\n \\"field_provenance_json\\" TEXT,\\n \\"author_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"question_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"questions","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"parent_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"question_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"prompt":{"type":"TEXT","notNull":false,"unique":false},"response_type":{"type":"TEXT","notNull":false,"unique":false},"choices_json":{"type":"TEXT","notNull":false,"unique":false},"subparts_json":{"type":"TEXT","notNull":false,"unique":false},"media_json":{"type":"TEXT","notNull":false,"unique":false},"objective_ids_json":{"type":"TEXT","notNull":false,"unique":false},"concept_ids_json":{"type":"TEXT","notNull":false,"unique":false},"answer_key_json":{"type":"TEXT","notNull":false,"unique":false},"rubric_json":{"type":"TEXT","notNull":false,"unique":false},"points_possible":{"type":"REAL","notNull":false,"unique":false},"provenance":{"type":"TEXT","notNull":false,"unique":false},"field_provenance_json":{"type":"TEXT","notNull":false,"unique":false},"author_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"question_revisions_tenant_id_question_id_idx","columns":["tenant_id","question_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"question_revisions_slug_context_idx","columns":["slug","context"]},{"name":"question_revisions_sequence_unique","columns":["tenant_id","question_id","sequence"],"unique":true},{"name":"question_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"question_revisions_question_id_idx","columns":["question_id"]},{"name":"question_revisions_parent_revision_id_idx","columns":["parent_revision_id"]}],"version":"d35db3ee"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:QuestionResponse":{"name":"questionresponse","className":"QuestionResponse","qualifiedName":"@happyvertical/smrt-education:QuestionResponse","collection":"questionresponses","description":"Append-only learner response to one exact question revision. A correction is a new row naming its predecessor; a response never rewrites question content.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"enrollmentId":{"type":"foreignKey","required":true,"related":"Enrollment","_meta":{"required":true}},"questionRevisionId":{"type":"foreignKey","required":true,"related":"QuestionRevision","_meta":{"required":true}},"lessonRevisionId":{"type":"foreignKey","required":false,"related":"LessonRevision","_meta":{"nullable":true}},"worksheetVersionId":{"type":"text","required":false},"submissionId":{"type":"foreignKey","required":false,"related":"Submission","_meta":{"nullable":true}},"previousResponseId":{"type":"foreignKey","required":false,"related":"QuestionResponse","_meta":{"nullable":true}},"episodeId":{"type":"text","required":false},"completionMode":{"type":"text","required":false},"assistance":{"type":"text","required":false},"responseJson":{"type":"text","required":false,"_meta":{}},"attemptNumber":{"type":"integer","required":true,"default":1},"actorUserId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"payloadDigest":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"question_responses","conflictColumns":["tenant_id","learner_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"QuestionResponse","collectionExportName":"QuestionResponseCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"enrollmentId","rule":"required","fieldType":"foreignKey"},{"field":"questionRevisionId","rule":"required","fieldType":"foreignKey"},{"field":"attemptNumber","rule":"required","fieldType":"integer"}],"schema":{"tableName":"question_responses","ddl":"CREATE TABLE IF NOT EXISTS \\"question_responses\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"question_revision_id\\" UUID NOT NULL,\\n \\"lesson_revision_id\\" UUID,\\n \\"worksheet_version_id\\" TEXT,\\n \\"submission_id\\" UUID,\\n \\"previous_response_id\\" UUID,\\n \\"episode_id\\" TEXT,\\n \\"completion_mode\\" TEXT,\\n \\"assistance\\" TEXT,\\n \\"response_json\\" TEXT,\\n \\"attempt_number\\" INTEGER NOT NULL DEFAULT 1,\\n \\"actor_user_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"question_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"question_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"lesson_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"worksheet_version_id":{"type":"TEXT","notNull":false,"unique":false},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"previous_response_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"question_responses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"episode_id":{"type":"TEXT","notNull":false,"unique":false},"completion_mode":{"type":"TEXT","notNull":false,"unique":false},"assistance":{"type":"TEXT","notNull":false,"unique":false},"response_json":{"type":"TEXT","notNull":false,"unique":false},"attempt_number":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"question_responses_tenant_id_learner_id_idx","columns":["tenant_id","learner_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"question_responses_slug_context_idx","columns":["slug","context"]},{"name":"question_responses_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"question_responses_learner_id_idx","columns":["learner_id"]},{"name":"question_responses_enrollment_id_idx","columns":["enrollment_id"]},{"name":"question_responses_question_revision_id_idx","columns":["question_revision_id"]},{"name":"question_responses_lesson_revision_id_idx","columns":["lesson_revision_id"]},{"name":"question_responses_submission_id_idx","columns":["submission_id"]},{"name":"question_responses_previous_response_id_idx","columns":["previous_response_id"]}],"version":"c0f1fdfa"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:QuestionResponseCollection":{"name":"questionresponsecollection","className":"QuestionResponseCollection","qualifiedName":"@happyvertical/smrt-education:QuestionResponseCollection","collection":"questionresponses","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"question_responses","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"QuestionResponse","exportName":"QuestionResponseCollection","collectionExportName":"QuestionResponseCollectionCollection","schema":{"tableName":"question_responses","ddl":"CREATE TABLE IF NOT EXISTS \\"question_responses\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"question_revision_id\\" UUID NOT NULL,\\n \\"lesson_revision_id\\" UUID,\\n \\"worksheet_version_id\\" TEXT,\\n \\"submission_id\\" UUID,\\n \\"previous_response_id\\" UUID,\\n \\"episode_id\\" TEXT,\\n \\"completion_mode\\" TEXT,\\n \\"assistance\\" TEXT,\\n \\"response_json\\" TEXT,\\n \\"attempt_number\\" INTEGER NOT NULL DEFAULT 1,\\n \\"actor_user_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"question_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"question_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"lesson_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"worksheet_version_id":{"type":"TEXT","notNull":false,"unique":false},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"previous_response_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"question_responses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"episode_id":{"type":"TEXT","notNull":false,"unique":false},"completion_mode":{"type":"TEXT","notNull":false,"unique":false},"assistance":{"type":"TEXT","notNull":false,"unique":false},"response_json":{"type":"TEXT","notNull":false,"unique":false},"attempt_number":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"question_responses_tenant_id_learner_id_idx","columns":["tenant_id","learner_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"question_responses_slug_context_idx","columns":["slug","context"]},{"name":"question_responses_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"question_responses_learner_id_idx","columns":["learner_id"]},{"name":"question_responses_enrollment_id_idx","columns":["enrollment_id"]},{"name":"question_responses_question_revision_id_idx","columns":["question_revision_id"]},{"name":"question_responses_lesson_revision_id_idx","columns":["lesson_revision_id"]},{"name":"question_responses_submission_id_idx","columns":["submission_id"]},{"name":"question_responses_previous_response_id_idx","columns":["previous_response_id"]}],"version":"c0f1fdfa"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GeneratedPrintable":{"name":"generatedprintable","className":"GeneratedPrintable","qualifiedName":"@happyvertical/smrt-education:GeneratedPrintable","collection":"generatedprintables","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.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"lessonId":{"type":"foreignKey","required":true,"related":"Lesson","_meta":{"required":true}},"worksheetVersionId":{"type":"text","required":false},"audience":{"type":"text","required":false,"default":"learner","enum":["learner","guardian"]},"assetId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-assets:Asset"},"lessonRevisionId":{"type":"text","required":false},"generatedByUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"generated_printables","conflictColumns":["tenant_id","lesson_id","worksheet_version_id","audience"],"indexes":[{"name":"generated_printables_identity_unique","columns":["tenantId","lessonId","worksheetVersionId","audience"],"unique":true}],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"GeneratedPrintable","collectionExportName":"GeneratedPrintableCollection","validationRules":[{"field":"lessonId","rule":"required","fieldType":"foreignKey"},{"field":"assetId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"generated_printables","ddl":"CREATE TABLE IF NOT EXISTS \\"generated_printables\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"lesson_id\\" UUID NOT NULL,\\n \\"worksheet_version_id\\" TEXT,\\n \\"audience\\" TEXT DEFAULT 'learner',\\n \\"asset_id\\" UUID NOT NULL,\\n \\"lesson_revision_id\\" TEXT,\\n \\"generated_by_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"worksheet_version_id":{"type":"TEXT","notNull":false,"unique":false},"audience":{"type":"TEXT","notNull":false,"unique":false,"default":"learner"},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"lesson_revision_id":{"type":"TEXT","notNull":false,"unique":false},"generated_by_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"generated_printables_tenant_id_lesson_id_idx","columns":["tenant_id","lesson_id","worksheet_version_id","audience"],"unique":true,"nullsNotDistinct":true},{"name":"generated_printables_slug_context_idx","columns":["slug","context"]},{"name":"generated_printables_identity_unique","columns":["tenant_id","lesson_id","worksheet_version_id","audience"],"unique":true},{"name":"generated_printables_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"generated_printables_lesson_id_idx","columns":["lesson_id"]},{"name":"generated_printables_asset_id_idx","columns":["asset_id"]}],"version":"e4ccc925"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GeneratedPrintableCollection":{"name":"generatedprintablecollection","className":"GeneratedPrintableCollection","qualifiedName":"@happyvertical/smrt-education:GeneratedPrintableCollection","collection":"generatedprintables","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"generated_printables","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"GeneratedPrintable","exportName":"GeneratedPrintableCollection","collectionExportName":"GeneratedPrintableCollectionCollection","schema":{"tableName":"generated_printables","ddl":"CREATE TABLE IF NOT EXISTS \\"generated_printables\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"lesson_id\\" UUID NOT NULL,\\n \\"worksheet_version_id\\" TEXT,\\n \\"audience\\" TEXT DEFAULT 'learner',\\n \\"asset_id\\" UUID NOT NULL,\\n \\"lesson_revision_id\\" TEXT,\\n \\"generated_by_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"worksheet_version_id":{"type":"TEXT","notNull":false,"unique":false},"audience":{"type":"TEXT","notNull":false,"unique":false,"default":"learner"},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"lesson_revision_id":{"type":"TEXT","notNull":false,"unique":false},"generated_by_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"generated_printables_tenant_id_lesson_id_idx","columns":["tenant_id","lesson_id","worksheet_version_id","audience"],"unique":true,"nullsNotDistinct":true},{"name":"generated_printables_slug_context_idx","columns":["slug","context"]},{"name":"generated_printables_identity_unique","columns":["tenant_id","lesson_id","worksheet_version_id","audience"],"unique":true},{"name":"generated_printables_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"generated_printables_lesson_id_idx","columns":["lesson_id"]},{"name":"generated_printables_asset_id_idx","columns":["asset_id"]}],"version":"e4ccc925"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Submission":{"name":"submission","className":"Submission","qualifiedName":"@happyvertical/smrt-education:Submission","collection":"submissions","description":"Evidence that a learner completed one progress item.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/submissions.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"lessonId":{"type":"foreignKey","required":true,"related":"Lesson","_meta":{"required":true}},"progressId":{"type":"foreignKey","required":true,"related":"LessonProgress","_meta":{"required":true}},"submittedAt":{"type":"text","required":false},"status":{"type":"text","required":false,"default":"captured","enum":["captured","extracting","needs_review","graded","rejected"]},"notes":{"type":"text","required":false},"captureKey":{"type":"text","required":false},"captureDigest":{"type":"text","required":false},"kind":{"type":"text","required":true,"default":"completed_work","_meta":{"required":true},"enum":["blank_reference","completed_work"]},"previousSubmissionId":{"type":"foreignKey","required":false,"related":"Submission","_meta":{"nullable":true}},"intakeItemId":{"type":"text","required":false,"_meta":{"nullable":true}}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"Submission","collectionExportName":"SubmissionCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"lessonId","rule":"required","fieldType":"foreignKey"},{"field":"progressId","rule":"required","fieldType":"foreignKey"},{"field":"kind","rule":"required","fieldType":"text"}],"schema":{"tableName":"submissions","ddl":"CREATE TABLE IF NOT EXISTS \\"submissions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"learner_id\\" UUID,\\n \\"lesson_id\\" UUID,\\n \\"progress_id\\" UUID,\\n \\"submitted_at\\" TEXT,\\n \\"status\\" TEXT DEFAULT 'captured',\\n \\"notes\\" TEXT,\\n \\"capture_key\\" TEXT,\\n \\"capture_digest\\" TEXT,\\n \\"kind\\" TEXT DEFAULT 'completed_work',\\n \\"previous_submission_id\\" UUID,\\n \\"intake_item_id\\" TEXT,\\n \\"page_count\\" INTEGER DEFAULT 0,\\n \\"ocr_text\\" TEXT,\\n \\"extracted\\" TEXT,\\n \\"reported_by\\" TEXT DEFAULT 'learner',\\n \\"evidence_url\\" TEXT,\\n \\"reported_score\\" REAL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"progress_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lesson_progress","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submitted_at":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false,"default":"captured"},"notes":{"type":"TEXT","notNull":false},"capture_key":{"type":"TEXT","notNull":false},"capture_digest":{"type":"TEXT","notNull":false},"kind":{"type":"TEXT","notNull":false,"default":"completed_work"},"previous_submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_item_id":{"type":"TEXT","notNull":false},"page_count":{"type":"INTEGER","notNull":false,"default":0},"ocr_text":{"type":"TEXT","notNull":false},"extracted":{"type":"TEXT","notNull":false},"reported_by":{"type":"TEXT","notNull":false,"default":"learner"},"evidence_url":{"type":"TEXT","notNull":false},"reported_score":{"type":"REAL","notNull":false}},"indexes":[{"name":"submissions_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"submissions_meta_type_idx","columns":["_meta_type"]},{"name":"submissions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submissions_learner_id_idx","columns":["learner_id"]},{"name":"submissions_lesson_id_idx","columns":["lesson_id"]},{"name":"submissions_progress_id_idx","columns":["progress_id"]},{"name":"submissions_previous_submission_id_idx","columns":["previous_submission_id"]}],"version":"27a21ab4"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:SubmissionIntakeBinding":{"name":"submissionintakebinding","className":"SubmissionIntakeBinding","qualifiedName":"@happyvertical/smrt-education:SubmissionIntakeBinding","collection":"submissionintakebindings","description":"Durable tenant/item claim for trusted ingestion receipts. This separate table keeps ordinary uploads (which have no intake item) out of the uniqueness key.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/submissions.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"intakeItemId":{"type":"text","required":true,"_meta":{"required":true}},"submissionId":{"type":"foreignKey","required":true,"related":"Submission","_meta":{"required":true}}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"submission_intake_bindings","api":false,"mcp":false,"cli":false,"conflictColumns":["tenant_id","intake_item_id"],"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"SubmissionIntakeBinding","collectionExportName":"SubmissionIntakeBindingCollection","validationRules":[{"field":"intakeItemId","rule":"required","fieldType":"text"},{"field":"submissionId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"submission_intake_bindings","ddl":"CREATE TABLE IF NOT EXISTS \\"submission_intake_bindings\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"intake_item_id\\" TEXT NOT NULL,\\n \\"submission_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"intake_item_id":{"type":"TEXT","notNull":true,"unique":false},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"submission_intake_bindings_tenant_id_intake_item_id_idx","columns":["tenant_id","intake_item_id"],"unique":true},{"name":"submission_intake_bindings_slug_context_idx","columns":["slug","context"]},{"name":"submission_intake_bindings_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submission_intake_bindings_submission_id_idx","columns":["submission_id"]}],"version":"7102c909"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:ScannedSubmission":{"name":"scannedsubmission","className":"ScannedSubmission","qualifiedName":"@happyvertical/smrt-education:ScannedSubmission","collection":"submissions","description":"Photos or scans of work submitted for review.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/submissions.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"lessonId":{"type":"foreignKey","required":true,"related":"Lesson","_meta":{"required":true}},"progressId":{"type":"foreignKey","required":true,"related":"LessonProgress","_meta":{"required":true}},"submittedAt":{"type":"text","required":false},"status":{"type":"text","required":false,"default":"captured","enum":["captured","extracting","needs_review","graded","rejected"]},"notes":{"type":"text","required":false},"captureKey":{"type":"text","required":false},"captureDigest":{"type":"text","required":false},"kind":{"type":"text","required":true,"default":"completed_work","_meta":{"required":true},"enum":["blank_reference","completed_work"]},"previousSubmissionId":{"type":"foreignKey","required":false,"related":"Submission","_meta":{"nullable":true}},"intakeItemId":{"type":"text","required":false,"_meta":{"nullable":true}},"pageCount":{"type":"integer","required":true,"default":0},"ocrText":{"type":"text","required":false},"extracted":{"type":"text","required":false}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"getExtracted":{"name":"getExtracted","async":false,"parameters":[],"returnType":"Record<string, unknown>","isStatic":false,"isPublic":true},"setExtracted":{"name":"setExtracted","async":false,"parameters":[{"name":"value","type":"Record<string, unknown>","optional":false}],"returnType":"void","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"submissions","api":false,"mcp":false,"cli":false,"tableStrategy":"sti"},"extends":"Submission","exportName":"ScannedSubmission","collectionExportName":"ScannedSubmissionCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"lessonId","rule":"required","fieldType":"foreignKey"},{"field":"progressId","rule":"required","fieldType":"foreignKey"},{"field":"kind","rule":"required","fieldType":"text"},{"field":"pageCount","rule":"required","fieldType":"integer"}],"schema":{"tableName":"submissions","ddl":"CREATE TABLE IF NOT EXISTS \\"submissions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"learner_id\\" UUID,\\n \\"lesson_id\\" UUID,\\n \\"progress_id\\" UUID,\\n \\"submitted_at\\" TEXT,\\n \\"status\\" TEXT DEFAULT 'captured',\\n \\"notes\\" TEXT,\\n \\"capture_key\\" TEXT,\\n \\"capture_digest\\" TEXT,\\n \\"kind\\" TEXT DEFAULT 'completed_work',\\n \\"previous_submission_id\\" UUID,\\n \\"intake_item_id\\" TEXT,\\n \\"page_count\\" INTEGER DEFAULT 0,\\n \\"ocr_text\\" TEXT,\\n \\"extracted\\" TEXT,\\n \\"reported_by\\" TEXT DEFAULT 'learner',\\n \\"evidence_url\\" TEXT,\\n \\"reported_score\\" REAL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"progress_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lesson_progress","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submitted_at":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false,"default":"captured"},"notes":{"type":"TEXT","notNull":false},"capture_key":{"type":"TEXT","notNull":false},"capture_digest":{"type":"TEXT","notNull":false},"kind":{"type":"TEXT","notNull":false,"default":"completed_work"},"previous_submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_item_id":{"type":"TEXT","notNull":false},"page_count":{"type":"INTEGER","notNull":false,"default":0},"ocr_text":{"type":"TEXT","notNull":false},"extracted":{"type":"TEXT","notNull":false},"reported_by":{"type":"TEXT","notNull":false,"default":"learner"},"evidence_url":{"type":"TEXT","notNull":false},"reported_score":{"type":"REAL","notNull":false}},"indexes":[{"name":"submissions_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"submissions_meta_type_idx","columns":["_meta_type"]},{"name":"submissions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submissions_learner_id_idx","columns":["learner_id"]},{"name":"submissions_lesson_id_idx","columns":["lesson_id"]},{"name":"submissions_progress_id_idx","columns":["progress_id"]},{"name":"submissions_previous_submission_id_idx","columns":["previous_submission_id"]}],"version":"7c394510"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:ExternalCompletion":{"name":"externalcompletion","className":"ExternalCompletion","qualifiedName":"@happyvertical/smrt-education:ExternalCompletion","collection":"submissions","description":"Completion reported by the learner, guardian, or external source.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/submissions.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"lessonId":{"type":"foreignKey","required":true,"related":"Lesson","_meta":{"required":true}},"progressId":{"type":"foreignKey","required":true,"related":"LessonProgress","_meta":{"required":true}},"submittedAt":{"type":"text","required":false},"status":{"type":"text","required":false,"default":"captured","enum":["captured","extracting","needs_review","graded","rejected"]},"notes":{"type":"text","required":false},"captureKey":{"type":"text","required":false},"captureDigest":{"type":"text","required":false},"kind":{"type":"text","required":true,"default":"completed_work","_meta":{"required":true},"enum":["blank_reference","completed_work"]},"previousSubmissionId":{"type":"foreignKey","required":false,"related":"Submission","_meta":{"nullable":true}},"intakeItemId":{"type":"text","required":false,"_meta":{"nullable":true}},"reportedBy":{"type":"text","required":false,"default":"learner","enum":["learner","guardian","source"]},"evidenceUrl":{"type":"text","required":false},"reportedScore":{"type":"decimal","required":false,"_meta":{}}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"submissions","api":false,"mcp":false,"cli":false,"tableStrategy":"sti"},"extends":"Submission","exportName":"ExternalCompletion","collectionExportName":"ExternalCompletionCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"lessonId","rule":"required","fieldType":"foreignKey"},{"field":"progressId","rule":"required","fieldType":"foreignKey"},{"field":"kind","rule":"required","fieldType":"text"}],"schema":{"tableName":"submissions","ddl":"CREATE TABLE IF NOT EXISTS \\"submissions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"learner_id\\" UUID,\\n \\"lesson_id\\" UUID,\\n \\"progress_id\\" UUID,\\n \\"submitted_at\\" TEXT,\\n \\"status\\" TEXT DEFAULT 'captured',\\n \\"notes\\" TEXT,\\n \\"capture_key\\" TEXT,\\n \\"capture_digest\\" TEXT,\\n \\"kind\\" TEXT DEFAULT 'completed_work',\\n \\"previous_submission_id\\" UUID,\\n \\"intake_item_id\\" TEXT,\\n \\"page_count\\" INTEGER DEFAULT 0,\\n \\"ocr_text\\" TEXT,\\n \\"extracted\\" TEXT,\\n \\"reported_by\\" TEXT DEFAULT 'learner',\\n \\"evidence_url\\" TEXT,\\n \\"reported_score\\" REAL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"progress_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lesson_progress","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submitted_at":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false,"default":"captured"},"notes":{"type":"TEXT","notNull":false},"capture_key":{"type":"TEXT","notNull":false},"capture_digest":{"type":"TEXT","notNull":false},"kind":{"type":"TEXT","notNull":false,"default":"completed_work"},"previous_submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_item_id":{"type":"TEXT","notNull":false},"page_count":{"type":"INTEGER","notNull":false,"default":0},"ocr_text":{"type":"TEXT","notNull":false},"extracted":{"type":"TEXT","notNull":false},"reported_by":{"type":"TEXT","notNull":false,"default":"learner"},"evidence_url":{"type":"TEXT","notNull":false},"reported_score":{"type":"REAL","notNull":false}},"indexes":[{"name":"submissions_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"submissions_meta_type_idx","columns":["_meta_type"]},{"name":"submissions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submissions_learner_id_idx","columns":["learner_id"]},{"name":"submissions_lesson_id_idx","columns":["lesson_id"]},{"name":"submissions_progress_id_idx","columns":["progress_id"]},{"name":"submissions_previous_submission_id_idx","columns":["previous_submission_id"]}],"version":"eff3715d"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Attestation":{"name":"attestation","className":"Attestation","qualifiedName":"@happyvertical/smrt-education:Attestation","collection":"submissions","description":"A guardian's statement that work was completed.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/submissions.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"lessonId":{"type":"foreignKey","required":true,"related":"Lesson","_meta":{"required":true}},"progressId":{"type":"foreignKey","required":true,"related":"LessonProgress","_meta":{"required":true}},"submittedAt":{"type":"text","required":false},"status":{"type":"text","required":false,"default":"captured","enum":["captured","extracting","needs_review","graded","rejected"]},"notes":{"type":"text","required":false},"captureKey":{"type":"text","required":false},"captureDigest":{"type":"text","required":false},"kind":{"type":"text","required":true,"default":"completed_work","_meta":{"required":true},"enum":["blank_reference","completed_work"]},"previousSubmissionId":{"type":"foreignKey","required":false,"related":"Submission","_meta":{"nullable":true}},"intakeItemId":{"type":"text","required":false,"_meta":{"nullable":true}}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"submissions","api":false,"mcp":false,"cli":false,"tableStrategy":"sti"},"extends":"Submission","exportName":"Attestation","collectionExportName":"AttestationCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"lessonId","rule":"required","fieldType":"foreignKey"},{"field":"progressId","rule":"required","fieldType":"foreignKey"},{"field":"kind","rule":"required","fieldType":"text"}],"schema":{"tableName":"submissions","ddl":"CREATE TABLE IF NOT EXISTS \\"submissions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"learner_id\\" UUID,\\n \\"lesson_id\\" UUID,\\n \\"progress_id\\" UUID,\\n \\"submitted_at\\" TEXT,\\n \\"status\\" TEXT DEFAULT 'captured',\\n \\"notes\\" TEXT,\\n \\"capture_key\\" TEXT,\\n \\"capture_digest\\" TEXT,\\n \\"kind\\" TEXT DEFAULT 'completed_work',\\n \\"previous_submission_id\\" UUID,\\n \\"intake_item_id\\" TEXT,\\n \\"page_count\\" INTEGER DEFAULT 0,\\n \\"ocr_text\\" TEXT,\\n \\"extracted\\" TEXT,\\n \\"reported_by\\" TEXT DEFAULT 'learner',\\n \\"evidence_url\\" TEXT,\\n \\"reported_score\\" REAL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"progress_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lesson_progress","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submitted_at":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false,"default":"captured"},"notes":{"type":"TEXT","notNull":false},"capture_key":{"type":"TEXT","notNull":false},"capture_digest":{"type":"TEXT","notNull":false},"kind":{"type":"TEXT","notNull":false,"default":"completed_work"},"previous_submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_item_id":{"type":"TEXT","notNull":false},"page_count":{"type":"INTEGER","notNull":false,"default":0},"ocr_text":{"type":"TEXT","notNull":false},"extracted":{"type":"TEXT","notNull":false},"reported_by":{"type":"TEXT","notNull":false,"default":"learner"},"evidence_url":{"type":"TEXT","notNull":false},"reported_score":{"type":"REAL","notNull":false}},"indexes":[{"name":"submissions_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"submissions_meta_type_idx","columns":["_meta_type"]},{"name":"submissions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submissions_learner_id_idx","columns":["learner_id"]},{"name":"submissions_lesson_id_idx","columns":["lesson_id"]},{"name":"submissions_progress_id_idx","columns":["progress_id"]},{"name":"submissions_previous_submission_id_idx","columns":["previous_submission_id"]}],"version":"4f3230a3"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:SubmissionAsset":{"name":"submissionasset","className":"SubmissionAsset","qualifiedName":"@happyvertical/smrt-education:SubmissionAsset","collection":"submissionassets","description":"The tenant-owned files attached to a submission.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/submissions.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"submissionId":{"type":"foreignKey","required":true,"related":"Submission","_meta":{"required":true}},"assetId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-assets:Asset"},"relationship":{"type":"text","required":true,"default":"page","_meta":{"required":true},"enum":["page","attachment"]},"sortOrder":{"type":"integer","required":true,"default":0}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"submission_assets","conflictColumns":["tenant_id","submission_id","asset_id","relationship"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"SubmissionAsset","collectionExportName":"SubmissionAssetCollection","validationRules":[{"field":"submissionId","rule":"required","fieldType":"foreignKey"},{"field":"assetId","rule":"required","fieldType":"crossPackageRef"},{"field":"relationship","rule":"required","fieldType":"text"},{"field":"sortOrder","rule":"required","fieldType":"integer"}],"schema":{"tableName":"submission_assets","ddl":"CREATE TABLE IF NOT EXISTS \\"submission_assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"submission_id\\" UUID NOT NULL,\\n \\"asset_id\\" UUID NOT NULL,\\n \\"relationship\\" TEXT NOT NULL DEFAULT 'page',\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"relationship":{"type":"TEXT","notNull":true,"unique":false,"default":"page"},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"submission_assets_tenant_id_submission_id_idx","columns":["tenant_id","submission_id","asset_id","relationship"],"unique":true},{"name":"submission_assets_slug_context_idx","columns":["slug","context"]},{"name":"submission_assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submission_assets_submission_id_idx","columns":["submission_id"]},{"name":"submission_assets_asset_id_idx","columns":["asset_id"]}],"version":"d9b61c8a"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Grade":{"name":"grade","className":"Grade","qualifiedName":"@happyvertical/smrt-education:Grade","collection":"grades","description":"An assessment of a submission; the service selects the authoritative grade.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/submissions.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"submissionId":{"type":"foreignKey","required":true,"related":"Submission","_meta":{"required":true}},"graderKind":{"type":"text","required":true,"default":"auto","_meta":{"required":true},"enum":["auto","ai","guardian","instructor"]},"graderProfileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","_meta":{"nullable":true}},"score":{"type":"decimal","required":false,"_meta":{"nullable":true}},"pointsEarned":{"type":"integer","required":false,"_meta":{"nullable":true}},"pointsPossible":{"type":"integer","required":false,"_meta":{"nullable":true}},"rubricResults":{"type":"text","required":false},"questionRevisionId":{"type":"text","required":false,"_meta":{"nullable":true}},"feedback":{"type":"text","required":false},"gradedAt":{"type":"text","required":false}},"methods":{"getRubricResults":{"name":"getRubricResults","async":false,"parameters":[],"returnType":"Record<string, unknown>","isStatic":false,"isPublic":true},"setRubricResults":{"name":"setRubricResults","async":false,"parameters":[{"name":"value","type":"Record<string, unknown>","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"Grade","collectionExportName":"GradeCollection","validationRules":[{"field":"submissionId","rule":"required","fieldType":"foreignKey"},{"field":"graderKind","rule":"required","fieldType":"text"}],"schema":{"tableName":"grades","ddl":"CREATE TABLE IF NOT EXISTS \\"grades\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"submission_id\\" UUID NOT NULL,\\n \\"grader_kind\\" TEXT NOT NULL DEFAULT 'auto',\\n \\"grader_profile_id\\" UUID,\\n \\"score\\" REAL,\\n \\"points_earned\\" INTEGER,\\n \\"points_possible\\" INTEGER,\\n \\"rubric_results\\" TEXT,\\n \\"question_revision_id\\" TEXT,\\n \\"feedback\\" TEXT,\\n \\"graded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"grader_kind":{"type":"TEXT","notNull":true,"unique":false,"default":"auto"},"grader_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"score":{"type":"REAL","notNull":false,"unique":false},"points_earned":{"type":"INTEGER","notNull":false,"unique":false},"points_possible":{"type":"INTEGER","notNull":false,"unique":false},"rubric_results":{"type":"TEXT","notNull":false,"unique":false},"question_revision_id":{"type":"TEXT","notNull":false,"unique":false},"feedback":{"type":"TEXT","notNull":false,"unique":false},"graded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"grades_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"grades_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"grades_submission_id_idx","columns":["submission_id"]},{"name":"grades_grader_profile_id_idx","columns":["grader_profile_id"]}],"version":"0ccd729e"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookCompletionDecision":{"name":"workbookcompletiondecision","className":"WorkbookCompletionDecision","qualifiedName":"@happyvertical/smrt-education:WorkbookCompletionDecision","collection":"workbookcompletiondecisions","description":"Immutable parent judgment; assessment and feedback release remain independent.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-completion.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"activityId":{"type":"foreignKey","required":true,"related":"WorkbookActivity","_meta":{"required":true}},"attemptId":{"type":"foreignKey","required":true,"related":"WorkbookAttempt","_meta":{"required":true}},"submissionId":{"type":"foreignKey","required":true,"related":"Submission","_meta":{"required":true}},"feedbackHeadId":{"type":"foreignKey","required":false,"related":"WorkbookAssessmentRevision","_meta":{"nullable":true}},"actorUserId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:User"},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"tableName":"workbook_completion_decisions","conflictColumns":["tenant_id","activity_id","request_key"],"indexes":[{"name":"workbook_completion_decisions_attempt_unique","columns":["tenantId","activityId","attemptId"],"unique":true}],"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookCompletionDecision","collectionExportName":"WorkbookCompletionDecisionCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"activityId","rule":"required","fieldType":"foreignKey"},{"field":"attemptId","rule":"required","fieldType":"foreignKey"},{"field":"submissionId","rule":"required","fieldType":"foreignKey"},{"field":"actorUserId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"workbook_completion_decisions","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_completion_decisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"activity_id\\" UUID NOT NULL,\\n \\"attempt_id\\" UUID NOT NULL,\\n \\"submission_id\\" UUID NOT NULL,\\n \\"feedback_head_id\\" UUID,\\n \\"actor_user_id\\" UUID NOT NULL,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"activity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_activities","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"feedback_head_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"actor_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_completion_decisions_tenant_id_activity_id_idx","columns":["tenant_id","activity_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_completion_decisions_slug_context_idx","columns":["slug","context"]},{"name":"workbook_completion_decisions_attempt_unique","columns":["tenant_id","activity_id","attempt_id"],"unique":true},{"name":"workbook_completion_decisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_completion_decisions_learner_id_idx","columns":["learner_id"]},{"name":"workbook_completion_decisions_activity_id_idx","columns":["activity_id"]},{"name":"workbook_completion_decisions_attempt_id_idx","columns":["attempt_id"]},{"name":"workbook_completion_decisions_submission_id_idx","columns":["submission_id"]},{"name":"workbook_completion_decisions_feedback_head_id_idx","columns":["feedback_head_id"]},{"name":"workbook_completion_decisions_actor_user_id_idx","columns":["actor_user_id"]}],"version":"c6015700"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookCompletionDecisionCollection":{"name":"workbookcompletiondecisioncollection","className":"WorkbookCompletionDecisionCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookCompletionDecisionCollection","collection":"workbookcompletiondecisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-completion.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_completion_decisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookCompletionDecision","exportName":"WorkbookCompletionDecisionCollection","collectionExportName":"WorkbookCompletionDecisionCollectionCollection","schema":{"tableName":"workbook_completion_decisions","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_completion_decisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"activity_id\\" UUID NOT NULL,\\n \\"attempt_id\\" UUID NOT NULL,\\n \\"submission_id\\" UUID NOT NULL,\\n \\"feedback_head_id\\" UUID,\\n \\"actor_user_id\\" UUID NOT NULL,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"activity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_activities","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"feedback_head_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"actor_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_completion_decisions_tenant_id_activity_id_idx","columns":["tenant_id","activity_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_completion_decisions_slug_context_idx","columns":["slug","context"]},{"name":"workbook_completion_decisions_attempt_unique","columns":["tenant_id","activity_id","attempt_id"],"unique":true},{"name":"workbook_completion_decisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_completion_decisions_learner_id_idx","columns":["learner_id"]},{"name":"workbook_completion_decisions_activity_id_idx","columns":["activity_id"]},{"name":"workbook_completion_decisions_attempt_id_idx","columns":["attempt_id"]},{"name":"workbook_completion_decisions_submission_id_idx","columns":["submission_id"]},{"name":"workbook_completion_decisions_feedback_head_id_idx","columns":["feedback_head_id"]},{"name":"workbook_completion_decisions_actor_user_id_idx","columns":["actor_user_id"]}],"version":"c6015700"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Workbook":{"name":"workbook","className":"Workbook","qualifiedName":"@happyvertical/smrt-education:Workbook","collection":"workbooks","description":"Education-owned private workbook record. Mutations go through WorkbookService.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"workbookKey":{"type":"text","required":false},"title":{"type":"text","required":false},"edition":{"type":"text","required":false},"reviewRequired":{"type":"boolean","required":true,"default":true},"policyVersion":{"type":"integer","required":true,"default":1}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbooks","conflictColumns":["tenant_id","learner_id","workbook_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"Workbook","collectionExportName":"WorkbookCollection","displayLabelField":"title","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"reviewRequired","rule":"required","fieldType":"boolean"},{"field":"policyVersion","rule":"required","fieldType":"integer"}],"schema":{"tableName":"workbooks","ddl":"CREATE TABLE IF NOT EXISTS \\"workbooks\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"workbook_key\\" TEXT,\\n \\"title\\" TEXT,\\n \\"edition\\" TEXT,\\n \\"review_required\\" BOOLEAN NOT NULL DEFAULT TRUE,\\n \\"policy_version\\" INTEGER NOT NULL DEFAULT 1\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"workbook_key":{"type":"TEXT","notNull":false,"unique":false},"title":{"type":"TEXT","notNull":false,"unique":false},"edition":{"type":"TEXT","notNull":false,"unique":false},"review_required":{"type":"BOOLEAN","notNull":true,"unique":false,"default":true},"policy_version":{"type":"INTEGER","notNull":true,"unique":false,"default":1}},"indexes":[{"name":"workbooks_tenant_id_learner_id_idx","columns":["tenant_id","learner_id","workbook_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbooks_slug_context_idx","columns":["slug","context"]},{"name":"workbooks_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbooks_learner_id_idx","columns":["learner_id"]}],"version":"a5b56a39"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookCollection":{"name":"workbookcollection","className":"WorkbookCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookCollection","collection":"workbooks","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbooks","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Workbook","exportName":"WorkbookCollection","collectionExportName":"WorkbookCollectionCollection","schema":{"tableName":"workbooks","ddl":"CREATE TABLE IF NOT EXISTS \\"workbooks\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"workbook_key\\" TEXT,\\n \\"title\\" TEXT,\\n \\"edition\\" TEXT,\\n \\"review_required\\" BOOLEAN NOT NULL DEFAULT TRUE,\\n \\"policy_version\\" INTEGER NOT NULL DEFAULT 1\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"workbook_key":{"type":"TEXT","notNull":false,"unique":false},"title":{"type":"TEXT","notNull":false,"unique":false},"edition":{"type":"TEXT","notNull":false,"unique":false},"review_required":{"type":"BOOLEAN","notNull":true,"unique":false,"default":true},"policy_version":{"type":"INTEGER","notNull":true,"unique":false,"default":1}},"indexes":[{"name":"workbooks_tenant_id_learner_id_idx","columns":["tenant_id","learner_id","workbook_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbooks_slug_context_idx","columns":["slug","context"]},{"name":"workbooks_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbooks_learner_id_idx","columns":["learner_id"]}],"version":"a5b56a39"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookActivity":{"name":"workbookactivity","className":"WorkbookActivity","qualifiedName":"@happyvertical/smrt-education:WorkbookActivity","collection":"workbookactivities","description":"Education-owned private workbook record. Mutations go through WorkbookService.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"workbookId":{"type":"foreignKey","required":false,"related":"Workbook","_meta":{"nullable":true}},"captureKind":{"type":"text","required":true,"default":"identified","_meta":{"required":true,"default":"identified"}},"photoIntakeId":{"type":"foreignKey","required":false,"related":"WorkbookPhotoIntake","_meta":{"nullable":true}},"enrollmentId":{"type":"foreignKey","required":true,"related":"Enrollment","_meta":{"required":true}},"lessonId":{"type":"foreignKey","required":true,"related":"Lesson","_meta":{"required":true}},"pageKey":{"type":"text","required":false},"pageLabel":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbook_activities","conflictColumns":["tenant_id","workbook_id","page_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookActivity","collectionExportName":"WorkbookActivityCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"captureKind","rule":"required","fieldType":"text"},{"field":"enrollmentId","rule":"required","fieldType":"foreignKey"},{"field":"lessonId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"workbook_activities","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_activities\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"workbook_id\\" UUID,\\n \\"capture_kind\\" TEXT NOT NULL DEFAULT 'identified',\\n \\"photo_intake_id\\" UUID,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"lesson_id\\" UUID NOT NULL,\\n \\"page_key\\" TEXT,\\n \\"page_label\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"workbook_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbooks","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"capture_kind":{"type":"TEXT","notNull":true,"unique":false,"default":"identified"},"photo_intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_photo_intakes","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"page_key":{"type":"TEXT","notNull":false,"unique":false},"page_label":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_activities_tenant_id_workbook_id_idx","columns":["tenant_id","workbook_id","page_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_activities_slug_context_idx","columns":["slug","context"]},{"name":"workbook_activities_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_activities_learner_id_idx","columns":["learner_id"]},{"name":"workbook_activities_workbook_id_idx","columns":["workbook_id"]},{"name":"workbook_activities_photo_intake_id_idx","columns":["photo_intake_id"]},{"name":"workbook_activities_enrollment_id_idx","columns":["enrollment_id"]},{"name":"workbook_activities_lesson_id_idx","columns":["lesson_id"]}],"version":"320c8eb0"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookActivityCollection":{"name":"workbookactivitycollection","className":"WorkbookActivityCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookActivityCollection","collection":"workbookactivities","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_activities","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookActivity","exportName":"WorkbookActivityCollection","collectionExportName":"WorkbookActivityCollectionCollection","schema":{"tableName":"workbook_activities","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_activities\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"workbook_id\\" UUID,\\n \\"capture_kind\\" TEXT NOT NULL DEFAULT 'identified',\\n \\"photo_intake_id\\" UUID,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"lesson_id\\" UUID NOT NULL,\\n \\"page_key\\" TEXT,\\n \\"page_label\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"workbook_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbooks","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"capture_kind":{"type":"TEXT","notNull":true,"unique":false,"default":"identified"},"photo_intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_photo_intakes","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"page_key":{"type":"TEXT","notNull":false,"unique":false},"page_label":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_activities_tenant_id_workbook_id_idx","columns":["tenant_id","workbook_id","page_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_activities_slug_context_idx","columns":["slug","context"]},{"name":"workbook_activities_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_activities_learner_id_idx","columns":["learner_id"]},{"name":"workbook_activities_workbook_id_idx","columns":["workbook_id"]},{"name":"workbook_activities_photo_intake_id_idx","columns":["photo_intake_id"]},{"name":"workbook_activities_enrollment_id_idx","columns":["enrollment_id"]},{"name":"workbook_activities_lesson_id_idx","columns":["lesson_id"]}],"version":"320c8eb0"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookWorkFiling":{"name":"workbookworkfiling","className":"WorkbookWorkFiling","qualifiedName":"@happyvertical/smrt-education:WorkbookWorkFiling","collection":"workbookworkfilings","description":"Append-only association; the source work unit and its routing never move.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"sourceActivityId":{"type":"foreignKey","required":true,"related":"WorkbookActivity","_meta":{"required":true}},"workbookId":{"type":"foreignKey","required":true,"related":"Workbook","_meta":{"required":true}},"canonicalActivityId":{"type":"foreignKey","required":false,"related":"WorkbookActivity","_meta":{"nullable":true}},"previousRevisionId":{"type":"foreignKey","required":false,"related":"WorkbookWorkFiling","_meta":{"nullable":true}},"actorUserId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"reason":{"type":"text","required":false},"digest":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbook_work_filings","conflictColumns":["tenant_id","source_activity_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookWorkFiling","collectionExportName":"WorkbookWorkFilingCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"sourceActivityId","rule":"required","fieldType":"foreignKey"},{"field":"workbookId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"workbook_work_filings","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_work_filings\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"source_activity_id\\" UUID NOT NULL,\\n \\"workbook_id\\" UUID NOT NULL,\\n \\"canonical_activity_id\\" UUID,\\n \\"previous_revision_id\\" UUID,\\n \\"actor_user_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"reason\\" TEXT,\\n \\"digest\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"source_activity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_activities","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"workbook_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbooks","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"canonical_activity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_activities","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"previous_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_work_filings","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"reason":{"type":"TEXT","notNull":false,"unique":false},"digest":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_work_filings_tenant_id_source_activity_id_idx","columns":["tenant_id","source_activity_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_work_filings_slug_context_idx","columns":["slug","context"]},{"name":"workbook_work_filings_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_work_filings_learner_id_idx","columns":["learner_id"]},{"name":"workbook_work_filings_source_activity_id_idx","columns":["source_activity_id"]},{"name":"workbook_work_filings_workbook_id_idx","columns":["workbook_id"]},{"name":"workbook_work_filings_canonical_activity_id_idx","columns":["canonical_activity_id"]},{"name":"workbook_work_filings_previous_revision_id_idx","columns":["previous_revision_id"]}],"version":"03e989a0"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookWorkFilingCollection":{"name":"workbookworkfilingcollection","className":"WorkbookWorkFilingCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookWorkFilingCollection","collection":"workbookworkfilings","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_work_filings","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookWorkFiling","exportName":"WorkbookWorkFilingCollection","collectionExportName":"WorkbookWorkFilingCollectionCollection","schema":{"tableName":"workbook_work_filings","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_work_filings\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"source_activity_id\\" UUID NOT NULL,\\n \\"workbook_id\\" UUID NOT NULL,\\n \\"canonical_activity_id\\" UUID,\\n \\"previous_revision_id\\" UUID,\\n \\"actor_user_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"reason\\" TEXT,\\n \\"digest\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"source_activity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_activities","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"workbook_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbooks","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"canonical_activity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_activities","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"previous_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_work_filings","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"reason":{"type":"TEXT","notNull":false,"unique":false},"digest":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_work_filings_tenant_id_source_activity_id_idx","columns":["tenant_id","source_activity_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_work_filings_slug_context_idx","columns":["slug","context"]},{"name":"workbook_work_filings_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_work_filings_learner_id_idx","columns":["learner_id"]},{"name":"workbook_work_filings_source_activity_id_idx","columns":["source_activity_id"]},{"name":"workbook_work_filings_workbook_id_idx","columns":["workbook_id"]},{"name":"workbook_work_filings_canonical_activity_id_idx","columns":["canonical_activity_id"]},{"name":"workbook_work_filings_previous_revision_id_idx","columns":["previous_revision_id"]}],"version":"03e989a0"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookAttempt":{"name":"workbookattempt","className":"WorkbookAttempt","qualifiedName":"@happyvertical/smrt-education:WorkbookAttempt","collection":"workbookattempts","description":"Education-owned private workbook record. Mutations go through WorkbookService.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"activityId":{"type":"foreignKey","required":true,"related":"WorkbookActivity","_meta":{"required":true}},"submissionId":{"type":"foreignKey","required":true,"related":"Submission","_meta":{"required":true}},"previousAttemptId":{"type":"foreignKey","required":false,"related":"WorkbookAttempt","_meta":{"nullable":true}},"capturedAt":{"type":"text","required":false},"episodeId":{"type":"text","required":false},"reviewRequired":{"type":"boolean","required":true,"default":true},"policyVersion":{"type":"integer","required":true,"default":1},"assistance":{"type":"text","required":false},"actorUserId":{"type":"text","required":false},"sourceHashes":{"type":"text","required":false,"_meta":{}}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbook_attempts","conflictColumns":["tenant_id","submission_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookAttempt","collectionExportName":"WorkbookAttemptCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"activityId","rule":"required","fieldType":"foreignKey"},{"field":"submissionId","rule":"required","fieldType":"foreignKey"},{"field":"reviewRequired","rule":"required","fieldType":"boolean"},{"field":"policyVersion","rule":"required","fieldType":"integer"}],"schema":{"tableName":"workbook_attempts","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_attempts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"activity_id\\" UUID NOT NULL,\\n \\"submission_id\\" UUID NOT NULL,\\n \\"previous_attempt_id\\" UUID,\\n \\"captured_at\\" TEXT,\\n \\"episode_id\\" TEXT,\\n \\"review_required\\" BOOLEAN NOT NULL DEFAULT TRUE,\\n \\"policy_version\\" INTEGER NOT NULL DEFAULT 1,\\n \\"assistance\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"source_hashes\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"activity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_activities","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"previous_attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"captured_at":{"type":"TEXT","notNull":false,"unique":false},"episode_id":{"type":"TEXT","notNull":false,"unique":false},"review_required":{"type":"BOOLEAN","notNull":true,"unique":false,"default":true},"policy_version":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"assistance":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"source_hashes":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_attempts_tenant_id_submission_id_idx","columns":["tenant_id","submission_id"],"unique":true},{"name":"workbook_attempts_slug_context_idx","columns":["slug","context"]},{"name":"workbook_attempts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_attempts_learner_id_idx","columns":["learner_id"]},{"name":"workbook_attempts_activity_id_idx","columns":["activity_id"]},{"name":"workbook_attempts_submission_id_idx","columns":["submission_id"]},{"name":"workbook_attempts_previous_attempt_id_idx","columns":["previous_attempt_id"]}],"version":"bd9cdd9f"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookAttemptCollection":{"name":"workbookattemptcollection","className":"WorkbookAttemptCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookAttemptCollection","collection":"workbookattempts","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_attempts","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookAttempt","exportName":"WorkbookAttemptCollection","collectionExportName":"WorkbookAttemptCollectionCollection","schema":{"tableName":"workbook_attempts","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_attempts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"activity_id\\" UUID NOT NULL,\\n \\"submission_id\\" UUID NOT NULL,\\n \\"previous_attempt_id\\" UUID,\\n \\"captured_at\\" TEXT,\\n \\"episode_id\\" TEXT,\\n \\"review_required\\" BOOLEAN NOT NULL DEFAULT TRUE,\\n \\"policy_version\\" INTEGER NOT NULL DEFAULT 1,\\n \\"assistance\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"source_hashes\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"activity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_activities","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"previous_attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"captured_at":{"type":"TEXT","notNull":false,"unique":false},"episode_id":{"type":"TEXT","notNull":false,"unique":false},"review_required":{"type":"BOOLEAN","notNull":true,"unique":false,"default":true},"policy_version":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"assistance":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"source_hashes":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_attempts_tenant_id_submission_id_idx","columns":["tenant_id","submission_id"],"unique":true},{"name":"workbook_attempts_slug_context_idx","columns":["slug","context"]},{"name":"workbook_attempts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_attempts_learner_id_idx","columns":["learner_id"]},{"name":"workbook_attempts_activity_id_idx","columns":["activity_id"]},{"name":"workbook_attempts_submission_id_idx","columns":["submission_id"]},{"name":"workbook_attempts_previous_attempt_id_idx","columns":["previous_attempt_id"]}],"version":"bd9cdd9f"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookAssessmentRevision":{"name":"workbookassessmentrevision","className":"WorkbookAssessmentRevision","qualifiedName":"@happyvertical/smrt-education:WorkbookAssessmentRevision","collection":"workbookassessmentrevisions","description":"Education-owned private workbook record. Mutations go through WorkbookService.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"attemptId":{"type":"foreignKey","required":true,"related":"WorkbookAttempt","_meta":{"required":true}},"requestKey":{"type":"text","required":false},"requestDigest":{"type":"text","required":false},"kind":{"type":"text","required":false},"actorUserId":{"type":"text","required":false},"sourceRevisionId":{"type":"foreignKey","required":false,"related":"WorkbookAssessmentRevision","_meta":{"nullable":true}},"decisionReason":{"type":"text","required":false},"supersedesId":{"type":"foreignKey","required":false,"related":"WorkbookAssessmentRevision","_meta":{"nullable":true}},"assessmentJson":{"type":"text","required":false,"_meta":{}},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbook_assessment_revisions","conflictColumns":["tenant_id","attempt_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookAssessmentRevision","collectionExportName":"WorkbookAssessmentRevisionCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"attemptId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"workbook_assessment_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_assessment_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"attempt_id\\" UUID NOT NULL,\\n \\"request_key\\" TEXT,\\n \\"request_digest\\" TEXT,\\n \\"kind\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"source_revision_id\\" UUID,\\n \\"decision_reason\\" TEXT,\\n \\"supersedes_id\\" UUID,\\n \\"assessment_json\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"request_key":{"type":"TEXT","notNull":false,"unique":false},"request_digest":{"type":"TEXT","notNull":false,"unique":false},"kind":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"source_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"decision_reason":{"type":"TEXT","notNull":false,"unique":false},"supersedes_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"assessment_json":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_assessment_revisions_tenant_id_attempt_id_idx","columns":["tenant_id","attempt_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_assessment_revisions_slug_context_idx","columns":["slug","context"]},{"name":"workbook_assessment_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_assessment_revisions_learner_id_idx","columns":["learner_id"]},{"name":"workbook_assessment_revisions_attempt_id_idx","columns":["attempt_id"]},{"name":"workbook_assessment_revisions_source_revision_id_idx","columns":["source_revision_id"]},{"name":"workbook_assessment_revisions_supersedes_id_idx","columns":["supersedes_id"]}],"version":"94b2bd33"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookAssessmentRevisionCollection":{"name":"workbookassessmentrevisioncollection","className":"WorkbookAssessmentRevisionCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookAssessmentRevisionCollection","collection":"workbookassessmentrevisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_assessment_revisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookAssessmentRevision","exportName":"WorkbookAssessmentRevisionCollection","collectionExportName":"WorkbookAssessmentRevisionCollectionCollection","schema":{"tableName":"workbook_assessment_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_assessment_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"attempt_id\\" UUID NOT NULL,\\n \\"request_key\\" TEXT,\\n \\"request_digest\\" TEXT,\\n \\"kind\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"source_revision_id\\" UUID,\\n \\"decision_reason\\" TEXT,\\n \\"supersedes_id\\" UUID,\\n \\"assessment_json\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"request_key":{"type":"TEXT","notNull":false,"unique":false},"request_digest":{"type":"TEXT","notNull":false,"unique":false},"kind":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"source_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"decision_reason":{"type":"TEXT","notNull":false,"unique":false},"supersedes_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"assessment_json":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_assessment_revisions_tenant_id_attempt_id_idx","columns":["tenant_id","attempt_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_assessment_revisions_slug_context_idx","columns":["slug","context"]},{"name":"workbook_assessment_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_assessment_revisions_learner_id_idx","columns":["learner_id"]},{"name":"workbook_assessment_revisions_attempt_id_idx","columns":["attempt_id"]},{"name":"workbook_assessment_revisions_source_revision_id_idx","columns":["source_revision_id"]},{"name":"workbook_assessment_revisions_supersedes_id_idx","columns":["supersedes_id"]}],"version":"94b2bd33"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookFeedbackRelease":{"name":"workbookfeedbackrelease","className":"WorkbookFeedbackRelease","qualifiedName":"@happyvertical/smrt-education:WorkbookFeedbackRelease","collection":"workbookfeedbackreleases","description":"Education-owned private workbook record. Mutations go through WorkbookService.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"attemptId":{"type":"foreignKey","required":true,"related":"WorkbookAttempt","_meta":{"required":true}},"revisionId":{"type":"foreignKey","required":true,"related":"WorkbookAssessmentRevision","_meta":{"required":true}},"expectedHeadId":{"type":"foreignKey","required":false,"related":"WorkbookAssessmentRevision","_meta":{"nullable":true}},"requestKey":{"type":"text","required":false},"actorUserId":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbook_feedback_releases","conflictColumns":["tenant_id","attempt_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookFeedbackRelease","collectionExportName":"WorkbookFeedbackReleaseCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"attemptId","rule":"required","fieldType":"foreignKey"},{"field":"revisionId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"workbook_feedback_releases","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_feedback_releases\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"attempt_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"expected_head_id\\" UUID,\\n \\"request_key\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"expected_head_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"request_key":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_feedback_releases_tenant_id_attempt_id_idx","columns":["tenant_id","attempt_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_feedback_releases_slug_context_idx","columns":["slug","context"]},{"name":"workbook_feedback_releases_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_feedback_releases_learner_id_idx","columns":["learner_id"]},{"name":"workbook_feedback_releases_attempt_id_idx","columns":["attempt_id"]},{"name":"workbook_feedback_releases_revision_id_idx","columns":["revision_id"]},{"name":"workbook_feedback_releases_expected_head_id_idx","columns":["expected_head_id"]}],"version":"ebe23baf"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookFeedbackReleaseCollection":{"name":"workbookfeedbackreleasecollection","className":"WorkbookFeedbackReleaseCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookFeedbackReleaseCollection","collection":"workbookfeedbackreleases","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_feedback_releases","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookFeedbackRelease","exportName":"WorkbookFeedbackReleaseCollection","collectionExportName":"WorkbookFeedbackReleaseCollectionCollection","schema":{"tableName":"workbook_feedback_releases","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_feedback_releases\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"attempt_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"expected_head_id\\" UUID,\\n \\"request_key\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"expected_head_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"request_key":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_feedback_releases_tenant_id_attempt_id_idx","columns":["tenant_id","attempt_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_feedback_releases_slug_context_idx","columns":["slug","context"]},{"name":"workbook_feedback_releases_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_feedback_releases_learner_id_idx","columns":["learner_id"]},{"name":"workbook_feedback_releases_attempt_id_idx","columns":["attempt_id"]},{"name":"workbook_feedback_releases_revision_id_idx","columns":["revision_id"]},{"name":"workbook_feedback_releases_expected_head_id_idx","columns":["expected_head_id"]}],"version":"ebe23baf"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookFeedbackDelivery":{"name":"workbookfeedbackdelivery","className":"WorkbookFeedbackDelivery","qualifiedName":"@happyvertical/smrt-education:WorkbookFeedbackDelivery","collection":"workbookfeedbackdeliveries","description":"Authenticated delivery acknowledgment; this does not assert comprehension.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"attemptId":{"type":"foreignKey","required":true,"related":"WorkbookAttempt","_meta":{"required":true}},"revisionId":{"type":"foreignKey","required":true,"related":"WorkbookAssessmentRevision","_meta":{"required":true}},"actorUserId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbook_feedback_deliveries","conflictColumns":["tenant_id","attempt_id","actor_user_id","revision_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookFeedbackDelivery","collectionExportName":"WorkbookFeedbackDeliveryCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"attemptId","rule":"required","fieldType":"foreignKey"},{"field":"revisionId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"workbook_feedback_deliveries","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_feedback_deliveries\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"attempt_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"actor_user_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_feedback_deliveries_tenant_id_attempt_id_idx","columns":["tenant_id","attempt_id","actor_user_id","revision_id"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_feedback_deliveries_slug_context_idx","columns":["slug","context"]},{"name":"workbook_feedback_deliveries_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_feedback_deliveries_learner_id_idx","columns":["learner_id"]},{"name":"workbook_feedback_deliveries_attempt_id_idx","columns":["attempt_id"]},{"name":"workbook_feedback_deliveries_revision_id_idx","columns":["revision_id"]}],"version":"37bfd434"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookFeedbackDeliveryCollection":{"name":"workbookfeedbackdeliverycollection","className":"WorkbookFeedbackDeliveryCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookFeedbackDeliveryCollection","collection":"workbookfeedbackdeliveries","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_feedback_deliveries","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookFeedbackDelivery","exportName":"WorkbookFeedbackDeliveryCollection","collectionExportName":"WorkbookFeedbackDeliveryCollectionCollection","schema":{"tableName":"workbook_feedback_deliveries","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_feedback_deliveries\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"attempt_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"actor_user_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_feedback_deliveries_tenant_id_attempt_id_idx","columns":["tenant_id","attempt_id","actor_user_id","revision_id"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_feedback_deliveries_slug_context_idx","columns":["slug","context"]},{"name":"workbook_feedback_deliveries_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_feedback_deliveries_learner_id_idx","columns":["learner_id"]},{"name":"workbook_feedback_deliveries_attempt_id_idx","columns":["attempt_id"]},{"name":"workbook_feedback_deliveries_revision_id_idx","columns":["revision_id"]}],"version":"37bfd434"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookPhotoIntake":{"name":"workbookphotointake","className":"WorkbookPhotoIntake","qualifiedName":"@happyvertical/smrt-education:WorkbookPhotoIntake","collection":"workbookphotointakes","description":"Durable receipt before any course, enrollment or activity exists.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-photo-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"familyIntakeId":{"type":"foreignKey","required":false,"related":"FamilyIntake"},"itemId":{"type":"text","required":false},"actorUserId":{"type":"text","required":false},"contentDigest":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbook_photo_intakes","conflictColumns":["tenant_id","item_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookPhotoIntake","collectionExportName":"WorkbookPhotoIntakeCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"workbook_photo_intakes","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_photo_intakes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"family_intake_id\\" UUID,\\n \\"item_id\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"content_digest\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"family_intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"family_intakes","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"item_id":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"content_digest":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_photo_intakes_tenant_id_item_id_idx","columns":["tenant_id","item_id"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_photo_intakes_slug_context_idx","columns":["slug","context"]},{"name":"workbook_photo_intakes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_photo_intakes_learner_id_idx","columns":["learner_id"]},{"name":"workbook_photo_intakes_family_intake_id_idx","columns":["family_intake_id"]}],"version":"288020f4"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookPhotoIntakeCollection":{"name":"workbookphotointakecollection","className":"WorkbookPhotoIntakeCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookPhotoIntakeCollection","collection":"workbookphotointakes","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-photo-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_photo_intakes","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookPhotoIntake","exportName":"WorkbookPhotoIntakeCollection","collectionExportName":"WorkbookPhotoIntakeCollectionCollection","schema":{"tableName":"workbook_photo_intakes","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_photo_intakes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"family_intake_id\\" UUID,\\n \\"item_id\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"content_digest\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"family_intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"family_intakes","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"item_id":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"content_digest":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_photo_intakes_tenant_id_item_id_idx","columns":["tenant_id","item_id"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_photo_intakes_slug_context_idx","columns":["slug","context"]},{"name":"workbook_photo_intakes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_photo_intakes_learner_id_idx","columns":["learner_id"]},{"name":"workbook_photo_intakes_family_intake_id_idx","columns":["family_intake_id"]}],"version":"288020f4"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookPhotoAsset":{"name":"workbookphotoasset","className":"WorkbookPhotoAsset","qualifiedName":"@happyvertical/smrt-education:WorkbookPhotoAsset","collection":"workbookphotoassets","description":"Sole owner join for original photo intake files.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-photo-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"intakeId":{"type":"foreignKey","required":true,"related":"WorkbookPhotoIntake","_meta":{"required":true}},"assetId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-assets:Asset"},"name":{"type":"text","required":false},"mimeType":{"type":"text","required":false},"sha256":{"type":"text","required":false},"position":{"type":"integer","required":true,"default":0}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbook_photo_assets","conflictColumns":["tenant_id","intake_id","asset_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookPhotoAsset","collectionExportName":"WorkbookPhotoAssetCollection","displayLabelField":"name","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"intakeId","rule":"required","fieldType":"foreignKey"},{"field":"position","rule":"required","fieldType":"integer"}],"schema":{"tableName":"workbook_photo_assets","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_photo_assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"intake_id\\" UUID NOT NULL,\\n \\"asset_id\\" UUID,\\n \\"name\\" TEXT,\\n \\"mime_type\\" TEXT,\\n \\"sha256\\" TEXT,\\n \\"position\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_photo_intakes","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"mime_type":{"type":"TEXT","notNull":false,"unique":false},"sha256":{"type":"TEXT","notNull":false,"unique":false},"position":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"workbook_photo_assets_tenant_id_intake_id_idx","columns":["tenant_id","intake_id","asset_id"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_photo_assets_slug_context_idx","columns":["slug","context"]},{"name":"workbook_photo_assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_photo_assets_learner_id_idx","columns":["learner_id"]},{"name":"workbook_photo_assets_intake_id_idx","columns":["intake_id"]},{"name":"workbook_photo_assets_asset_id_idx","columns":["asset_id"]}],"version":"9d49acb2"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookPhotoAssetCollection":{"name":"workbookphotoassetcollection","className":"WorkbookPhotoAssetCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookPhotoAssetCollection","collection":"workbookphotoassets","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-photo-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_photo_assets","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookPhotoAsset","exportName":"WorkbookPhotoAssetCollection","collectionExportName":"WorkbookPhotoAssetCollectionCollection","schema":{"tableName":"workbook_photo_assets","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_photo_assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"intake_id\\" UUID NOT NULL,\\n \\"asset_id\\" UUID,\\n \\"name\\" TEXT,\\n \\"mime_type\\" TEXT,\\n \\"sha256\\" TEXT,\\n \\"position\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_photo_intakes","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"mime_type":{"type":"TEXT","notNull":false,"unique":false},"sha256":{"type":"TEXT","notNull":false,"unique":false},"position":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"workbook_photo_assets_tenant_id_intake_id_idx","columns":["tenant_id","intake_id","asset_id"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_photo_assets_slug_context_idx","columns":["slug","context"]},{"name":"workbook_photo_assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_photo_assets_learner_id_idx","columns":["learner_id"]},{"name":"workbook_photo_assets_intake_id_idx","columns":["intake_id"]},{"name":"workbook_photo_assets_asset_id_idx","columns":["asset_id"]}],"version":"9d49acb2"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookPhotoDecision":{"name":"workbookphotodecision","className":"WorkbookPhotoDecision","qualifiedName":"@happyvertical/smrt-education:WorkbookPhotoDecision","collection":"workbookphotodecisions","description":"Immutable provider/guardian/capture decision, retaining provenance and retry key.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-photo-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"intakeId":{"type":"foreignKey","required":true,"related":"WorkbookPhotoIntake","_meta":{"required":true}},"requestKey":{"type":"text","required":false},"sequence":{"type":"integer","required":true,"default":0},"actorUserId":{"type":"text","required":false},"bodyJson":{"type":"text","required":false,"_meta":{}}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbook_photo_decisions","conflictColumns":["tenant_id","intake_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookPhotoDecision","collectionExportName":"WorkbookPhotoDecisionCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"intakeId","rule":"required","fieldType":"foreignKey"},{"field":"sequence","rule":"required","fieldType":"integer"}],"schema":{"tableName":"workbook_photo_decisions","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_photo_decisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"intake_id\\" UUID NOT NULL,\\n \\"request_key\\" TEXT,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 0,\\n \\"actor_user_id\\" TEXT,\\n \\"body_json\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_photo_intakes","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"request_key":{"type":"TEXT","notNull":false,"unique":false},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"body_json":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_photo_decisions_tenant_id_intake_id_idx","columns":["tenant_id","intake_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_photo_decisions_slug_context_idx","columns":["slug","context"]},{"name":"workbook_photo_decisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_photo_decisions_learner_id_idx","columns":["learner_id"]},{"name":"workbook_photo_decisions_intake_id_idx","columns":["intake_id"]}],"version":"4c8b4e5f"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookPhotoDecisionCollection":{"name":"workbookphotodecisioncollection","className":"WorkbookPhotoDecisionCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookPhotoDecisionCollection","collection":"workbookphotodecisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-photo-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_photo_decisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookPhotoDecision","exportName":"WorkbookPhotoDecisionCollection","collectionExportName":"WorkbookPhotoDecisionCollectionCollection","schema":{"tableName":"workbook_photo_decisions","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_photo_decisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"intake_id\\" UUID NOT NULL,\\n \\"request_key\\" TEXT,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 0,\\n \\"actor_user_id\\" TEXT,\\n \\"body_json\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_photo_intakes","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"request_key":{"type":"TEXT","notNull":false,"unique":false},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"body_json":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_photo_decisions_tenant_id_intake_id_idx","columns":["tenant_id","intake_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_photo_decisions_slug_context_idx","columns":["slug","context"]},{"name":"workbook_photo_decisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_photo_decisions_learner_id_idx","columns":["learner_id"]},{"name":"workbook_photo_decisions_intake_id_idx","columns":["intake_id"]}],"version":"4c8b4e5f"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookContextRevision":{"name":"workbookcontextrevision","className":"WorkbookContextRevision","qualifiedName":"@happyvertical/smrt-education:WorkbookContextRevision","collection":"workbookcontextrevisions","description":"Versioned contextual metadata; never edits Workbook identity or learning evidence.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-photo-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"workbookId":{"type":"foreignKey","required":true,"related":"Workbook","_meta":{"required":true}},"decisionId":{"type":"foreignKey","required":true,"related":"WorkbookPhotoDecision","_meta":{"required":true}},"metadataJson":{"type":"text","required":false,"_meta":{}}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbook_context_revisions","conflictColumns":["tenant_id","decision_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookContextRevision","collectionExportName":"WorkbookContextRevisionCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"workbookId","rule":"required","fieldType":"foreignKey"},{"field":"decisionId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"workbook_context_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_context_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"workbook_id\\" UUID NOT NULL,\\n \\"decision_id\\" UUID NOT NULL,\\n \\"metadata_json\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"workbook_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbooks","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"decision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_photo_decisions","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"metadata_json":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_context_revisions_tenant_id_decision_id_idx","columns":["tenant_id","decision_id"],"unique":true},{"name":"workbook_context_revisions_slug_context_idx","columns":["slug","context"]},{"name":"workbook_context_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_context_revisions_learner_id_idx","columns":["learner_id"]},{"name":"workbook_context_revisions_workbook_id_idx","columns":["workbook_id"]},{"name":"workbook_context_revisions_decision_id_idx","columns":["decision_id"]}],"version":"b1e8b4dc"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookContextRevisionCollection":{"name":"workbookcontextrevisioncollection","className":"WorkbookContextRevisionCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookContextRevisionCollection","collection":"workbookcontextrevisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-photo-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_context_revisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookContextRevision","exportName":"WorkbookContextRevisionCollection","collectionExportName":"WorkbookContextRevisionCollectionCollection","schema":{"tableName":"workbook_context_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_context_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"workbook_id\\" UUID NOT NULL,\\n \\"decision_id\\" UUID NOT NULL,\\n \\"metadata_json\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"workbook_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbooks","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"decision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_photo_decisions","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"metadata_json":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_context_revisions_tenant_id_decision_id_idx","columns":["tenant_id","decision_id"],"unique":true},{"name":"workbook_context_revisions_slug_context_idx","columns":["slug","context"]},{"name":"workbook_context_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_context_revisions_learner_id_idx","columns":["learner_id"]},{"name":"workbook_context_revisions_workbook_id_idx","columns":["workbook_id"]},{"name":"workbook_context_revisions_decision_id_idx","columns":["decision_id"]}],"version":"b1e8b4dc"},"importPath":"@happyvertical/smrt-education"}},"moduleType":"smrt","recipes":[{"id":"education.catalog","className":"EducationCatalogRecipe","label":"Course catalog","summary":"Organize courses, sections, lessons, and their authorized learning materials.","synonyms":["courses","lessons","curriculum catalog"],"models":["@happyvertical/smrt-education:Course","@happyvertical/smrt-education:CourseSection","@happyvertical/smrt-education:Lesson","@happyvertical/smrt-education:LessonAsset"],"nav":[{"label":"Courses","model":"@happyvertical/smrt-education:Course","icon":"folder","description":"Courses available to this family.","noun":"course"}],"requires":[],"section":{"id":"education","label":"Education","icon":"folder","description":"Courses and lessons for learning."},"help":{"markdown":"# Course catalog\\n\\nManage courses, their sections, and lessons. Private family copies and answer\\nkeys remain visible only through the application\u2019s authorized catalog service.\\n","fieldRefs":[]},"runtime":"both","demo":{"mode":"server","reasons":["Needs a server because its package depends on @happyvertical/smrt-agents, @happyvertical/smrt-jobs, @happyvertical/smrt-profiles, @happyvertical/smrt-reports, @happyvertical/smrt-secrets, @happyvertical/smrt-tenancy, @happyvertical/smrt-users, which do not build for a browser (#3615, #3617, #3624, #3625, #3626, #3627)."]}},{"id":"education.learner","className":"EducationLearnerRecipe","label":"Learners","summary":"Plan learner curricula and retain enrollment-scoped progress.","synonyms":["learners","enrollments","learning progress"],"models":["@happyvertical/smrt-education:Learner","@happyvertical/smrt-education:Curriculum","@happyvertical/smrt-education:Enrollment","@happyvertical/smrt-education:LessonProgress"],"nav":[{"label":"Learners","model":"@happyvertical/smrt-education:Learner","icon":"users","description":"Authorized learners in this family.","noun":"learner"}],"requires":[],"section":{"id":"education","label":"Education","icon":"folder","description":"Courses and lessons for learning."},"help":{"markdown":"# Learners\\n\\nUse \`LearnerService\` in an authenticated exact-tenant context to read a learner,\\nplan a curriculum as an authorized guardian, enroll in a visible course, and\\nstart a lesson. Recipe metadata does not expose model CRUD. Hosts authenticate\\nusers, provision family membership, and validate guardian ProfileRelationship\\ntypes and effective terms. See \`agents/learner-service.md\` for the boundary.\\n","fieldRefs":[]},"runtime":"both","demo":{"mode":"server","reasons":["Needs a server because its package depends on @happyvertical/smrt-agents, @happyvertical/smrt-jobs, @happyvertical/smrt-profiles, @happyvertical/smrt-reports, @happyvertical/smrt-secrets, @happyvertical/smrt-tenancy, @happyvertical/smrt-users, which do not build for a browser (#3615, #3617, #3624, #3625, #3626, #3627)."]}},{"id":"education.supervisor","className":"EducationSupervisorRecipe","label":"Homeschool groups","summary":"Review parent-authorized learning work and retain revision-bound comments.","synonyms":["homeschool groups","supervisor review"],"models":["@happyvertical/smrt-education:EducationGroup","@happyvertical/smrt-education:GroupLearnerInvitation","@happyvertical/smrt-education:GroupLearnerMembership","@happyvertical/smrt-education:GroupLearnerRosterEntry","@happyvertical/smrt-education:GroupSharingPolicy","@happyvertical/smrt-education:GroupRevisionComment"],"nav":[{"label":"Groups","model":"@happyvertical/smrt-education:EducationGroup","icon":"users","description":"Groups and currently authorized shared learning work.","noun":"group"}],"requires":[],"section":{"id":"education","label":"Education","icon":"users","description":"Courses and lessons for learning."},"help":{"markdown":"# Homeschool groups\\n\\nCompose \`education.supervisor\` with the education learner workflow to manage\\nindependent group tenants and parent-approved links to existing family learners.\\nRecipe discovery supplies models and navigation metadata; it grants no generated\\nCRUD or family access.\\n\\nHosts use the closed group sharing services with a live session authorizer on\\nthe supplied database executor. Supervisors remain group members, never family\\nguardians. A parent must choose an explicit sharing policy when accepting a\\ntargeted invitation. Work, revisions, source bytes and comment attribution remain\\nfamily-owned after leaving a group.\\n\\nEvery roster, work, revision, media, comment and progress request must check\\ncurrent authority and policy. Serve media through the authorized reader and a\\nprivate, non-cacheable host response; never publish storage URLs. Saved parent\\ncomment visibility defaults to parent-only. Supervisor comments cannot grade or\\nchange learning evidence.\\n\\nSee the shipped \`agents/group-sharing.md\` contract for selectors, facet semantics,\\ntransaction requirements and migration expectations.\\n","fieldRefs":[]},"runtime":"both","demo":{"mode":"server","reasons":["Needs a server because its package depends on @happyvertical/smrt-agents, @happyvertical/smrt-jobs, @happyvertical/smrt-profiles, @happyvertical/smrt-reports, @happyvertical/smrt-secrets, @happyvertical/smrt-tenancy, @happyvertical/smrt-users, which do not build for a browser (#3615, #3617, #3624, #3625, #3626, #3627)."]}}],"smrtDependencies":["@happyvertical/smrt-assets","@happyvertical/smrt-core","@happyvertical/smrt-ingestion","@happyvertical/smrt-profiles","@happyvertical/smrt-tenancy","@happyvertical/smrt-users"],"browser":{"status":"server-only","issues":["#3615","#3617","#3624","#3625","#3626","#3627"],"via":["@happyvertical/smrt-agents","@happyvertical/smrt-jobs","@happyvertical/smrt-profiles","@happyvertical/smrt-reports","@happyvertical/smrt-secrets","@happyvertical/smrt-tenancy","@happyvertical/smrt-users"]},"stampsConstructors":true}`));
7
+ ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-education","packageVersion":"0.57.46","objects":{"@happyvertical/smrt-education:CatalogProviderCollection":{"name":"catalogprovidercollection","className":"CatalogProviderCollection","qualifiedName":"@happyvertical/smrt-education:CatalogProviderCollection","collection":"catalogproviders","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog-collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CatalogProvider","exportName":"CatalogProviderCollection","collectionExportName":"CatalogProviderCollectionCollection","schema":{"tableName":"catalog_providers","ddl":"CREATE TABLE IF NOT EXISTS \\"catalog_providers\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"provider_id\\" TEXT NOT NULL,\\n \\"name\\" TEXT NOT NULL,\\n \\"active\\" BOOLEAN NOT NULL DEFAULT TRUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"provider_id":{"type":"TEXT","notNull":true,"unique":false},"name":{"type":"TEXT","notNull":true,"unique":false},"active":{"type":"BOOLEAN","notNull":true,"unique":false,"default":true}},"indexes":[{"name":"catalog_providers_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"catalog_providers_created_at_idx","columns":["created_at"]}],"version":"f35557a4"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CatalogResourceCollection":{"name":"catalogresourcecollection","className":"CatalogResourceCollection","qualifiedName":"@happyvertical/smrt-education:CatalogResourceCollection","collection":"catalogresources","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog-collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CatalogResource","exportName":"CatalogResourceCollection","collectionExportName":"CatalogResourceCollectionCollection","schema":{"tableName":"catalog_resources","ddl":"CREATE TABLE IF NOT EXISTS \\"catalog_resources\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"provider_id\\" TEXT NOT NULL,\\n \\"stable_id\\" TEXT NOT NULL,\\n \\"revision\\" TEXT NOT NULL,\\n \\"canonical_url\\" TEXT,\\n \\"title\\" TEXT NOT NULL,\\n \\"supplied_description\\" TEXT,\\n \\"author\\" TEXT,\\n \\"subjects\\" TEXT,\\n \\"grades\\" TEXT,\\n \\"language\\" TEXT,\\n \\"resource_type\\" TEXT,\\n \\"parent_stable_id\\" TEXT,\\n \\"available_formats\\" TEXT,\\n \\"representation\\" TEXT,\\n \\"preview\\" TEXT,\\n \\"license_evidence\\" TEXT,\\n \\"license_state\\" TEXT DEFAULT 'unknown',\\n \\"visibility\\" TEXT DEFAULT 'catalog',\\n \\"last_seen_run_id\\" TEXT,\\n \\"withdrawn_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"provider_id":{"type":"TEXT","notNull":true,"unique":false},"stable_id":{"type":"TEXT","notNull":true,"unique":false},"revision":{"type":"TEXT","notNull":true,"unique":false},"canonical_url":{"type":"TEXT","notNull":false,"unique":false},"title":{"type":"TEXT","notNull":true,"unique":false},"supplied_description":{"type":"TEXT","notNull":false,"unique":false},"author":{"type":"TEXT","notNull":false,"unique":false},"subjects":{"type":"TEXT","notNull":false,"unique":false},"grades":{"type":"TEXT","notNull":false,"unique":false},"language":{"type":"TEXT","notNull":false,"unique":false},"resource_type":{"type":"TEXT","notNull":false,"unique":false},"parent_stable_id":{"type":"TEXT","notNull":false,"unique":false},"available_formats":{"type":"TEXT","notNull":false,"unique":false},"representation":{"type":"TEXT","notNull":false,"unique":false},"preview":{"type":"TEXT","notNull":false,"unique":false},"license_evidence":{"type":"TEXT","notNull":false,"unique":false},"license_state":{"type":"TEXT","notNull":false,"unique":false,"default":"unknown"},"visibility":{"type":"TEXT","notNull":false,"unique":false,"default":"catalog"},"last_seen_run_id":{"type":"TEXT","notNull":false,"unique":false},"withdrawn_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"catalog_resources_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"catalog_resources_created_at_idx","columns":["created_at"]}],"version":"6ea66f0d"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CatalogSyncStateCollection":{"name":"catalogsyncstatecollection","className":"CatalogSyncStateCollection","qualifiedName":"@happyvertical/smrt-education:CatalogSyncStateCollection","collection":"catalogsyncstates","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog-collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CatalogSyncState","exportName":"CatalogSyncStateCollection","collectionExportName":"CatalogSyncStateCollectionCollection","schema":{"tableName":"catalog_sync_states","ddl":"CREATE TABLE IF NOT EXISTS \\"catalog_sync_states\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"provider_id\\" TEXT NOT NULL,\\n \\"cursor\\" TEXT,\\n \\"run_id\\" TEXT,\\n \\"complete\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"paused\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"pause_reason\\" TEXT,\\n \\"imported_count\\" INTEGER NOT NULL DEFAULT 0,\\n \\"failures\\" TEXT,\\n \\"last_successful_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"provider_id":{"type":"TEXT","notNull":true,"unique":false},"cursor":{"type":"TEXT","notNull":false,"unique":false},"run_id":{"type":"TEXT","notNull":false,"unique":false},"complete":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"paused":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"pause_reason":{"type":"TEXT","notNull":false,"unique":false},"imported_count":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"failures":{"type":"TEXT","notNull":false,"unique":false},"last_successful_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"catalog_sync_states_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"catalog_sync_states_created_at_idx","columns":["created_at"]}],"version":"52dc3ee1"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CatalogSelectionCollection":{"name":"catalogselectioncollection","className":"CatalogSelectionCollection","qualifiedName":"@happyvertical/smrt-education:CatalogSelectionCollection","collection":"catalogselections","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog-collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CatalogSelection","exportName":"CatalogSelectionCollection","collectionExportName":"CatalogSelectionCollectionCollection","schema":{"tableName":"catalog_selections","ddl":"CREATE TABLE IF NOT EXISTS \\"catalog_selections\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"resource_id\\" UUID NOT NULL,\\n \\"selected_by_user_id\\" TEXT NOT NULL,\\n \\"selected_revision\\" TEXT NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"resource_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"catalog_resources","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"selected_by_user_id":{"type":"TEXT","notNull":true,"unique":false},"selected_revision":{"type":"TEXT","notNull":true,"unique":false}},"indexes":[{"name":"catalog_selections_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"catalog_selections_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"catalog_selections_resource_id_idx","columns":["resource_id"]}],"version":"c6b02eb9"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CatalogAcquisitionCollection":{"name":"catalogacquisitioncollection","className":"CatalogAcquisitionCollection","qualifiedName":"@happyvertical/smrt-education:CatalogAcquisitionCollection","collection":"catalogacquisitions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog-collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CatalogAcquisition","exportName":"CatalogAcquisitionCollection","collectionExportName":"CatalogAcquisitionCollectionCollection","schema":{"tableName":"catalog_acquisitions","ddl":"CREATE TABLE IF NOT EXISTS \\"catalog_acquisitions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"resource_id\\" UUID NOT NULL,\\n \\"selection_id\\" UUID NOT NULL,\\n \\"revision\\" TEXT NOT NULL,\\n \\"format\\" TEXT NOT NULL,\\n \\"sha256\\" TEXT NOT NULL,\\n \\"attribution\\" TEXT,\\n \\"notices\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"resource_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"catalog_resources","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"selection_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"catalog_selections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"revision":{"type":"TEXT","notNull":true,"unique":false},"format":{"type":"TEXT","notNull":true,"unique":false},"sha256":{"type":"TEXT","notNull":true,"unique":false},"attribution":{"type":"TEXT","notNull":false,"unique":false},"notices":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"catalog_acquisitions_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"catalog_acquisitions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"catalog_acquisitions_resource_id_idx","columns":["resource_id"]},{"name":"catalog_acquisitions_selection_id_idx","columns":["selection_id"]}],"version":"ee9c5add"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CatalogProvider":{"name":"catalogprovider","className":"CatalogProvider","qualifiedName":"@happyvertical/smrt-education:CatalogProvider","collection":"catalogproviders","description":"Globally visible provider registration. Hosts configure adapters and credentials out of band.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog-models.ts","packageName":"@happyvertical/smrt-education","fields":{"providerId":{"type":"text","required":true,"_meta":{"required":true}},"name":{"type":"text","required":true,"_meta":{"required":true}},"active":{"type":"boolean","required":true,"default":true}},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtObject","exportName":"CatalogProvider","collectionExportName":"CatalogProviderCollection","displayLabelField":"name","validationRules":[{"field":"providerId","rule":"required","fieldType":"text"},{"field":"name","rule":"required","fieldType":"text"},{"field":"active","rule":"required","fieldType":"boolean"}],"schema":{"tableName":"catalog_providers","ddl":"CREATE TABLE IF NOT EXISTS \\"catalog_providers\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"provider_id\\" TEXT NOT NULL,\\n \\"name\\" TEXT NOT NULL,\\n \\"active\\" BOOLEAN NOT NULL DEFAULT TRUE\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"provider_id":{"type":"TEXT","notNull":true,"unique":false},"name":{"type":"TEXT","notNull":true,"unique":false},"active":{"type":"BOOLEAN","notNull":true,"unique":false,"default":true}},"indexes":[{"name":"catalog_providers_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"catalog_providers_created_at_idx","columns":["created_at"]}],"version":"f35557a4"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CatalogResource":{"name":"catalogresource","className":"CatalogResource","qualifiedName":"@happyvertical/smrt-education:CatalogResource","collection":"catalogresources","description":"A provider-native record. Rows are intentionally not merged across providers.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog-models.ts","packageName":"@happyvertical/smrt-education","fields":{"providerId":{"type":"text","required":true,"_meta":{"required":true}},"stableId":{"type":"text","required":true,"_meta":{"required":true}},"revision":{"type":"text","required":true,"_meta":{"required":true}},"canonicalUrl":{"type":"text","required":false},"title":{"type":"text","required":true,"_meta":{"required":true}},"suppliedDescription":{"type":"text","required":false},"author":{"type":"text","required":false},"subjects":{"type":"text","required":false},"grades":{"type":"text","required":false},"language":{"type":"text","required":false},"resourceType":{"type":"text","required":false},"parentStableId":{"type":"text","required":false},"availableFormats":{"type":"text","required":false},"representation":{"type":"text","required":false},"preview":{"type":"text","required":false},"licenseEvidence":{"type":"text","required":false},"licenseState":{"type":"text","required":false,"default":"unknown","enum":["verified","unknown","conflicting","restricted"]},"visibility":{"type":"text","required":false,"default":"catalog","enum":["catalog","teacher"]},"lastSeenRunId":{"type":"text","required":false},"withdrawnAt":{"type":"text","required":false}},"methods":{"getPreview":{"name":"getPreview","async":false,"parameters":[],"returnType":"CatalogPreview | undefined","isStatic":false,"isPublic":true},"setPreview":{"name":"setPreview","async":false,"parameters":[{"name":"value","type":"CatalogPreview | undefined","optional":false,"unionBranches":[{"type":"CatalogPreview"},{"type":"undefined"}]}],"returnType":"void","isStatic":false,"isPublic":true},"getRepresentation":{"name":"getRepresentation","async":false,"parameters":[],"returnType":"CatalogResourceRepresentation | undefined","isStatic":false,"isPublic":true},"setRepresentation":{"name":"setRepresentation","async":false,"parameters":[{"name":"value","type":"CatalogResourceRepresentation | undefined","optional":false,"unionBranches":[{"type":"CatalogResourceRepresentation"},{"type":"undefined"}]}],"returnType":"void","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtObject","exportName":"CatalogResource","collectionExportName":"CatalogResourceCollection","displayLabelField":"title","validationRules":[{"field":"providerId","rule":"required","fieldType":"text"},{"field":"stableId","rule":"required","fieldType":"text"},{"field":"revision","rule":"required","fieldType":"text"},{"field":"title","rule":"required","fieldType":"text"}],"schema":{"tableName":"catalog_resources","ddl":"CREATE TABLE IF NOT EXISTS \\"catalog_resources\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"provider_id\\" TEXT NOT NULL,\\n \\"stable_id\\" TEXT NOT NULL,\\n \\"revision\\" TEXT NOT NULL,\\n \\"canonical_url\\" TEXT,\\n \\"title\\" TEXT NOT NULL,\\n \\"supplied_description\\" TEXT,\\n \\"author\\" TEXT,\\n \\"subjects\\" TEXT,\\n \\"grades\\" TEXT,\\n \\"language\\" TEXT,\\n \\"resource_type\\" TEXT,\\n \\"parent_stable_id\\" TEXT,\\n \\"available_formats\\" TEXT,\\n \\"representation\\" TEXT,\\n \\"preview\\" TEXT,\\n \\"license_evidence\\" TEXT,\\n \\"license_state\\" TEXT DEFAULT 'unknown',\\n \\"visibility\\" TEXT DEFAULT 'catalog',\\n \\"last_seen_run_id\\" TEXT,\\n \\"withdrawn_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"provider_id":{"type":"TEXT","notNull":true,"unique":false},"stable_id":{"type":"TEXT","notNull":true,"unique":false},"revision":{"type":"TEXT","notNull":true,"unique":false},"canonical_url":{"type":"TEXT","notNull":false,"unique":false},"title":{"type":"TEXT","notNull":true,"unique":false},"supplied_description":{"type":"TEXT","notNull":false,"unique":false},"author":{"type":"TEXT","notNull":false,"unique":false},"subjects":{"type":"TEXT","notNull":false,"unique":false},"grades":{"type":"TEXT","notNull":false,"unique":false},"language":{"type":"TEXT","notNull":false,"unique":false},"resource_type":{"type":"TEXT","notNull":false,"unique":false},"parent_stable_id":{"type":"TEXT","notNull":false,"unique":false},"available_formats":{"type":"TEXT","notNull":false,"unique":false},"representation":{"type":"TEXT","notNull":false,"unique":false},"preview":{"type":"TEXT","notNull":false,"unique":false},"license_evidence":{"type":"TEXT","notNull":false,"unique":false},"license_state":{"type":"TEXT","notNull":false,"unique":false,"default":"unknown"},"visibility":{"type":"TEXT","notNull":false,"unique":false,"default":"catalog"},"last_seen_run_id":{"type":"TEXT","notNull":false,"unique":false},"withdrawn_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"catalog_resources_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"catalog_resources_created_at_idx","columns":["created_at"]}],"version":"6ea66f0d"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CatalogSyncState":{"name":"catalogsyncstate","className":"CatalogSyncState","qualifiedName":"@happyvertical/smrt-education:CatalogSyncState","collection":"catalogsyncstates","description":"Durable per-provider enumeration state. A failed or partial feed is never complete.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog-models.ts","packageName":"@happyvertical/smrt-education","fields":{"providerId":{"type":"text","required":true,"_meta":{"required":true}},"cursor":{"type":"text","required":false},"runId":{"type":"text","required":false},"complete":{"type":"boolean","required":true,"default":false},"paused":{"type":"boolean","required":true,"default":false},"pauseReason":{"type":"text","required":false},"importedCount":{"type":"integer","required":true,"default":0},"failures":{"type":"text","required":false},"lastSuccessfulAt":{"type":"text","required":false}},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtObject","exportName":"CatalogSyncState","collectionExportName":"CatalogSyncStateCollection","validationRules":[{"field":"providerId","rule":"required","fieldType":"text"},{"field":"complete","rule":"required","fieldType":"boolean"},{"field":"paused","rule":"required","fieldType":"boolean"},{"field":"importedCount","rule":"required","fieldType":"integer"}],"schema":{"tableName":"catalog_sync_states","ddl":"CREATE TABLE IF NOT EXISTS \\"catalog_sync_states\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"provider_id\\" TEXT NOT NULL,\\n \\"cursor\\" TEXT,\\n \\"run_id\\" TEXT,\\n \\"complete\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"paused\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"pause_reason\\" TEXT,\\n \\"imported_count\\" INTEGER NOT NULL DEFAULT 0,\\n \\"failures\\" TEXT,\\n \\"last_successful_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"provider_id":{"type":"TEXT","notNull":true,"unique":false},"cursor":{"type":"TEXT","notNull":false,"unique":false},"run_id":{"type":"TEXT","notNull":false,"unique":false},"complete":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"paused":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"pause_reason":{"type":"TEXT","notNull":false,"unique":false},"imported_count":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"failures":{"type":"TEXT","notNull":false,"unique":false},"last_successful_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"catalog_sync_states_slug_context_idx","columns":["slug","context"],"unique":true},{"name":"catalog_sync_states_created_at_idx","columns":["created_at"]}],"version":"52dc3ee1"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CatalogSelection":{"name":"catalogselection","className":"CatalogSelection","qualifiedName":"@happyvertical/smrt-education:CatalogSelection","collection":"catalogselections","description":"Tenant-owned intent to use a metadata record, distinct from acquiring bytes.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"resourceId":{"type":"foreignKey","required":true,"related":"CatalogResource","_meta":{"required":true}},"selectedByUserId":{"type":"text","required":true,"_meta":{"required":true}},"selectedRevision":{"type":"text","required":true,"_meta":{"required":true}}},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"CatalogSelection","collectionExportName":"CatalogSelectionCollection","validationRules":[{"field":"resourceId","rule":"required","fieldType":"foreignKey"},{"field":"selectedByUserId","rule":"required","fieldType":"text"},{"field":"selectedRevision","rule":"required","fieldType":"text"}],"schema":{"tableName":"catalog_selections","ddl":"CREATE TABLE IF NOT EXISTS \\"catalog_selections\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"resource_id\\" UUID NOT NULL,\\n \\"selected_by_user_id\\" TEXT NOT NULL,\\n \\"selected_revision\\" TEXT NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"resource_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"catalog_resources","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"selected_by_user_id":{"type":"TEXT","notNull":true,"unique":false},"selected_revision":{"type":"TEXT","notNull":true,"unique":false}},"indexes":[{"name":"catalog_selections_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"catalog_selections_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"catalog_selections_resource_id_idx","columns":["resource_id"]}],"version":"c6b02eb9"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CatalogAcquisition":{"name":"catalogacquisition","className":"CatalogAcquisition","qualifiedName":"@happyvertical/smrt-education:CatalogAcquisition","collection":"catalogacquisitions","description":"A pinned, tenant-owned acquisition record. Bytes belong in a host storage service.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"resourceId":{"type":"foreignKey","required":true,"related":"CatalogResource","_meta":{"required":true}},"selectionId":{"type":"foreignKey","required":true,"related":"CatalogSelection","_meta":{"required":true}},"revision":{"type":"text","required":true,"_meta":{"required":true}},"format":{"type":"text","required":true,"_meta":{"required":true}},"sha256":{"type":"text","required":true,"_meta":{"required":true}},"attribution":{"type":"text","required":false},"notices":{"type":"text","required":false}},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"CatalogAcquisition","collectionExportName":"CatalogAcquisitionCollection","validationRules":[{"field":"resourceId","rule":"required","fieldType":"foreignKey"},{"field":"selectionId","rule":"required","fieldType":"foreignKey"},{"field":"revision","rule":"required","fieldType":"text"},{"field":"format","rule":"required","fieldType":"text"},{"field":"sha256","rule":"required","fieldType":"text"}],"schema":{"tableName":"catalog_acquisitions","ddl":"CREATE TABLE IF NOT EXISTS \\"catalog_acquisitions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"resource_id\\" UUID NOT NULL,\\n \\"selection_id\\" UUID NOT NULL,\\n \\"revision\\" TEXT NOT NULL,\\n \\"format\\" TEXT NOT NULL,\\n \\"sha256\\" TEXT NOT NULL,\\n \\"attribution\\" TEXT,\\n \\"notices\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"resource_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"catalog_resources","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"selection_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"catalog_selections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"revision":{"type":"TEXT","notNull":true,"unique":false},"format":{"type":"TEXT","notNull":true,"unique":false},"sha256":{"type":"TEXT","notNull":true,"unique":false},"attribution":{"type":"TEXT","notNull":false,"unique":false},"notices":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"catalog_acquisitions_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"catalog_acquisitions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"catalog_acquisitions_resource_id_idx","columns":["resource_id"]},{"name":"catalog_acquisitions_selection_id_idx","columns":["selection_id"]}],"version":"ee9c5add"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Course":{"name":"course","className":"Course","qualifiedName":"@happyvertical/smrt-education:Course","collection":"courses","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"title":{"type":"text","required":true,"_meta":{"required":true}},"summary":{"type":"text","required":false},"description":{"type":"text","required":false},"sourceKey":{"type":"text","required":false},"sourceUrl":{"type":"text","required":false},"sourceRef":{"type":"text","required":false},"license":{"type":"text","required":false},"licenseKind":{"type":"text","required":false,"default":"own-work","enum":["own-work","open-license","personal-use-copy","licensed-for-sharing"]},"licenseNote":{"type":"text","required":false},"attestedBy":{"type":"text","required":false},"subject":{"type":"text","required":false},"tags":{"type":"text","required":false},"levelMin":{"type":"integer","required":true,"default":0},"levelMax":{"type":"integer","required":true,"default":0},"difficulty":{"type":"decimal","required":true,"default":0},"estimatedMinutes":{"type":"integer","required":true,"default":0},"modality":{"type":"text","required":false,"default":"online","enum":["online","printable","kit","video","game","mixed"]},"status":{"type":"text","required":false,"default":"draft","enum":["draft","published","archived"]}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"Course","collectionExportName":"CourseCollection","displayLabelField":"title","validationRules":[{"field":"title","rule":"required","fieldType":"text"},{"field":"levelMin","rule":"required","fieldType":"integer"},{"field":"levelMax","rule":"required","fieldType":"integer"},{"field":"difficulty","rule":"required","fieldType":"decimal"},{"field":"estimatedMinutes","rule":"required","fieldType":"integer"}],"schema":{"tableName":"courses","ddl":"CREATE TABLE IF NOT EXISTS \\"courses\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"summary\\" TEXT,\\n \\"description\\" TEXT,\\n \\"source_key\\" TEXT,\\n \\"source_url\\" TEXT,\\n \\"source_ref\\" TEXT,\\n \\"license\\" TEXT,\\n \\"license_kind\\" TEXT DEFAULT 'own-work',\\n \\"license_note\\" TEXT,\\n \\"attested_by\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"tags\\" TEXT,\\n \\"level_min\\" INTEGER DEFAULT 0,\\n \\"level_max\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"status\\" TEXT DEFAULT 'draft'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"title":{"type":"TEXT","notNull":false},"summary":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false},"source_key":{"type":"TEXT","notNull":false},"source_url":{"type":"TEXT","notNull":false},"source_ref":{"type":"TEXT","notNull":false},"license":{"type":"TEXT","notNull":false},"license_kind":{"type":"TEXT","notNull":false,"default":"own-work"},"license_note":{"type":"TEXT","notNull":false},"attested_by":{"type":"TEXT","notNull":false},"subject":{"type":"TEXT","notNull":false},"tags":{"type":"TEXT","notNull":false},"level_min":{"type":"INTEGER","notNull":false,"default":0},"level_max":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"status":{"type":"TEXT","notNull":false,"default":"draft"}},"indexes":[{"name":"courses_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"courses_meta_type_idx","columns":["_meta_type"]},{"name":"courses_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"88cc23ab"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:ExternalCourse":{"name":"externalcourse","className":"ExternalCourse","qualifiedName":"@happyvertical/smrt-education:ExternalCourse","collection":"courses","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true}}},"title":{"type":"text","required":true,"_meta":{"required":true}},"summary":{"type":"text","required":false},"description":{"type":"text","required":false},"sourceKey":{"type":"text","required":false},"sourceUrl":{"type":"text","required":false},"sourceRef":{"type":"text","required":false},"license":{"type":"text","required":false},"licenseKind":{"type":"text","required":false,"default":"own-work","enum":["own-work","open-license","personal-use-copy","licensed-for-sharing"]},"licenseNote":{"type":"text","required":false},"attestedBy":{"type":"text","required":false},"subject":{"type":"text","required":false},"tags":{"type":"text","required":false},"levelMin":{"type":"integer","required":true,"default":0},"levelMax":{"type":"integer","required":true,"default":0},"difficulty":{"type":"decimal","required":true,"default":0},"estimatedMinutes":{"type":"integer","required":true,"default":0},"modality":{"type":"text","required":false,"default":"online","enum":["online","printable","kit","video","game","mixed"]},"status":{"type":"text","required":false,"default":"draft","enum":["draft","published","archived"]}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"courses","api":false,"mcp":false,"cli":false,"tableStrategy":"sti"},"extends":"Course","exportName":"ExternalCourse","collectionExportName":"ExternalCourseCollection","displayLabelField":"title","validationRules":[{"field":"title","rule":"required","fieldType":"text"},{"field":"levelMin","rule":"required","fieldType":"integer"},{"field":"levelMax","rule":"required","fieldType":"integer"},{"field":"difficulty","rule":"required","fieldType":"decimal"},{"field":"estimatedMinutes","rule":"required","fieldType":"integer"}],"schema":{"tableName":"courses","ddl":"CREATE TABLE IF NOT EXISTS \\"courses\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"summary\\" TEXT,\\n \\"description\\" TEXT,\\n \\"source_key\\" TEXT,\\n \\"source_url\\" TEXT,\\n \\"source_ref\\" TEXT,\\n \\"license\\" TEXT,\\n \\"license_kind\\" TEXT DEFAULT 'own-work',\\n \\"license_note\\" TEXT,\\n \\"attested_by\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"tags\\" TEXT,\\n \\"level_min\\" INTEGER DEFAULT 0,\\n \\"level_max\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"status\\" TEXT DEFAULT 'draft'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"title":{"type":"TEXT","notNull":false},"summary":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false},"source_key":{"type":"TEXT","notNull":false},"source_url":{"type":"TEXT","notNull":false},"source_ref":{"type":"TEXT","notNull":false},"license":{"type":"TEXT","notNull":false},"license_kind":{"type":"TEXT","notNull":false,"default":"own-work"},"license_note":{"type":"TEXT","notNull":false},"attested_by":{"type":"TEXT","notNull":false},"subject":{"type":"TEXT","notNull":false},"tags":{"type":"TEXT","notNull":false},"level_min":{"type":"INTEGER","notNull":false,"default":0},"level_max":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"status":{"type":"TEXT","notNull":false,"default":"draft"}},"indexes":[{"name":"courses_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"courses_meta_type_idx","columns":["_meta_type"]},{"name":"courses_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"88cc23ab"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:AuthoredCourse":{"name":"authoredcourse","className":"AuthoredCourse","qualifiedName":"@happyvertical/smrt-education:AuthoredCourse","collection":"courses","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true}}},"title":{"type":"text","required":true,"_meta":{"required":true}},"summary":{"type":"text","required":false},"description":{"type":"text","required":false},"sourceKey":{"type":"text","required":false},"sourceUrl":{"type":"text","required":false},"sourceRef":{"type":"text","required":false},"license":{"type":"text","required":false},"licenseKind":{"type":"text","required":false,"default":"own-work","enum":["own-work","open-license","personal-use-copy","licensed-for-sharing"]},"licenseNote":{"type":"text","required":false},"attestedBy":{"type":"text","required":false},"subject":{"type":"text","required":false},"tags":{"type":"text","required":false},"levelMin":{"type":"integer","required":true,"default":0},"levelMax":{"type":"integer","required":true,"default":0},"difficulty":{"type":"decimal","required":true,"default":0},"estimatedMinutes":{"type":"integer","required":true,"default":0},"modality":{"type":"text","required":false,"default":"online","enum":["online","printable","kit","video","game","mixed"]},"status":{"type":"text","required":false,"default":"draft","enum":["draft","published","archived"]}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"courses","api":false,"mcp":false,"cli":false,"tableStrategy":"sti"},"extends":"Course","exportName":"AuthoredCourse","collectionExportName":"AuthoredCourseCollection","displayLabelField":"title","validationRules":[{"field":"title","rule":"required","fieldType":"text"},{"field":"levelMin","rule":"required","fieldType":"integer"},{"field":"levelMax","rule":"required","fieldType":"integer"},{"field":"difficulty","rule":"required","fieldType":"decimal"},{"field":"estimatedMinutes","rule":"required","fieldType":"integer"}],"schema":{"tableName":"courses","ddl":"CREATE TABLE IF NOT EXISTS \\"courses\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"summary\\" TEXT,\\n \\"description\\" TEXT,\\n \\"source_key\\" TEXT,\\n \\"source_url\\" TEXT,\\n \\"source_ref\\" TEXT,\\n \\"license\\" TEXT,\\n \\"license_kind\\" TEXT DEFAULT 'own-work',\\n \\"license_note\\" TEXT,\\n \\"attested_by\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"tags\\" TEXT,\\n \\"level_min\\" INTEGER DEFAULT 0,\\n \\"level_max\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"status\\" TEXT DEFAULT 'draft'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"title":{"type":"TEXT","notNull":false},"summary":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false},"source_key":{"type":"TEXT","notNull":false},"source_url":{"type":"TEXT","notNull":false},"source_ref":{"type":"TEXT","notNull":false},"license":{"type":"TEXT","notNull":false},"license_kind":{"type":"TEXT","notNull":false,"default":"own-work"},"license_note":{"type":"TEXT","notNull":false},"attested_by":{"type":"TEXT","notNull":false},"subject":{"type":"TEXT","notNull":false},"tags":{"type":"TEXT","notNull":false},"level_min":{"type":"INTEGER","notNull":false,"default":0},"level_max":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"status":{"type":"TEXT","notNull":false,"default":"draft"}},"indexes":[{"name":"courses_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"courses_meta_type_idx","columns":["_meta_type"]},{"name":"courses_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"88cc23ab"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseSection":{"name":"coursesection","className":"CourseSection","qualifiedName":"@happyvertical/smrt-education:CourseSection","collection":"coursesections","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"title":{"type":"text","required":true,"_meta":{"required":true}},"sortOrder":{"type":"integer","required":true,"default":0}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"CourseSection","collectionExportName":"CourseSectionCollection","displayLabelField":"title","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"title","rule":"required","fieldType":"text"},{"field":"sortOrder","rule":"required","fieldType":"integer"}],"schema":{"tableName":"course_sections","ddl":"CREATE TABLE IF NOT EXISTS \\"course_sections\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"course_id\\" UUID NOT NULL,\\n \\"title\\" TEXT NOT NULL,\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":true,"unique":false},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"course_sections_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"course_sections_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_sections_course_id_idx","columns":["course_id"]}],"version":"e20480d7"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Lesson":{"name":"lesson","className":"Lesson","qualifiedName":"@happyvertical/smrt-education:Lesson","collection":"lessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"sectionId":{"type":"foreignKey","required":true,"related":"CourseSection","_meta":{"required":true}},"title":{"type":"text","required":true,"_meta":{"required":true}},"body":{"type":"text","required":false},"sortOrder":{"type":"integer","required":true,"default":0},"estimatedMinutes":{"type":"integer","required":true,"default":0},"difficulty":{"type":"decimal","required":true,"default":0},"modality":{"type":"text","required":false,"default":"online","enum":["online","printable","kit","video","game","mixed"]},"completionRule":{"type":"text","required":false,"default":"attest","enum":["attest","submit","score","external"]},"externalRef":{"type":"text","required":false},"externalUrl":{"type":"text","required":false}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"Lesson","collectionExportName":"LessonCollection","displayLabelField":"title","validationRules":[{"field":"sectionId","rule":"required","fieldType":"foreignKey"},{"field":"title","rule":"required","fieldType":"text"},{"field":"sortOrder","rule":"required","fieldType":"integer"},{"field":"estimatedMinutes","rule":"required","fieldType":"integer"},{"field":"difficulty","rule":"required","fieldType":"decimal"}],"schema":{"tableName":"lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"section_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"completion_rule\\" TEXT DEFAULT 'attest',\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"video_url\\" TEXT,\\n \\"printable_url\\" TEXT,\\n \\"answer_url\\" TEXT,\\n \\"pages\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false},"body":{"type":"TEXT","notNull":false},"sort_order":{"type":"INTEGER","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"completion_rule":{"type":"TEXT","notNull":false,"default":"attest"},"external_ref":{"type":"TEXT","notNull":false},"external_url":{"type":"TEXT","notNull":false},"video_url":{"type":"TEXT","notNull":false},"printable_url":{"type":"TEXT","notNull":false},"answer_url":{"type":"TEXT","notNull":false},"pages":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"lessons_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"lessons_meta_type_idx","columns":["_meta_type"]},{"name":"lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lessons_section_id_idx","columns":["section_id"]}],"version":"092df043"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Reading":{"name":"reading","className":"Reading","qualifiedName":"@happyvertical/smrt-education:Reading","collection":"lessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true}}},"sectionId":{"type":"foreignKey","required":true,"related":"CourseSection","_meta":{"required":true}},"title":{"type":"text","required":true,"_meta":{"required":true}},"body":{"type":"text","required":false},"sortOrder":{"type":"integer","required":true,"default":0},"estimatedMinutes":{"type":"integer","required":true,"default":0},"difficulty":{"type":"decimal","required":true,"default":0},"modality":{"type":"text","required":false,"default":"online","enum":["online","printable","kit","video","game","mixed"]},"completionRule":{"type":"text","required":false,"default":"attest","enum":["attest","submit","score","external"]},"externalRef":{"type":"text","required":false},"externalUrl":{"type":"text","required":false}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"lessons","api":false,"mcp":false,"cli":false,"tableStrategy":"sti"},"extends":"Lesson","exportName":"Reading","collectionExportName":"ReadingCollection","displayLabelField":"title","validationRules":[{"field":"sectionId","rule":"required","fieldType":"foreignKey"},{"field":"title","rule":"required","fieldType":"text"},{"field":"sortOrder","rule":"required","fieldType":"integer"},{"field":"estimatedMinutes","rule":"required","fieldType":"integer"},{"field":"difficulty","rule":"required","fieldType":"decimal"}],"schema":{"tableName":"lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"section_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"completion_rule\\" TEXT DEFAULT 'attest',\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"video_url\\" TEXT,\\n \\"printable_url\\" TEXT,\\n \\"answer_url\\" TEXT,\\n \\"pages\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false},"body":{"type":"TEXT","notNull":false},"sort_order":{"type":"INTEGER","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"completion_rule":{"type":"TEXT","notNull":false,"default":"attest"},"external_ref":{"type":"TEXT","notNull":false},"external_url":{"type":"TEXT","notNull":false},"video_url":{"type":"TEXT","notNull":false},"printable_url":{"type":"TEXT","notNull":false},"answer_url":{"type":"TEXT","notNull":false},"pages":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"lessons_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"lessons_meta_type_idx","columns":["_meta_type"]},{"name":"lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lessons_section_id_idx","columns":["section_id"]}],"version":"9d8b6fcd"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Video":{"name":"video","className":"Video","qualifiedName":"@happyvertical/smrt-education:Video","collection":"lessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true}}},"sectionId":{"type":"foreignKey","required":true,"related":"CourseSection","_meta":{"required":true}},"title":{"type":"text","required":true,"_meta":{"required":true}},"body":{"type":"text","required":false},"sortOrder":{"type":"integer","required":true,"default":0},"estimatedMinutes":{"type":"integer","required":true,"default":0},"difficulty":{"type":"decimal","required":true,"default":0},"modality":{"type":"text","required":false,"default":"online","enum":["online","printable","kit","video","game","mixed"]},"completionRule":{"type":"text","required":false,"default":"attest","enum":["attest","submit","score","external"]},"externalRef":{"type":"text","required":false},"externalUrl":{"type":"text","required":false},"videoUrl":{"type":"text","required":false}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"lessons","api":false,"mcp":false,"cli":false,"tableStrategy":"sti"},"extends":"Lesson","exportName":"Video","collectionExportName":"VideoCollection","displayLabelField":"title","validationRules":[{"field":"sectionId","rule":"required","fieldType":"foreignKey"},{"field":"title","rule":"required","fieldType":"text"},{"field":"sortOrder","rule":"required","fieldType":"integer"},{"field":"estimatedMinutes","rule":"required","fieldType":"integer"},{"field":"difficulty","rule":"required","fieldType":"decimal"}],"schema":{"tableName":"lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"section_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"completion_rule\\" TEXT DEFAULT 'attest',\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"video_url\\" TEXT,\\n \\"printable_url\\" TEXT,\\n \\"answer_url\\" TEXT,\\n \\"pages\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false},"body":{"type":"TEXT","notNull":false},"sort_order":{"type":"INTEGER","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"completion_rule":{"type":"TEXT","notNull":false,"default":"attest"},"external_ref":{"type":"TEXT","notNull":false},"external_url":{"type":"TEXT","notNull":false},"video_url":{"type":"TEXT","notNull":false},"printable_url":{"type":"TEXT","notNull":false},"answer_url":{"type":"TEXT","notNull":false},"pages":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"lessons_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"lessons_meta_type_idx","columns":["_meta_type"]},{"name":"lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lessons_section_id_idx","columns":["section_id"]}],"version":"9e0ef984"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Worksheet":{"name":"worksheet","className":"Worksheet","qualifiedName":"@happyvertical/smrt-education:Worksheet","collection":"lessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true}}},"sectionId":{"type":"foreignKey","required":true,"related":"CourseSection","_meta":{"required":true}},"title":{"type":"text","required":true,"_meta":{"required":true}},"body":{"type":"text","required":false},"sortOrder":{"type":"integer","required":true,"default":0},"estimatedMinutes":{"type":"integer","required":true,"default":0},"difficulty":{"type":"decimal","required":true,"default":0},"modality":{"type":"text","required":false,"default":"online","enum":["online","printable","kit","video","game","mixed"]},"completionRule":{"type":"text","required":false,"default":"submit","enum":["attest","submit","score","external"]},"externalRef":{"type":"text","required":false},"externalUrl":{"type":"text","required":false},"printableUrl":{"type":"text","required":false},"answerUrl":{"type":"text","required":false},"pages":{"type":"integer","required":true,"default":0}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"lessons","api":false,"mcp":false,"cli":false,"tableStrategy":"sti"},"extends":"Lesson","exportName":"Worksheet","collectionExportName":"WorksheetCollection","displayLabelField":"title","validationRules":[{"field":"sectionId","rule":"required","fieldType":"foreignKey"},{"field":"title","rule":"required","fieldType":"text"},{"field":"sortOrder","rule":"required","fieldType":"integer"},{"field":"estimatedMinutes","rule":"required","fieldType":"integer"},{"field":"difficulty","rule":"required","fieldType":"decimal"},{"field":"pages","rule":"required","fieldType":"integer"}],"schema":{"tableName":"lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"section_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"completion_rule\\" TEXT DEFAULT 'attest',\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"video_url\\" TEXT,\\n \\"printable_url\\" TEXT,\\n \\"answer_url\\" TEXT,\\n \\"pages\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false},"body":{"type":"TEXT","notNull":false},"sort_order":{"type":"INTEGER","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"completion_rule":{"type":"TEXT","notNull":false,"default":"attest"},"external_ref":{"type":"TEXT","notNull":false},"external_url":{"type":"TEXT","notNull":false},"video_url":{"type":"TEXT","notNull":false},"printable_url":{"type":"TEXT","notNull":false},"answer_url":{"type":"TEXT","notNull":false},"pages":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"lessons_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"lessons_meta_type_idx","columns":["_meta_type"]},{"name":"lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lessons_section_id_idx","columns":["section_id"]}],"version":"10976938"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Exercise":{"name":"exercise","className":"Exercise","qualifiedName":"@happyvertical/smrt-education:Exercise","collection":"lessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/catalog.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true}}},"sectionId":{"type":"foreignKey","required":true,"related":"CourseSection","_meta":{"required":true}},"title":{"type":"text","required":true,"_meta":{"required":true}},"body":{"type":"text","required":false},"sortOrder":{"type":"integer","required":true,"default":0},"estimatedMinutes":{"type":"integer","required":true,"default":0},"difficulty":{"type":"decimal","required":true,"default":0},"modality":{"type":"text","required":false,"default":"online","enum":["online","printable","kit","video","game","mixed"]},"completionRule":{"type":"text","required":false,"default":"attest","enum":["attest","submit","score","external"]},"externalRef":{"type":"text","required":false},"externalUrl":{"type":"text","required":false}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"lessons","api":false,"mcp":false,"cli":false,"tableStrategy":"sti"},"extends":"Lesson","exportName":"Exercise","collectionExportName":"ExerciseCollection","displayLabelField":"title","validationRules":[{"field":"sectionId","rule":"required","fieldType":"foreignKey"},{"field":"title","rule":"required","fieldType":"text"},{"field":"sortOrder","rule":"required","fieldType":"integer"},{"field":"estimatedMinutes","rule":"required","fieldType":"integer"},{"field":"difficulty","rule":"required","fieldType":"decimal"}],"schema":{"tableName":"lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"section_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"completion_rule\\" TEXT DEFAULT 'attest',\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"video_url\\" TEXT,\\n \\"printable_url\\" TEXT,\\n \\"answer_url\\" TEXT,\\n \\"pages\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false},"body":{"type":"TEXT","notNull":false},"sort_order":{"type":"INTEGER","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"completion_rule":{"type":"TEXT","notNull":false,"default":"attest"},"external_ref":{"type":"TEXT","notNull":false},"external_url":{"type":"TEXT","notNull":false},"video_url":{"type":"TEXT","notNull":false},"printable_url":{"type":"TEXT","notNull":false},"answer_url":{"type":"TEXT","notNull":false},"pages":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"lessons_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"lessons_meta_type_idx","columns":["_meta_type"]},{"name":"lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lessons_section_id_idx","columns":["section_id"]}],"version":"145eadbe"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseCollection":{"name":"coursecollection","className":"CourseCollection","qualifiedName":"@happyvertical/smrt-education:CourseCollection","collection":"courses","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Course","exportName":"CourseCollection","collectionExportName":"CourseCollectionCollection","schema":{"tableName":"courses","ddl":"CREATE TABLE IF NOT EXISTS \\"courses\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"summary\\" TEXT,\\n \\"description\\" TEXT,\\n \\"source_key\\" TEXT,\\n \\"source_url\\" TEXT,\\n \\"source_ref\\" TEXT,\\n \\"license\\" TEXT,\\n \\"license_kind\\" TEXT DEFAULT 'own-work',\\n \\"license_note\\" TEXT,\\n \\"attested_by\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"tags\\" TEXT,\\n \\"level_min\\" INTEGER DEFAULT 0,\\n \\"level_max\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"status\\" TEXT DEFAULT 'draft'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"title":{"type":"TEXT","notNull":false},"summary":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false},"source_key":{"type":"TEXT","notNull":false},"source_url":{"type":"TEXT","notNull":false},"source_ref":{"type":"TEXT","notNull":false},"license":{"type":"TEXT","notNull":false},"license_kind":{"type":"TEXT","notNull":false,"default":"own-work"},"license_note":{"type":"TEXT","notNull":false},"attested_by":{"type":"TEXT","notNull":false},"subject":{"type":"TEXT","notNull":false},"tags":{"type":"TEXT","notNull":false},"level_min":{"type":"INTEGER","notNull":false,"default":0},"level_max":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"status":{"type":"TEXT","notNull":false,"default":"draft"}},"indexes":[{"name":"courses_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"courses_meta_type_idx","columns":["_meta_type"]},{"name":"courses_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"88cc23ab"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:ExternalCourseCollection":{"name":"externalcoursecollection","className":"ExternalCourseCollection","qualifiedName":"@happyvertical/smrt-education:ExternalCourseCollection","collection":"courses","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"courses","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"ExternalCourse","exportName":"ExternalCourseCollection","collectionExportName":"ExternalCourseCollectionCollection","schema":{"tableName":"courses","ddl":"CREATE TABLE IF NOT EXISTS \\"courses\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"summary\\" TEXT,\\n \\"description\\" TEXT,\\n \\"source_key\\" TEXT,\\n \\"source_url\\" TEXT,\\n \\"source_ref\\" TEXT,\\n \\"license\\" TEXT,\\n \\"license_kind\\" TEXT DEFAULT 'own-work',\\n \\"license_note\\" TEXT,\\n \\"attested_by\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"tags\\" TEXT,\\n \\"level_min\\" INTEGER DEFAULT 0,\\n \\"level_max\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"status\\" TEXT DEFAULT 'draft'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"title":{"type":"TEXT","notNull":false},"summary":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false},"source_key":{"type":"TEXT","notNull":false},"source_url":{"type":"TEXT","notNull":false},"source_ref":{"type":"TEXT","notNull":false},"license":{"type":"TEXT","notNull":false},"license_kind":{"type":"TEXT","notNull":false,"default":"own-work"},"license_note":{"type":"TEXT","notNull":false},"attested_by":{"type":"TEXT","notNull":false},"subject":{"type":"TEXT","notNull":false},"tags":{"type":"TEXT","notNull":false},"level_min":{"type":"INTEGER","notNull":false,"default":0},"level_max":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"status":{"type":"TEXT","notNull":false,"default":"draft"}},"indexes":[{"name":"courses_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"courses_meta_type_idx","columns":["_meta_type"]},{"name":"courses_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"88cc23ab"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:AuthoredCourseCollection":{"name":"authoredcoursecollection","className":"AuthoredCourseCollection","qualifiedName":"@happyvertical/smrt-education:AuthoredCourseCollection","collection":"courses","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"courses","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"AuthoredCourse","exportName":"AuthoredCourseCollection","collectionExportName":"AuthoredCourseCollectionCollection","schema":{"tableName":"courses","ddl":"CREATE TABLE IF NOT EXISTS \\"courses\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"summary\\" TEXT,\\n \\"description\\" TEXT,\\n \\"source_key\\" TEXT,\\n \\"source_url\\" TEXT,\\n \\"source_ref\\" TEXT,\\n \\"license\\" TEXT,\\n \\"license_kind\\" TEXT DEFAULT 'own-work',\\n \\"license_note\\" TEXT,\\n \\"attested_by\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"tags\\" TEXT,\\n \\"level_min\\" INTEGER DEFAULT 0,\\n \\"level_max\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"status\\" TEXT DEFAULT 'draft'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"title":{"type":"TEXT","notNull":false},"summary":{"type":"TEXT","notNull":false},"description":{"type":"TEXT","notNull":false},"source_key":{"type":"TEXT","notNull":false},"source_url":{"type":"TEXT","notNull":false},"source_ref":{"type":"TEXT","notNull":false},"license":{"type":"TEXT","notNull":false},"license_kind":{"type":"TEXT","notNull":false,"default":"own-work"},"license_note":{"type":"TEXT","notNull":false},"attested_by":{"type":"TEXT","notNull":false},"subject":{"type":"TEXT","notNull":false},"tags":{"type":"TEXT","notNull":false},"level_min":{"type":"INTEGER","notNull":false,"default":0},"level_max":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"status":{"type":"TEXT","notNull":false,"default":"draft"}},"indexes":[{"name":"courses_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"courses_meta_type_idx","columns":["_meta_type"]},{"name":"courses_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"88cc23ab"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseSectionCollection":{"name":"coursesectioncollection","className":"CourseSectionCollection","qualifiedName":"@happyvertical/smrt-education:CourseSectionCollection","collection":"coursesections","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseSection","exportName":"CourseSectionCollection","collectionExportName":"CourseSectionCollectionCollection","schema":{"tableName":"course_sections","ddl":"CREATE TABLE IF NOT EXISTS \\"course_sections\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"course_id\\" UUID NOT NULL,\\n \\"title\\" TEXT NOT NULL,\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":true,"unique":false},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"course_sections_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"course_sections_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_sections_course_id_idx","columns":["course_id"]}],"version":"e20480d7"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LessonCollection":{"name":"lessoncollection","className":"LessonCollection","qualifiedName":"@happyvertical/smrt-education:LessonCollection","collection":"lessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Lesson","exportName":"LessonCollection","collectionExportName":"LessonCollectionCollection","schema":{"tableName":"lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"section_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"completion_rule\\" TEXT DEFAULT 'attest',\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"video_url\\" TEXT,\\n \\"printable_url\\" TEXT,\\n \\"answer_url\\" TEXT,\\n \\"pages\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false},"body":{"type":"TEXT","notNull":false},"sort_order":{"type":"INTEGER","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"completion_rule":{"type":"TEXT","notNull":false,"default":"attest"},"external_ref":{"type":"TEXT","notNull":false},"external_url":{"type":"TEXT","notNull":false},"video_url":{"type":"TEXT","notNull":false},"printable_url":{"type":"TEXT","notNull":false},"answer_url":{"type":"TEXT","notNull":false},"pages":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"lessons_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"lessons_meta_type_idx","columns":["_meta_type"]},{"name":"lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lessons_section_id_idx","columns":["section_id"]}],"version":"092df043"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:ReadingCollection":{"name":"readingcollection","className":"ReadingCollection","qualifiedName":"@happyvertical/smrt-education:ReadingCollection","collection":"lessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"lessons","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Reading","exportName":"ReadingCollection","collectionExportName":"ReadingCollectionCollection","schema":{"tableName":"lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"section_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"completion_rule\\" TEXT DEFAULT 'attest',\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"video_url\\" TEXT,\\n \\"printable_url\\" TEXT,\\n \\"answer_url\\" TEXT,\\n \\"pages\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false},"body":{"type":"TEXT","notNull":false},"sort_order":{"type":"INTEGER","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"completion_rule":{"type":"TEXT","notNull":false,"default":"attest"},"external_ref":{"type":"TEXT","notNull":false},"external_url":{"type":"TEXT","notNull":false},"video_url":{"type":"TEXT","notNull":false},"printable_url":{"type":"TEXT","notNull":false},"answer_url":{"type":"TEXT","notNull":false},"pages":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"lessons_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"lessons_meta_type_idx","columns":["_meta_type"]},{"name":"lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lessons_section_id_idx","columns":["section_id"]}],"version":"9d8b6fcd"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:VideoCollection":{"name":"videocollection","className":"VideoCollection","qualifiedName":"@happyvertical/smrt-education:VideoCollection","collection":"lessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"lessons","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Video","exportName":"VideoCollection","collectionExportName":"VideoCollectionCollection","schema":{"tableName":"lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"section_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"completion_rule\\" TEXT DEFAULT 'attest',\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"video_url\\" TEXT,\\n \\"printable_url\\" TEXT,\\n \\"answer_url\\" TEXT,\\n \\"pages\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false},"body":{"type":"TEXT","notNull":false},"sort_order":{"type":"INTEGER","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"completion_rule":{"type":"TEXT","notNull":false,"default":"attest"},"external_ref":{"type":"TEXT","notNull":false},"external_url":{"type":"TEXT","notNull":false},"video_url":{"type":"TEXT","notNull":false},"printable_url":{"type":"TEXT","notNull":false},"answer_url":{"type":"TEXT","notNull":false},"pages":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"lessons_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"lessons_meta_type_idx","columns":["_meta_type"]},{"name":"lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lessons_section_id_idx","columns":["section_id"]}],"version":"9e0ef984"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorksheetCollection":{"name":"worksheetcollection","className":"WorksheetCollection","qualifiedName":"@happyvertical/smrt-education:WorksheetCollection","collection":"lessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"lessons","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Worksheet","exportName":"WorksheetCollection","collectionExportName":"WorksheetCollectionCollection","schema":{"tableName":"lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"section_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"completion_rule\\" TEXT DEFAULT 'attest',\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"video_url\\" TEXT,\\n \\"printable_url\\" TEXT,\\n \\"answer_url\\" TEXT,\\n \\"pages\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false},"body":{"type":"TEXT","notNull":false},"sort_order":{"type":"INTEGER","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"completion_rule":{"type":"TEXT","notNull":false,"default":"attest"},"external_ref":{"type":"TEXT","notNull":false},"external_url":{"type":"TEXT","notNull":false},"video_url":{"type":"TEXT","notNull":false},"printable_url":{"type":"TEXT","notNull":false},"answer_url":{"type":"TEXT","notNull":false},"pages":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"lessons_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"lessons_meta_type_idx","columns":["_meta_type"]},{"name":"lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lessons_section_id_idx","columns":["section_id"]}],"version":"10976938"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:ExerciseCollection":{"name":"exercisecollection","className":"ExerciseCollection","qualifiedName":"@happyvertical/smrt-education:ExerciseCollection","collection":"lessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"lessons","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Exercise","exportName":"ExerciseCollection","collectionExportName":"ExerciseCollectionCollection","schema":{"tableName":"lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"section_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"sort_order\\" INTEGER DEFAULT 0,\\n \\"estimated_minutes\\" INTEGER DEFAULT 0,\\n \\"difficulty\\" REAL DEFAULT 0,\\n \\"modality\\" TEXT DEFAULT 'online',\\n \\"completion_rule\\" TEXT DEFAULT 'attest',\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"video_url\\" TEXT,\\n \\"printable_url\\" TEXT,\\n \\"answer_url\\" TEXT,\\n \\"pages\\" INTEGER DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false},"body":{"type":"TEXT","notNull":false},"sort_order":{"type":"INTEGER","notNull":false,"default":0},"estimated_minutes":{"type":"INTEGER","notNull":false,"default":0},"difficulty":{"type":"REAL","notNull":false,"default":0},"modality":{"type":"TEXT","notNull":false,"default":"online"},"completion_rule":{"type":"TEXT","notNull":false,"default":"attest"},"external_ref":{"type":"TEXT","notNull":false},"external_url":{"type":"TEXT","notNull":false},"video_url":{"type":"TEXT","notNull":false},"printable_url":{"type":"TEXT","notNull":false},"answer_url":{"type":"TEXT","notNull":false},"pages":{"type":"INTEGER","notNull":false,"default":0}},"indexes":[{"name":"lessons_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"lessons_meta_type_idx","columns":["_meta_type"]},{"name":"lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lessons_section_id_idx","columns":["section_id"]}],"version":"145eadbe"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LessonAssetCollection":{"name":"lessonassetcollection","className":"LessonAssetCollection","qualifiedName":"@happyvertical/smrt-education:LessonAssetCollection","collection":"lessonassets","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{"byRight":{"name":"byRight","async":true,"parameters":[{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<TItem[]>","isStatic":false,"isPublic":true},"byLeft":{"name":"byLeft","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<TItem[]>","isStatic":false,"isPublic":true},"attach":{"name":"attach","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<TItem>","isStatic":false,"isPublic":true},"detach":{"name":"detach","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightIds","type":"string[]","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"lesson_assets","api":false,"mcp":false,"cli":false},"extends":"SmrtJunction","extendsTypeArg":"LessonAsset","exportName":"LessonAssetCollection","collectionExportName":"LessonAssetCollectionCollection","schema":{"tableName":"lesson_assets","ddl":"CREATE TABLE IF NOT EXISTS \\"lesson_assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"lesson_id\\" UUID NOT NULL,\\n \\"asset_id\\" UUID NOT NULL,\\n \\"relationship\\" TEXT NOT NULL DEFAULT 'attachment',\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"relationship":{"type":"TEXT","notNull":true,"unique":false,"default":"attachment"},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"lesson_assets_tenant_id_lesson_id_idx","columns":["tenant_id","lesson_id","asset_id","relationship"],"unique":true,"nullsNotDistinct":true},{"name":"lesson_assets_slug_context_idx","columns":["slug","context"]},{"name":"lesson_assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lesson_assets_lesson_id_idx","columns":["lesson_id"]},{"name":"lesson_assets_asset_id_idx","columns":["asset_id"]}],"version":"d96385c6"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LearnerCollection":{"name":"learnercollection","className":"LearnerCollection","qualifiedName":"@happyvertical/smrt-education:LearnerCollection","collection":"learners","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Learner","exportName":"LearnerCollection","collectionExportName":"LearnerCollectionCollection","schema":{"tableName":"learners","ddl":"CREATE TABLE IF NOT EXISTS \\"learners\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"user_id\\" UUID NOT NULL,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"display_name\\" TEXT,\\n \\"birth_date\\" TIMESTAMP,\\n \\"level\\" INTEGER NOT NULL DEFAULT 0,\\n \\"settings\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"display_name":{"type":"TEXT","notNull":false,"unique":false},"birth_date":{"type":"TIMESTAMP","notNull":false,"unique":false},"level":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"settings":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"learners_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"learners_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"learners_user_id_idx","columns":["user_id"]},{"name":"learners_profile_id_idx","columns":["profile_id"]}],"version":"ca9907b5"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CurriculumCollection":{"name":"curriculumcollection","className":"CurriculumCollection","qualifiedName":"@happyvertical/smrt-education:CurriculumCollection","collection":"curriculums","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"curricula","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Curriculum","exportName":"CurriculumCollection","collectionExportName":"CurriculumCollectionCollection","schema":{"tableName":"curricula","ddl":"CREATE TABLE IF NOT EXISTS \\"curricula\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"title\\" TEXT NOT NULL,\\n \\"starts_on\\" TIMESTAMP,\\n \\"ends_on\\" TIMESTAMP,\\n \\"status\\" TEXT DEFAULT 'planned'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":true,"unique":false},"starts_on":{"type":"TIMESTAMP","notNull":false,"unique":false},"ends_on":{"type":"TIMESTAMP","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"planned"}},"indexes":[{"name":"curricula_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"curricula_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"curricula_learner_id_idx","columns":["learner_id"]}],"version":"b7e90cbd"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EnrollmentCollection":{"name":"enrollmentcollection","className":"EnrollmentCollection","qualifiedName":"@happyvertical/smrt-education:EnrollmentCollection","collection":"enrollments","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Enrollment","exportName":"EnrollmentCollection","collectionExportName":"EnrollmentCollectionCollection","schema":{"tableName":"enrollments","ddl":"CREATE TABLE IF NOT EXISTS \\"enrollments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"curriculum_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"status\\" TEXT DEFAULT 'planned',\\n \\"started_at\\" TIMESTAMP,\\n \\"completed_at\\" TIMESTAMP,\\n \\"target_minutes_per_week\\" INTEGER NOT NULL DEFAULT 0,\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"curriculum_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"curricula","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"planned"},"started_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"completed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"target_minutes_per_week":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"enrollments_tenant_id_curriculum_id_idx","columns":["tenant_id","curriculum_id","course_id"],"unique":true},{"name":"enrollments_slug_context_idx","columns":["slug","context"]},{"name":"enrollments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"enrollments_curriculum_id_idx","columns":["curriculum_id"]},{"name":"enrollments_learner_id_idx","columns":["learner_id"]},{"name":"enrollments_course_id_idx","columns":["course_id"]}],"version":"2a34b5ee"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LessonProgressCollection":{"name":"lessonprogresscollection","className":"LessonProgressCollection","qualifiedName":"@happyvertical/smrt-education:LessonProgressCollection","collection":"lessonprogresses","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"lesson_progress","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"LessonProgress","exportName":"LessonProgressCollection","collectionExportName":"LessonProgressCollectionCollection","schema":{"tableName":"lesson_progress","ddl":"CREATE TABLE IF NOT EXISTS \\"lesson_progress\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"lesson_id\\" UUID NOT NULL,\\n \\"status\\" TEXT DEFAULT 'not_started',\\n \\"started_at\\" TIMESTAMP,\\n \\"completed_at\\" TIMESTAMP,\\n \\"time_spent_seconds\\" INTEGER NOT NULL DEFAULT 0,\\n \\"attempts\\" INTEGER NOT NULL DEFAULT 0,\\n \\"best_score\\" REAL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"not_started"},"started_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"completed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"time_spent_seconds":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"attempts":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"best_score":{"type":"REAL","notNull":false,"unique":false}},"indexes":[{"name":"lesson_progress_tenant_id_enrollment_id_idx","columns":["tenant_id","enrollment_id","lesson_id"],"unique":true},{"name":"lesson_progress_slug_context_idx","columns":["slug","context"]},{"name":"lesson_progress_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lesson_progress_enrollment_id_idx","columns":["enrollment_id"]},{"name":"lesson_progress_learner_id_idx","columns":["learner_id"]},{"name":"lesson_progress_lesson_id_idx","columns":["lesson_id"]}],"version":"36704fbd"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:SubmissionCollection":{"name":"submissioncollection","className":"SubmissionCollection","qualifiedName":"@happyvertical/smrt-education:SubmissionCollection","collection":"submissions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Submission","exportName":"SubmissionCollection","collectionExportName":"SubmissionCollectionCollection","schema":{"tableName":"submissions","ddl":"CREATE TABLE IF NOT EXISTS \\"submissions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"learner_id\\" UUID,\\n \\"lesson_id\\" UUID,\\n \\"progress_id\\" UUID,\\n \\"submitted_at\\" TEXT,\\n \\"status\\" TEXT DEFAULT 'captured',\\n \\"notes\\" TEXT,\\n \\"capture_key\\" TEXT,\\n \\"capture_digest\\" TEXT,\\n \\"kind\\" TEXT DEFAULT 'completed_work',\\n \\"previous_submission_id\\" UUID,\\n \\"intake_item_id\\" TEXT,\\n \\"page_count\\" INTEGER DEFAULT 0,\\n \\"ocr_text\\" TEXT,\\n \\"extracted\\" TEXT,\\n \\"reported_by\\" TEXT DEFAULT 'learner',\\n \\"evidence_url\\" TEXT,\\n \\"reported_score\\" REAL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"progress_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lesson_progress","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submitted_at":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false,"default":"captured"},"notes":{"type":"TEXT","notNull":false},"capture_key":{"type":"TEXT","notNull":false},"capture_digest":{"type":"TEXT","notNull":false},"kind":{"type":"TEXT","notNull":false,"default":"completed_work"},"previous_submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_item_id":{"type":"TEXT","notNull":false},"page_count":{"type":"INTEGER","notNull":false,"default":0},"ocr_text":{"type":"TEXT","notNull":false},"extracted":{"type":"TEXT","notNull":false},"reported_by":{"type":"TEXT","notNull":false,"default":"learner"},"evidence_url":{"type":"TEXT","notNull":false},"reported_score":{"type":"REAL","notNull":false}},"indexes":[{"name":"submissions_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"submissions_meta_type_idx","columns":["_meta_type"]},{"name":"submissions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submissions_learner_id_idx","columns":["learner_id"]},{"name":"submissions_lesson_id_idx","columns":["lesson_id"]},{"name":"submissions_progress_id_idx","columns":["progress_id"]},{"name":"submissions_previous_submission_id_idx","columns":["previous_submission_id"]}],"version":"27a21ab4"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:SubmissionIntakeBindingCollection":{"name":"submissionintakebindingcollection","className":"SubmissionIntakeBindingCollection","qualifiedName":"@happyvertical/smrt-education:SubmissionIntakeBindingCollection","collection":"submissionintakebindings","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"submission_intake_bindings","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"SubmissionIntakeBinding","exportName":"SubmissionIntakeBindingCollection","collectionExportName":"SubmissionIntakeBindingCollectionCollection","schema":{"tableName":"submission_intake_bindings","ddl":"CREATE TABLE IF NOT EXISTS \\"submission_intake_bindings\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"intake_item_id\\" TEXT NOT NULL,\\n \\"submission_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"intake_item_id":{"type":"TEXT","notNull":true,"unique":false},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"submission_intake_bindings_tenant_id_intake_item_id_idx","columns":["tenant_id","intake_item_id"],"unique":true},{"name":"submission_intake_bindings_slug_context_idx","columns":["slug","context"]},{"name":"submission_intake_bindings_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submission_intake_bindings_submission_id_idx","columns":["submission_id"]}],"version":"7102c909"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:ScannedSubmissionCollection":{"name":"scannedsubmissioncollection","className":"ScannedSubmissionCollection","qualifiedName":"@happyvertical/smrt-education:ScannedSubmissionCollection","collection":"submissions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"submissions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"ScannedSubmission","exportName":"ScannedSubmissionCollection","collectionExportName":"ScannedSubmissionCollectionCollection","schema":{"tableName":"submissions","ddl":"CREATE TABLE IF NOT EXISTS \\"submissions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"learner_id\\" UUID,\\n \\"lesson_id\\" UUID,\\n \\"progress_id\\" UUID,\\n \\"submitted_at\\" TEXT,\\n \\"status\\" TEXT DEFAULT 'captured',\\n \\"notes\\" TEXT,\\n \\"capture_key\\" TEXT,\\n \\"capture_digest\\" TEXT,\\n \\"kind\\" TEXT DEFAULT 'completed_work',\\n \\"previous_submission_id\\" UUID,\\n \\"intake_item_id\\" TEXT,\\n \\"page_count\\" INTEGER DEFAULT 0,\\n \\"ocr_text\\" TEXT,\\n \\"extracted\\" TEXT,\\n \\"reported_by\\" TEXT DEFAULT 'learner',\\n \\"evidence_url\\" TEXT,\\n \\"reported_score\\" REAL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"progress_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lesson_progress","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submitted_at":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false,"default":"captured"},"notes":{"type":"TEXT","notNull":false},"capture_key":{"type":"TEXT","notNull":false},"capture_digest":{"type":"TEXT","notNull":false},"kind":{"type":"TEXT","notNull":false,"default":"completed_work"},"previous_submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_item_id":{"type":"TEXT","notNull":false},"page_count":{"type":"INTEGER","notNull":false,"default":0},"ocr_text":{"type":"TEXT","notNull":false},"extracted":{"type":"TEXT","notNull":false},"reported_by":{"type":"TEXT","notNull":false,"default":"learner"},"evidence_url":{"type":"TEXT","notNull":false},"reported_score":{"type":"REAL","notNull":false}},"indexes":[{"name":"submissions_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"submissions_meta_type_idx","columns":["_meta_type"]},{"name":"submissions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submissions_learner_id_idx","columns":["learner_id"]},{"name":"submissions_lesson_id_idx","columns":["lesson_id"]},{"name":"submissions_progress_id_idx","columns":["progress_id"]},{"name":"submissions_previous_submission_id_idx","columns":["previous_submission_id"]}],"version":"7c394510"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:ExternalCompletionCollection":{"name":"externalcompletioncollection","className":"ExternalCompletionCollection","qualifiedName":"@happyvertical/smrt-education:ExternalCompletionCollection","collection":"submissions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"submissions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"ExternalCompletion","exportName":"ExternalCompletionCollection","collectionExportName":"ExternalCompletionCollectionCollection","schema":{"tableName":"submissions","ddl":"CREATE TABLE IF NOT EXISTS \\"submissions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"learner_id\\" UUID,\\n \\"lesson_id\\" UUID,\\n \\"progress_id\\" UUID,\\n \\"submitted_at\\" TEXT,\\n \\"status\\" TEXT DEFAULT 'captured',\\n \\"notes\\" TEXT,\\n \\"capture_key\\" TEXT,\\n \\"capture_digest\\" TEXT,\\n \\"kind\\" TEXT DEFAULT 'completed_work',\\n \\"previous_submission_id\\" UUID,\\n \\"intake_item_id\\" TEXT,\\n \\"page_count\\" INTEGER DEFAULT 0,\\n \\"ocr_text\\" TEXT,\\n \\"extracted\\" TEXT,\\n \\"reported_by\\" TEXT DEFAULT 'learner',\\n \\"evidence_url\\" TEXT,\\n \\"reported_score\\" REAL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"progress_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lesson_progress","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submitted_at":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false,"default":"captured"},"notes":{"type":"TEXT","notNull":false},"capture_key":{"type":"TEXT","notNull":false},"capture_digest":{"type":"TEXT","notNull":false},"kind":{"type":"TEXT","notNull":false,"default":"completed_work"},"previous_submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_item_id":{"type":"TEXT","notNull":false},"page_count":{"type":"INTEGER","notNull":false,"default":0},"ocr_text":{"type":"TEXT","notNull":false},"extracted":{"type":"TEXT","notNull":false},"reported_by":{"type":"TEXT","notNull":false,"default":"learner"},"evidence_url":{"type":"TEXT","notNull":false},"reported_score":{"type":"REAL","notNull":false}},"indexes":[{"name":"submissions_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"submissions_meta_type_idx","columns":["_meta_type"]},{"name":"submissions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submissions_learner_id_idx","columns":["learner_id"]},{"name":"submissions_lesson_id_idx","columns":["lesson_id"]},{"name":"submissions_progress_id_idx","columns":["progress_id"]},{"name":"submissions_previous_submission_id_idx","columns":["previous_submission_id"]}],"version":"eff3715d"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:AttestationCollection":{"name":"attestationcollection","className":"AttestationCollection","qualifiedName":"@happyvertical/smrt-education:AttestationCollection","collection":"submissions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"submissions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Attestation","exportName":"AttestationCollection","collectionExportName":"AttestationCollectionCollection","schema":{"tableName":"submissions","ddl":"CREATE TABLE IF NOT EXISTS \\"submissions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"learner_id\\" UUID,\\n \\"lesson_id\\" UUID,\\n \\"progress_id\\" UUID,\\n \\"submitted_at\\" TEXT,\\n \\"status\\" TEXT DEFAULT 'captured',\\n \\"notes\\" TEXT,\\n \\"capture_key\\" TEXT,\\n \\"capture_digest\\" TEXT,\\n \\"kind\\" TEXT DEFAULT 'completed_work',\\n \\"previous_submission_id\\" UUID,\\n \\"intake_item_id\\" TEXT,\\n \\"page_count\\" INTEGER DEFAULT 0,\\n \\"ocr_text\\" TEXT,\\n \\"extracted\\" TEXT,\\n \\"reported_by\\" TEXT DEFAULT 'learner',\\n \\"evidence_url\\" TEXT,\\n \\"reported_score\\" REAL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"progress_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lesson_progress","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submitted_at":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false,"default":"captured"},"notes":{"type":"TEXT","notNull":false},"capture_key":{"type":"TEXT","notNull":false},"capture_digest":{"type":"TEXT","notNull":false},"kind":{"type":"TEXT","notNull":false,"default":"completed_work"},"previous_submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_item_id":{"type":"TEXT","notNull":false},"page_count":{"type":"INTEGER","notNull":false,"default":0},"ocr_text":{"type":"TEXT","notNull":false},"extracted":{"type":"TEXT","notNull":false},"reported_by":{"type":"TEXT","notNull":false,"default":"learner"},"evidence_url":{"type":"TEXT","notNull":false},"reported_score":{"type":"REAL","notNull":false}},"indexes":[{"name":"submissions_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"submissions_meta_type_idx","columns":["_meta_type"]},{"name":"submissions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submissions_learner_id_idx","columns":["learner_id"]},{"name":"submissions_lesson_id_idx","columns":["lesson_id"]},{"name":"submissions_progress_id_idx","columns":["progress_id"]},{"name":"submissions_previous_submission_id_idx","columns":["previous_submission_id"]}],"version":"4f3230a3"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GradeCollection":{"name":"gradecollection","className":"GradeCollection","qualifiedName":"@happyvertical/smrt-education:GradeCollection","collection":"grades","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Grade","exportName":"GradeCollection","collectionExportName":"GradeCollectionCollection","schema":{"tableName":"grades","ddl":"CREATE TABLE IF NOT EXISTS \\"grades\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"submission_id\\" UUID NOT NULL,\\n \\"grader_kind\\" TEXT NOT NULL DEFAULT 'auto',\\n \\"grader_profile_id\\" UUID,\\n \\"score\\" REAL,\\n \\"points_earned\\" INTEGER,\\n \\"points_possible\\" INTEGER,\\n \\"rubric_results\\" TEXT,\\n \\"question_revision_id\\" TEXT,\\n \\"feedback\\" TEXT,\\n \\"graded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"grader_kind":{"type":"TEXT","notNull":true,"unique":false,"default":"auto"},"grader_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"score":{"type":"REAL","notNull":false,"unique":false},"points_earned":{"type":"INTEGER","notNull":false,"unique":false},"points_possible":{"type":"INTEGER","notNull":false,"unique":false},"rubric_results":{"type":"TEXT","notNull":false,"unique":false},"question_revision_id":{"type":"TEXT","notNull":false,"unique":false},"feedback":{"type":"TEXT","notNull":false,"unique":false},"graded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"grades_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"grades_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"grades_submission_id_idx","columns":["submission_id"]},{"name":"grades_grader_profile_id_idx","columns":["grader_profile_id"]}],"version":"0ccd729e"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:SubmissionAssetCollection":{"name":"submissionassetcollection","className":"SubmissionAssetCollection","qualifiedName":"@happyvertical/smrt-education:SubmissionAssetCollection","collection":"submissionassets","filePath":"/home/runner/work/smrt/smrt/packages/education/src/collections.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{"byRight":{"name":"byRight","async":true,"parameters":[{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<TItem[]>","isStatic":false,"isPublic":true},"byLeft":{"name":"byLeft","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<TItem[]>","isStatic":false,"isPublic":true},"attach":{"name":"attach","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<TItem>","isStatic":false,"isPublic":true},"detach":{"name":"detach","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightId","type":"string","optional":false},{"name":"opts","type":"JunctionFilterOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"setLinks":{"name":"setLinks","async":true,"parameters":[{"name":"leftId","type":"string","optional":false},{"name":"rightIds","type":"string[]","optional":false},{"name":"opts","type":"JunctionAttachOptions","optional":true}],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"submission_assets","api":false,"mcp":false,"cli":false},"extends":"SmrtJunction","extendsTypeArg":"SubmissionAsset","exportName":"SubmissionAssetCollection","collectionExportName":"SubmissionAssetCollectionCollection","schema":{"tableName":"submission_assets","ddl":"CREATE TABLE IF NOT EXISTS \\"submission_assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"submission_id\\" UUID NOT NULL,\\n \\"asset_id\\" UUID NOT NULL,\\n \\"relationship\\" TEXT NOT NULL DEFAULT 'page',\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"relationship":{"type":"TEXT","notNull":true,"unique":false,"default":"page"},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"submission_assets_tenant_id_submission_id_idx","columns":["tenant_id","submission_id","asset_id","relationship"],"unique":true},{"name":"submission_assets_slug_context_idx","columns":["slug","context"]},{"name":"submission_assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submission_assets_submission_id_idx","columns":["submission_id"]},{"name":"submission_assets_asset_id_idx","columns":["asset_id"]}],"version":"d9b61c8a"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseRevision":{"name":"courserevision","className":"CourseRevision","qualifiedName":"@happyvertical/smrt-education:CourseRevision","collection":"courserevisions","description":"Immutable snapshot of one authored course draft. The head row selects the draft.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"parentRevisionId":{"type":"foreignKey","required":false,"related":"CourseRevision","_meta":{"nullable":true}},"sequence":{"type":"integer","required":true,"default":1},"authorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"provenance":{"type":"text","required":false},"fieldProvenanceJson":{"type":"text","required":false,"_meta":{}},"title":{"type":"text","required":false},"summary":{"type":"text","required":false,"_meta":{}},"subject":{"type":"text","required":false},"theme":{"type":"text","required":false},"levelMin":{"type":"integer","required":true,"default":0},"levelMax":{"type":"integer","required":true,"default":0},"objectivesJson":{"type":"text","required":false,"_meta":{}},"sectionsJson":{"type":"text","required":false,"_meta":{}},"licenseKind":{"type":"text","required":false,"default":"own-work","enum":["own-work","open-license","personal-use-copy","licensed-for-sharing"]},"requestKey":{"type":"text","required":false},"payloadDigest":{"type":"text","required":false},"contentDigest":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_revisions","conflictColumns":["tenant_id","course_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseRevision","collectionExportName":"CourseRevisionCollection","displayLabelField":"title","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"sequence","rule":"required","fieldType":"integer"},{"field":"levelMin","rule":"required","fieldType":"integer"},{"field":"levelMax","rule":"required","fieldType":"integer"}],"schema":{"tableName":"course_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"course_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"parent_revision_id\\" UUID,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"author_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"provenance\\" TEXT,\\n \\"field_provenance_json\\" TEXT,\\n \\"title\\" TEXT,\\n \\"summary\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"theme\\" TEXT,\\n \\"level_min\\" INTEGER NOT NULL DEFAULT 0,\\n \\"level_max\\" INTEGER NOT NULL DEFAULT 0,\\n \\"objectives_json\\" TEXT,\\n \\"sections_json\\" TEXT,\\n \\"license_kind\\" TEXT DEFAULT 'own-work',\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"content_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"parent_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"author_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"provenance":{"type":"TEXT","notNull":false,"unique":false},"field_provenance_json":{"type":"TEXT","notNull":false,"unique":false},"title":{"type":"TEXT","notNull":false,"unique":false},"summary":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"theme":{"type":"TEXT","notNull":false,"unique":false},"level_min":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"level_max":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"objectives_json":{"type":"TEXT","notNull":false,"unique":false},"sections_json":{"type":"TEXT","notNull":false,"unique":false},"license_kind":{"type":"TEXT","notNull":false,"unique":false,"default":"own-work"},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"content_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_revisions_tenant_id_course_id_idx","columns":["tenant_id","course_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_revisions_slug_context_idx","columns":["slug","context"]},{"name":"course_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_revisions_course_id_idx","columns":["course_id"]},{"name":"course_revisions_parent_revision_id_idx","columns":["parent_revision_id"]}],"version":"4356dc02"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseRevisionCollection":{"name":"courserevisioncollection","className":"CourseRevisionCollection","qualifiedName":"@happyvertical/smrt-education:CourseRevisionCollection","collection":"courserevisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_revisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseRevision","exportName":"CourseRevisionCollection","collectionExportName":"CourseRevisionCollectionCollection","schema":{"tableName":"course_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"course_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"parent_revision_id\\" UUID,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"author_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"provenance\\" TEXT,\\n \\"field_provenance_json\\" TEXT,\\n \\"title\\" TEXT,\\n \\"summary\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"theme\\" TEXT,\\n \\"level_min\\" INTEGER NOT NULL DEFAULT 0,\\n \\"level_max\\" INTEGER NOT NULL DEFAULT 0,\\n \\"objectives_json\\" TEXT,\\n \\"sections_json\\" TEXT,\\n \\"license_kind\\" TEXT DEFAULT 'own-work',\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"content_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"parent_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"author_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"provenance":{"type":"TEXT","notNull":false,"unique":false},"field_provenance_json":{"type":"TEXT","notNull":false,"unique":false},"title":{"type":"TEXT","notNull":false,"unique":false},"summary":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"theme":{"type":"TEXT","notNull":false,"unique":false},"level_min":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"level_max":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"objectives_json":{"type":"TEXT","notNull":false,"unique":false},"sections_json":{"type":"TEXT","notNull":false,"unique":false},"license_kind":{"type":"TEXT","notNull":false,"unique":false,"default":"own-work"},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"content_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_revisions_tenant_id_course_id_idx","columns":["tenant_id","course_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_revisions_slug_context_idx","columns":["slug","context"]},{"name":"course_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_revisions_course_id_idx","columns":["course_id"]},{"name":"course_revisions_parent_revision_id_idx","columns":["parent_revision_id"]}],"version":"4356dc02"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LessonRevision":{"name":"lessonrevision","className":"LessonRevision","qualifiedName":"@happyvertical/smrt-education:LessonRevision","collection":"lessonrevisions","description":"Immutable lesson snapshot with a stable cross-version lessonKey.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"lessonKey":{"type":"text","required":false},"parentRevisionId":{"type":"foreignKey","required":false,"related":"LessonRevision","_meta":{"nullable":true}},"title":{"type":"text","required":false},"body":{"type":"text","required":false,"_meta":{}},"lessonType":{"type":"text","required":false},"completionRule":{"type":"text","required":false},"estimatedMinutes":{"type":"integer","required":true,"default":0},"difficulty":{"type":"decimal","required":true,"default":0},"modality":{"type":"text","required":false},"externalRef":{"type":"text","required":false},"externalUrl":{"type":"text","required":false},"licenseKind":{"type":"text","required":false,"default":"own-work","enum":["own-work","open-license","personal-use-copy","licensed-for-sharing"]},"ownLicenseKind":{"type":"text","required":false},"materialsJson":{"type":"text","required":false,"_meta":{}},"questionsJson":{"type":"text","required":false,"_meta":{}},"layoutParamsJson":{"type":"text","required":false,"_meta":{}},"provenance":{"type":"text","required":false},"fieldProvenanceJson":{"type":"text","required":false,"_meta":{}},"authorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"contentDigest":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"lesson_revisions","conflictColumns":["tenant_id","course_id","lesson_key","content_digest"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"LessonRevision","collectionExportName":"LessonRevisionCollection","displayLabelField":"title","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"estimatedMinutes","rule":"required","fieldType":"integer"},{"field":"difficulty","rule":"required","fieldType":"decimal"}],"schema":{"tableName":"lesson_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"lesson_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"lesson_key\\" TEXT,\\n \\"parent_revision_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"lesson_type\\" TEXT,\\n \\"completion_rule\\" TEXT,\\n \\"estimated_minutes\\" INTEGER NOT NULL DEFAULT 0,\\n \\"difficulty\\" REAL NOT NULL DEFAULT 0,\\n \\"modality\\" TEXT,\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"license_kind\\" TEXT DEFAULT 'own-work',\\n \\"own_license_kind\\" TEXT,\\n \\"materials_json\\" TEXT,\\n \\"questions_json\\" TEXT,\\n \\"layout_params_json\\" TEXT,\\n \\"provenance\\" TEXT,\\n \\"field_provenance_json\\" TEXT,\\n \\"author_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"content_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"lesson_key":{"type":"TEXT","notNull":false,"unique":false},"parent_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"lesson_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false,"unique":false},"body":{"type":"TEXT","notNull":false,"unique":false},"lesson_type":{"type":"TEXT","notNull":false,"unique":false},"completion_rule":{"type":"TEXT","notNull":false,"unique":false},"estimated_minutes":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"difficulty":{"type":"REAL","notNull":true,"unique":false,"default":0},"modality":{"type":"TEXT","notNull":false,"unique":false},"external_ref":{"type":"TEXT","notNull":false,"unique":false},"external_url":{"type":"TEXT","notNull":false,"unique":false},"license_kind":{"type":"TEXT","notNull":false,"unique":false,"default":"own-work"},"own_license_kind":{"type":"TEXT","notNull":false,"unique":false},"materials_json":{"type":"TEXT","notNull":false,"unique":false},"questions_json":{"type":"TEXT","notNull":false,"unique":false},"layout_params_json":{"type":"TEXT","notNull":false,"unique":false},"provenance":{"type":"TEXT","notNull":false,"unique":false},"field_provenance_json":{"type":"TEXT","notNull":false,"unique":false},"author_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"content_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"lesson_revisions_tenant_id_course_id_idx","columns":["tenant_id","course_id","lesson_key","content_digest"],"unique":true,"nullsNotDistinct":true},{"name":"lesson_revisions_slug_context_idx","columns":["slug","context"]},{"name":"lesson_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lesson_revisions_course_id_idx","columns":["course_id"]},{"name":"lesson_revisions_parent_revision_id_idx","columns":["parent_revision_id"]}],"version":"17555fb2"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LessonRevisionCollection":{"name":"lessonrevisioncollection","className":"LessonRevisionCollection","qualifiedName":"@happyvertical/smrt-education:LessonRevisionCollection","collection":"lessonrevisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"lesson_revisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"LessonRevision","exportName":"LessonRevisionCollection","collectionExportName":"LessonRevisionCollectionCollection","schema":{"tableName":"lesson_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"lesson_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"lesson_key\\" TEXT,\\n \\"parent_revision_id\\" UUID,\\n \\"title\\" TEXT,\\n \\"body\\" TEXT,\\n \\"lesson_type\\" TEXT,\\n \\"completion_rule\\" TEXT,\\n \\"estimated_minutes\\" INTEGER NOT NULL DEFAULT 0,\\n \\"difficulty\\" REAL NOT NULL DEFAULT 0,\\n \\"modality\\" TEXT,\\n \\"external_ref\\" TEXT,\\n \\"external_url\\" TEXT,\\n \\"license_kind\\" TEXT DEFAULT 'own-work',\\n \\"own_license_kind\\" TEXT,\\n \\"materials_json\\" TEXT,\\n \\"questions_json\\" TEXT,\\n \\"layout_params_json\\" TEXT,\\n \\"provenance\\" TEXT,\\n \\"field_provenance_json\\" TEXT,\\n \\"author_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"content_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"lesson_key":{"type":"TEXT","notNull":false,"unique":false},"parent_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"lesson_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false,"unique":false},"body":{"type":"TEXT","notNull":false,"unique":false},"lesson_type":{"type":"TEXT","notNull":false,"unique":false},"completion_rule":{"type":"TEXT","notNull":false,"unique":false},"estimated_minutes":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"difficulty":{"type":"REAL","notNull":true,"unique":false,"default":0},"modality":{"type":"TEXT","notNull":false,"unique":false},"external_ref":{"type":"TEXT","notNull":false,"unique":false},"external_url":{"type":"TEXT","notNull":false,"unique":false},"license_kind":{"type":"TEXT","notNull":false,"unique":false,"default":"own-work"},"own_license_kind":{"type":"TEXT","notNull":false,"unique":false},"materials_json":{"type":"TEXT","notNull":false,"unique":false},"questions_json":{"type":"TEXT","notNull":false,"unique":false},"layout_params_json":{"type":"TEXT","notNull":false,"unique":false},"provenance":{"type":"TEXT","notNull":false,"unique":false},"field_provenance_json":{"type":"TEXT","notNull":false,"unique":false},"author_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"content_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"lesson_revisions_tenant_id_course_id_idx","columns":["tenant_id","course_id","lesson_key","content_digest"],"unique":true,"nullsNotDistinct":true},{"name":"lesson_revisions_slug_context_idx","columns":["slug","context"]},{"name":"lesson_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lesson_revisions_course_id_idx","columns":["course_id"]},{"name":"lesson_revisions_parent_revision_id_idx","columns":["parent_revision_id"]}],"version":"17555fb2"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseDraftHead":{"name":"coursedrafthead","className":"CourseDraftHead","qualifiedName":"@happyvertical/smrt-education:CourseDraftHead","collection":"coursedraftheads","description":"The only mutable authoring row: the draft head. It moves solely through the service's expected-head compare-and-swap; its identity never changes.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"headRevisionId":{"type":"foreignKey","required":true,"related":"CourseRevision","_meta":{"required":true}},"version":{"type":"integer","required":true,"default":1},"updatedByUserId":{"type":"text","required":false},"updatedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_draft_heads","conflictColumns":["tenant_id","course_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseDraftHead","collectionExportName":"CourseDraftHeadCollection","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"headRevisionId","rule":"required","fieldType":"foreignKey"},{"field":"version","rule":"required","fieldType":"integer"}],"schema":{"tableName":"course_draft_heads","ddl":"CREATE TABLE IF NOT EXISTS \\"course_draft_heads\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"head_revision_id\\" UUID NOT NULL,\\n \\"version\\" INTEGER NOT NULL DEFAULT 1,\\n \\"updated_by_user_id\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"head_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"version":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"updated_by_user_id":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_draft_heads_tenant_id_course_id_idx","columns":["tenant_id","course_id"],"unique":true},{"name":"course_draft_heads_slug_context_idx","columns":["slug","context"]},{"name":"course_draft_heads_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_draft_heads_course_id_idx","columns":["course_id"]},{"name":"course_draft_heads_head_revision_id_idx","columns":["head_revision_id"]}],"version":"57e2bfc6"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseDraftHeadCollection":{"name":"coursedraftheadcollection","className":"CourseDraftHeadCollection","qualifiedName":"@happyvertical/smrt-education:CourseDraftHeadCollection","collection":"coursedraftheads","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_draft_heads","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseDraftHead","exportName":"CourseDraftHeadCollection","collectionExportName":"CourseDraftHeadCollectionCollection","schema":{"tableName":"course_draft_heads","ddl":"CREATE TABLE IF NOT EXISTS \\"course_draft_heads\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"head_revision_id\\" UUID NOT NULL,\\n \\"version\\" INTEGER NOT NULL DEFAULT 1,\\n \\"updated_by_user_id\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"head_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"version":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"updated_by_user_id":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_draft_heads_tenant_id_course_id_idx","columns":["tenant_id","course_id"],"unique":true},{"name":"course_draft_heads_slug_context_idx","columns":["slug","context"]},{"name":"course_draft_heads_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_draft_heads_course_id_idx","columns":["course_id"]},{"name":"course_draft_heads_head_revision_id_idx","columns":["head_revision_id"]}],"version":"57e2bfc6"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseRelease":{"name":"courserelease","className":"CourseRelease","qualifiedName":"@happyvertical/smrt-education:CourseRelease","collection":"coursereleases","description":"Append-only release decision bound to one revision and the review that allowed it.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"revisionId":{"type":"foreignKey","required":true,"related":"CourseRevision","_meta":{"required":true}},"releaseCourseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"releaseNumber":{"type":"integer","required":true,"default":1},"reviewId":{"type":"text","required":false},"actorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_releases","conflictColumns":["tenant_id","course_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseRelease","collectionExportName":"CourseReleaseCollection","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"revisionId","rule":"required","fieldType":"foreignKey"},{"field":"releaseCourseId","rule":"required","fieldType":"foreignKey"},{"field":"releaseNumber","rule":"required","fieldType":"integer"}],"schema":{"tableName":"course_releases","ddl":"CREATE TABLE IF NOT EXISTS \\"course_releases\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"release_course_id\\" UUID NOT NULL,\\n \\"release_number\\" INTEGER NOT NULL DEFAULT 1,\\n \\"review_id\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"release_course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"release_number":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"review_id":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_releases_tenant_id_course_id_idx","columns":["tenant_id","course_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_releases_slug_context_idx","columns":["slug","context"]},{"name":"course_releases_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_releases_course_id_idx","columns":["course_id"]},{"name":"course_releases_revision_id_idx","columns":["revision_id"]},{"name":"course_releases_release_course_id_idx","columns":["release_course_id"]}],"version":"6362ce70"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseReleaseCollection":{"name":"coursereleasecollection","className":"CourseReleaseCollection","qualifiedName":"@happyvertical/smrt-education:CourseReleaseCollection","collection":"coursereleases","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_releases","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseRelease","exportName":"CourseReleaseCollection","collectionExportName":"CourseReleaseCollectionCollection","schema":{"tableName":"course_releases","ddl":"CREATE TABLE IF NOT EXISTS \\"course_releases\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"release_course_id\\" UUID NOT NULL,\\n \\"release_number\\" INTEGER NOT NULL DEFAULT 1,\\n \\"review_id\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"release_course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"release_number":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"review_id":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_releases_tenant_id_course_id_idx","columns":["tenant_id","course_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_releases_slug_context_idx","columns":["slug","context"]},{"name":"course_releases_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_releases_course_id_idx","columns":["course_id"]},{"name":"course_releases_revision_id_idx","columns":["revision_id"]},{"name":"course_releases_release_course_id_idx","columns":["release_course_id"]}],"version":"6362ce70"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:ReleasedLesson":{"name":"releasedlesson","className":"ReleasedLesson","qualifiedName":"@happyvertical/smrt-education:ReleasedLesson","collection":"releasedlessons","description":"Stable lesson identity for one release's immutable Lesson row.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"releaseId":{"type":"foreignKey","required":true,"related":"CourseRelease","_meta":{"required":true}},"lessonKey":{"type":"text","required":false},"lessonRevisionId":{"type":"foreignKey","required":true,"related":"LessonRevision","_meta":{"required":true}},"lessonId":{"type":"foreignKey","required":true,"related":"Lesson","_meta":{"required":true}},"sectionId":{"type":"foreignKey","required":true,"related":"CourseSection","_meta":{"required":true}}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"released_lessons","conflictColumns":["tenant_id","release_id","lesson_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"ReleasedLesson","collectionExportName":"ReleasedLessonCollection","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"releaseId","rule":"required","fieldType":"foreignKey"},{"field":"lessonRevisionId","rule":"required","fieldType":"foreignKey"},{"field":"lessonId","rule":"required","fieldType":"foreignKey"},{"field":"sectionId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"released_lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"released_lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"release_id\\" UUID NOT NULL,\\n \\"lesson_key\\" TEXT,\\n \\"lesson_revision_id\\" UUID NOT NULL,\\n \\"lesson_id\\" UUID NOT NULL,\\n \\"section_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"release_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_releases","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"lesson_key":{"type":"TEXT","notNull":false,"unique":false},"lesson_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lesson_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"released_lessons_tenant_id_release_id_idx","columns":["tenant_id","release_id","lesson_key"],"unique":true,"nullsNotDistinct":true},{"name":"released_lessons_slug_context_idx","columns":["slug","context"]},{"name":"released_lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"released_lessons_course_id_idx","columns":["course_id"]},{"name":"released_lessons_release_id_idx","columns":["release_id"]},{"name":"released_lessons_lesson_revision_id_idx","columns":["lesson_revision_id"]},{"name":"released_lessons_lesson_id_idx","columns":["lesson_id"]},{"name":"released_lessons_section_id_idx","columns":["section_id"]}],"version":"7aac699d"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:ReleasedLessonCollection":{"name":"releasedlessoncollection","className":"ReleasedLessonCollection","qualifiedName":"@happyvertical/smrt-education:ReleasedLessonCollection","collection":"releasedlessons","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"released_lessons","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"ReleasedLesson","exportName":"ReleasedLessonCollection","collectionExportName":"ReleasedLessonCollectionCollection","schema":{"tableName":"released_lessons","ddl":"CREATE TABLE IF NOT EXISTS \\"released_lessons\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"release_id\\" UUID NOT NULL,\\n \\"lesson_key\\" TEXT,\\n \\"lesson_revision_id\\" UUID NOT NULL,\\n \\"lesson_id\\" UUID NOT NULL,\\n \\"section_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"release_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_releases","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"lesson_key":{"type":"TEXT","notNull":false,"unique":false},"lesson_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lesson_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"section_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_sections","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"released_lessons_tenant_id_release_id_idx","columns":["tenant_id","release_id","lesson_key"],"unique":true,"nullsNotDistinct":true},{"name":"released_lessons_slug_context_idx","columns":["slug","context"]},{"name":"released_lessons_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"released_lessons_course_id_idx","columns":["course_id"]},{"name":"released_lessons_release_id_idx","columns":["release_id"]},{"name":"released_lessons_lesson_revision_id_idx","columns":["lesson_revision_id"]},{"name":"released_lessons_lesson_id_idx","columns":["lesson_id"]},{"name":"released_lessons_section_id_idx","columns":["section_id"]}],"version":"7aac699d"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseArchiveDecision":{"name":"coursearchivedecision","className":"CourseArchiveDecision","qualifiedName":"@happyvertical/smrt-education:CourseArchiveDecision","collection":"coursearchivedecisions","description":"Reversible archive/unarchive decisions; the latest sequence is the state.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"action":{"type":"text","required":false},"sequence":{"type":"integer","required":true,"default":1},"actorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_archive_decisions","conflictColumns":["tenant_id","course_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseArchiveDecision","collectionExportName":"CourseArchiveDecisionCollection","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"sequence","rule":"required","fieldType":"integer"}],"schema":{"tableName":"course_archive_decisions","ddl":"CREATE TABLE IF NOT EXISTS \\"course_archive_decisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"action\\" TEXT,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"action":{"type":"TEXT","notNull":false,"unique":false},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_archive_decisions_tenant_id_course_id_idx","columns":["tenant_id","course_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_archive_decisions_slug_context_idx","columns":["slug","context"]},{"name":"course_archive_decisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_archive_decisions_course_id_idx","columns":["course_id"]}],"version":"75687c4b"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseArchiveDecisionCollection":{"name":"coursearchivedecisioncollection","className":"CourseArchiveDecisionCollection","qualifiedName":"@happyvertical/smrt-education:CourseArchiveDecisionCollection","collection":"coursearchivedecisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_archive_decisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseArchiveDecision","exportName":"CourseArchiveDecisionCollection","collectionExportName":"CourseArchiveDecisionCollectionCollection","schema":{"tableName":"course_archive_decisions","ddl":"CREATE TABLE IF NOT EXISTS \\"course_archive_decisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"action\\" TEXT,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"action":{"type":"TEXT","notNull":false,"unique":false},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_archive_decisions_tenant_id_course_id_idx","columns":["tenant_id","course_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_archive_decisions_slug_context_idx","columns":["slug","context"]},{"name":"course_archive_decisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_archive_decisions_course_id_idx","columns":["course_id"]}],"version":"75687c4b"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseDiscardTombstone":{"name":"coursediscardtombstone","className":"CourseDiscardTombstone","qualifiedName":"@happyvertical/smrt-education:CourseDiscardTombstone","collection":"coursediscardtombstones","description":"Audit record left when an unreferenced draft is discarded.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"title":{"type":"text","required":false},"headRevisionId":{"type":"text","required":false},"revisionCount":{"type":"integer","required":true,"default":0},"reason":{"type":"text","required":false},"actorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_discard_tombstones","conflictColumns":["tenant_id","course_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseDiscardTombstone","collectionExportName":"CourseDiscardTombstoneCollection","displayLabelField":"title","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"revisionCount","rule":"required","fieldType":"integer"}],"schema":{"tableName":"course_discard_tombstones","ddl":"CREATE TABLE IF NOT EXISTS \\"course_discard_tombstones\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"title\\" TEXT,\\n \\"head_revision_id\\" TEXT,\\n \\"revision_count\\" INTEGER NOT NULL DEFAULT 0,\\n \\"reason\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false,"unique":false},"head_revision_id":{"type":"TEXT","notNull":false,"unique":false},"revision_count":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"reason":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_discard_tombstones_tenant_id_course_id_idx","columns":["tenant_id","course_id"],"unique":true},{"name":"course_discard_tombstones_slug_context_idx","columns":["slug","context"]},{"name":"course_discard_tombstones_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_discard_tombstones_course_id_idx","columns":["course_id"]}],"version":"d228594d"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseDiscardTombstoneCollection":{"name":"coursediscardtombstonecollection","className":"CourseDiscardTombstoneCollection","qualifiedName":"@happyvertical/smrt-education:CourseDiscardTombstoneCollection","collection":"coursediscardtombstones","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_discard_tombstones","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseDiscardTombstone","exportName":"CourseDiscardTombstoneCollection","collectionExportName":"CourseDiscardTombstoneCollectionCollection","schema":{"tableName":"course_discard_tombstones","ddl":"CREATE TABLE IF NOT EXISTS \\"course_discard_tombstones\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"title\\" TEXT,\\n \\"head_revision_id\\" TEXT,\\n \\"revision_count\\" INTEGER NOT NULL DEFAULT 0,\\n \\"reason\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":false,"unique":false},"head_revision_id":{"type":"TEXT","notNull":false,"unique":false},"revision_count":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"reason":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_discard_tombstones_tenant_id_course_id_idx","columns":["tenant_id","course_id"],"unique":true},{"name":"course_discard_tombstones_slug_context_idx","columns":["slug","context"]},{"name":"course_discard_tombstones_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_discard_tombstones_course_id_idx","columns":["course_id"]}],"version":"d228594d"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EnrollmentReleasePin":{"name":"enrollmentreleasepin","className":"EnrollmentReleasePin","qualifiedName":"@happyvertical/smrt-education:EnrollmentReleasePin","collection":"enrollmentreleasepins","description":"Append-only record of which release an enrollment follows.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"enrollmentId":{"type":"foreignKey","required":true,"related":"Enrollment","_meta":{"required":true}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"releaseId":{"type":"foreignKey","required":true,"related":"CourseRelease","_meta":{"required":true}},"previousReleaseId":{"type":"foreignKey","required":false,"related":"CourseRelease","_meta":{"nullable":true}},"kind":{"type":"text","required":false},"sequence":{"type":"integer","required":true,"default":1},"actorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"optInDelegationId":{"type":"text","required":false},"policyBasis":{"type":"text","required":false},"optInScope":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"enrollment_release_pins","conflictColumns":["tenant_id","enrollment_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"EnrollmentReleasePin","collectionExportName":"EnrollmentReleasePinCollection","validationRules":[{"field":"enrollmentId","rule":"required","fieldType":"foreignKey"},{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"releaseId","rule":"required","fieldType":"foreignKey"},{"field":"sequence","rule":"required","fieldType":"integer"}],"schema":{"tableName":"enrollment_release_pins","ddl":"CREATE TABLE IF NOT EXISTS \\"enrollment_release_pins\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"release_id\\" UUID NOT NULL,\\n \\"previous_release_id\\" UUID,\\n \\"kind\\" TEXT,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"opt_in_delegation_id\\" TEXT,\\n \\"policy_basis\\" TEXT,\\n \\"opt_in_scope\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"release_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_releases","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"previous_release_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"course_releases","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"kind":{"type":"TEXT","notNull":false,"unique":false},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"opt_in_delegation_id":{"type":"TEXT","notNull":false,"unique":false},"policy_basis":{"type":"TEXT","notNull":false,"unique":false},"opt_in_scope":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"enrollment_release_pins_tenant_id_enrollment_id_idx","columns":["tenant_id","enrollment_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"enrollment_release_pins_slug_context_idx","columns":["slug","context"]},{"name":"enrollment_release_pins_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"enrollment_release_pins_enrollment_id_idx","columns":["enrollment_id"]},{"name":"enrollment_release_pins_learner_id_idx","columns":["learner_id"]},{"name":"enrollment_release_pins_course_id_idx","columns":["course_id"]},{"name":"enrollment_release_pins_release_id_idx","columns":["release_id"]},{"name":"enrollment_release_pins_previous_release_id_idx","columns":["previous_release_id"]}],"version":"0132e978"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EnrollmentReleasePinCollection":{"name":"enrollmentreleasepincollection","className":"EnrollmentReleasePinCollection","qualifiedName":"@happyvertical/smrt-education:EnrollmentReleasePinCollection","collection":"enrollmentreleasepins","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"enrollment_release_pins","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"EnrollmentReleasePin","exportName":"EnrollmentReleasePinCollection","collectionExportName":"EnrollmentReleasePinCollectionCollection","schema":{"tableName":"enrollment_release_pins","ddl":"CREATE TABLE IF NOT EXISTS \\"enrollment_release_pins\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"release_id\\" UUID NOT NULL,\\n \\"previous_release_id\\" UUID,\\n \\"kind\\" TEXT,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"opt_in_delegation_id\\" TEXT,\\n \\"policy_basis\\" TEXT,\\n \\"opt_in_scope\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"release_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_releases","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"previous_release_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"course_releases","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"kind":{"type":"TEXT","notNull":false,"unique":false},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"opt_in_delegation_id":{"type":"TEXT","notNull":false,"unique":false},"policy_basis":{"type":"TEXT","notNull":false,"unique":false},"opt_in_scope":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"enrollment_release_pins_tenant_id_enrollment_id_idx","columns":["tenant_id","enrollment_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"enrollment_release_pins_slug_context_idx","columns":["slug","context"]},{"name":"enrollment_release_pins_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"enrollment_release_pins_enrollment_id_idx","columns":["enrollment_id"]},{"name":"enrollment_release_pins_learner_id_idx","columns":["learner_id"]},{"name":"enrollment_release_pins_course_id_idx","columns":["course_id"]},{"name":"enrollment_release_pins_release_id_idx","columns":["release_id"]},{"name":"enrollment_release_pins_previous_release_id_idx","columns":["previous_release_id"]}],"version":"0132e978"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseUpgradeChoice":{"name":"courseupgradechoice","className":"CourseUpgradeChoice","qualifiedName":"@happyvertical/smrt-education:CourseUpgradeChoice","collection":"courseupgradechoices","description":"Recorded opt-in/out of auto-upgrade at course or enrollment scope.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"enrollmentId":{"type":"text","required":false},"enabled":{"type":"boolean","required":true,"default":false},"sequence":{"type":"integer","required":true,"default":1},"actorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"policyBasis":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_upgrade_choices","conflictColumns":["tenant_id","course_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseUpgradeChoice","collectionExportName":"CourseUpgradeChoiceCollection","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"enabled","rule":"required","fieldType":"boolean"},{"field":"sequence","rule":"required","fieldType":"integer"}],"schema":{"tableName":"course_upgrade_choices","ddl":"CREATE TABLE IF NOT EXISTS \\"course_upgrade_choices\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" TEXT,\\n \\"enabled\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"policy_basis\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"enrollment_id":{"type":"TEXT","notNull":false,"unique":false},"enabled":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"policy_basis":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_upgrade_choices_tenant_id_course_id_idx","columns":["tenant_id","course_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_upgrade_choices_slug_context_idx","columns":["slug","context"]},{"name":"course_upgrade_choices_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_upgrade_choices_course_id_idx","columns":["course_id"]}],"version":"69f800ad"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseUpgradeChoiceCollection":{"name":"courseupgradechoicecollection","className":"CourseUpgradeChoiceCollection","qualifiedName":"@happyvertical/smrt-education:CourseUpgradeChoiceCollection","collection":"courseupgradechoices","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_upgrade_choices","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseUpgradeChoice","exportName":"CourseUpgradeChoiceCollection","collectionExportName":"CourseUpgradeChoiceCollectionCollection","schema":{"tableName":"course_upgrade_choices","ddl":"CREATE TABLE IF NOT EXISTS \\"course_upgrade_choices\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" TEXT,\\n \\"enabled\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"policy_basis\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"enrollment_id":{"type":"TEXT","notNull":false,"unique":false},"enabled":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"policy_basis":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_upgrade_choices_tenant_id_course_id_idx","columns":["tenant_id","course_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_upgrade_choices_slug_context_idx","columns":["slug","context"]},{"name":"course_upgrade_choices_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_upgrade_choices_course_id_idx","columns":["course_id"]}],"version":"69f800ad"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EnrollmentAutoUpgradeSkip":{"name":"enrollmentautoupgradeskip","className":"EnrollmentAutoUpgradeSkip","qualifiedName":"@happyvertical/smrt-education:EnrollmentAutoUpgradeSkip","collection":"enrollmentautoupgradeskips","description":"Append-only record of an automatic upgrade that was not performed because the host denied the per-learner assignment decision. The enrollment stays pinned.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"enrollmentId":{"type":"foreignKey","required":true,"related":"Enrollment","_meta":{"required":true}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"releaseId":{"type":"foreignKey","required":true,"related":"CourseRelease","_meta":{"required":true}},"optInScope":{"type":"text","required":false},"optInActorUserId":{"type":"text","required":false},"optInDelegatingGuardianUserId":{"type":"text","required":false},"optInDelegationId":{"type":"text","required":false},"policyBasis":{"type":"text","required":false},"reason":{"type":"text","required":false},"code":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"enrollment_auto_upgrade_skips","conflictColumns":["tenant_id","enrollment_id","release_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"EnrollmentAutoUpgradeSkip","collectionExportName":"EnrollmentAutoUpgradeSkipCollection","displayLabelField":"code","validationRules":[{"field":"enrollmentId","rule":"required","fieldType":"foreignKey"},{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"releaseId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"enrollment_auto_upgrade_skips","ddl":"CREATE TABLE IF NOT EXISTS \\"enrollment_auto_upgrade_skips\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"release_id\\" UUID NOT NULL,\\n \\"opt_in_scope\\" TEXT,\\n \\"opt_in_actor_user_id\\" TEXT,\\n \\"opt_in_delegating_guardian_user_id\\" TEXT,\\n \\"opt_in_delegation_id\\" TEXT,\\n \\"policy_basis\\" TEXT,\\n \\"reason\\" TEXT,\\n \\"code\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"release_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_releases","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"opt_in_scope":{"type":"TEXT","notNull":false,"unique":false},"opt_in_actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"opt_in_delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"opt_in_delegation_id":{"type":"TEXT","notNull":false,"unique":false},"policy_basis":{"type":"TEXT","notNull":false,"unique":false},"reason":{"type":"TEXT","notNull":false,"unique":false},"code":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"enrollment_auto_upgrade_skips_tenant_id_enrollment_id_idx","columns":["tenant_id","enrollment_id","release_id"],"unique":true},{"name":"enrollment_auto_upgrade_skips_slug_context_idx","columns":["slug","context"]},{"name":"enrollment_auto_upgrade_skips_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"enrollment_auto_upgrade_skips_enrollment_id_idx","columns":["enrollment_id"]},{"name":"enrollment_auto_upgrade_skips_learner_id_idx","columns":["learner_id"]},{"name":"enrollment_auto_upgrade_skips_course_id_idx","columns":["course_id"]},{"name":"enrollment_auto_upgrade_skips_release_id_idx","columns":["release_id"]}],"version":"b4751d0d"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EnrollmentAutoUpgradeSkipCollection":{"name":"enrollmentautoupgradeskipcollection","className":"EnrollmentAutoUpgradeSkipCollection","qualifiedName":"@happyvertical/smrt-education:EnrollmentAutoUpgradeSkipCollection","collection":"enrollmentautoupgradeskips","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"enrollment_auto_upgrade_skips","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"EnrollmentAutoUpgradeSkip","exportName":"EnrollmentAutoUpgradeSkipCollection","collectionExportName":"EnrollmentAutoUpgradeSkipCollectionCollection","schema":{"tableName":"enrollment_auto_upgrade_skips","ddl":"CREATE TABLE IF NOT EXISTS \\"enrollment_auto_upgrade_skips\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"release_id\\" UUID NOT NULL,\\n \\"opt_in_scope\\" TEXT,\\n \\"opt_in_actor_user_id\\" TEXT,\\n \\"opt_in_delegating_guardian_user_id\\" TEXT,\\n \\"opt_in_delegation_id\\" TEXT,\\n \\"policy_basis\\" TEXT,\\n \\"reason\\" TEXT,\\n \\"code\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"release_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_releases","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"opt_in_scope":{"type":"TEXT","notNull":false,"unique":false},"opt_in_actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"opt_in_delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"opt_in_delegation_id":{"type":"TEXT","notNull":false,"unique":false},"policy_basis":{"type":"TEXT","notNull":false,"unique":false},"reason":{"type":"TEXT","notNull":false,"unique":false},"code":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"enrollment_auto_upgrade_skips_tenant_id_enrollment_id_idx","columns":["tenant_id","enrollment_id","release_id"],"unique":true},{"name":"enrollment_auto_upgrade_skips_slug_context_idx","columns":["slug","context"]},{"name":"enrollment_auto_upgrade_skips_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"enrollment_auto_upgrade_skips_enrollment_id_idx","columns":["enrollment_id"]},{"name":"enrollment_auto_upgrade_skips_learner_id_idx","columns":["learner_id"]},{"name":"enrollment_auto_upgrade_skips_course_id_idx","columns":["course_id"]},{"name":"enrollment_auto_upgrade_skips_release_id_idx","columns":["release_id"]}],"version":"b4751d0d"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EnrollmentAssignmentRecord":{"name":"enrollmentassignmentrecord","className":"EnrollmentAssignmentRecord","qualifiedName":"@happyvertical/smrt-education:EnrollmentAssignmentRecord","collection":"enrollmentassignmentrecords","description":"Append-only audit of a delegated-agent assignment: the agent that created the enrollment, the guardian it acted for and the host's delegation id.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"enrollmentId":{"type":"foreignKey","required":true,"related":"Enrollment","_meta":{"required":true}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"actorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"enrollment_assignment_records","conflictColumns":["tenant_id","enrollment_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"EnrollmentAssignmentRecord","collectionExportName":"EnrollmentAssignmentRecordCollection","validationRules":[{"field":"enrollmentId","rule":"required","fieldType":"foreignKey"},{"field":"learnerId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"enrollment_assignment_records","ddl":"CREATE TABLE IF NOT EXISTS \\"enrollment_assignment_records\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"enrollment_assignment_records_tenant_id_enrollment_id_idx","columns":["tenant_id","enrollment_id"],"unique":true},{"name":"enrollment_assignment_records_slug_context_idx","columns":["slug","context"]},{"name":"enrollment_assignment_records_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"enrollment_assignment_records_enrollment_id_idx","columns":["enrollment_id"]},{"name":"enrollment_assignment_records_learner_id_idx","columns":["learner_id"]}],"version":"dc2f3b8a"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EnrollmentAssignmentRecordCollection":{"name":"enrollmentassignmentrecordcollection","className":"EnrollmentAssignmentRecordCollection","qualifiedName":"@happyvertical/smrt-education:EnrollmentAssignmentRecordCollection","collection":"enrollmentassignmentrecords","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"enrollment_assignment_records","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"EnrollmentAssignmentRecord","exportName":"EnrollmentAssignmentRecordCollection","collectionExportName":"EnrollmentAssignmentRecordCollectionCollection","schema":{"tableName":"enrollment_assignment_records","ddl":"CREATE TABLE IF NOT EXISTS \\"enrollment_assignment_records\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"enrollment_assignment_records_tenant_id_enrollment_id_idx","columns":["tenant_id","enrollment_id"],"unique":true},{"name":"enrollment_assignment_records_slug_context_idx","columns":["slug","context"]},{"name":"enrollment_assignment_records_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"enrollment_assignment_records_enrollment_id_idx","columns":["enrollment_id"]},{"name":"enrollment_assignment_records_learner_id_idx","columns":["learner_id"]}],"version":"dc2f3b8a"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CurriculumCreationRecord":{"name":"curriculumcreationrecord","className":"CurriculumCreationRecord","qualifiedName":"@happyvertical/smrt-education:CurriculumCreationRecord","collection":"curriculumcreationrecords","description":"Append-only audit of a delegated-agent curriculum creation: the agent, the guardian it acted for and the host's delegation id.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"curriculumId":{"type":"foreignKey","required":true,"related":"Curriculum","_meta":{"required":true}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"actorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"curriculum_creation_records","conflictColumns":["tenant_id","curriculum_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CurriculumCreationRecord","collectionExportName":"CurriculumCreationRecordCollection","validationRules":[{"field":"curriculumId","rule":"required","fieldType":"foreignKey"},{"field":"learnerId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"curriculum_creation_records","ddl":"CREATE TABLE IF NOT EXISTS \\"curriculum_creation_records\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"curriculum_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"curriculum_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"curricula","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"curriculum_creation_records_tenant_id_curriculum_id_idx","columns":["tenant_id","curriculum_id"],"unique":true},{"name":"curriculum_creation_records_slug_context_idx","columns":["slug","context"]},{"name":"curriculum_creation_records_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"curriculum_creation_records_curriculum_id_idx","columns":["curriculum_id"]},{"name":"curriculum_creation_records_learner_id_idx","columns":["learner_id"]}],"version":"92de6b72"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CurriculumCreationRecordCollection":{"name":"curriculumcreationrecordcollection","className":"CurriculumCreationRecordCollection","qualifiedName":"@happyvertical/smrt-education:CurriculumCreationRecordCollection","collection":"curriculumcreationrecords","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-authoring-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"curriculum_creation_records","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CurriculumCreationRecord","exportName":"CurriculumCreationRecordCollection","collectionExportName":"CurriculumCreationRecordCollectionCollection","schema":{"tableName":"curriculum_creation_records","ddl":"CREATE TABLE IF NOT EXISTS \\"curriculum_creation_records\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"curriculum_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"curriculum_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"curricula","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"curriculum_creation_records_tenant_id_curriculum_id_idx","columns":["tenant_id","curriculum_id"],"unique":true},{"name":"curriculum_creation_records_slug_context_idx","columns":["slug","context"]},{"name":"curriculum_creation_records_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"curriculum_creation_records_curriculum_id_idx","columns":["curriculum_id"]},{"name":"curriculum_creation_records_learner_id_idx","columns":["learner_id"]}],"version":"92de6b72"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseGenerationJob":{"name":"coursegenerationjob","className":"CourseGenerationJob","qualifiedName":"@happyvertical/smrt-education:CourseGenerationJob","collection":"coursegenerationjobs","description":"Immutable generation request with its retained input snapshot.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-generation-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"baseRevisionId":{"type":"foreignKey","required":true,"related":"CourseRevision","_meta":{"required":true}},"requestKey":{"type":"text","required":false},"payloadDigest":{"type":"text","required":false},"instruction":{"type":"text","required":false,"_meta":{}},"inputJson":{"type":"text","required":false,"_meta":{}},"requestedByUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_generation_jobs","conflictColumns":["tenant_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseGenerationJob","collectionExportName":"CourseGenerationJobCollection","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"baseRevisionId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"course_generation_jobs","ddl":"CREATE TABLE IF NOT EXISTS \\"course_generation_jobs\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"base_revision_id\\" UUID NOT NULL,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"instruction\\" TEXT,\\n \\"input_json\\" TEXT,\\n \\"requested_by_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"base_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"instruction":{"type":"TEXT","notNull":false,"unique":false},"input_json":{"type":"TEXT","notNull":false,"unique":false},"requested_by_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_generation_jobs_tenant_id_request_key_idx","columns":["tenant_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_generation_jobs_slug_context_idx","columns":["slug","context"]},{"name":"course_generation_jobs_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_generation_jobs_course_id_idx","columns":["course_id"]},{"name":"course_generation_jobs_base_revision_id_idx","columns":["base_revision_id"]}],"version":"736ab1a1"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseGenerationJobCollection":{"name":"coursegenerationjobcollection","className":"CourseGenerationJobCollection","qualifiedName":"@happyvertical/smrt-education:CourseGenerationJobCollection","collection":"coursegenerationjobs","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-generation-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_generation_jobs","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseGenerationJob","exportName":"CourseGenerationJobCollection","collectionExportName":"CourseGenerationJobCollectionCollection","schema":{"tableName":"course_generation_jobs","ddl":"CREATE TABLE IF NOT EXISTS \\"course_generation_jobs\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"base_revision_id\\" UUID NOT NULL,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"instruction\\" TEXT,\\n \\"input_json\\" TEXT,\\n \\"requested_by_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"base_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"instruction":{"type":"TEXT","notNull":false,"unique":false},"input_json":{"type":"TEXT","notNull":false,"unique":false},"requested_by_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_generation_jobs_tenant_id_request_key_idx","columns":["tenant_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_generation_jobs_slug_context_idx","columns":["slug","context"]},{"name":"course_generation_jobs_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_generation_jobs_course_id_idx","columns":["course_id"]},{"name":"course_generation_jobs_base_revision_id_idx","columns":["base_revision_id"]}],"version":"736ab1a1"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseGenerationEvent":{"name":"coursegenerationevent","className":"CourseGenerationEvent","qualifiedName":"@happyvertical/smrt-education:CourseGenerationEvent","collection":"coursegenerationevents","description":"Append-only status log; the highest sequence is the job's status and outcome.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-generation-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"jobId":{"type":"foreignKey","required":true,"related":"CourseGenerationJob","_meta":{"required":true}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"sequence":{"type":"integer","required":true,"default":1},"status":{"type":"text","required":false},"provider":{"type":"text","required":false},"model":{"type":"text","required":false},"version":{"type":"text","required":false},"responseModel":{"type":"text","required":false},"inputTokens":{"type":"integer","required":false,"_meta":{"nullable":true}},"outputTokens":{"type":"integer","required":false,"_meta":{"nullable":true}},"cost":{"type":"decimal","required":false,"_meta":{"nullable":true}},"costCurrency":{"type":"text","required":false,"_meta":{"nullable":true}},"usageJson":{"type":"text","required":false,"_meta":{}},"errorCode":{"type":"text","required":false,"_meta":{"nullable":true}},"detail":{"type":"text","required":false,"_meta":{}},"proposalId":{"type":"text","required":false,"_meta":{"nullable":true}},"resultRevisionId":{"type":"text","required":false,"_meta":{"nullable":true}},"actorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_generation_events","conflictColumns":["tenant_id","job_id","sequence"],"indexes":[{"name":"course_generation_events_sequence_unique","columns":["tenantId","jobId","sequence"],"unique":true}],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseGenerationEvent","collectionExportName":"CourseGenerationEventCollection","validationRules":[{"field":"jobId","rule":"required","fieldType":"foreignKey"},{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"sequence","rule":"required","fieldType":"integer"}],"schema":{"tableName":"course_generation_events","ddl":"CREATE TABLE IF NOT EXISTS \\"course_generation_events\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"job_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"status\\" TEXT,\\n \\"provider\\" TEXT,\\n \\"model\\" TEXT,\\n \\"version\\" TEXT,\\n \\"response_model\\" TEXT,\\n \\"input_tokens\\" INTEGER,\\n \\"output_tokens\\" INTEGER,\\n \\"cost\\" REAL,\\n \\"cost_currency\\" TEXT,\\n \\"usage_json\\" TEXT,\\n \\"error_code\\" TEXT,\\n \\"detail\\" TEXT,\\n \\"proposal_id\\" TEXT,\\n \\"result_revision_id\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"job_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_generation_jobs","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"status":{"type":"TEXT","notNull":false,"unique":false},"provider":{"type":"TEXT","notNull":false,"unique":false},"model":{"type":"TEXT","notNull":false,"unique":false},"version":{"type":"TEXT","notNull":false,"unique":false},"response_model":{"type":"TEXT","notNull":false,"unique":false},"input_tokens":{"type":"INTEGER","notNull":false,"unique":false},"output_tokens":{"type":"INTEGER","notNull":false,"unique":false},"cost":{"type":"REAL","notNull":false,"unique":false},"cost_currency":{"type":"TEXT","notNull":false,"unique":false},"usage_json":{"type":"TEXT","notNull":false,"unique":false},"error_code":{"type":"TEXT","notNull":false,"unique":false},"detail":{"type":"TEXT","notNull":false,"unique":false},"proposal_id":{"type":"TEXT","notNull":false,"unique":false},"result_revision_id":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_generation_events_tenant_id_job_id_idx","columns":["tenant_id","job_id","sequence"],"unique":true},{"name":"course_generation_events_slug_context_idx","columns":["slug","context"]},{"name":"course_generation_events_sequence_unique","columns":["tenant_id","job_id","sequence"],"unique":true},{"name":"course_generation_events_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_generation_events_job_id_idx","columns":["job_id"]},{"name":"course_generation_events_course_id_idx","columns":["course_id"]}],"version":"0dc29e4f"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseGenerationEventCollection":{"name":"coursegenerationeventcollection","className":"CourseGenerationEventCollection","qualifiedName":"@happyvertical/smrt-education:CourseGenerationEventCollection","collection":"coursegenerationevents","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-generation-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_generation_events","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseGenerationEvent","exportName":"CourseGenerationEventCollection","collectionExportName":"CourseGenerationEventCollectionCollection","schema":{"tableName":"course_generation_events","ddl":"CREATE TABLE IF NOT EXISTS \\"course_generation_events\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"job_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"status\\" TEXT,\\n \\"provider\\" TEXT,\\n \\"model\\" TEXT,\\n \\"version\\" TEXT,\\n \\"response_model\\" TEXT,\\n \\"input_tokens\\" INTEGER,\\n \\"output_tokens\\" INTEGER,\\n \\"cost\\" REAL,\\n \\"cost_currency\\" TEXT,\\n \\"usage_json\\" TEXT,\\n \\"error_code\\" TEXT,\\n \\"detail\\" TEXT,\\n \\"proposal_id\\" TEXT,\\n \\"result_revision_id\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"job_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_generation_jobs","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"status":{"type":"TEXT","notNull":false,"unique":false},"provider":{"type":"TEXT","notNull":false,"unique":false},"model":{"type":"TEXT","notNull":false,"unique":false},"version":{"type":"TEXT","notNull":false,"unique":false},"response_model":{"type":"TEXT","notNull":false,"unique":false},"input_tokens":{"type":"INTEGER","notNull":false,"unique":false},"output_tokens":{"type":"INTEGER","notNull":false,"unique":false},"cost":{"type":"REAL","notNull":false,"unique":false},"cost_currency":{"type":"TEXT","notNull":false,"unique":false},"usage_json":{"type":"TEXT","notNull":false,"unique":false},"error_code":{"type":"TEXT","notNull":false,"unique":false},"detail":{"type":"TEXT","notNull":false,"unique":false},"proposal_id":{"type":"TEXT","notNull":false,"unique":false},"result_revision_id":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_generation_events_tenant_id_job_id_idx","columns":["tenant_id","job_id","sequence"],"unique":true},{"name":"course_generation_events_slug_context_idx","columns":["slug","context"]},{"name":"course_generation_events_sequence_unique","columns":["tenant_id","job_id","sequence"],"unique":true},{"name":"course_generation_events_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_generation_events_job_id_idx","columns":["job_id"]},{"name":"course_generation_events_course_id_idx","columns":["course_id"]}],"version":"0dc29e4f"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseProposal":{"name":"courseproposal","className":"CourseProposal","qualifiedName":"@happyvertical/smrt-education:CourseProposal","collection":"courseproposals","description":"The validated proposal for one job and its supplied-versus-proposed plan.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-generation-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"jobId":{"type":"foreignKey","required":true,"related":"CourseGenerationJob","_meta":{"required":true}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"baseRevisionId":{"type":"foreignKey","required":true,"related":"CourseRevision","_meta":{"required":true}},"resultRevisionId":{"type":"foreignKey","required":true,"related":"CourseRevision","_meta":{"required":true}},"rationale":{"type":"text","required":false,"_meta":{}},"proposalJson":{"type":"text","required":false,"_meta":{}},"planJson":{"type":"text","required":false,"_meta":{}},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_proposals","conflictColumns":["tenant_id","job_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseProposal","collectionExportName":"CourseProposalCollection","validationRules":[{"field":"jobId","rule":"required","fieldType":"foreignKey"},{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"baseRevisionId","rule":"required","fieldType":"foreignKey"},{"field":"resultRevisionId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"course_proposals","ddl":"CREATE TABLE IF NOT EXISTS \\"course_proposals\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"job_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"base_revision_id\\" UUID NOT NULL,\\n \\"result_revision_id\\" UUID NOT NULL,\\n \\"rationale\\" TEXT,\\n \\"proposal_json\\" TEXT,\\n \\"plan_json\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"job_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_generation_jobs","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"base_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"result_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"rationale":{"type":"TEXT","notNull":false,"unique":false},"proposal_json":{"type":"TEXT","notNull":false,"unique":false},"plan_json":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_proposals_tenant_id_job_id_idx","columns":["tenant_id","job_id"],"unique":true},{"name":"course_proposals_slug_context_idx","columns":["slug","context"]},{"name":"course_proposals_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_proposals_job_id_idx","columns":["job_id"]},{"name":"course_proposals_course_id_idx","columns":["course_id"]},{"name":"course_proposals_base_revision_id_idx","columns":["base_revision_id"]},{"name":"course_proposals_result_revision_id_idx","columns":["result_revision_id"]}],"version":"cc650a3f"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseProposalCollection":{"name":"courseproposalcollection","className":"CourseProposalCollection","qualifiedName":"@happyvertical/smrt-education:CourseProposalCollection","collection":"courseproposals","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-generation-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_proposals","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseProposal","exportName":"CourseProposalCollection","collectionExportName":"CourseProposalCollectionCollection","schema":{"tableName":"course_proposals","ddl":"CREATE TABLE IF NOT EXISTS \\"course_proposals\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"job_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"base_revision_id\\" UUID NOT NULL,\\n \\"result_revision_id\\" UUID NOT NULL,\\n \\"rationale\\" TEXT,\\n \\"proposal_json\\" TEXT,\\n \\"plan_json\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"job_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_generation_jobs","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"base_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"result_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"rationale":{"type":"TEXT","notNull":false,"unique":false},"proposal_json":{"type":"TEXT","notNull":false,"unique":false},"plan_json":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_proposals_tenant_id_job_id_idx","columns":["tenant_id","job_id"],"unique":true},{"name":"course_proposals_slug_context_idx","columns":["slug","context"]},{"name":"course_proposals_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_proposals_job_id_idx","columns":["job_id"]},{"name":"course_proposals_course_id_idx","columns":["course_id"]},{"name":"course_proposals_base_revision_id_idx","columns":["base_revision_id"]},{"name":"course_proposals_result_revision_id_idx","columns":["result_revision_id"]}],"version":"cc650a3f"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseProposalDecision":{"name":"courseproposaldecision","className":"CourseProposalDecision","qualifiedName":"@happyvertical/smrt-education:CourseProposalDecision","collection":"courseproposaldecisions","description":"Explicit, recorded accept or reject of conflicting proposal fields.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-generation-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"proposalId":{"type":"foreignKey","required":true,"related":"CourseProposal","_meta":{"required":true}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"decision":{"type":"text","required":false},"fieldsJson":{"type":"text","required":false,"_meta":{}},"resultRevisionId":{"type":"text","required":false,"_meta":{"nullable":true}},"actorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"payloadDigest":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_proposal_decisions","conflictColumns":["tenant_id","proposal_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseProposalDecision","collectionExportName":"CourseProposalDecisionCollection","validationRules":[{"field":"proposalId","rule":"required","fieldType":"foreignKey"},{"field":"courseId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"course_proposal_decisions","ddl":"CREATE TABLE IF NOT EXISTS \\"course_proposal_decisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"proposal_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"decision\\" TEXT,\\n \\"fields_json\\" TEXT,\\n \\"result_revision_id\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"proposal_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_proposals","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"decision":{"type":"TEXT","notNull":false,"unique":false},"fields_json":{"type":"TEXT","notNull":false,"unique":false},"result_revision_id":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_proposal_decisions_tenant_id_proposal_id_idx","columns":["tenant_id","proposal_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_proposal_decisions_slug_context_idx","columns":["slug","context"]},{"name":"course_proposal_decisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_proposal_decisions_proposal_id_idx","columns":["proposal_id"]},{"name":"course_proposal_decisions_course_id_idx","columns":["course_id"]}],"version":"f66a9066"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseProposalDecisionCollection":{"name":"courseproposaldecisioncollection","className":"CourseProposalDecisionCollection","qualifiedName":"@happyvertical/smrt-education:CourseProposalDecisionCollection","collection":"courseproposaldecisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-generation-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_proposal_decisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseProposalDecision","exportName":"CourseProposalDecisionCollection","collectionExportName":"CourseProposalDecisionCollectionCollection","schema":{"tableName":"course_proposal_decisions","ddl":"CREATE TABLE IF NOT EXISTS \\"course_proposal_decisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"proposal_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"decision\\" TEXT,\\n \\"fields_json\\" TEXT,\\n \\"result_revision_id\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"proposal_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_proposals","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"decision":{"type":"TEXT","notNull":false,"unique":false},"fields_json":{"type":"TEXT","notNull":false,"unique":false},"result_revision_id":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_proposal_decisions_tenant_id_proposal_id_idx","columns":["tenant_id","proposal_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_proposal_decisions_slug_context_idx","columns":["slug","context"]},{"name":"course_proposal_decisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_proposal_decisions_proposal_id_idx","columns":["proposal_id"]},{"name":"course_proposal_decisions_course_id_idx","columns":["course_id"]}],"version":"f66a9066"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseReview":{"name":"coursereview","className":"CourseReview","qualifiedName":"@happyvertical/smrt-education:CourseReview","collection":"coursereviews","description":"Educational review bound to one exact course revision and a context digest. There is deliberately no score or rating member; findings carry the substance.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-review-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"revisionId":{"type":"foreignKey","required":true,"related":"CourseRevision","_meta":{"required":true}},"sequence":{"type":"integer","required":true,"default":1},"contextJson":{"type":"text","required":false,"_meta":{}},"contextDigest":{"type":"text","required":false},"disclaimer":{"type":"text","required":false,"_meta":{}},"generalSummary":{"type":"text","required":false,"_meta":{}},"learnerSummary":{"type":"text","required":false,"_meta":{}},"reviewerKind":{"type":"text","required":false},"reviewerProvider":{"type":"text","required":false},"reviewerModel":{"type":"text","required":false},"authorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"payloadDigest":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_reviews","conflictColumns":["tenant_id","course_id","request_key"],"indexes":[{"name":"course_reviews_sequence_unique","columns":["tenantId","courseId","revisionId","sequence"],"unique":true}],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseReview","collectionExportName":"CourseReviewCollection","validationRules":[{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"revisionId","rule":"required","fieldType":"foreignKey"},{"field":"sequence","rule":"required","fieldType":"integer"}],"schema":{"tableName":"course_reviews","ddl":"CREATE TABLE IF NOT EXISTS \\"course_reviews\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"context_json\\" TEXT,\\n \\"context_digest\\" TEXT,\\n \\"disclaimer\\" TEXT,\\n \\"general_summary\\" TEXT,\\n \\"learner_summary\\" TEXT,\\n \\"reviewer_kind\\" TEXT,\\n \\"reviewer_provider\\" TEXT,\\n \\"reviewer_model\\" TEXT,\\n \\"author_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"context_json":{"type":"TEXT","notNull":false,"unique":false},"context_digest":{"type":"TEXT","notNull":false,"unique":false},"disclaimer":{"type":"TEXT","notNull":false,"unique":false},"general_summary":{"type":"TEXT","notNull":false,"unique":false},"learner_summary":{"type":"TEXT","notNull":false,"unique":false},"reviewer_kind":{"type":"TEXT","notNull":false,"unique":false},"reviewer_provider":{"type":"TEXT","notNull":false,"unique":false},"reviewer_model":{"type":"TEXT","notNull":false,"unique":false},"author_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_reviews_tenant_id_course_id_idx","columns":["tenant_id","course_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_reviews_slug_context_idx","columns":["slug","context"]},{"name":"course_reviews_sequence_unique","columns":["tenant_id","course_id","revision_id","sequence"],"unique":true},{"name":"course_reviews_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_reviews_course_id_idx","columns":["course_id"]},{"name":"course_reviews_revision_id_idx","columns":["revision_id"]}],"version":"09648ccc"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseReviewCollection":{"name":"coursereviewcollection","className":"CourseReviewCollection","qualifiedName":"@happyvertical/smrt-education:CourseReviewCollection","collection":"coursereviews","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-review-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_reviews","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseReview","exportName":"CourseReviewCollection","collectionExportName":"CourseReviewCollectionCollection","schema":{"tableName":"course_reviews","ddl":"CREATE TABLE IF NOT EXISTS \\"course_reviews\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"context_json\\" TEXT,\\n \\"context_digest\\" TEXT,\\n \\"disclaimer\\" TEXT,\\n \\"general_summary\\" TEXT,\\n \\"learner_summary\\" TEXT,\\n \\"reviewer_kind\\" TEXT,\\n \\"reviewer_provider\\" TEXT,\\n \\"reviewer_model\\" TEXT,\\n \\"author_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"context_json":{"type":"TEXT","notNull":false,"unique":false},"context_digest":{"type":"TEXT","notNull":false,"unique":false},"disclaimer":{"type":"TEXT","notNull":false,"unique":false},"general_summary":{"type":"TEXT","notNull":false,"unique":false},"learner_summary":{"type":"TEXT","notNull":false,"unique":false},"reviewer_kind":{"type":"TEXT","notNull":false,"unique":false},"reviewer_provider":{"type":"TEXT","notNull":false,"unique":false},"reviewer_model":{"type":"TEXT","notNull":false,"unique":false},"author_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_reviews_tenant_id_course_id_idx","columns":["tenant_id","course_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"course_reviews_slug_context_idx","columns":["slug","context"]},{"name":"course_reviews_sequence_unique","columns":["tenant_id","course_id","revision_id","sequence"],"unique":true},{"name":"course_reviews_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_reviews_course_id_idx","columns":["course_id"]},{"name":"course_reviews_revision_id_idx","columns":["revision_id"]}],"version":"09648ccc"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseReviewFinding":{"name":"coursereviewfinding","className":"CourseReviewFinding","qualifiedName":"@happyvertical/smrt-education:CourseReviewFinding","collection":"coursereviewfindings","description":"One concern about specific material; append-only.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-review-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"reviewId":{"type":"foreignKey","required":true,"related":"CourseReview","_meta":{"required":true}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"revisionId":{"type":"foreignKey","required":true,"related":"CourseRevision","_meta":{"required":true}},"ordinal":{"type":"integer","required":true,"default":0},"section":{"type":"text","required":false},"targetKind":{"type":"text","required":false},"targetId":{"type":"text","required":false},"targetField":{"type":"text","required":false},"targetRegion":{"type":"text","required":false},"concern":{"type":"text","required":false},"explanation":{"type":"text","required":false,"_meta":{}},"suggestedChange":{"type":"text","required":false,"_meta":{}},"uncertain":{"type":"boolean","required":true,"default":false},"humanVerificationRequired":{"type":"boolean","required":true,"default":false},"blocking":{"type":"boolean","required":true,"default":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_review_findings","conflictColumns":["tenant_id","review_id","ordinal"],"indexes":[{"name":"course_review_findings_ordinal_unique","columns":["tenantId","reviewId","ordinal"],"unique":true}],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseReviewFinding","collectionExportName":"CourseReviewFindingCollection","validationRules":[{"field":"reviewId","rule":"required","fieldType":"foreignKey"},{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"revisionId","rule":"required","fieldType":"foreignKey"},{"field":"ordinal","rule":"required","fieldType":"integer"},{"field":"uncertain","rule":"required","fieldType":"boolean"},{"field":"humanVerificationRequired","rule":"required","fieldType":"boolean"},{"field":"blocking","rule":"required","fieldType":"boolean"}],"schema":{"tableName":"course_review_findings","ddl":"CREATE TABLE IF NOT EXISTS \\"course_review_findings\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"review_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"ordinal\\" INTEGER NOT NULL DEFAULT 0,\\n \\"section\\" TEXT,\\n \\"target_kind\\" TEXT,\\n \\"target_id\\" TEXT,\\n \\"target_field\\" TEXT,\\n \\"target_region\\" TEXT,\\n \\"concern\\" TEXT,\\n \\"explanation\\" TEXT,\\n \\"suggested_change\\" TEXT,\\n \\"uncertain\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"human_verification_required\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"blocking\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"review_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_reviews","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"ordinal":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"section":{"type":"TEXT","notNull":false,"unique":false},"target_kind":{"type":"TEXT","notNull":false,"unique":false},"target_id":{"type":"TEXT","notNull":false,"unique":false},"target_field":{"type":"TEXT","notNull":false,"unique":false},"target_region":{"type":"TEXT","notNull":false,"unique":false},"concern":{"type":"TEXT","notNull":false,"unique":false},"explanation":{"type":"TEXT","notNull":false,"unique":false},"suggested_change":{"type":"TEXT","notNull":false,"unique":false},"uncertain":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"human_verification_required":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"blocking":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_review_findings_tenant_id_review_id_idx","columns":["tenant_id","review_id","ordinal"],"unique":true},{"name":"course_review_findings_slug_context_idx","columns":["slug","context"]},{"name":"course_review_findings_ordinal_unique","columns":["tenant_id","review_id","ordinal"],"unique":true},{"name":"course_review_findings_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_review_findings_review_id_idx","columns":["review_id"]},{"name":"course_review_findings_course_id_idx","columns":["course_id"]},{"name":"course_review_findings_revision_id_idx","columns":["revision_id"]}],"version":"473686cc"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseReviewFindingCollection":{"name":"coursereviewfindingcollection","className":"CourseReviewFindingCollection","qualifiedName":"@happyvertical/smrt-education:CourseReviewFindingCollection","collection":"coursereviewfindings","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-review-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_review_findings","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseReviewFinding","exportName":"CourseReviewFindingCollection","collectionExportName":"CourseReviewFindingCollectionCollection","schema":{"tableName":"course_review_findings","ddl":"CREATE TABLE IF NOT EXISTS \\"course_review_findings\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"review_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"ordinal\\" INTEGER NOT NULL DEFAULT 0,\\n \\"section\\" TEXT,\\n \\"target_kind\\" TEXT,\\n \\"target_id\\" TEXT,\\n \\"target_field\\" TEXT,\\n \\"target_region\\" TEXT,\\n \\"concern\\" TEXT,\\n \\"explanation\\" TEXT,\\n \\"suggested_change\\" TEXT,\\n \\"uncertain\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"human_verification_required\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"blocking\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"review_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_reviews","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"ordinal":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"section":{"type":"TEXT","notNull":false,"unique":false},"target_kind":{"type":"TEXT","notNull":false,"unique":false},"target_id":{"type":"TEXT","notNull":false,"unique":false},"target_field":{"type":"TEXT","notNull":false,"unique":false},"target_region":{"type":"TEXT","notNull":false,"unique":false},"concern":{"type":"TEXT","notNull":false,"unique":false},"explanation":{"type":"TEXT","notNull":false,"unique":false},"suggested_change":{"type":"TEXT","notNull":false,"unique":false},"uncertain":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"human_verification_required":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"blocking":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_review_findings_tenant_id_review_id_idx","columns":["tenant_id","review_id","ordinal"],"unique":true},{"name":"course_review_findings_slug_context_idx","columns":["slug","context"]},{"name":"course_review_findings_ordinal_unique","columns":["tenant_id","review_id","ordinal"],"unique":true},{"name":"course_review_findings_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_review_findings_review_id_idx","columns":["review_id"]},{"name":"course_review_findings_course_id_idx","columns":["course_id"]},{"name":"course_review_findings_revision_id_idx","columns":["revision_id"]}],"version":"473686cc"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseReviewOutdatedMarker":{"name":"coursereviewoutdatedmarker","className":"CourseReviewOutdatedMarker","qualifiedName":"@happyvertical/smrt-education:CourseReviewOutdatedMarker","collection":"coursereviewoutdatedmarkers","description":"Explicit record that a review stopped being current; one per review, never removed.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-review-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"reviewId":{"type":"foreignKey","required":true,"related":"CourseReview","_meta":{"required":true}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"reason":{"type":"text","required":false},"supersedingRevisionId":{"type":"text","required":false,"_meta":{"nullable":true}},"newContextDigest":{"type":"text","required":false},"actorUserId":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_review_outdated_markers","conflictColumns":["tenant_id","review_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseReviewOutdatedMarker","collectionExportName":"CourseReviewOutdatedMarkerCollection","validationRules":[{"field":"reviewId","rule":"required","fieldType":"foreignKey"},{"field":"courseId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"course_review_outdated_markers","ddl":"CREATE TABLE IF NOT EXISTS \\"course_review_outdated_markers\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"review_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"reason\\" TEXT,\\n \\"superseding_revision_id\\" TEXT,\\n \\"new_context_digest\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"review_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_reviews","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"reason":{"type":"TEXT","notNull":false,"unique":false},"superseding_revision_id":{"type":"TEXT","notNull":false,"unique":false},"new_context_digest":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_review_outdated_markers_tenant_id_review_id_idx","columns":["tenant_id","review_id"],"unique":true},{"name":"course_review_outdated_markers_slug_context_idx","columns":["slug","context"]},{"name":"course_review_outdated_markers_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_review_outdated_markers_review_id_idx","columns":["review_id"]},{"name":"course_review_outdated_markers_course_id_idx","columns":["course_id"]}],"version":"32a61299"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseReviewOutdatedMarkerCollection":{"name":"coursereviewoutdatedmarkercollection","className":"CourseReviewOutdatedMarkerCollection","qualifiedName":"@happyvertical/smrt-education:CourseReviewOutdatedMarkerCollection","collection":"coursereviewoutdatedmarkers","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-review-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_review_outdated_markers","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseReviewOutdatedMarker","exportName":"CourseReviewOutdatedMarkerCollection","collectionExportName":"CourseReviewOutdatedMarkerCollectionCollection","schema":{"tableName":"course_review_outdated_markers","ddl":"CREATE TABLE IF NOT EXISTS \\"course_review_outdated_markers\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"review_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"reason\\" TEXT,\\n \\"superseding_revision_id\\" TEXT,\\n \\"new_context_digest\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"review_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_reviews","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"reason":{"type":"TEXT","notNull":false,"unique":false},"superseding_revision_id":{"type":"TEXT","notNull":false,"unique":false},"new_context_digest":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_review_outdated_markers_tenant_id_review_id_idx","columns":["tenant_id","review_id"],"unique":true},{"name":"course_review_outdated_markers_slug_context_idx","columns":["slug","context"]},{"name":"course_review_outdated_markers_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_review_outdated_markers_review_id_idx","columns":["review_id"]},{"name":"course_review_outdated_markers_course_id_idx","columns":["course_id"]}],"version":"32a61299"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseFindingResolution":{"name":"coursefindingresolution","className":"CourseFindingResolution","qualifiedName":"@happyvertical/smrt-education:CourseFindingResolution","collection":"coursefindingresolutions","description":"How a finding was dealt with; a finding has at most one resolution.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-review-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"findingId":{"type":"foreignKey","required":true,"related":"CourseReviewFinding","_meta":{"required":true}},"reviewId":{"type":"foreignKey","required":true,"related":"CourseReview","_meta":{"required":true}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"resolution":{"type":"text","required":false},"note":{"type":"text","required":false,"_meta":{}},"actorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"payloadDigest":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"course_finding_resolutions","conflictColumns":["tenant_id","finding_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"CourseFindingResolution","collectionExportName":"CourseFindingResolutionCollection","validationRules":[{"field":"findingId","rule":"required","fieldType":"foreignKey"},{"field":"reviewId","rule":"required","fieldType":"foreignKey"},{"field":"courseId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"course_finding_resolutions","ddl":"CREATE TABLE IF NOT EXISTS \\"course_finding_resolutions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"finding_id\\" UUID NOT NULL,\\n \\"review_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"resolution\\" TEXT,\\n \\"note\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"finding_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_review_findings","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"review_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_reviews","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"resolution":{"type":"TEXT","notNull":false,"unique":false},"note":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_finding_resolutions_tenant_id_finding_id_idx","columns":["tenant_id","finding_id"],"unique":true},{"name":"course_finding_resolutions_slug_context_idx","columns":["slug","context"]},{"name":"course_finding_resolutions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_finding_resolutions_finding_id_idx","columns":["finding_id"]},{"name":"course_finding_resolutions_review_id_idx","columns":["review_id"]},{"name":"course_finding_resolutions_course_id_idx","columns":["course_id"]}],"version":"e7629ad4"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseFindingResolutionCollection":{"name":"coursefindingresolutioncollection","className":"CourseFindingResolutionCollection","qualifiedName":"@happyvertical/smrt-education:CourseFindingResolutionCollection","collection":"coursefindingresolutions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-review-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"course_finding_resolutions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseFindingResolution","exportName":"CourseFindingResolutionCollection","collectionExportName":"CourseFindingResolutionCollectionCollection","schema":{"tableName":"course_finding_resolutions","ddl":"CREATE TABLE IF NOT EXISTS \\"course_finding_resolutions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"finding_id\\" UUID NOT NULL,\\n \\"review_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"resolution\\" TEXT,\\n \\"note\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"finding_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_review_findings","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"review_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"course_reviews","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"resolution":{"type":"TEXT","notNull":false,"unique":false},"note":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"course_finding_resolutions_tenant_id_finding_id_idx","columns":["tenant_id","finding_id"],"unique":true},{"name":"course_finding_resolutions_slug_context_idx","columns":["slug","context"]},{"name":"course_finding_resolutions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"course_finding_resolutions_finding_id_idx","columns":["finding_id"]},{"name":"course_finding_resolutions_review_id_idx","columns":["review_id"]},{"name":"course_finding_resolutions_course_id_idx","columns":["course_id"]}],"version":"e7629ad4"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseSource":{"name":"coursesource","className":"CourseSource","qualifiedName":"@happyvertical/smrt-education:CourseSource","collection":"coursesources","description":"Host-managed source policy; deliberately has no generated CRUD surface.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-source.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"key":{"type":"text","required":true,"_meta":{"required":true}},"name":{"type":"text","required":true,"_meta":{"required":true}},"kind":{"type":"text","required":false,"default":"adapter","enum":["manual","url","adapter"]},"adapterKey":{"type":"text","required":false},"config":{"type":"text","required":false},"sharing":{"type":"text","required":false,"default":"private","enum":["private","group","global"]}},"methods":{"getConfig":{"name":"getConfig","async":false,"parameters":[],"returnType":"CourseSourceConfig","isStatic":false,"isPublic":true},"setConfig":{"name":"setConfig","async":false,"parameters":[{"name":"value","type":"CourseSourceConfig","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"cli":false,"mcp":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"CourseSource","collectionExportName":"CourseSourceCollection","displayLabelField":"name","validationRules":[{"field":"key","rule":"required","fieldType":"text"},{"field":"name","rule":"required","fieldType":"text"}],"schema":{"tableName":"course_sources","ddl":"CREATE TABLE IF NOT EXISTS \\"course_sources\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"key\\" TEXT NOT NULL,\\n \\"name\\" TEXT NOT NULL,\\n \\"kind\\" TEXT DEFAULT 'adapter',\\n \\"adapter_key\\" TEXT,\\n \\"config\\" TEXT,\\n \\"sharing\\" TEXT DEFAULT 'private'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"key":{"type":"TEXT","notNull":true,"unique":false},"name":{"type":"TEXT","notNull":true,"unique":false},"kind":{"type":"TEXT","notNull":false,"unique":false,"default":"adapter"},"adapter_key":{"type":"TEXT","notNull":false,"unique":false},"config":{"type":"TEXT","notNull":false,"unique":false},"sharing":{"type":"TEXT","notNull":false,"unique":false,"default":"private"}},"indexes":[{"name":"course_sources_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"course_sources_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"98177eb3"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:CourseSourceCollection":{"name":"coursesourcecollection","className":"CourseSourceCollection","qualifiedName":"@happyvertical/smrt-education:CourseSourceCollection","collection":"coursesources","filePath":"/home/runner/work/smrt/smrt/packages/education/src/course-source.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"CourseSource","exportName":"CourseSourceCollection","collectionExportName":"CourseSourceCollectionCollection","schema":{"tableName":"course_sources","ddl":"CREATE TABLE IF NOT EXISTS \\"course_sources\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"key\\" TEXT NOT NULL,\\n \\"name\\" TEXT NOT NULL,\\n \\"kind\\" TEXT DEFAULT 'adapter',\\n \\"adapter_key\\" TEXT,\\n \\"config\\" TEXT,\\n \\"sharing\\" TEXT DEFAULT 'private'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"key":{"type":"TEXT","notNull":true,"unique":false},"name":{"type":"TEXT","notNull":true,"unique":false},"kind":{"type":"TEXT","notNull":false,"unique":false,"default":"adapter"},"adapter_key":{"type":"TEXT","notNull":false,"unique":false},"config":{"type":"TEXT","notNull":false,"unique":false},"sharing":{"type":"TEXT","notNull":false,"unique":false,"default":"private"}},"indexes":[{"name":"course_sources_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"course_sources_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"98177eb3"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EnrollmentParentNote":{"name":"enrollmentparentnote","className":"EnrollmentParentNote","qualifiedName":"@happyvertical/smrt-education:EnrollmentParentNote","collection":"enrollmentparentnotes","description":"Private guardian annotations, separate from learning and assessment history.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/enrollment-notes.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"enrollmentId":{"type":"foreignKey","required":true,"related":"Enrollment","_meta":{"required":true}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"authorUserId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:User"},"authorLabel":{"type":"text","required":false},"text":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"tableName":"enrollment_parent_notes","conflictColumns":["tenant_id","enrollment_id","request_key"],"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"EnrollmentParentNote","collectionExportName":"EnrollmentParentNoteCollection","validationRules":[{"field":"enrollmentId","rule":"required","fieldType":"foreignKey"},{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"authorUserId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"enrollment_parent_notes","ddl":"CREATE TABLE IF NOT EXISTS \\"enrollment_parent_notes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"author_user_id\\" UUID NOT NULL,\\n \\"author_label\\" TEXT,\\n \\"text\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"author_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"author_label":{"type":"TEXT","notNull":false,"unique":false},"text":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"enrollment_parent_notes_tenant_id_enrollment_id_idx","columns":["tenant_id","enrollment_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"enrollment_parent_notes_slug_context_idx","columns":["slug","context"]},{"name":"enrollment_parent_notes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"enrollment_parent_notes_enrollment_id_idx","columns":["enrollment_id"]},{"name":"enrollment_parent_notes_learner_id_idx","columns":["learner_id"]},{"name":"enrollment_parent_notes_author_user_id_idx","columns":["author_user_id"]}],"version":"f8d2db23"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EnrollmentParentNoteCollection":{"name":"enrollmentparentnotecollection","className":"EnrollmentParentNoteCollection","qualifiedName":"@happyvertical/smrt-education:EnrollmentParentNoteCollection","collection":"enrollmentparentnotes","filePath":"/home/runner/work/smrt/smrt/packages/education/src/enrollment-notes.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"enrollment_parent_notes","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"EnrollmentParentNote","exportName":"EnrollmentParentNoteCollection","collectionExportName":"EnrollmentParentNoteCollectionCollection","schema":{"tableName":"enrollment_parent_notes","ddl":"CREATE TABLE IF NOT EXISTS \\"enrollment_parent_notes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"author_user_id\\" UUID NOT NULL,\\n \\"author_label\\" TEXT,\\n \\"text\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"author_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"author_label":{"type":"TEXT","notNull":false,"unique":false},"text":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"enrollment_parent_notes_tenant_id_enrollment_id_idx","columns":["tenant_id","enrollment_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"enrollment_parent_notes_slug_context_idx","columns":["slug","context"]},{"name":"enrollment_parent_notes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"enrollment_parent_notes_enrollment_id_idx","columns":["enrollment_id"]},{"name":"enrollment_parent_notes_learner_id_idx","columns":["learner_id"]},{"name":"enrollment_parent_notes_author_user_id_idx","columns":["author_user_id"]}],"version":"f8d2db23"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:FamilyIntake":{"name":"familyintake","className":"FamilyIntake","qualifiedName":"@happyvertical/smrt-education:FamilyIntake","collection":"familyintakes","description":"Family-owned receipt, independent of learner attribution and ingestion expiry.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/family-intake-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"itemId":{"type":"text","required":false},"actorUserId":{"type":"text","required":false},"ownerProfileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile"},"contentDigest":{"type":"text","required":false},"sourceJson":{"type":"text","required":false,"_meta":{}}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"family_intakes","conflictColumns":["tenant_id","item_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"FamilyIntake","collectionExportName":"FamilyIntakeCollection","validationRules":[],"schema":{"tableName":"family_intakes","ddl":"CREATE TABLE IF NOT EXISTS \\"family_intakes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"item_id\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"owner_profile_id\\" UUID,\\n \\"content_digest\\" TEXT,\\n \\"source_json\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"item_id":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"owner_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"content_digest":{"type":"TEXT","notNull":false,"unique":false},"source_json":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"family_intakes_tenant_id_item_id_idx","columns":["tenant_id","item_id"],"unique":true,"nullsNotDistinct":true},{"name":"family_intakes_slug_context_idx","columns":["slug","context"]},{"name":"family_intakes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"family_intakes_owner_profile_id_idx","columns":["owner_profile_id"]}],"version":"2577578b"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:FamilyIntakeCollection":{"name":"familyintakecollection","className":"FamilyIntakeCollection","qualifiedName":"@happyvertical/smrt-education:FamilyIntakeCollection","collection":"familyintakes","filePath":"/home/runner/work/smrt/smrt/packages/education/src/family-intake-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"family_intakes","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"FamilyIntake","exportName":"FamilyIntakeCollection","collectionExportName":"FamilyIntakeCollectionCollection","schema":{"tableName":"family_intakes","ddl":"CREATE TABLE IF NOT EXISTS \\"family_intakes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"item_id\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"owner_profile_id\\" UUID,\\n \\"content_digest\\" TEXT,\\n \\"source_json\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"item_id":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"owner_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"content_digest":{"type":"TEXT","notNull":false,"unique":false},"source_json":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"family_intakes_tenant_id_item_id_idx","columns":["tenant_id","item_id"],"unique":true,"nullsNotDistinct":true},{"name":"family_intakes_slug_context_idx","columns":["slug","context"]},{"name":"family_intakes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"family_intakes_owner_profile_id_idx","columns":["owner_profile_id"]}],"version":"2577578b"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:FamilyIntakeAsset":{"name":"familyintakeasset","className":"FamilyIntakeAsset","qualifiedName":"@happyvertical/smrt-education:FamilyIntakeAsset","collection":"familyintakeassets","description":"Sole family owner join; adoption borrows this exact immutable original.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/family-intake-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"intakeId":{"type":"foreignKey","required":true,"related":"FamilyIntake","_meta":{"required":true}},"assetId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-assets:Asset"},"name":{"type":"text","required":false},"mimeType":{"type":"text","required":false},"sha256":{"type":"text","required":false},"position":{"type":"integer","required":true,"default":0}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"family_intake_assets","conflictColumns":["tenant_id","intake_id","asset_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"FamilyIntakeAsset","collectionExportName":"FamilyIntakeAssetCollection","displayLabelField":"name","validationRules":[{"field":"intakeId","rule":"required","fieldType":"foreignKey"},{"field":"position","rule":"required","fieldType":"integer"}],"schema":{"tableName":"family_intake_assets","ddl":"CREATE TABLE IF NOT EXISTS \\"family_intake_assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"intake_id\\" UUID NOT NULL,\\n \\"asset_id\\" UUID,\\n \\"name\\" TEXT,\\n \\"mime_type\\" TEXT,\\n \\"sha256\\" TEXT,\\n \\"position\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"family_intakes","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"mime_type":{"type":"TEXT","notNull":false,"unique":false},"sha256":{"type":"TEXT","notNull":false,"unique":false},"position":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"family_intake_assets_tenant_id_intake_id_idx","columns":["tenant_id","intake_id","asset_id"],"unique":true,"nullsNotDistinct":true},{"name":"family_intake_assets_slug_context_idx","columns":["slug","context"]},{"name":"family_intake_assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"family_intake_assets_intake_id_idx","columns":["intake_id"]},{"name":"family_intake_assets_asset_id_idx","columns":["asset_id"]}],"version":"3811d126"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:FamilyIntakeAssetCollection":{"name":"familyintakeassetcollection","className":"FamilyIntakeAssetCollection","qualifiedName":"@happyvertical/smrt-education:FamilyIntakeAssetCollection","collection":"familyintakeassets","filePath":"/home/runner/work/smrt/smrt/packages/education/src/family-intake-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"family_intake_assets","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"FamilyIntakeAsset","exportName":"FamilyIntakeAssetCollection","collectionExportName":"FamilyIntakeAssetCollectionCollection","schema":{"tableName":"family_intake_assets","ddl":"CREATE TABLE IF NOT EXISTS \\"family_intake_assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"intake_id\\" UUID NOT NULL,\\n \\"asset_id\\" UUID,\\n \\"name\\" TEXT,\\n \\"mime_type\\" TEXT,\\n \\"sha256\\" TEXT,\\n \\"position\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"family_intakes","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"mime_type":{"type":"TEXT","notNull":false,"unique":false},"sha256":{"type":"TEXT","notNull":false,"unique":false},"position":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"family_intake_assets_tenant_id_intake_id_idx","columns":["tenant_id","intake_id","asset_id"],"unique":true,"nullsNotDistinct":true},{"name":"family_intake_assets_slug_context_idx","columns":["slug","context"]},{"name":"family_intake_assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"family_intake_assets_intake_id_idx","columns":["intake_id"]},{"name":"family_intake_assets_asset_id_idx","columns":["asset_id"]}],"version":"3811d126"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:FamilyIntakeDecision":{"name":"familyintakedecision","className":"FamilyIntakeDecision","qualifiedName":"@happyvertical/smrt-education:FamilyIntakeDecision","collection":"familyintakedecisions","description":"Append-only attribution/adoption audit; no marks or learning outcomes.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/family-intake-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"intakeId":{"type":"foreignKey","required":true,"related":"FamilyIntake","_meta":{"required":true}},"requestKey":{"type":"text","required":false},"sequence":{"type":"integer","required":true,"default":0},"actorUserId":{"type":"text","required":false},"bodyJson":{"type":"text","required":false,"_meta":{}}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"family_intake_decisions","conflictColumns":["tenant_id","intake_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"FamilyIntakeDecision","collectionExportName":"FamilyIntakeDecisionCollection","validationRules":[{"field":"intakeId","rule":"required","fieldType":"foreignKey"},{"field":"sequence","rule":"required","fieldType":"integer"}],"schema":{"tableName":"family_intake_decisions","ddl":"CREATE TABLE IF NOT EXISTS \\"family_intake_decisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"intake_id\\" UUID NOT NULL,\\n \\"request_key\\" TEXT,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 0,\\n \\"actor_user_id\\" TEXT,\\n \\"body_json\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"family_intakes","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"request_key":{"type":"TEXT","notNull":false,"unique":false},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"body_json":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"family_intake_decisions_tenant_id_intake_id_idx","columns":["tenant_id","intake_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"family_intake_decisions_slug_context_idx","columns":["slug","context"]},{"name":"family_intake_decisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"family_intake_decisions_intake_id_idx","columns":["intake_id"]}],"version":"08875c81"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:FamilyIntakeDecisionCollection":{"name":"familyintakedecisioncollection","className":"FamilyIntakeDecisionCollection","qualifiedName":"@happyvertical/smrt-education:FamilyIntakeDecisionCollection","collection":"familyintakedecisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/family-intake-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"family_intake_decisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"FamilyIntakeDecision","exportName":"FamilyIntakeDecisionCollection","collectionExportName":"FamilyIntakeDecisionCollectionCollection","schema":{"tableName":"family_intake_decisions","ddl":"CREATE TABLE IF NOT EXISTS \\"family_intake_decisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"intake_id\\" UUID NOT NULL,\\n \\"request_key\\" TEXT,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 0,\\n \\"actor_user_id\\" TEXT,\\n \\"body_json\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"family_intakes","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"request_key":{"type":"TEXT","notNull":false,"unique":false},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"body_json":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"family_intake_decisions_tenant_id_intake_id_idx","columns":["tenant_id","intake_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"family_intake_decisions_slug_context_idx","columns":["slug","context"]},{"name":"family_intake_decisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"family_intake_decisions_intake_id_idx","columns":["intake_id"]}],"version":"08875c81"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EducationGroup":{"name":"educationgroup","className":"EducationGroup","qualifiedName":"@happyvertical/smrt-education:EducationGroup","collection":"educationgroups","description":"Independent group tenant metadata; no family authority is implied.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"name":{"type":"text","required":false},"active":{"type":"boolean","required":true,"default":true},"creatorUserId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:User"},"creatorProfileId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-profiles:Profile"}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"education_groups","conflictColumns":["tenant_id"],"api":false,"mcp":false,"cli":false,"ai":{"callable":[]},"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"EducationGroup","collectionExportName":"EducationGroupCollection","displayLabelField":"name","validationRules":[{"field":"active","rule":"required","fieldType":"boolean"},{"field":"creatorUserId","rule":"required","fieldType":"crossPackageRef"},{"field":"creatorProfileId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"education_groups","ddl":"CREATE TABLE IF NOT EXISTS \\"education_groups\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"name\\" TEXT,\\n \\"active\\" BOOLEAN NOT NULL DEFAULT TRUE,\\n \\"creator_user_id\\" UUID NOT NULL,\\n \\"creator_profile_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"active":{"type":"BOOLEAN","notNull":true,"unique":false,"default":true},"creator_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"creator_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false}},"indexes":[{"name":"education_groups_tenant_id_idx","columns":["tenant_id"],"unique":true},{"name":"education_groups_slug_context_idx","columns":["slug","context"]},{"name":"education_groups_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"education_groups_creator_user_id_idx","columns":["creator_user_id"]},{"name":"education_groups_creator_profile_id_idx","columns":["creator_profile_id"]}],"version":"6e17e39b"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:EducationGroupCollection":{"name":"educationgroupcollection","className":"EducationGroupCollection","qualifiedName":"@happyvertical/smrt-education:EducationGroupCollection","collection":"educationgroups","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"education_groups","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"EducationGroup","exportName":"EducationGroupCollection","collectionExportName":"EducationGroupCollectionCollection","schema":{"tableName":"education_groups","ddl":"CREATE TABLE IF NOT EXISTS \\"education_groups\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"name\\" TEXT,\\n \\"active\\" BOOLEAN NOT NULL DEFAULT TRUE,\\n \\"creator_user_id\\" UUID NOT NULL,\\n \\"creator_profile_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"active":{"type":"BOOLEAN","notNull":true,"unique":false,"default":true},"creator_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"creator_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false}},"indexes":[{"name":"education_groups_tenant_id_idx","columns":["tenant_id"],"unique":true},{"name":"education_groups_slug_context_idx","columns":["slug","context"]},{"name":"education_groups_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"education_groups_creator_user_id_idx","columns":["creator_user_id"]},{"name":"education_groups_creator_profile_id_idx","columns":["creator_profile_id"]}],"version":"6e17e39b"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GroupLearnerInvitation":{"name":"grouplearnerinvitation","className":"GroupLearnerInvitation","qualifiedName":"@happyvertical/smrt-education:GroupLearnerInvitation","collection":"grouplearnerinvitations","description":"Group-owned target selectors are opaque until the exact parent accepts.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"groupId":{"type":"foreignKey","required":true,"related":"EducationGroup","_meta":{"required":true,"onDelete":"RESTRICT"}},"familyTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant"},"learnerId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","required":true}},"invitedParentUserId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:User"},"creatorUserId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:User"},"expiresAt":{"type":"text","required":false},"status":{"type":"text","required":false,"default":"pending","enum":["pending","accepted","revoked","declined"]},"acceptedMembershipId":{"type":"foreignKey","required":false,"related":"GroupLearnerMembership","_meta":{"nullable":true,"onDelete":"RESTRICT"}},"acceptedPolicyDigest":{"type":"text","required":false}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"group_learner_invitations","api":false,"mcp":false,"cli":false,"ai":{"callable":[]},"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"GroupLearnerInvitation","collectionExportName":"GroupLearnerInvitationCollection","validationRules":[{"field":"groupId","rule":"required","fieldType":"foreignKey"},{"field":"familyTenantId","rule":"required","fieldType":"crossPackageRef"},{"field":"learnerId","rule":"required","fieldType":"text"},{"field":"invitedParentUserId","rule":"required","fieldType":"crossPackageRef"},{"field":"creatorUserId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"group_learner_invitations","ddl":"CREATE TABLE IF NOT EXISTS \\"group_learner_invitations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"group_id\\" UUID NOT NULL,\\n \\"family_tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"invited_parent_user_id\\" UUID NOT NULL,\\n \\"creator_user_id\\" UUID NOT NULL,\\n \\"expires_at\\" TEXT,\\n \\"status\\" TEXT DEFAULT 'pending',\\n \\"accepted_membership_id\\" UUID,\\n \\"accepted_policy_digest\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"group_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"education_groups","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"family_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"learner_id":{"type":"UUID","notNull":true,"unique":false},"invited_parent_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"creator_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"expires_at":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"pending"},"accepted_membership_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"group_learner_memberships","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"accepted_policy_digest":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"group_learner_invitations_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"group_learner_invitations_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"group_learner_invitations_group_id_idx","columns":["group_id"]},{"name":"group_learner_invitations_family_tenant_id_idx","columns":["family_tenant_id"]},{"name":"group_learner_invitations_invited_parent_user_id_idx","columns":["invited_parent_user_id"]},{"name":"group_learner_invitations_creator_user_id_idx","columns":["creator_user_id"]},{"name":"group_learner_invitations_accepted_membership_id_idx","columns":["accepted_membership_id"]}],"version":"fd61d2dd"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GroupLearnerInvitationCollection":{"name":"grouplearnerinvitationcollection","className":"GroupLearnerInvitationCollection","qualifiedName":"@happyvertical/smrt-education:GroupLearnerInvitationCollection","collection":"grouplearnerinvitations","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"group_learner_invitations","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"GroupLearnerInvitation","exportName":"GroupLearnerInvitationCollection","collectionExportName":"GroupLearnerInvitationCollectionCollection","schema":{"tableName":"group_learner_invitations","ddl":"CREATE TABLE IF NOT EXISTS \\"group_learner_invitations\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"group_id\\" UUID NOT NULL,\\n \\"family_tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"invited_parent_user_id\\" UUID NOT NULL,\\n \\"creator_user_id\\" UUID NOT NULL,\\n \\"expires_at\\" TEXT,\\n \\"status\\" TEXT DEFAULT 'pending',\\n \\"accepted_membership_id\\" UUID,\\n \\"accepted_policy_digest\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"group_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"education_groups","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"family_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"learner_id":{"type":"UUID","notNull":true,"unique":false},"invited_parent_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"creator_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"expires_at":{"type":"TEXT","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"pending"},"accepted_membership_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"group_learner_memberships","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"accepted_policy_digest":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"group_learner_invitations_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"group_learner_invitations_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"group_learner_invitations_group_id_idx","columns":["group_id"]},{"name":"group_learner_invitations_family_tenant_id_idx","columns":["family_tenant_id"]},{"name":"group_learner_invitations_invited_parent_user_id_idx","columns":["invited_parent_user_id"]},{"name":"group_learner_invitations_creator_user_id_idx","columns":["creator_user_id"]},{"name":"group_learner_invitations_accepted_membership_id_idx","columns":["accepted_membership_id"]}],"version":"fd61d2dd"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GroupLearnerMembership":{"name":"grouplearnermembership","className":"GroupLearnerMembership","qualifiedName":"@happyvertical/smrt-education:GroupLearnerMembership","collection":"grouplearnermemberships","description":"Family-owned per-child consent edge, never a users membership.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"groupId":{"type":"foreignKey","required":true,"related":"EducationGroup","_meta":{"required":true,"onDelete":"RESTRICT"}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true,"onDelete":"RESTRICT"}},"consentParentUserId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:User"},"status":{"type":"text","required":false,"default":"active","enum":["active","revoked"]},"policyVersion":{"type":"integer","required":true,"default":1,"min":1,"_meta":{"min":1,"required":true}}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"group_learner_memberships","conflictColumns":["tenant_id","learner_id","group_id"],"api":false,"mcp":false,"cli":false,"ai":{"callable":[]},"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"GroupLearnerMembership","collectionExportName":"GroupLearnerMembershipCollection","validationRules":[{"field":"groupId","rule":"required","fieldType":"foreignKey"},{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"consentParentUserId","rule":"required","fieldType":"crossPackageRef"},{"field":"policyVersion","rule":"required","fieldType":"integer"},{"field":"policyVersion","rule":"min","value":1,"fieldType":"integer"}],"schema":{"tableName":"group_learner_memberships","ddl":"CREATE TABLE IF NOT EXISTS \\"group_learner_memberships\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"group_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"consent_parent_user_id\\" UUID NOT NULL,\\n \\"status\\" TEXT DEFAULT 'active',\\n \\"policy_version\\" INTEGER NOT NULL DEFAULT 1\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"group_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"education_groups","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"consent_parent_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"active"},"policy_version":{"type":"INTEGER","notNull":true,"unique":false,"default":1}},"indexes":[{"name":"group_learner_memberships_tenant_id_learner_id_idx","columns":["tenant_id","learner_id","group_id"],"unique":true},{"name":"group_learner_memberships_slug_context_idx","columns":["slug","context"]},{"name":"group_learner_memberships_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"group_learner_memberships_group_id_idx","columns":["group_id"]},{"name":"group_learner_memberships_learner_id_idx","columns":["learner_id"]},{"name":"group_learner_memberships_consent_parent_user_id_idx","columns":["consent_parent_user_id"]}],"version":"86b9feeb"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GroupLearnerMembershipCollection":{"name":"grouplearnermembershipcollection","className":"GroupLearnerMembershipCollection","qualifiedName":"@happyvertical/smrt-education:GroupLearnerMembershipCollection","collection":"grouplearnermemberships","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"group_learner_memberships","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"GroupLearnerMembership","exportName":"GroupLearnerMembershipCollection","collectionExportName":"GroupLearnerMembershipCollectionCollection","schema":{"tableName":"group_learner_memberships","ddl":"CREATE TABLE IF NOT EXISTS \\"group_learner_memberships\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"group_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"consent_parent_user_id\\" UUID NOT NULL,\\n \\"status\\" TEXT DEFAULT 'active',\\n \\"policy_version\\" INTEGER NOT NULL DEFAULT 1\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"group_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"education_groups","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"consent_parent_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"active"},"policy_version":{"type":"INTEGER","notNull":true,"unique":false,"default":1}},"indexes":[{"name":"group_learner_memberships_tenant_id_learner_id_idx","columns":["tenant_id","learner_id","group_id"],"unique":true},{"name":"group_learner_memberships_slug_context_idx","columns":["slug","context"]},{"name":"group_learner_memberships_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"group_learner_memberships_group_id_idx","columns":["group_id"]},{"name":"group_learner_memberships_learner_id_idx","columns":["learner_id"]},{"name":"group_learner_memberships_consent_parent_user_id_idx","columns":["consent_parent_user_id"]}],"version":"86b9feeb"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GroupSharingPolicy":{"name":"groupsharingpolicy","className":"GroupSharingPolicy","qualifiedName":"@happyvertical/smrt-education:GroupSharingPolicy","collection":"groupsharingpolicies","description":"Immutable explicit policy snapshot.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"membershipId":{"type":"foreignKey","required":true,"related":"GroupLearnerMembership","_meta":{"required":true,"onDelete":"RESTRICT"}},"version":{"type":"integer","required":true,"default":1,"min":1,"_meta":{"min":1,"required":true}},"schemaVersion":{"type":"integer","required":true,"default":1,"min":1,"max":1,"_meta":{"min":1,"max":1,"required":true}},"policyJson":{"type":"text","required":true,"_meta":{"required":true}},"actorUserId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:User"},"recordedAt":{"type":"text","required":false}},"methods":{"getPolicy":{"name":"getPolicy","async":false,"parameters":[],"returnType":"GroupSharingPolicyV1","isStatic":false,"isPublic":true},"setPolicy":{"name":"setPolicy","async":false,"parameters":[{"name":"value","type":"unknown","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"group_sharing_policies","conflictColumns":["tenant_id","membership_id","version"],"api":false,"mcp":false,"cli":false,"ai":{"callable":[]},"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"GroupSharingPolicy","collectionExportName":"GroupSharingPolicyCollection","validationRules":[{"field":"membershipId","rule":"required","fieldType":"foreignKey"},{"field":"version","rule":"required","fieldType":"integer"},{"field":"version","rule":"min","value":1,"fieldType":"integer"},{"field":"schemaVersion","rule":"required","fieldType":"integer"},{"field":"schemaVersion","rule":"min","value":1,"fieldType":"integer"},{"field":"schemaVersion","rule":"max","value":1,"fieldType":"integer"},{"field":"policyJson","rule":"required","fieldType":"text"},{"field":"actorUserId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"group_sharing_policies","ddl":"CREATE TABLE IF NOT EXISTS \\"group_sharing_policies\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"membership_id\\" UUID NOT NULL,\\n \\"version\\" INTEGER NOT NULL DEFAULT 1,\\n \\"schema_version\\" INTEGER NOT NULL DEFAULT 1,\\n \\"policy_json\\" TEXT NOT NULL,\\n \\"actor_user_id\\" UUID NOT NULL,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"membership_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"group_learner_memberships","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"version":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"schema_version":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"policy_json":{"type":"TEXT","notNull":true,"unique":false},"actor_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"group_sharing_policies_tenant_id_membership_id_idx","columns":["tenant_id","membership_id","version"],"unique":true},{"name":"group_sharing_policies_slug_context_idx","columns":["slug","context"]},{"name":"group_sharing_policies_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"group_sharing_policies_membership_id_idx","columns":["membership_id"]},{"name":"group_sharing_policies_actor_user_id_idx","columns":["actor_user_id"]}],"version":"40a8f170"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GroupSharingPolicyCollection":{"name":"groupsharingpolicycollection","className":"GroupSharingPolicyCollection","qualifiedName":"@happyvertical/smrt-education:GroupSharingPolicyCollection","collection":"groupsharingpolicies","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"group_sharing_policies","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"GroupSharingPolicy","exportName":"GroupSharingPolicyCollection","collectionExportName":"GroupSharingPolicyCollectionCollection","schema":{"tableName":"group_sharing_policies","ddl":"CREATE TABLE IF NOT EXISTS \\"group_sharing_policies\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"membership_id\\" UUID NOT NULL,\\n \\"version\\" INTEGER NOT NULL DEFAULT 1,\\n \\"schema_version\\" INTEGER NOT NULL DEFAULT 1,\\n \\"policy_json\\" TEXT NOT NULL,\\n \\"actor_user_id\\" UUID NOT NULL,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"membership_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"group_learner_memberships","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"version":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"schema_version":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"policy_json":{"type":"TEXT","notNull":true,"unique":false},"actor_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"group_sharing_policies_tenant_id_membership_id_idx","columns":["tenant_id","membership_id","version"],"unique":true},{"name":"group_sharing_policies_slug_context_idx","columns":["slug","context"]},{"name":"group_sharing_policies_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"group_sharing_policies_membership_id_idx","columns":["membership_id"]},{"name":"group_sharing_policies_actor_user_id_idx","columns":["actor_user_id"]}],"version":"40a8f170"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GroupRevisionComment":{"name":"grouprevisioncomment","className":"GroupRevisionComment","qualifiedName":"@happyvertical/smrt-education:GroupRevisionComment","collection":"grouprevisioncomments","description":"Attributed revision comment, separate from grading and evidence.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"membershipId":{"type":"foreignKey","required":true,"related":"GroupLearnerMembership","_meta":{"required":true,"onDelete":"RESTRICT"}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true,"onDelete":"RESTRICT"}},"activityId":{"type":"foreignKey","required":true,"related":"WorkbookActivity","_meta":{"required":true,"onDelete":"RESTRICT"}},"attemptId":{"type":"foreignKey","required":true,"related":"WorkbookAttempt","_meta":{"required":true,"onDelete":"RESTRICT"}},"revisionId":{"type":"foreignKey","required":true,"related":"WorkbookAssessmentRevision","_meta":{"required":true,"onDelete":"RESTRICT"}},"authorUserId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:User"},"authorProfileId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-profiles:Profile"},"body":{"type":"text","required":false},"recordedAt":{"type":"text","required":false},"childVisible":{"type":"boolean","required":true,"default":false},"visibilityActorUserId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-users:User","_meta":{"nullable":true}},"visibilityChangedAt":{"type":"datetime","required":false},"visibilityVersion":{"type":"integer","required":true,"default":0,"min":0,"_meta":{"min":0,"required":true}}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"group_revision_comments","api":false,"mcp":false,"cli":false,"ai":{"callable":[]},"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"GroupRevisionComment","collectionExportName":"GroupRevisionCommentCollection","validationRules":[{"field":"membershipId","rule":"required","fieldType":"foreignKey"},{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"activityId","rule":"required","fieldType":"foreignKey"},{"field":"attemptId","rule":"required","fieldType":"foreignKey"},{"field":"revisionId","rule":"required","fieldType":"foreignKey"},{"field":"authorUserId","rule":"required","fieldType":"crossPackageRef"},{"field":"authorProfileId","rule":"required","fieldType":"crossPackageRef"},{"field":"childVisible","rule":"required","fieldType":"boolean"},{"field":"visibilityVersion","rule":"required","fieldType":"integer"},{"field":"visibilityVersion","rule":"min","value":0,"fieldType":"integer"}],"schema":{"tableName":"group_revision_comments","ddl":"CREATE TABLE IF NOT EXISTS \\"group_revision_comments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"membership_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"activity_id\\" UUID NOT NULL,\\n \\"attempt_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"author_user_id\\" UUID NOT NULL,\\n \\"author_profile_id\\" UUID NOT NULL,\\n \\"body\\" TEXT,\\n \\"recorded_at\\" TEXT,\\n \\"child_visible\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"visibility_actor_user_id\\" UUID,\\n \\"visibility_changed_at\\" TIMESTAMP,\\n \\"visibility_version\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"membership_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"group_learner_memberships","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"activity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_activities","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"author_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"author_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"body":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false},"child_visible":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"visibility_actor_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"visibility_changed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"visibility_version":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"group_revision_comments_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"group_revision_comments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"group_revision_comments_membership_id_idx","columns":["membership_id"]},{"name":"group_revision_comments_learner_id_idx","columns":["learner_id"]},{"name":"group_revision_comments_activity_id_idx","columns":["activity_id"]},{"name":"group_revision_comments_attempt_id_idx","columns":["attempt_id"]},{"name":"group_revision_comments_revision_id_idx","columns":["revision_id"]},{"name":"group_revision_comments_author_user_id_idx","columns":["author_user_id"]},{"name":"group_revision_comments_author_profile_id_idx","columns":["author_profile_id"]},{"name":"group_revision_comments_visibility_actor_user_id_idx","columns":["visibility_actor_user_id"]}],"version":"720fccdb"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GroupRevisionCommentCollection":{"name":"grouprevisioncommentcollection","className":"GroupRevisionCommentCollection","qualifiedName":"@happyvertical/smrt-education:GroupRevisionCommentCollection","collection":"grouprevisioncomments","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"group_revision_comments","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"GroupRevisionComment","exportName":"GroupRevisionCommentCollection","collectionExportName":"GroupRevisionCommentCollectionCollection","schema":{"tableName":"group_revision_comments","ddl":"CREATE TABLE IF NOT EXISTS \\"group_revision_comments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"membership_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"activity_id\\" UUID NOT NULL,\\n \\"attempt_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"author_user_id\\" UUID NOT NULL,\\n \\"author_profile_id\\" UUID NOT NULL,\\n \\"body\\" TEXT,\\n \\"recorded_at\\" TEXT,\\n \\"child_visible\\" BOOLEAN NOT NULL DEFAULT FALSE,\\n \\"visibility_actor_user_id\\" UUID,\\n \\"visibility_changed_at\\" TIMESTAMP,\\n \\"visibility_version\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"membership_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"group_learner_memberships","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"activity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_activities","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"author_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"author_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"body":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false},"child_visible":{"type":"BOOLEAN","notNull":true,"unique":false,"default":false},"visibility_actor_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"visibility_changed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"visibility_version":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"group_revision_comments_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"group_revision_comments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"group_revision_comments_membership_id_idx","columns":["membership_id"]},{"name":"group_revision_comments_learner_id_idx","columns":["learner_id"]},{"name":"group_revision_comments_activity_id_idx","columns":["activity_id"]},{"name":"group_revision_comments_attempt_id_idx","columns":["attempt_id"]},{"name":"group_revision_comments_revision_id_idx","columns":["revision_id"]},{"name":"group_revision_comments_author_user_id_idx","columns":["author_user_id"]},{"name":"group_revision_comments_author_profile_id_idx","columns":["author_profile_id"]},{"name":"group_revision_comments_visibility_actor_user_id_idx","columns":["visibility_actor_user_id"]}],"version":"720fccdb"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GroupLearnerRosterEntry":{"name":"grouplearnerrosterentry","className":"GroupLearnerRosterEntry","qualifiedName":"@happyvertical/smrt-education:GroupLearnerRosterEntry","collection":"grouplearnerrosterentries","description":"Group-owned opaque roster index; authoritative consent remains family-owned.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"groupId":{"type":"foreignKey","required":true,"related":"EducationGroup","_meta":{"required":true,"onDelete":"RESTRICT"}},"familyTenantId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:Tenant"},"learnerId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","required":true}},"membershipId":{"type":"foreignKey","required":true,"related":"GroupLearnerMembership","_meta":{"required":true,"onDelete":"RESTRICT"}}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"group_learner_roster_entries","conflictColumns":["tenant_id","group_id","membership_id"],"api":false,"mcp":false,"cli":false,"ai":{"callable":[]},"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"GroupLearnerRosterEntry","collectionExportName":"GroupLearnerRosterEntryCollection","validationRules":[{"field":"groupId","rule":"required","fieldType":"foreignKey"},{"field":"familyTenantId","rule":"required","fieldType":"crossPackageRef"},{"field":"learnerId","rule":"required","fieldType":"text"},{"field":"membershipId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"group_learner_roster_entries","ddl":"CREATE TABLE IF NOT EXISTS \\"group_learner_roster_entries\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"group_id\\" UUID NOT NULL,\\n \\"family_tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"membership_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"group_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"education_groups","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"family_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"learner_id":{"type":"UUID","notNull":true,"unique":false},"membership_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"group_learner_memberships","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}}},"indexes":[{"name":"group_learner_roster_entries_tenant_id_group_id_idx","columns":["tenant_id","group_id","membership_id"],"unique":true},{"name":"group_learner_roster_entries_slug_context_idx","columns":["slug","context"]},{"name":"group_learner_roster_entries_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"group_learner_roster_entries_group_id_idx","columns":["group_id"]},{"name":"group_learner_roster_entries_family_tenant_id_idx","columns":["family_tenant_id"]},{"name":"group_learner_roster_entries_membership_id_idx","columns":["membership_id"]}],"version":"c6ebaeb2"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GroupLearnerRosterEntryCollection":{"name":"grouplearnerrosterentrycollection","className":"GroupLearnerRosterEntryCollection","qualifiedName":"@happyvertical/smrt-education:GroupLearnerRosterEntryCollection","collection":"grouplearnerrosterentries","filePath":"/home/runner/work/smrt/smrt/packages/education/src/group-sharing-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"group_learner_roster_entries","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"GroupLearnerRosterEntry","exportName":"GroupLearnerRosterEntryCollection","collectionExportName":"GroupLearnerRosterEntryCollectionCollection","schema":{"tableName":"group_learner_roster_entries","ddl":"CREATE TABLE IF NOT EXISTS \\"group_learner_roster_entries\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"group_id\\" UUID NOT NULL,\\n \\"family_tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"membership_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"group_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"education_groups","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}},"family_tenant_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"learner_id":{"type":"UUID","notNull":true,"unique":false},"membership_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"group_learner_memberships","column":"id","onDelete":"RESTRICT","onUpdate":"CASCADE"}}},"indexes":[{"name":"group_learner_roster_entries_tenant_id_group_id_idx","columns":["tenant_id","group_id","membership_id"],"unique":true},{"name":"group_learner_roster_entries_slug_context_idx","columns":["slug","context"]},{"name":"group_learner_roster_entries_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"group_learner_roster_entries_group_id_idx","columns":["group_id"]},{"name":"group_learner_roster_entries_family_tenant_id_idx","columns":["family_tenant_id"]},{"name":"group_learner_roster_entries_membership_id_idx","columns":["membership_id"]}],"version":"c6ebaeb2"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Learner":{"name":"learner","className":"Learner","qualifiedName":"@happyvertical/smrt-education:Learner","collection":"learners","description":"A learner is a real user/profile identity with active family membership.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/learners.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"userId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:User"},"profileId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-profiles:Profile"},"displayName":{"type":"text","required":false},"birthDate":{"type":"datetime","required":false},"level":{"type":"integer","required":true,"default":0},"settings":{"type":"text","required":false}},"methods":{"getSettings":{"name":"getSettings","async":false,"parameters":[],"returnType":"Record<string, unknown>","isStatic":false,"isPublic":true},"setSettings":{"name":"setSettings","async":false,"parameters":[{"name":"value","type":"Record<string, unknown>","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"Learner","collectionExportName":"LearnerCollection","validationRules":[{"field":"userId","rule":"required","fieldType":"crossPackageRef"},{"field":"profileId","rule":"required","fieldType":"crossPackageRef"},{"field":"level","rule":"required","fieldType":"integer"}],"schema":{"tableName":"learners","ddl":"CREATE TABLE IF NOT EXISTS \\"learners\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"user_id\\" UUID NOT NULL,\\n \\"profile_id\\" UUID NOT NULL,\\n \\"display_name\\" TEXT,\\n \\"birth_date\\" TIMESTAMP,\\n \\"level\\" INTEGER NOT NULL DEFAULT 0,\\n \\"settings\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"display_name":{"type":"TEXT","notNull":false,"unique":false},"birth_date":{"type":"TIMESTAMP","notNull":false,"unique":false},"level":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"settings":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"learners_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"learners_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"learners_user_id_idx","columns":["user_id"]},{"name":"learners_profile_id_idx","columns":["profile_id"]}],"version":"ca9907b5"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Curriculum":{"name":"curriculum","className":"Curriculum","qualifiedName":"@happyvertical/smrt-education:Curriculum","collection":"curriculums","description":"A distinct plan retains its own enrollment history.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/learners.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"title":{"type":"text","required":true,"_meta":{"required":true}},"startsOn":{"type":"datetime","required":false},"endsOn":{"type":"datetime","required":false},"status":{"type":"text","required":false,"default":"planned","enum":["planned","active","completed","archived"]}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"tableName":"curricula","tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"Curriculum","collectionExportName":"CurriculumCollection","displayLabelField":"title","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"title","rule":"required","fieldType":"text"}],"schema":{"tableName":"curricula","ddl":"CREATE TABLE IF NOT EXISTS \\"curricula\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"title\\" TEXT NOT NULL,\\n \\"starts_on\\" TIMESTAMP,\\n \\"ends_on\\" TIMESTAMP,\\n \\"status\\" TEXT DEFAULT 'planned'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"title":{"type":"TEXT","notNull":true,"unique":false},"starts_on":{"type":"TIMESTAMP","notNull":false,"unique":false},"ends_on":{"type":"TIMESTAMP","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"planned"}},"indexes":[{"name":"curricula_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"curricula_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"curricula_learner_id_idx","columns":["learner_id"]}],"version":"b7e90cbd"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Enrollment":{"name":"enrollment","className":"Enrollment","qualifiedName":"@happyvertical/smrt-education:Enrollment","collection":"enrollments","description":"One course in one curriculum; a new curriculum means a new enrollment.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/learners.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"curriculumId":{"type":"foreignKey","required":true,"related":"Curriculum","_meta":{"required":true}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"courseId":{"type":"foreignKey","required":true,"related":"Course","_meta":{"required":true}},"status":{"type":"text","required":false,"default":"planned","enum":["planned","active","paused","completed","dropped"]},"startedAt":{"type":"datetime","required":false},"completedAt":{"type":"datetime","required":false},"targetMinutesPerWeek":{"type":"integer","required":true,"default":0},"sortOrder":{"type":"integer","required":true,"default":0}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"conflictColumns":["tenant_id","curriculum_id","course_id"],"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"Enrollment","collectionExportName":"EnrollmentCollection","validationRules":[{"field":"curriculumId","rule":"required","fieldType":"foreignKey"},{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"courseId","rule":"required","fieldType":"foreignKey"},{"field":"targetMinutesPerWeek","rule":"required","fieldType":"integer"},{"field":"sortOrder","rule":"required","fieldType":"integer"}],"schema":{"tableName":"enrollments","ddl":"CREATE TABLE IF NOT EXISTS \\"enrollments\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"curriculum_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID NOT NULL,\\n \\"status\\" TEXT DEFAULT 'planned',\\n \\"started_at\\" TIMESTAMP,\\n \\"completed_at\\" TIMESTAMP,\\n \\"target_minutes_per_week\\" INTEGER NOT NULL DEFAULT 0,\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"curriculum_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"curricula","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"planned"},"started_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"completed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"target_minutes_per_week":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"enrollments_tenant_id_curriculum_id_idx","columns":["tenant_id","curriculum_id","course_id"],"unique":true},{"name":"enrollments_slug_context_idx","columns":["slug","context"]},{"name":"enrollments_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"enrollments_curriculum_id_idx","columns":["curriculum_id"]},{"name":"enrollments_learner_id_idx","columns":["learner_id"]},{"name":"enrollments_course_id_idx","columns":["course_id"]}],"version":"2a34b5ee"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LessonProgress":{"name":"lessonprogress","className":"LessonProgress","qualifiedName":"@happyvertical/smrt-education:LessonProgress","collection":"lessonprogresses","description":"Progress identity is enrollment + lesson, never learner + lesson.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/learners.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"enrollmentId":{"type":"foreignKey","required":true,"related":"Enrollment","_meta":{"required":true}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"lessonId":{"type":"foreignKey","required":true,"related":"Lesson","_meta":{"required":true}},"status":{"type":"text","required":false,"default":"not_started","enum":["not_started","in_progress","submitted","needs_review","complete","skipped"]},"startedAt":{"type":"datetime","required":false},"completedAt":{"type":"datetime","required":false},"timeSpentSeconds":{"type":"integer","required":true,"default":0},"attempts":{"type":"integer","required":true,"default":0},"bestScore":{"type":"decimal","required":false,"_meta":{"nullable":true}}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"tableName":"lesson_progress","conflictColumns":["tenant_id","enrollment_id","lesson_id"],"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"LessonProgress","collectionExportName":"LessonProgressCollection","validationRules":[{"field":"enrollmentId","rule":"required","fieldType":"foreignKey"},{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"lessonId","rule":"required","fieldType":"foreignKey"},{"field":"timeSpentSeconds","rule":"required","fieldType":"integer"},{"field":"attempts","rule":"required","fieldType":"integer"}],"schema":{"tableName":"lesson_progress","ddl":"CREATE TABLE IF NOT EXISTS \\"lesson_progress\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"lesson_id\\" UUID NOT NULL,\\n \\"status\\" TEXT DEFAULT 'not_started',\\n \\"started_at\\" TIMESTAMP,\\n \\"completed_at\\" TIMESTAMP,\\n \\"time_spent_seconds\\" INTEGER NOT NULL DEFAULT 0,\\n \\"attempts\\" INTEGER NOT NULL DEFAULT 0,\\n \\"best_score\\" REAL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"status":{"type":"TEXT","notNull":false,"unique":false,"default":"not_started"},"started_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"completed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"time_spent_seconds":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"attempts":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"best_score":{"type":"REAL","notNull":false,"unique":false}},"indexes":[{"name":"lesson_progress_tenant_id_enrollment_id_idx","columns":["tenant_id","enrollment_id","lesson_id"],"unique":true},{"name":"lesson_progress_slug_context_idx","columns":["slug","context"]},{"name":"lesson_progress_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lesson_progress_enrollment_id_idx","columns":["enrollment_id"]},{"name":"lesson_progress_learner_id_idx","columns":["learner_id"]},{"name":"lesson_progress_lesson_id_idx","columns":["lesson_id"]}],"version":"36704fbd"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LessonAsset":{"name":"lessonasset","className":"LessonAsset","qualifiedName":"@happyvertical/smrt-education:LessonAsset","collection":"lessonassets","filePath":"/home/runner/work/smrt/smrt/packages/education/src/lesson-assets.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"lessonId":{"type":"foreignKey","required":true,"related":"Lesson","_meta":{"required":true}},"assetId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-assets:Asset"},"relationship":{"type":"text","required":true,"default":"attachment","_meta":{"required":true},"enum":["printable","answer-key","video","attachment"]},"sortOrder":{"type":"integer","required":true,"default":0}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"lesson_assets","conflictColumns":["tenant_id","lesson_id","asset_id","relationship"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"optional"}},"extends":"SmrtObject","exportName":"LessonAsset","collectionExportName":"LessonAssetCollection","validationRules":[{"field":"lessonId","rule":"required","fieldType":"foreignKey"},{"field":"assetId","rule":"required","fieldType":"crossPackageRef"},{"field":"relationship","rule":"required","fieldType":"text"},{"field":"sortOrder","rule":"required","fieldType":"integer"}],"schema":{"tableName":"lesson_assets","ddl":"CREATE TABLE IF NOT EXISTS \\"lesson_assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"lesson_id\\" UUID NOT NULL,\\n \\"asset_id\\" UUID NOT NULL,\\n \\"relationship\\" TEXT NOT NULL DEFAULT 'attachment',\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"relationship":{"type":"TEXT","notNull":true,"unique":false,"default":"attachment"},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"lesson_assets_tenant_id_lesson_id_idx","columns":["tenant_id","lesson_id","asset_id","relationship"],"unique":true,"nullsNotDistinct":true},{"name":"lesson_assets_slug_context_idx","columns":["slug","context"]},{"name":"lesson_assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"lesson_assets_lesson_id_idx","columns":["lesson_id"]},{"name":"lesson_assets_asset_id_idx","columns":["asset_id"]}],"version":"d96385c6"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LearningObjective":{"name":"learningobjective","className":"LearningObjective","qualifiedName":"@happyvertical/smrt-education:LearningObjective","collection":"learningobjectives","description":"Stable learning-objective identity: survives wording changes, variants and themes.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"externalKey":{"type":"text","required":false},"createdByUserId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"learning_objectives","conflictColumns":["tenant_id","external_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"LearningObjective","collectionExportName":"LearningObjectiveCollection","validationRules":[],"schema":{"tableName":"learning_objectives","ddl":"CREATE TABLE IF NOT EXISTS \\"learning_objectives\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"external_key\\" TEXT,\\n \\"created_by_user_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"external_key":{"type":"TEXT","notNull":false,"unique":false},"created_by_user_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"learning_objectives_tenant_id_external_key_idx","columns":["tenant_id","external_key"],"unique":true,"nullsNotDistinct":true},{"name":"learning_objectives_slug_context_idx","columns":["slug","context"]},{"name":"learning_objectives_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"8ad7d951"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LearningObjectiveCollection":{"name":"learningobjectivecollection","className":"LearningObjectiveCollection","qualifiedName":"@happyvertical/smrt-education:LearningObjectiveCollection","collection":"learningobjectives","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"learning_objectives","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"LearningObjective","exportName":"LearningObjectiveCollection","collectionExportName":"LearningObjectiveCollectionCollection","schema":{"tableName":"learning_objectives","ddl":"CREATE TABLE IF NOT EXISTS \\"learning_objectives\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"external_key\\" TEXT,\\n \\"created_by_user_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"external_key":{"type":"TEXT","notNull":false,"unique":false},"created_by_user_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"learning_objectives_tenant_id_external_key_idx","columns":["tenant_id","external_key"],"unique":true,"nullsNotDistinct":true},{"name":"learning_objectives_slug_context_idx","columns":["slug","context"]},{"name":"learning_objectives_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"8ad7d951"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LearningObjectiveRevision":{"name":"learningobjectiverevision","className":"LearningObjectiveRevision","qualifiedName":"@happyvertical/smrt-education:LearningObjectiveRevision","collection":"learningobjectiverevisions","description":"Append-only objective wording; the highest sequence is the head.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"objectiveId":{"type":"foreignKey","required":true,"related":"LearningObjective","_meta":{"required":true}},"parentRevisionId":{"type":"foreignKey","required":false,"related":"LearningObjectiveRevision","_meta":{"nullable":true}},"sequence":{"type":"integer","required":true,"default":1},"statement":{"type":"text","required":false,"_meta":{}},"conceptIdsJson":{"type":"text","required":false,"_meta":{}},"subject":{"type":"text","required":false},"levelMin":{"type":"integer","required":true,"default":0},"levelMax":{"type":"integer","required":true,"default":0},"provenance":{"type":"text","required":false},"authorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"payloadDigest":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"learning_objective_revisions","conflictColumns":["tenant_id","objective_id","request_key"],"indexes":[{"name":"learning_objective_revisions_sequence_unique","columns":["tenantId","objectiveId","sequence"],"unique":true}],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"LearningObjectiveRevision","collectionExportName":"LearningObjectiveRevisionCollection","validationRules":[{"field":"objectiveId","rule":"required","fieldType":"foreignKey"},{"field":"sequence","rule":"required","fieldType":"integer"},{"field":"levelMin","rule":"required","fieldType":"integer"},{"field":"levelMax","rule":"required","fieldType":"integer"}],"schema":{"tableName":"learning_objective_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"learning_objective_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"objective_id\\" UUID NOT NULL,\\n \\"parent_revision_id\\" UUID,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"statement\\" TEXT,\\n \\"concept_ids_json\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"level_min\\" INTEGER NOT NULL DEFAULT 0,\\n \\"level_max\\" INTEGER NOT NULL DEFAULT 0,\\n \\"provenance\\" TEXT,\\n \\"author_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"objective_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learning_objectives","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"parent_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"learning_objective_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"statement":{"type":"TEXT","notNull":false,"unique":false},"concept_ids_json":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"level_min":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"level_max":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"provenance":{"type":"TEXT","notNull":false,"unique":false},"author_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"learning_objective_revisions_tenant_id_objective_id_idx","columns":["tenant_id","objective_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"learning_objective_revisions_slug_context_idx","columns":["slug","context"]},{"name":"learning_objective_revisions_sequence_unique","columns":["tenant_id","objective_id","sequence"],"unique":true},{"name":"learning_objective_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"learning_objective_revisions_objective_id_idx","columns":["objective_id"]},{"name":"learning_objective_revisions_parent_revision_id_idx","columns":["parent_revision_id"]}],"version":"2b12d65f"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:LearningObjectiveRevisionCollection":{"name":"learningobjectiverevisioncollection","className":"LearningObjectiveRevisionCollection","qualifiedName":"@happyvertical/smrt-education:LearningObjectiveRevisionCollection","collection":"learningobjectiverevisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"learning_objective_revisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"LearningObjectiveRevision","exportName":"LearningObjectiveRevisionCollection","collectionExportName":"LearningObjectiveRevisionCollectionCollection","schema":{"tableName":"learning_objective_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"learning_objective_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"objective_id\\" UUID NOT NULL,\\n \\"parent_revision_id\\" UUID,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"statement\\" TEXT,\\n \\"concept_ids_json\\" TEXT,\\n \\"subject\\" TEXT,\\n \\"level_min\\" INTEGER NOT NULL DEFAULT 0,\\n \\"level_max\\" INTEGER NOT NULL DEFAULT 0,\\n \\"provenance\\" TEXT,\\n \\"author_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"objective_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learning_objectives","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"parent_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"learning_objective_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"statement":{"type":"TEXT","notNull":false,"unique":false},"concept_ids_json":{"type":"TEXT","notNull":false,"unique":false},"subject":{"type":"TEXT","notNull":false,"unique":false},"level_min":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"level_max":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"provenance":{"type":"TEXT","notNull":false,"unique":false},"author_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"learning_objective_revisions_tenant_id_objective_id_idx","columns":["tenant_id","objective_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"learning_objective_revisions_slug_context_idx","columns":["slug","context"]},{"name":"learning_objective_revisions_sequence_unique","columns":["tenant_id","objective_id","sequence"],"unique":true},{"name":"learning_objective_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"learning_objective_revisions_objective_id_idx","columns":["objective_id"]},{"name":"learning_objective_revisions_parent_revision_id_idx","columns":["parent_revision_id"]}],"version":"2b12d65f"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Question":{"name":"question","className":"Question","qualifiedName":"@happyvertical/smrt-education:Question","collection":"questions","description":"Stable question identity. Content lives only in immutable revisions.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"courseId":{"type":"foreignKey","required":false,"related":"Course","_meta":{"nullable":true}},"createdByUserId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"questions","conflictColumns":["tenant_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"Question","collectionExportName":"QuestionCollection","validationRules":[],"schema":{"tableName":"questions","ddl":"CREATE TABLE IF NOT EXISTS \\"questions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID,\\n \\"created_by_user_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"created_by_user_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"questions_tenant_id_request_key_idx","columns":["tenant_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"questions_slug_context_idx","columns":["slug","context"]},{"name":"questions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"questions_course_id_idx","columns":["course_id"]}],"version":"7f403539"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:QuestionCollection":{"name":"questioncollection","className":"QuestionCollection","qualifiedName":"@happyvertical/smrt-education:QuestionCollection","collection":"questions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"questions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Question","exportName":"QuestionCollection","collectionExportName":"QuestionCollectionCollection","schema":{"tableName":"questions","ddl":"CREATE TABLE IF NOT EXISTS \\"questions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"course_id\\" UUID,\\n \\"created_by_user_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"course_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"courses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"created_by_user_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"questions_tenant_id_request_key_idx","columns":["tenant_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"questions_slug_context_idx","columns":["slug","context"]},{"name":"questions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"questions_course_id_idx","columns":["course_id"]}],"version":"7f403539"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:QuestionRevision":{"name":"questionrevision","className":"QuestionRevision","qualifiedName":"@happyvertical/smrt-education:QuestionRevision","collection":"questionrevisions","description":"Immutable question snapshot. A missing answer key or rubric is stored as NULL and never as an empty object, zero or an inferred value.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"questionId":{"type":"foreignKey","required":true,"related":"Question","_meta":{"required":true}},"parentRevisionId":{"type":"foreignKey","required":false,"related":"QuestionRevision","_meta":{"nullable":true}},"sequence":{"type":"integer","required":true,"default":1},"prompt":{"type":"text","required":false,"_meta":{}},"responseType":{"type":"text","required":false},"choicesJson":{"type":"text","required":false,"_meta":{}},"subpartsJson":{"type":"text","required":false,"_meta":{}},"mediaJson":{"type":"text","required":false,"_meta":{}},"objectiveIdsJson":{"type":"text","required":false,"_meta":{}},"conceptIdsJson":{"type":"text","required":false,"_meta":{}},"answerKeyJson":{"type":"text","required":false,"_meta":{"nullable":true}},"rubricJson":{"type":"text","required":false,"_meta":{"nullable":true}},"pointsPossible":{"type":"decimal","required":false,"_meta":{"nullable":true}},"provenance":{"type":"text","required":false},"fieldProvenanceJson":{"type":"text","required":false,"_meta":{}},"authorUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"payloadDigest":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"question_revisions","conflictColumns":["tenant_id","question_id","request_key"],"indexes":[{"name":"question_revisions_sequence_unique","columns":["tenantId","questionId","sequence"],"unique":true}],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"QuestionRevision","collectionExportName":"QuestionRevisionCollection","validationRules":[{"field":"questionId","rule":"required","fieldType":"foreignKey"},{"field":"sequence","rule":"required","fieldType":"integer"}],"schema":{"tableName":"question_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"question_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"question_id\\" UUID NOT NULL,\\n \\"parent_revision_id\\" UUID,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"prompt\\" TEXT,\\n \\"response_type\\" TEXT,\\n \\"choices_json\\" TEXT,\\n \\"subparts_json\\" TEXT,\\n \\"media_json\\" TEXT,\\n \\"objective_ids_json\\" TEXT,\\n \\"concept_ids_json\\" TEXT,\\n \\"answer_key_json\\" TEXT,\\n \\"rubric_json\\" TEXT,\\n \\"points_possible\\" REAL,\\n \\"provenance\\" TEXT,\\n \\"field_provenance_json\\" TEXT,\\n \\"author_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"question_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"questions","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"parent_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"question_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"prompt":{"type":"TEXT","notNull":false,"unique":false},"response_type":{"type":"TEXT","notNull":false,"unique":false},"choices_json":{"type":"TEXT","notNull":false,"unique":false},"subparts_json":{"type":"TEXT","notNull":false,"unique":false},"media_json":{"type":"TEXT","notNull":false,"unique":false},"objective_ids_json":{"type":"TEXT","notNull":false,"unique":false},"concept_ids_json":{"type":"TEXT","notNull":false,"unique":false},"answer_key_json":{"type":"TEXT","notNull":false,"unique":false},"rubric_json":{"type":"TEXT","notNull":false,"unique":false},"points_possible":{"type":"REAL","notNull":false,"unique":false},"provenance":{"type":"TEXT","notNull":false,"unique":false},"field_provenance_json":{"type":"TEXT","notNull":false,"unique":false},"author_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"question_revisions_tenant_id_question_id_idx","columns":["tenant_id","question_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"question_revisions_slug_context_idx","columns":["slug","context"]},{"name":"question_revisions_sequence_unique","columns":["tenant_id","question_id","sequence"],"unique":true},{"name":"question_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"question_revisions_question_id_idx","columns":["question_id"]},{"name":"question_revisions_parent_revision_id_idx","columns":["parent_revision_id"]}],"version":"d35db3ee"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:QuestionRevisionCollection":{"name":"questionrevisioncollection","className":"QuestionRevisionCollection","qualifiedName":"@happyvertical/smrt-education:QuestionRevisionCollection","collection":"questionrevisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"question_revisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"QuestionRevision","exportName":"QuestionRevisionCollection","collectionExportName":"QuestionRevisionCollectionCollection","schema":{"tableName":"question_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"question_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"question_id\\" UUID NOT NULL,\\n \\"parent_revision_id\\" UUID,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 1,\\n \\"prompt\\" TEXT,\\n \\"response_type\\" TEXT,\\n \\"choices_json\\" TEXT,\\n \\"subparts_json\\" TEXT,\\n \\"media_json\\" TEXT,\\n \\"objective_ids_json\\" TEXT,\\n \\"concept_ids_json\\" TEXT,\\n \\"answer_key_json\\" TEXT,\\n \\"rubric_json\\" TEXT,\\n \\"points_possible\\" REAL,\\n \\"provenance\\" TEXT,\\n \\"field_provenance_json\\" TEXT,\\n \\"author_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"question_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"questions","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"parent_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"question_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"prompt":{"type":"TEXT","notNull":false,"unique":false},"response_type":{"type":"TEXT","notNull":false,"unique":false},"choices_json":{"type":"TEXT","notNull":false,"unique":false},"subparts_json":{"type":"TEXT","notNull":false,"unique":false},"media_json":{"type":"TEXT","notNull":false,"unique":false},"objective_ids_json":{"type":"TEXT","notNull":false,"unique":false},"concept_ids_json":{"type":"TEXT","notNull":false,"unique":false},"answer_key_json":{"type":"TEXT","notNull":false,"unique":false},"rubric_json":{"type":"TEXT","notNull":false,"unique":false},"points_possible":{"type":"REAL","notNull":false,"unique":false},"provenance":{"type":"TEXT","notNull":false,"unique":false},"field_provenance_json":{"type":"TEXT","notNull":false,"unique":false},"author_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"question_revisions_tenant_id_question_id_idx","columns":["tenant_id","question_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"question_revisions_slug_context_idx","columns":["slug","context"]},{"name":"question_revisions_sequence_unique","columns":["tenant_id","question_id","sequence"],"unique":true},{"name":"question_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"question_revisions_question_id_idx","columns":["question_id"]},{"name":"question_revisions_parent_revision_id_idx","columns":["parent_revision_id"]}],"version":"d35db3ee"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:QuestionResponse":{"name":"questionresponse","className":"QuestionResponse","qualifiedName":"@happyvertical/smrt-education:QuestionResponse","collection":"questionresponses","description":"Append-only learner response to one exact question revision. A correction is a new row naming its predecessor; a response never rewrites question content.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"enrollmentId":{"type":"foreignKey","required":true,"related":"Enrollment","_meta":{"required":true}},"questionRevisionId":{"type":"foreignKey","required":true,"related":"QuestionRevision","_meta":{"required":true}},"lessonRevisionId":{"type":"foreignKey","required":false,"related":"LessonRevision","_meta":{"nullable":true}},"worksheetVersionId":{"type":"text","required":false},"submissionId":{"type":"foreignKey","required":false,"related":"Submission","_meta":{"nullable":true}},"previousResponseId":{"type":"foreignKey","required":false,"related":"QuestionResponse","_meta":{"nullable":true}},"episodeId":{"type":"text","required":false},"completionMode":{"type":"text","required":false},"assistance":{"type":"text","required":false},"responseJson":{"type":"text","required":false,"_meta":{}},"attemptNumber":{"type":"integer","required":true,"default":1},"actorUserId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"payloadDigest":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"question_responses","conflictColumns":["tenant_id","learner_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"QuestionResponse","collectionExportName":"QuestionResponseCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"enrollmentId","rule":"required","fieldType":"foreignKey"},{"field":"questionRevisionId","rule":"required","fieldType":"foreignKey"},{"field":"attemptNumber","rule":"required","fieldType":"integer"}],"schema":{"tableName":"question_responses","ddl":"CREATE TABLE IF NOT EXISTS \\"question_responses\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"question_revision_id\\" UUID NOT NULL,\\n \\"lesson_revision_id\\" UUID,\\n \\"worksheet_version_id\\" TEXT,\\n \\"submission_id\\" UUID,\\n \\"previous_response_id\\" UUID,\\n \\"episode_id\\" TEXT,\\n \\"completion_mode\\" TEXT,\\n \\"assistance\\" TEXT,\\n \\"response_json\\" TEXT,\\n \\"attempt_number\\" INTEGER NOT NULL DEFAULT 1,\\n \\"actor_user_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"question_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"question_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"lesson_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"worksheet_version_id":{"type":"TEXT","notNull":false,"unique":false},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"previous_response_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"question_responses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"episode_id":{"type":"TEXT","notNull":false,"unique":false},"completion_mode":{"type":"TEXT","notNull":false,"unique":false},"assistance":{"type":"TEXT","notNull":false,"unique":false},"response_json":{"type":"TEXT","notNull":false,"unique":false},"attempt_number":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"question_responses_tenant_id_learner_id_idx","columns":["tenant_id","learner_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"question_responses_slug_context_idx","columns":["slug","context"]},{"name":"question_responses_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"question_responses_learner_id_idx","columns":["learner_id"]},{"name":"question_responses_enrollment_id_idx","columns":["enrollment_id"]},{"name":"question_responses_question_revision_id_idx","columns":["question_revision_id"]},{"name":"question_responses_lesson_revision_id_idx","columns":["lesson_revision_id"]},{"name":"question_responses_submission_id_idx","columns":["submission_id"]},{"name":"question_responses_previous_response_id_idx","columns":["previous_response_id"]}],"version":"c0f1fdfa"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:QuestionResponseCollection":{"name":"questionresponsecollection","className":"QuestionResponseCollection","qualifiedName":"@happyvertical/smrt-education:QuestionResponseCollection","collection":"questionresponses","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"question_responses","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"QuestionResponse","exportName":"QuestionResponseCollection","collectionExportName":"QuestionResponseCollectionCollection","schema":{"tableName":"question_responses","ddl":"CREATE TABLE IF NOT EXISTS \\"question_responses\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"question_revision_id\\" UUID NOT NULL,\\n \\"lesson_revision_id\\" UUID,\\n \\"worksheet_version_id\\" TEXT,\\n \\"submission_id\\" UUID,\\n \\"previous_response_id\\" UUID,\\n \\"episode_id\\" TEXT,\\n \\"completion_mode\\" TEXT,\\n \\"assistance\\" TEXT,\\n \\"response_json\\" TEXT,\\n \\"attempt_number\\" INTEGER NOT NULL DEFAULT 1,\\n \\"actor_user_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"payload_digest\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"question_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"question_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"lesson_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"worksheet_version_id":{"type":"TEXT","notNull":false,"unique":false},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"previous_response_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"question_responses","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"episode_id":{"type":"TEXT","notNull":false,"unique":false},"completion_mode":{"type":"TEXT","notNull":false,"unique":false},"assistance":{"type":"TEXT","notNull":false,"unique":false},"response_json":{"type":"TEXT","notNull":false,"unique":false},"attempt_number":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"payload_digest":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"question_responses_tenant_id_learner_id_idx","columns":["tenant_id","learner_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"question_responses_slug_context_idx","columns":["slug","context"]},{"name":"question_responses_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"question_responses_learner_id_idx","columns":["learner_id"]},{"name":"question_responses_enrollment_id_idx","columns":["enrollment_id"]},{"name":"question_responses_question_revision_id_idx","columns":["question_revision_id"]},{"name":"question_responses_lesson_revision_id_idx","columns":["lesson_revision_id"]},{"name":"question_responses_submission_id_idx","columns":["submission_id"]},{"name":"question_responses_previous_response_id_idx","columns":["previous_response_id"]}],"version":"c0f1fdfa"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GeneratedPrintable":{"name":"generatedprintable","className":"GeneratedPrintable","qualifiedName":"@happyvertical/smrt-education:GeneratedPrintable","collection":"generatedprintables","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.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"lessonId":{"type":"foreignKey","required":true,"related":"Lesson","_meta":{"required":true}},"worksheetVersionId":{"type":"text","required":false},"audience":{"type":"text","required":false,"default":"learner","enum":["learner","guardian"]},"assetId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-assets:Asset"},"lessonRevisionId":{"type":"text","required":false},"generatedByUserId":{"type":"text","required":false},"delegatingGuardianUserId":{"type":"text","required":false},"delegationId":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"generated_printables","conflictColumns":["tenant_id","lesson_id","worksheet_version_id","audience"],"indexes":[{"name":"generated_printables_identity_unique","columns":["tenantId","lessonId","worksheetVersionId","audience"],"unique":true}],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"GeneratedPrintable","collectionExportName":"GeneratedPrintableCollection","validationRules":[{"field":"lessonId","rule":"required","fieldType":"foreignKey"},{"field":"assetId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"generated_printables","ddl":"CREATE TABLE IF NOT EXISTS \\"generated_printables\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"lesson_id\\" UUID NOT NULL,\\n \\"worksheet_version_id\\" TEXT,\\n \\"audience\\" TEXT DEFAULT 'learner',\\n \\"asset_id\\" UUID NOT NULL,\\n \\"lesson_revision_id\\" TEXT,\\n \\"generated_by_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"worksheet_version_id":{"type":"TEXT","notNull":false,"unique":false},"audience":{"type":"TEXT","notNull":false,"unique":false,"default":"learner"},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"lesson_revision_id":{"type":"TEXT","notNull":false,"unique":false},"generated_by_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"generated_printables_tenant_id_lesson_id_idx","columns":["tenant_id","lesson_id","worksheet_version_id","audience"],"unique":true,"nullsNotDistinct":true},{"name":"generated_printables_slug_context_idx","columns":["slug","context"]},{"name":"generated_printables_identity_unique","columns":["tenant_id","lesson_id","worksheet_version_id","audience"],"unique":true},{"name":"generated_printables_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"generated_printables_lesson_id_idx","columns":["lesson_id"]},{"name":"generated_printables_asset_id_idx","columns":["asset_id"]}],"version":"e4ccc925"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:GeneratedPrintableCollection":{"name":"generatedprintablecollection","className":"GeneratedPrintableCollection","qualifiedName":"@happyvertical/smrt-education:GeneratedPrintableCollection","collection":"generatedprintables","filePath":"/home/runner/work/smrt/smrt/packages/education/src/question-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"generated_printables","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"GeneratedPrintable","exportName":"GeneratedPrintableCollection","collectionExportName":"GeneratedPrintableCollectionCollection","schema":{"tableName":"generated_printables","ddl":"CREATE TABLE IF NOT EXISTS \\"generated_printables\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"lesson_id\\" UUID NOT NULL,\\n \\"worksheet_version_id\\" TEXT,\\n \\"audience\\" TEXT DEFAULT 'learner',\\n \\"asset_id\\" UUID NOT NULL,\\n \\"lesson_revision_id\\" TEXT,\\n \\"generated_by_user_id\\" TEXT,\\n \\"delegating_guardian_user_id\\" TEXT,\\n \\"delegation_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"worksheet_version_id":{"type":"TEXT","notNull":false,"unique":false},"audience":{"type":"TEXT","notNull":false,"unique":false,"default":"learner"},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"lesson_revision_id":{"type":"TEXT","notNull":false,"unique":false},"generated_by_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegating_guardian_user_id":{"type":"TEXT","notNull":false,"unique":false},"delegation_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"generated_printables_tenant_id_lesson_id_idx","columns":["tenant_id","lesson_id","worksheet_version_id","audience"],"unique":true,"nullsNotDistinct":true},{"name":"generated_printables_slug_context_idx","columns":["slug","context"]},{"name":"generated_printables_identity_unique","columns":["tenant_id","lesson_id","worksheet_version_id","audience"],"unique":true},{"name":"generated_printables_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"generated_printables_lesson_id_idx","columns":["lesson_id"]},{"name":"generated_printables_asset_id_idx","columns":["asset_id"]}],"version":"e4ccc925"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Submission":{"name":"submission","className":"Submission","qualifiedName":"@happyvertical/smrt-education:Submission","collection":"submissions","description":"Evidence that a learner completed one progress item.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/submissions.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"lessonId":{"type":"foreignKey","required":true,"related":"Lesson","_meta":{"required":true}},"progressId":{"type":"foreignKey","required":true,"related":"LessonProgress","_meta":{"required":true}},"submittedAt":{"type":"text","required":false},"status":{"type":"text","required":false,"default":"captured","enum":["captured","extracting","needs_review","graded","rejected"]},"notes":{"type":"text","required":false},"captureKey":{"type":"text","required":false},"captureDigest":{"type":"text","required":false},"kind":{"type":"text","required":true,"default":"completed_work","_meta":{"required":true},"enum":["blank_reference","completed_work"]},"previousSubmissionId":{"type":"foreignKey","required":false,"related":"Submission","_meta":{"nullable":true}},"intakeItemId":{"type":"text","required":false,"_meta":{"nullable":true}}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableStrategy":"sti","api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context","_meta_type"]},"extends":"SmrtObject","exportName":"Submission","collectionExportName":"SubmissionCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"lessonId","rule":"required","fieldType":"foreignKey"},{"field":"progressId","rule":"required","fieldType":"foreignKey"},{"field":"kind","rule":"required","fieldType":"text"}],"schema":{"tableName":"submissions","ddl":"CREATE TABLE IF NOT EXISTS \\"submissions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"learner_id\\" UUID,\\n \\"lesson_id\\" UUID,\\n \\"progress_id\\" UUID,\\n \\"submitted_at\\" TEXT,\\n \\"status\\" TEXT DEFAULT 'captured',\\n \\"notes\\" TEXT,\\n \\"capture_key\\" TEXT,\\n \\"capture_digest\\" TEXT,\\n \\"kind\\" TEXT DEFAULT 'completed_work',\\n \\"previous_submission_id\\" UUID,\\n \\"intake_item_id\\" TEXT,\\n \\"page_count\\" INTEGER DEFAULT 0,\\n \\"ocr_text\\" TEXT,\\n \\"extracted\\" TEXT,\\n \\"reported_by\\" TEXT DEFAULT 'learner',\\n \\"evidence_url\\" TEXT,\\n \\"reported_score\\" REAL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"progress_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lesson_progress","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submitted_at":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false,"default":"captured"},"notes":{"type":"TEXT","notNull":false},"capture_key":{"type":"TEXT","notNull":false},"capture_digest":{"type":"TEXT","notNull":false},"kind":{"type":"TEXT","notNull":false,"default":"completed_work"},"previous_submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_item_id":{"type":"TEXT","notNull":false},"page_count":{"type":"INTEGER","notNull":false,"default":0},"ocr_text":{"type":"TEXT","notNull":false},"extracted":{"type":"TEXT","notNull":false},"reported_by":{"type":"TEXT","notNull":false,"default":"learner"},"evidence_url":{"type":"TEXT","notNull":false},"reported_score":{"type":"REAL","notNull":false}},"indexes":[{"name":"submissions_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"submissions_meta_type_idx","columns":["_meta_type"]},{"name":"submissions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submissions_learner_id_idx","columns":["learner_id"]},{"name":"submissions_lesson_id_idx","columns":["lesson_id"]},{"name":"submissions_progress_id_idx","columns":["progress_id"]},{"name":"submissions_previous_submission_id_idx","columns":["previous_submission_id"]}],"version":"27a21ab4"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:SubmissionIntakeBinding":{"name":"submissionintakebinding","className":"SubmissionIntakeBinding","qualifiedName":"@happyvertical/smrt-education:SubmissionIntakeBinding","collection":"submissionintakebindings","description":"Durable tenant/item claim for trusted ingestion receipts. This separate table keeps ordinary uploads (which have no intake item) out of the uniqueness key.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/submissions.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"intakeItemId":{"type":"text","required":true,"_meta":{"required":true}},"submissionId":{"type":"foreignKey","required":true,"related":"Submission","_meta":{"required":true}}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"submission_intake_bindings","api":false,"mcp":false,"cli":false,"conflictColumns":["tenant_id","intake_item_id"],"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"SubmissionIntakeBinding","collectionExportName":"SubmissionIntakeBindingCollection","validationRules":[{"field":"intakeItemId","rule":"required","fieldType":"text"},{"field":"submissionId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"submission_intake_bindings","ddl":"CREATE TABLE IF NOT EXISTS \\"submission_intake_bindings\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"intake_item_id\\" TEXT NOT NULL,\\n \\"submission_id\\" UUID NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"intake_item_id":{"type":"TEXT","notNull":true,"unique":false},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}}},"indexes":[{"name":"submission_intake_bindings_tenant_id_intake_item_id_idx","columns":["tenant_id","intake_item_id"],"unique":true},{"name":"submission_intake_bindings_slug_context_idx","columns":["slug","context"]},{"name":"submission_intake_bindings_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submission_intake_bindings_submission_id_idx","columns":["submission_id"]}],"version":"7102c909"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:ScannedSubmission":{"name":"scannedsubmission","className":"ScannedSubmission","qualifiedName":"@happyvertical/smrt-education:ScannedSubmission","collection":"submissions","description":"Photos or scans of work submitted for review.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/submissions.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"lessonId":{"type":"foreignKey","required":true,"related":"Lesson","_meta":{"required":true}},"progressId":{"type":"foreignKey","required":true,"related":"LessonProgress","_meta":{"required":true}},"submittedAt":{"type":"text","required":false},"status":{"type":"text","required":false,"default":"captured","enum":["captured","extracting","needs_review","graded","rejected"]},"notes":{"type":"text","required":false},"captureKey":{"type":"text","required":false},"captureDigest":{"type":"text","required":false},"kind":{"type":"text","required":true,"default":"completed_work","_meta":{"required":true},"enum":["blank_reference","completed_work"]},"previousSubmissionId":{"type":"foreignKey","required":false,"related":"Submission","_meta":{"nullable":true}},"intakeItemId":{"type":"text","required":false,"_meta":{"nullable":true}},"pageCount":{"type":"integer","required":true,"default":0},"ocrText":{"type":"text","required":false},"extracted":{"type":"text","required":false}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"getExtracted":{"name":"getExtracted","async":false,"parameters":[],"returnType":"Record<string, unknown>","isStatic":false,"isPublic":true},"setExtracted":{"name":"setExtracted","async":false,"parameters":[{"name":"value","type":"Record<string, unknown>","optional":false}],"returnType":"void","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"submissions","api":false,"mcp":false,"cli":false,"tableStrategy":"sti"},"extends":"Submission","exportName":"ScannedSubmission","collectionExportName":"ScannedSubmissionCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"lessonId","rule":"required","fieldType":"foreignKey"},{"field":"progressId","rule":"required","fieldType":"foreignKey"},{"field":"kind","rule":"required","fieldType":"text"},{"field":"pageCount","rule":"required","fieldType":"integer"}],"schema":{"tableName":"submissions","ddl":"CREATE TABLE IF NOT EXISTS \\"submissions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"learner_id\\" UUID,\\n \\"lesson_id\\" UUID,\\n \\"progress_id\\" UUID,\\n \\"submitted_at\\" TEXT,\\n \\"status\\" TEXT DEFAULT 'captured',\\n \\"notes\\" TEXT,\\n \\"capture_key\\" TEXT,\\n \\"capture_digest\\" TEXT,\\n \\"kind\\" TEXT DEFAULT 'completed_work',\\n \\"previous_submission_id\\" UUID,\\n \\"intake_item_id\\" TEXT,\\n \\"page_count\\" INTEGER DEFAULT 0,\\n \\"ocr_text\\" TEXT,\\n \\"extracted\\" TEXT,\\n \\"reported_by\\" TEXT DEFAULT 'learner',\\n \\"evidence_url\\" TEXT,\\n \\"reported_score\\" REAL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"progress_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lesson_progress","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submitted_at":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false,"default":"captured"},"notes":{"type":"TEXT","notNull":false},"capture_key":{"type":"TEXT","notNull":false},"capture_digest":{"type":"TEXT","notNull":false},"kind":{"type":"TEXT","notNull":false,"default":"completed_work"},"previous_submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_item_id":{"type":"TEXT","notNull":false},"page_count":{"type":"INTEGER","notNull":false,"default":0},"ocr_text":{"type":"TEXT","notNull":false},"extracted":{"type":"TEXT","notNull":false},"reported_by":{"type":"TEXT","notNull":false,"default":"learner"},"evidence_url":{"type":"TEXT","notNull":false},"reported_score":{"type":"REAL","notNull":false}},"indexes":[{"name":"submissions_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"submissions_meta_type_idx","columns":["_meta_type"]},{"name":"submissions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submissions_learner_id_idx","columns":["learner_id"]},{"name":"submissions_lesson_id_idx","columns":["lesson_id"]},{"name":"submissions_progress_id_idx","columns":["progress_id"]},{"name":"submissions_previous_submission_id_idx","columns":["previous_submission_id"]}],"version":"7c394510"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:ExternalCompletion":{"name":"externalcompletion","className":"ExternalCompletion","qualifiedName":"@happyvertical/smrt-education:ExternalCompletion","collection":"submissions","description":"Completion reported by the learner, guardian, or external source.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/submissions.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"lessonId":{"type":"foreignKey","required":true,"related":"Lesson","_meta":{"required":true}},"progressId":{"type":"foreignKey","required":true,"related":"LessonProgress","_meta":{"required":true}},"submittedAt":{"type":"text","required":false},"status":{"type":"text","required":false,"default":"captured","enum":["captured","extracting","needs_review","graded","rejected"]},"notes":{"type":"text","required":false},"captureKey":{"type":"text","required":false},"captureDigest":{"type":"text","required":false},"kind":{"type":"text","required":true,"default":"completed_work","_meta":{"required":true},"enum":["blank_reference","completed_work"]},"previousSubmissionId":{"type":"foreignKey","required":false,"related":"Submission","_meta":{"nullable":true}},"intakeItemId":{"type":"text","required":false,"_meta":{"nullable":true}},"reportedBy":{"type":"text","required":false,"default":"learner","enum":["learner","guardian","source"]},"evidenceUrl":{"type":"text","required":false},"reportedScore":{"type":"decimal","required":false,"_meta":{}}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"submissions","api":false,"mcp":false,"cli":false,"tableStrategy":"sti"},"extends":"Submission","exportName":"ExternalCompletion","collectionExportName":"ExternalCompletionCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"lessonId","rule":"required","fieldType":"foreignKey"},{"field":"progressId","rule":"required","fieldType":"foreignKey"},{"field":"kind","rule":"required","fieldType":"text"}],"schema":{"tableName":"submissions","ddl":"CREATE TABLE IF NOT EXISTS \\"submissions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"learner_id\\" UUID,\\n \\"lesson_id\\" UUID,\\n \\"progress_id\\" UUID,\\n \\"submitted_at\\" TEXT,\\n \\"status\\" TEXT DEFAULT 'captured',\\n \\"notes\\" TEXT,\\n \\"capture_key\\" TEXT,\\n \\"capture_digest\\" TEXT,\\n \\"kind\\" TEXT DEFAULT 'completed_work',\\n \\"previous_submission_id\\" UUID,\\n \\"intake_item_id\\" TEXT,\\n \\"page_count\\" INTEGER DEFAULT 0,\\n \\"ocr_text\\" TEXT,\\n \\"extracted\\" TEXT,\\n \\"reported_by\\" TEXT DEFAULT 'learner',\\n \\"evidence_url\\" TEXT,\\n \\"reported_score\\" REAL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"progress_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lesson_progress","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submitted_at":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false,"default":"captured"},"notes":{"type":"TEXT","notNull":false},"capture_key":{"type":"TEXT","notNull":false},"capture_digest":{"type":"TEXT","notNull":false},"kind":{"type":"TEXT","notNull":false,"default":"completed_work"},"previous_submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_item_id":{"type":"TEXT","notNull":false},"page_count":{"type":"INTEGER","notNull":false,"default":0},"ocr_text":{"type":"TEXT","notNull":false},"extracted":{"type":"TEXT","notNull":false},"reported_by":{"type":"TEXT","notNull":false,"default":"learner"},"evidence_url":{"type":"TEXT","notNull":false},"reported_score":{"type":"REAL","notNull":false}},"indexes":[{"name":"submissions_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"submissions_meta_type_idx","columns":["_meta_type"]},{"name":"submissions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submissions_learner_id_idx","columns":["learner_id"]},{"name":"submissions_lesson_id_idx","columns":["lesson_id"]},{"name":"submissions_progress_id_idx","columns":["progress_id"]},{"name":"submissions_previous_submission_id_idx","columns":["previous_submission_id"]}],"version":"eff3715d"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Attestation":{"name":"attestation","className":"Attestation","qualifiedName":"@happyvertical/smrt-education:Attestation","collection":"submissions","description":"A guardian's statement that work was completed.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/submissions.ts","packageName":"@happyvertical/smrt-education","fields":{"created_at":{"type":"datetime","required":false},"updated_at":{"type":"datetime","required":false},"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"lessonId":{"type":"foreignKey","required":true,"related":"Lesson","_meta":{"required":true}},"progressId":{"type":"foreignKey","required":true,"related":"LessonProgress","_meta":{"required":true}},"submittedAt":{"type":"text","required":false},"status":{"type":"text","required":false,"default":"captured","enum":["captured","extracting","needs_review","graded","rejected"]},"notes":{"type":"text","required":false},"captureKey":{"type":"text","required":false},"captureDigest":{"type":"text","required":false},"kind":{"type":"text","required":true,"default":"completed_work","_meta":{"required":true},"enum":["blank_reference","completed_work"]},"previousSubmissionId":{"type":"foreignKey","required":false,"related":"Submission","_meta":{"nullable":true}},"intakeItemId":{"type":"text","required":false,"_meta":{"nullable":true}}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"submissions","api":false,"mcp":false,"cli":false,"tableStrategy":"sti"},"extends":"Submission","exportName":"Attestation","collectionExportName":"AttestationCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"lessonId","rule":"required","fieldType":"foreignKey"},{"field":"progressId","rule":"required","fieldType":"foreignKey"},{"field":"kind","rule":"required","fieldType":"text"}],"schema":{"tableName":"submissions","ddl":"CREATE TABLE IF NOT EXISTS \\"submissions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"_meta_type\\" TEXT NOT NULL,\\n \\"_meta_data\\" JSON,\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"learner_id\\" UUID,\\n \\"lesson_id\\" UUID,\\n \\"progress_id\\" UUID,\\n \\"submitted_at\\" TEXT,\\n \\"status\\" TEXT DEFAULT 'captured',\\n \\"notes\\" TEXT,\\n \\"capture_key\\" TEXT,\\n \\"capture_digest\\" TEXT,\\n \\"kind\\" TEXT DEFAULT 'completed_work',\\n \\"previous_submission_id\\" UUID,\\n \\"intake_item_id\\" TEXT,\\n \\"page_count\\" INTEGER DEFAULT 0,\\n \\"ocr_text\\" TEXT,\\n \\"extracted\\" TEXT,\\n \\"reported_by\\" TEXT DEFAULT 'learner',\\n \\"evidence_url\\" TEXT,\\n \\"reported_score\\" REAL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"_meta_type":{"type":"TEXT","notNull":true},"_meta_data":{"type":"JSON","notNull":false},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"progress_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"lesson_progress","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submitted_at":{"type":"TEXT","notNull":false},"status":{"type":"TEXT","notNull":false,"default":"captured"},"notes":{"type":"TEXT","notNull":false},"capture_key":{"type":"TEXT","notNull":false},"capture_digest":{"type":"TEXT","notNull":false},"kind":{"type":"TEXT","notNull":false,"default":"completed_work"},"previous_submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_item_id":{"type":"TEXT","notNull":false},"page_count":{"type":"INTEGER","notNull":false,"default":0},"ocr_text":{"type":"TEXT","notNull":false},"extracted":{"type":"TEXT","notNull":false},"reported_by":{"type":"TEXT","notNull":false,"default":"learner"},"evidence_url":{"type":"TEXT","notNull":false},"reported_score":{"type":"REAL","notNull":false}},"indexes":[{"name":"submissions_slug_context_meta_type_idx","columns":["tenant_id","slug","context","_meta_type"],"unique":true,"nullsNotDistinct":true},{"name":"submissions_meta_type_idx","columns":["_meta_type"]},{"name":"submissions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submissions_learner_id_idx","columns":["learner_id"]},{"name":"submissions_lesson_id_idx","columns":["lesson_id"]},{"name":"submissions_progress_id_idx","columns":["progress_id"]},{"name":"submissions_previous_submission_id_idx","columns":["previous_submission_id"]}],"version":"4f3230a3"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:SubmissionAsset":{"name":"submissionasset","className":"SubmissionAsset","qualifiedName":"@happyvertical/smrt-education:SubmissionAsset","collection":"submissionassets","description":"The tenant-owned files attached to a submission.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/submissions.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"submissionId":{"type":"foreignKey","required":true,"related":"Submission","_meta":{"required":true}},"assetId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-assets:Asset"},"relationship":{"type":"text","required":true,"default":"page","_meta":{"required":true},"enum":["page","attachment"]},"sortOrder":{"type":"integer","required":true,"default":0}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"submission_assets","conflictColumns":["tenant_id","submission_id","asset_id","relationship"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"SubmissionAsset","collectionExportName":"SubmissionAssetCollection","validationRules":[{"field":"submissionId","rule":"required","fieldType":"foreignKey"},{"field":"assetId","rule":"required","fieldType":"crossPackageRef"},{"field":"relationship","rule":"required","fieldType":"text"},{"field":"sortOrder","rule":"required","fieldType":"integer"}],"schema":{"tableName":"submission_assets","ddl":"CREATE TABLE IF NOT EXISTS \\"submission_assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"submission_id\\" UUID NOT NULL,\\n \\"asset_id\\" UUID NOT NULL,\\n \\"relationship\\" TEXT NOT NULL DEFAULT 'page',\\n \\"sort_order\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"relationship":{"type":"TEXT","notNull":true,"unique":false,"default":"page"},"sort_order":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"submission_assets_tenant_id_submission_id_idx","columns":["tenant_id","submission_id","asset_id","relationship"],"unique":true},{"name":"submission_assets_slug_context_idx","columns":["slug","context"]},{"name":"submission_assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"submission_assets_submission_id_idx","columns":["submission_id"]},{"name":"submission_assets_asset_id_idx","columns":["asset_id"]}],"version":"d9b61c8a"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Grade":{"name":"grade","className":"Grade","qualifiedName":"@happyvertical/smrt-education:Grade","collection":"grades","description":"An assessment of a submission; the service selects the authoritative grade.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/submissions.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"submissionId":{"type":"foreignKey","required":true,"related":"Submission","_meta":{"required":true}},"graderKind":{"type":"text","required":true,"default":"auto","_meta":{"required":true},"enum":["auto","ai","guardian","instructor"]},"graderProfileId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-profiles:Profile","_meta":{"nullable":true}},"score":{"type":"decimal","required":false,"_meta":{"nullable":true}},"pointsEarned":{"type":"integer","required":false,"_meta":{"nullable":true}},"pointsPossible":{"type":"integer","required":false,"_meta":{"nullable":true}},"rubricResults":{"type":"text","required":false},"questionRevisionId":{"type":"text","required":false,"_meta":{"nullable":true}},"feedback":{"type":"text","required":false},"gradedAt":{"type":"text","required":false}},"methods":{"getRubricResults":{"name":"getRubricResults","async":false,"parameters":[],"returnType":"Record<string, unknown>","isStatic":false,"isPublic":true},"setRubricResults":{"name":"setRubricResults","async":false,"parameters":[{"name":"value","type":"Record<string, unknown>","optional":false}],"returnType":"void","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"Grade","collectionExportName":"GradeCollection","validationRules":[{"field":"submissionId","rule":"required","fieldType":"foreignKey"},{"field":"graderKind","rule":"required","fieldType":"text"}],"schema":{"tableName":"grades","ddl":"CREATE TABLE IF NOT EXISTS \\"grades\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"submission_id\\" UUID NOT NULL,\\n \\"grader_kind\\" TEXT NOT NULL DEFAULT 'auto',\\n \\"grader_profile_id\\" UUID,\\n \\"score\\" REAL,\\n \\"points_earned\\" INTEGER,\\n \\"points_possible\\" INTEGER,\\n \\"rubric_results\\" TEXT,\\n \\"question_revision_id\\" TEXT,\\n \\"feedback\\" TEXT,\\n \\"graded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"grader_kind":{"type":"TEXT","notNull":true,"unique":false,"default":"auto"},"grader_profile_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"score":{"type":"REAL","notNull":false,"unique":false},"points_earned":{"type":"INTEGER","notNull":false,"unique":false},"points_possible":{"type":"INTEGER","notNull":false,"unique":false},"rubric_results":{"type":"TEXT","notNull":false,"unique":false},"question_revision_id":{"type":"TEXT","notNull":false,"unique":false},"feedback":{"type":"TEXT","notNull":false,"unique":false},"graded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"grades_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true},{"name":"grades_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"grades_submission_id_idx","columns":["submission_id"]},{"name":"grades_grader_profile_id_idx","columns":["grader_profile_id"]}],"version":"0ccd729e"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookCompletionDecision":{"name":"workbookcompletiondecision","className":"WorkbookCompletionDecision","qualifiedName":"@happyvertical/smrt-education:WorkbookCompletionDecision","collection":"workbookcompletiondecisions","description":"Immutable parent judgment; assessment and feedback release remain independent.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-completion.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"activityId":{"type":"foreignKey","required":true,"related":"WorkbookActivity","_meta":{"required":true}},"attemptId":{"type":"foreignKey","required":true,"related":"WorkbookAttempt","_meta":{"required":true}},"submissionId":{"type":"foreignKey","required":true,"related":"Submission","_meta":{"required":true}},"feedbackHeadId":{"type":"foreignKey","required":false,"related":"WorkbookAssessmentRevision","_meta":{"nullable":true}},"actorUserId":{"type":"crossPackageRef","required":true,"related":"@happyvertical/smrt-users:User"},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"mcp":false,"cli":false,"tableName":"workbook_completion_decisions","conflictColumns":["tenant_id","activity_id","request_key"],"indexes":[{"name":"workbook_completion_decisions_attempt_unique","columns":["tenantId","activityId","attemptId"],"unique":true}],"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookCompletionDecision","collectionExportName":"WorkbookCompletionDecisionCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"activityId","rule":"required","fieldType":"foreignKey"},{"field":"attemptId","rule":"required","fieldType":"foreignKey"},{"field":"submissionId","rule":"required","fieldType":"foreignKey"},{"field":"actorUserId","rule":"required","fieldType":"crossPackageRef"}],"schema":{"tableName":"workbook_completion_decisions","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_completion_decisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"activity_id\\" UUID NOT NULL,\\n \\"attempt_id\\" UUID NOT NULL,\\n \\"submission_id\\" UUID NOT NULL,\\n \\"feedback_head_id\\" UUID,\\n \\"actor_user_id\\" UUID NOT NULL,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"activity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_activities","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"feedback_head_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"actor_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_completion_decisions_tenant_id_activity_id_idx","columns":["tenant_id","activity_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_completion_decisions_slug_context_idx","columns":["slug","context"]},{"name":"workbook_completion_decisions_attempt_unique","columns":["tenant_id","activity_id","attempt_id"],"unique":true},{"name":"workbook_completion_decisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_completion_decisions_learner_id_idx","columns":["learner_id"]},{"name":"workbook_completion_decisions_activity_id_idx","columns":["activity_id"]},{"name":"workbook_completion_decisions_attempt_id_idx","columns":["attempt_id"]},{"name":"workbook_completion_decisions_submission_id_idx","columns":["submission_id"]},{"name":"workbook_completion_decisions_feedback_head_id_idx","columns":["feedback_head_id"]},{"name":"workbook_completion_decisions_actor_user_id_idx","columns":["actor_user_id"]}],"version":"c6015700"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookCompletionDecisionCollection":{"name":"workbookcompletiondecisioncollection","className":"WorkbookCompletionDecisionCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookCompletionDecisionCollection","collection":"workbookcompletiondecisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-completion.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_completion_decisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookCompletionDecision","exportName":"WorkbookCompletionDecisionCollection","collectionExportName":"WorkbookCompletionDecisionCollectionCollection","schema":{"tableName":"workbook_completion_decisions","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_completion_decisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"activity_id\\" UUID NOT NULL,\\n \\"attempt_id\\" UUID NOT NULL,\\n \\"submission_id\\" UUID NOT NULL,\\n \\"feedback_head_id\\" UUID,\\n \\"actor_user_id\\" UUID NOT NULL,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"activity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_activities","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"feedback_head_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"actor_user_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":true,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_completion_decisions_tenant_id_activity_id_idx","columns":["tenant_id","activity_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_completion_decisions_slug_context_idx","columns":["slug","context"]},{"name":"workbook_completion_decisions_attempt_unique","columns":["tenant_id","activity_id","attempt_id"],"unique":true},{"name":"workbook_completion_decisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_completion_decisions_learner_id_idx","columns":["learner_id"]},{"name":"workbook_completion_decisions_activity_id_idx","columns":["activity_id"]},{"name":"workbook_completion_decisions_attempt_id_idx","columns":["attempt_id"]},{"name":"workbook_completion_decisions_submission_id_idx","columns":["submission_id"]},{"name":"workbook_completion_decisions_feedback_head_id_idx","columns":["feedback_head_id"]},{"name":"workbook_completion_decisions_actor_user_id_idx","columns":["actor_user_id"]}],"version":"c6015700"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:Workbook":{"name":"workbook","className":"Workbook","qualifiedName":"@happyvertical/smrt-education:Workbook","collection":"workbooks","description":"Education-owned private workbook record. Mutations go through WorkbookService.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"workbookKey":{"type":"text","required":false},"title":{"type":"text","required":false},"edition":{"type":"text","required":false},"reviewRequired":{"type":"boolean","required":true,"default":true},"policyVersion":{"type":"integer","required":true,"default":1}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbooks","conflictColumns":["tenant_id","learner_id","workbook_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"Workbook","collectionExportName":"WorkbookCollection","displayLabelField":"title","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"reviewRequired","rule":"required","fieldType":"boolean"},{"field":"policyVersion","rule":"required","fieldType":"integer"}],"schema":{"tableName":"workbooks","ddl":"CREATE TABLE IF NOT EXISTS \\"workbooks\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"workbook_key\\" TEXT,\\n \\"title\\" TEXT,\\n \\"edition\\" TEXT,\\n \\"review_required\\" BOOLEAN NOT NULL DEFAULT TRUE,\\n \\"policy_version\\" INTEGER NOT NULL DEFAULT 1\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"workbook_key":{"type":"TEXT","notNull":false,"unique":false},"title":{"type":"TEXT","notNull":false,"unique":false},"edition":{"type":"TEXT","notNull":false,"unique":false},"review_required":{"type":"BOOLEAN","notNull":true,"unique":false,"default":true},"policy_version":{"type":"INTEGER","notNull":true,"unique":false,"default":1}},"indexes":[{"name":"workbooks_tenant_id_learner_id_idx","columns":["tenant_id","learner_id","workbook_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbooks_slug_context_idx","columns":["slug","context"]},{"name":"workbooks_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbooks_learner_id_idx","columns":["learner_id"]}],"version":"a5b56a39"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookCollection":{"name":"workbookcollection","className":"WorkbookCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookCollection","collection":"workbooks","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbooks","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"Workbook","exportName":"WorkbookCollection","collectionExportName":"WorkbookCollectionCollection","schema":{"tableName":"workbooks","ddl":"CREATE TABLE IF NOT EXISTS \\"workbooks\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"workbook_key\\" TEXT,\\n \\"title\\" TEXT,\\n \\"edition\\" TEXT,\\n \\"review_required\\" BOOLEAN NOT NULL DEFAULT TRUE,\\n \\"policy_version\\" INTEGER NOT NULL DEFAULT 1\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"workbook_key":{"type":"TEXT","notNull":false,"unique":false},"title":{"type":"TEXT","notNull":false,"unique":false},"edition":{"type":"TEXT","notNull":false,"unique":false},"review_required":{"type":"BOOLEAN","notNull":true,"unique":false,"default":true},"policy_version":{"type":"INTEGER","notNull":true,"unique":false,"default":1}},"indexes":[{"name":"workbooks_tenant_id_learner_id_idx","columns":["tenant_id","learner_id","workbook_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbooks_slug_context_idx","columns":["slug","context"]},{"name":"workbooks_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbooks_learner_id_idx","columns":["learner_id"]}],"version":"a5b56a39"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookActivity":{"name":"workbookactivity","className":"WorkbookActivity","qualifiedName":"@happyvertical/smrt-education:WorkbookActivity","collection":"workbookactivities","description":"Education-owned private workbook record. Mutations go through WorkbookService.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"workbookId":{"type":"foreignKey","required":false,"related":"Workbook","_meta":{"nullable":true}},"captureKind":{"type":"text","required":true,"default":"identified","_meta":{"required":true,"default":"identified"}},"photoIntakeId":{"type":"foreignKey","required":false,"related":"WorkbookPhotoIntake","_meta":{"nullable":true}},"enrollmentId":{"type":"foreignKey","required":true,"related":"Enrollment","_meta":{"required":true}},"lessonId":{"type":"foreignKey","required":true,"related":"Lesson","_meta":{"required":true}},"pageKey":{"type":"text","required":false},"pageLabel":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbook_activities","conflictColumns":["tenant_id","workbook_id","page_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookActivity","collectionExportName":"WorkbookActivityCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"captureKind","rule":"required","fieldType":"text"},{"field":"enrollmentId","rule":"required","fieldType":"foreignKey"},{"field":"lessonId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"workbook_activities","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_activities\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"workbook_id\\" UUID,\\n \\"capture_kind\\" TEXT NOT NULL DEFAULT 'identified',\\n \\"photo_intake_id\\" UUID,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"lesson_id\\" UUID NOT NULL,\\n \\"page_key\\" TEXT,\\n \\"page_label\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"workbook_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbooks","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"capture_kind":{"type":"TEXT","notNull":true,"unique":false,"default":"identified"},"photo_intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_photo_intakes","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"page_key":{"type":"TEXT","notNull":false,"unique":false},"page_label":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_activities_tenant_id_workbook_id_idx","columns":["tenant_id","workbook_id","page_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_activities_slug_context_idx","columns":["slug","context"]},{"name":"workbook_activities_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_activities_learner_id_idx","columns":["learner_id"]},{"name":"workbook_activities_workbook_id_idx","columns":["workbook_id"]},{"name":"workbook_activities_photo_intake_id_idx","columns":["photo_intake_id"]},{"name":"workbook_activities_enrollment_id_idx","columns":["enrollment_id"]},{"name":"workbook_activities_lesson_id_idx","columns":["lesson_id"]}],"version":"320c8eb0"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookActivityCollection":{"name":"workbookactivitycollection","className":"WorkbookActivityCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookActivityCollection","collection":"workbookactivities","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_activities","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookActivity","exportName":"WorkbookActivityCollection","collectionExportName":"WorkbookActivityCollectionCollection","schema":{"tableName":"workbook_activities","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_activities\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"workbook_id\\" UUID,\\n \\"capture_kind\\" TEXT NOT NULL DEFAULT 'identified',\\n \\"photo_intake_id\\" UUID,\\n \\"enrollment_id\\" UUID NOT NULL,\\n \\"lesson_id\\" UUID NOT NULL,\\n \\"page_key\\" TEXT,\\n \\"page_label\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"workbook_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbooks","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"capture_kind":{"type":"TEXT","notNull":true,"unique":false,"default":"identified"},"photo_intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_photo_intakes","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"enrollment_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"enrollments","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"lesson_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"lessons","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"page_key":{"type":"TEXT","notNull":false,"unique":false},"page_label":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_activities_tenant_id_workbook_id_idx","columns":["tenant_id","workbook_id","page_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_activities_slug_context_idx","columns":["slug","context"]},{"name":"workbook_activities_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_activities_learner_id_idx","columns":["learner_id"]},{"name":"workbook_activities_workbook_id_idx","columns":["workbook_id"]},{"name":"workbook_activities_photo_intake_id_idx","columns":["photo_intake_id"]},{"name":"workbook_activities_enrollment_id_idx","columns":["enrollment_id"]},{"name":"workbook_activities_lesson_id_idx","columns":["lesson_id"]}],"version":"320c8eb0"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookWorkFiling":{"name":"workbookworkfiling","className":"WorkbookWorkFiling","qualifiedName":"@happyvertical/smrt-education:WorkbookWorkFiling","collection":"workbookworkfilings","description":"Append-only association; the source work unit and its routing never move.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"sourceActivityId":{"type":"foreignKey","required":true,"related":"WorkbookActivity","_meta":{"required":true}},"workbookId":{"type":"foreignKey","required":true,"related":"Workbook","_meta":{"required":true}},"canonicalActivityId":{"type":"foreignKey","required":false,"related":"WorkbookActivity","_meta":{"nullable":true}},"previousRevisionId":{"type":"foreignKey","required":false,"related":"WorkbookWorkFiling","_meta":{"nullable":true}},"actorUserId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"reason":{"type":"text","required":false},"digest":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbook_work_filings","conflictColumns":["tenant_id","source_activity_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookWorkFiling","collectionExportName":"WorkbookWorkFilingCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"sourceActivityId","rule":"required","fieldType":"foreignKey"},{"field":"workbookId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"workbook_work_filings","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_work_filings\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"source_activity_id\\" UUID NOT NULL,\\n \\"workbook_id\\" UUID NOT NULL,\\n \\"canonical_activity_id\\" UUID,\\n \\"previous_revision_id\\" UUID,\\n \\"actor_user_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"reason\\" TEXT,\\n \\"digest\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"source_activity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_activities","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"workbook_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbooks","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"canonical_activity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_activities","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"previous_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_work_filings","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"reason":{"type":"TEXT","notNull":false,"unique":false},"digest":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_work_filings_tenant_id_source_activity_id_idx","columns":["tenant_id","source_activity_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_work_filings_slug_context_idx","columns":["slug","context"]},{"name":"workbook_work_filings_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_work_filings_learner_id_idx","columns":["learner_id"]},{"name":"workbook_work_filings_source_activity_id_idx","columns":["source_activity_id"]},{"name":"workbook_work_filings_workbook_id_idx","columns":["workbook_id"]},{"name":"workbook_work_filings_canonical_activity_id_idx","columns":["canonical_activity_id"]},{"name":"workbook_work_filings_previous_revision_id_idx","columns":["previous_revision_id"]}],"version":"03e989a0"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookWorkFilingCollection":{"name":"workbookworkfilingcollection","className":"WorkbookWorkFilingCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookWorkFilingCollection","collection":"workbookworkfilings","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_work_filings","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookWorkFiling","exportName":"WorkbookWorkFilingCollection","collectionExportName":"WorkbookWorkFilingCollectionCollection","schema":{"tableName":"workbook_work_filings","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_work_filings\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"source_activity_id\\" UUID NOT NULL,\\n \\"workbook_id\\" UUID NOT NULL,\\n \\"canonical_activity_id\\" UUID,\\n \\"previous_revision_id\\" UUID,\\n \\"actor_user_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"reason\\" TEXT,\\n \\"digest\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"source_activity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_activities","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"workbook_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbooks","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"canonical_activity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_activities","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"previous_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_work_filings","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"reason":{"type":"TEXT","notNull":false,"unique":false},"digest":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_work_filings_tenant_id_source_activity_id_idx","columns":["tenant_id","source_activity_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_work_filings_slug_context_idx","columns":["slug","context"]},{"name":"workbook_work_filings_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_work_filings_learner_id_idx","columns":["learner_id"]},{"name":"workbook_work_filings_source_activity_id_idx","columns":["source_activity_id"]},{"name":"workbook_work_filings_workbook_id_idx","columns":["workbook_id"]},{"name":"workbook_work_filings_canonical_activity_id_idx","columns":["canonical_activity_id"]},{"name":"workbook_work_filings_previous_revision_id_idx","columns":["previous_revision_id"]}],"version":"03e989a0"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookAttempt":{"name":"workbookattempt","className":"WorkbookAttempt","qualifiedName":"@happyvertical/smrt-education:WorkbookAttempt","collection":"workbookattempts","description":"Education-owned private workbook record. Mutations go through WorkbookService.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"activityId":{"type":"foreignKey","required":true,"related":"WorkbookActivity","_meta":{"required":true}},"submissionId":{"type":"foreignKey","required":true,"related":"Submission","_meta":{"required":true}},"previousAttemptId":{"type":"foreignKey","required":false,"related":"WorkbookAttempt","_meta":{"nullable":true}},"capturedAt":{"type":"text","required":false},"episodeId":{"type":"text","required":false},"reviewRequired":{"type":"boolean","required":true,"default":true},"policyVersion":{"type":"integer","required":true,"default":1},"assistance":{"type":"text","required":false},"actorUserId":{"type":"text","required":false},"sourceHashes":{"type":"text","required":false,"_meta":{}}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbook_attempts","conflictColumns":["tenant_id","submission_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookAttempt","collectionExportName":"WorkbookAttemptCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"activityId","rule":"required","fieldType":"foreignKey"},{"field":"submissionId","rule":"required","fieldType":"foreignKey"},{"field":"reviewRequired","rule":"required","fieldType":"boolean"},{"field":"policyVersion","rule":"required","fieldType":"integer"}],"schema":{"tableName":"workbook_attempts","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_attempts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"activity_id\\" UUID NOT NULL,\\n \\"submission_id\\" UUID NOT NULL,\\n \\"previous_attempt_id\\" UUID,\\n \\"captured_at\\" TEXT,\\n \\"episode_id\\" TEXT,\\n \\"review_required\\" BOOLEAN NOT NULL DEFAULT TRUE,\\n \\"policy_version\\" INTEGER NOT NULL DEFAULT 1,\\n \\"assistance\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"source_hashes\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"activity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_activities","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"previous_attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"captured_at":{"type":"TEXT","notNull":false,"unique":false},"episode_id":{"type":"TEXT","notNull":false,"unique":false},"review_required":{"type":"BOOLEAN","notNull":true,"unique":false,"default":true},"policy_version":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"assistance":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"source_hashes":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_attempts_tenant_id_submission_id_idx","columns":["tenant_id","submission_id"],"unique":true},{"name":"workbook_attempts_slug_context_idx","columns":["slug","context"]},{"name":"workbook_attempts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_attempts_learner_id_idx","columns":["learner_id"]},{"name":"workbook_attempts_activity_id_idx","columns":["activity_id"]},{"name":"workbook_attempts_submission_id_idx","columns":["submission_id"]},{"name":"workbook_attempts_previous_attempt_id_idx","columns":["previous_attempt_id"]}],"version":"bd9cdd9f"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookAttemptCollection":{"name":"workbookattemptcollection","className":"WorkbookAttemptCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookAttemptCollection","collection":"workbookattempts","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_attempts","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookAttempt","exportName":"WorkbookAttemptCollection","collectionExportName":"WorkbookAttemptCollectionCollection","schema":{"tableName":"workbook_attempts","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_attempts\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"activity_id\\" UUID NOT NULL,\\n \\"submission_id\\" UUID NOT NULL,\\n \\"previous_attempt_id\\" UUID,\\n \\"captured_at\\" TEXT,\\n \\"episode_id\\" TEXT,\\n \\"review_required\\" BOOLEAN NOT NULL DEFAULT TRUE,\\n \\"policy_version\\" INTEGER NOT NULL DEFAULT 1,\\n \\"assistance\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"source_hashes\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"activity_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_activities","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"submission_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"submissions","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"previous_attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"captured_at":{"type":"TEXT","notNull":false,"unique":false},"episode_id":{"type":"TEXT","notNull":false,"unique":false},"review_required":{"type":"BOOLEAN","notNull":true,"unique":false,"default":true},"policy_version":{"type":"INTEGER","notNull":true,"unique":false,"default":1},"assistance":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"source_hashes":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_attempts_tenant_id_submission_id_idx","columns":["tenant_id","submission_id"],"unique":true},{"name":"workbook_attempts_slug_context_idx","columns":["slug","context"]},{"name":"workbook_attempts_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_attempts_learner_id_idx","columns":["learner_id"]},{"name":"workbook_attempts_activity_id_idx","columns":["activity_id"]},{"name":"workbook_attempts_submission_id_idx","columns":["submission_id"]},{"name":"workbook_attempts_previous_attempt_id_idx","columns":["previous_attempt_id"]}],"version":"bd9cdd9f"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookAssessmentRevision":{"name":"workbookassessmentrevision","className":"WorkbookAssessmentRevision","qualifiedName":"@happyvertical/smrt-education:WorkbookAssessmentRevision","collection":"workbookassessmentrevisions","description":"Education-owned private workbook record. Mutations go through WorkbookService.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"attemptId":{"type":"foreignKey","required":true,"related":"WorkbookAttempt","_meta":{"required":true}},"requestKey":{"type":"text","required":false},"requestDigest":{"type":"text","required":false},"kind":{"type":"text","required":false},"actorUserId":{"type":"text","required":false},"sourceRevisionId":{"type":"foreignKey","required":false,"related":"WorkbookAssessmentRevision","_meta":{"nullable":true}},"decisionReason":{"type":"text","required":false},"supersedesId":{"type":"foreignKey","required":false,"related":"WorkbookAssessmentRevision","_meta":{"nullable":true}},"assessmentJson":{"type":"text","required":false,"_meta":{}},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbook_assessment_revisions","conflictColumns":["tenant_id","attempt_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookAssessmentRevision","collectionExportName":"WorkbookAssessmentRevisionCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"attemptId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"workbook_assessment_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_assessment_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"attempt_id\\" UUID NOT NULL,\\n \\"request_key\\" TEXT,\\n \\"request_digest\\" TEXT,\\n \\"kind\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"source_revision_id\\" UUID,\\n \\"decision_reason\\" TEXT,\\n \\"supersedes_id\\" UUID,\\n \\"assessment_json\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"request_key":{"type":"TEXT","notNull":false,"unique":false},"request_digest":{"type":"TEXT","notNull":false,"unique":false},"kind":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"source_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"decision_reason":{"type":"TEXT","notNull":false,"unique":false},"supersedes_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"assessment_json":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_assessment_revisions_tenant_id_attempt_id_idx","columns":["tenant_id","attempt_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_assessment_revisions_slug_context_idx","columns":["slug","context"]},{"name":"workbook_assessment_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_assessment_revisions_learner_id_idx","columns":["learner_id"]},{"name":"workbook_assessment_revisions_attempt_id_idx","columns":["attempt_id"]},{"name":"workbook_assessment_revisions_source_revision_id_idx","columns":["source_revision_id"]},{"name":"workbook_assessment_revisions_supersedes_id_idx","columns":["supersedes_id"]}],"version":"94b2bd33"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookAssessmentRevisionCollection":{"name":"workbookassessmentrevisioncollection","className":"WorkbookAssessmentRevisionCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookAssessmentRevisionCollection","collection":"workbookassessmentrevisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_assessment_revisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookAssessmentRevision","exportName":"WorkbookAssessmentRevisionCollection","collectionExportName":"WorkbookAssessmentRevisionCollectionCollection","schema":{"tableName":"workbook_assessment_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_assessment_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"attempt_id\\" UUID NOT NULL,\\n \\"request_key\\" TEXT,\\n \\"request_digest\\" TEXT,\\n \\"kind\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"source_revision_id\\" UUID,\\n \\"decision_reason\\" TEXT,\\n \\"supersedes_id\\" UUID,\\n \\"assessment_json\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"request_key":{"type":"TEXT","notNull":false,"unique":false},"request_digest":{"type":"TEXT","notNull":false,"unique":false},"kind":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"source_revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"decision_reason":{"type":"TEXT","notNull":false,"unique":false},"supersedes_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"assessment_json":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_assessment_revisions_tenant_id_attempt_id_idx","columns":["tenant_id","attempt_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_assessment_revisions_slug_context_idx","columns":["slug","context"]},{"name":"workbook_assessment_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_assessment_revisions_learner_id_idx","columns":["learner_id"]},{"name":"workbook_assessment_revisions_attempt_id_idx","columns":["attempt_id"]},{"name":"workbook_assessment_revisions_source_revision_id_idx","columns":["source_revision_id"]},{"name":"workbook_assessment_revisions_supersedes_id_idx","columns":["supersedes_id"]}],"version":"94b2bd33"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookFeedbackRelease":{"name":"workbookfeedbackrelease","className":"WorkbookFeedbackRelease","qualifiedName":"@happyvertical/smrt-education:WorkbookFeedbackRelease","collection":"workbookfeedbackreleases","description":"Education-owned private workbook record. Mutations go through WorkbookService.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"attemptId":{"type":"foreignKey","required":true,"related":"WorkbookAttempt","_meta":{"required":true}},"revisionId":{"type":"foreignKey","required":true,"related":"WorkbookAssessmentRevision","_meta":{"required":true}},"expectedHeadId":{"type":"foreignKey","required":false,"related":"WorkbookAssessmentRevision","_meta":{"nullable":true}},"requestKey":{"type":"text","required":false},"actorUserId":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbook_feedback_releases","conflictColumns":["tenant_id","attempt_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookFeedbackRelease","collectionExportName":"WorkbookFeedbackReleaseCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"attemptId","rule":"required","fieldType":"foreignKey"},{"field":"revisionId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"workbook_feedback_releases","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_feedback_releases\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"attempt_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"expected_head_id\\" UUID,\\n \\"request_key\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"expected_head_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"request_key":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_feedback_releases_tenant_id_attempt_id_idx","columns":["tenant_id","attempt_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_feedback_releases_slug_context_idx","columns":["slug","context"]},{"name":"workbook_feedback_releases_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_feedback_releases_learner_id_idx","columns":["learner_id"]},{"name":"workbook_feedback_releases_attempt_id_idx","columns":["attempt_id"]},{"name":"workbook_feedback_releases_revision_id_idx","columns":["revision_id"]},{"name":"workbook_feedback_releases_expected_head_id_idx","columns":["expected_head_id"]}],"version":"ebe23baf"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookFeedbackReleaseCollection":{"name":"workbookfeedbackreleasecollection","className":"WorkbookFeedbackReleaseCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookFeedbackReleaseCollection","collection":"workbookfeedbackreleases","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_feedback_releases","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookFeedbackRelease","exportName":"WorkbookFeedbackReleaseCollection","collectionExportName":"WorkbookFeedbackReleaseCollectionCollection","schema":{"tableName":"workbook_feedback_releases","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_feedback_releases\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"attempt_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"expected_head_id\\" UUID,\\n \\"request_key\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"expected_head_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"request_key":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_feedback_releases_tenant_id_attempt_id_idx","columns":["tenant_id","attempt_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_feedback_releases_slug_context_idx","columns":["slug","context"]},{"name":"workbook_feedback_releases_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_feedback_releases_learner_id_idx","columns":["learner_id"]},{"name":"workbook_feedback_releases_attempt_id_idx","columns":["attempt_id"]},{"name":"workbook_feedback_releases_revision_id_idx","columns":["revision_id"]},{"name":"workbook_feedback_releases_expected_head_id_idx","columns":["expected_head_id"]}],"version":"ebe23baf"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookFeedbackDelivery":{"name":"workbookfeedbackdelivery","className":"WorkbookFeedbackDelivery","qualifiedName":"@happyvertical/smrt-education:WorkbookFeedbackDelivery","collection":"workbookfeedbackdeliveries","description":"Authenticated delivery acknowledgment; this does not assert comprehension.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"attemptId":{"type":"foreignKey","required":true,"related":"WorkbookAttempt","_meta":{"required":true}},"revisionId":{"type":"foreignKey","required":true,"related":"WorkbookAssessmentRevision","_meta":{"required":true}},"actorUserId":{"type":"text","required":false},"requestKey":{"type":"text","required":false},"recordedAt":{"type":"text","required":false}},"methods":{"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbook_feedback_deliveries","conflictColumns":["tenant_id","attempt_id","actor_user_id","revision_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookFeedbackDelivery","collectionExportName":"WorkbookFeedbackDeliveryCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"attemptId","rule":"required","fieldType":"foreignKey"},{"field":"revisionId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"workbook_feedback_deliveries","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_feedback_deliveries\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"attempt_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"actor_user_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_feedback_deliveries_tenant_id_attempt_id_idx","columns":["tenant_id","attempt_id","actor_user_id","revision_id"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_feedback_deliveries_slug_context_idx","columns":["slug","context"]},{"name":"workbook_feedback_deliveries_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_feedback_deliveries_learner_id_idx","columns":["learner_id"]},{"name":"workbook_feedback_deliveries_attempt_id_idx","columns":["attempt_id"]},{"name":"workbook_feedback_deliveries_revision_id_idx","columns":["revision_id"]}],"version":"37bfd434"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookFeedbackDeliveryCollection":{"name":"workbookfeedbackdeliverycollection","className":"WorkbookFeedbackDeliveryCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookFeedbackDeliveryCollection","collection":"workbookfeedbackdeliveries","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_feedback_deliveries","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookFeedbackDelivery","exportName":"WorkbookFeedbackDeliveryCollection","collectionExportName":"WorkbookFeedbackDeliveryCollectionCollection","schema":{"tableName":"workbook_feedback_deliveries","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_feedback_deliveries\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"attempt_id\\" UUID NOT NULL,\\n \\"revision_id\\" UUID NOT NULL,\\n \\"actor_user_id\\" TEXT,\\n \\"request_key\\" TEXT,\\n \\"recorded_at\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"attempt_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_attempts","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"revision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_assessment_revisions","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"request_key":{"type":"TEXT","notNull":false,"unique":false},"recorded_at":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_feedback_deliveries_tenant_id_attempt_id_idx","columns":["tenant_id","attempt_id","actor_user_id","revision_id"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_feedback_deliveries_slug_context_idx","columns":["slug","context"]},{"name":"workbook_feedback_deliveries_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_feedback_deliveries_learner_id_idx","columns":["learner_id"]},{"name":"workbook_feedback_deliveries_attempt_id_idx","columns":["attempt_id"]},{"name":"workbook_feedback_deliveries_revision_id_idx","columns":["revision_id"]}],"version":"37bfd434"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookPhotoIntake":{"name":"workbookphotointake","className":"WorkbookPhotoIntake","qualifiedName":"@happyvertical/smrt-education:WorkbookPhotoIntake","collection":"workbookphotointakes","description":"Durable receipt before any course, enrollment or activity exists.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-photo-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"familyIntakeId":{"type":"foreignKey","required":false,"related":"FamilyIntake"},"itemId":{"type":"text","required":false},"actorUserId":{"type":"text","required":false},"contentDigest":{"type":"text","required":false}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbook_photo_intakes","conflictColumns":["tenant_id","item_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookPhotoIntake","collectionExportName":"WorkbookPhotoIntakeCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"workbook_photo_intakes","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_photo_intakes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"family_intake_id\\" UUID,\\n \\"item_id\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"content_digest\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"family_intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"family_intakes","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"item_id":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"content_digest":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_photo_intakes_tenant_id_item_id_idx","columns":["tenant_id","item_id"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_photo_intakes_slug_context_idx","columns":["slug","context"]},{"name":"workbook_photo_intakes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_photo_intakes_learner_id_idx","columns":["learner_id"]},{"name":"workbook_photo_intakes_family_intake_id_idx","columns":["family_intake_id"]}],"version":"288020f4"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookPhotoIntakeCollection":{"name":"workbookphotointakecollection","className":"WorkbookPhotoIntakeCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookPhotoIntakeCollection","collection":"workbookphotointakes","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-photo-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_photo_intakes","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookPhotoIntake","exportName":"WorkbookPhotoIntakeCollection","collectionExportName":"WorkbookPhotoIntakeCollectionCollection","schema":{"tableName":"workbook_photo_intakes","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_photo_intakes\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"family_intake_id\\" UUID,\\n \\"item_id\\" TEXT,\\n \\"actor_user_id\\" TEXT,\\n \\"content_digest\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"family_intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":false,"unique":false,"foreignKey":{"table":"family_intakes","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"item_id":{"type":"TEXT","notNull":false,"unique":false},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"content_digest":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_photo_intakes_tenant_id_item_id_idx","columns":["tenant_id","item_id"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_photo_intakes_slug_context_idx","columns":["slug","context"]},{"name":"workbook_photo_intakes_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_photo_intakes_learner_id_idx","columns":["learner_id"]},{"name":"workbook_photo_intakes_family_intake_id_idx","columns":["family_intake_id"]}],"version":"288020f4"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookPhotoAsset":{"name":"workbookphotoasset","className":"WorkbookPhotoAsset","qualifiedName":"@happyvertical/smrt-education:WorkbookPhotoAsset","collection":"workbookphotoassets","description":"Sole owner join for original photo intake files.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-photo-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"intakeId":{"type":"foreignKey","required":true,"related":"WorkbookPhotoIntake","_meta":{"required":true}},"assetId":{"type":"crossPackageRef","required":false,"related":"@happyvertical/smrt-assets:Asset"},"name":{"type":"text","required":false},"mimeType":{"type":"text","required":false},"sha256":{"type":"text","required":false},"position":{"type":"integer","required":true,"default":0}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbook_photo_assets","conflictColumns":["tenant_id","intake_id","asset_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookPhotoAsset","collectionExportName":"WorkbookPhotoAssetCollection","displayLabelField":"name","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"intakeId","rule":"required","fieldType":"foreignKey"},{"field":"position","rule":"required","fieldType":"integer"}],"schema":{"tableName":"workbook_photo_assets","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_photo_assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"intake_id\\" UUID NOT NULL,\\n \\"asset_id\\" UUID,\\n \\"name\\" TEXT,\\n \\"mime_type\\" TEXT,\\n \\"sha256\\" TEXT,\\n \\"position\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_photo_intakes","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"mime_type":{"type":"TEXT","notNull":false,"unique":false},"sha256":{"type":"TEXT","notNull":false,"unique":false},"position":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"workbook_photo_assets_tenant_id_intake_id_idx","columns":["tenant_id","intake_id","asset_id"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_photo_assets_slug_context_idx","columns":["slug","context"]},{"name":"workbook_photo_assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_photo_assets_learner_id_idx","columns":["learner_id"]},{"name":"workbook_photo_assets_intake_id_idx","columns":["intake_id"]},{"name":"workbook_photo_assets_asset_id_idx","columns":["asset_id"]}],"version":"9d49acb2"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookPhotoAssetCollection":{"name":"workbookphotoassetcollection","className":"WorkbookPhotoAssetCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookPhotoAssetCollection","collection":"workbookphotoassets","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-photo-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_photo_assets","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookPhotoAsset","exportName":"WorkbookPhotoAssetCollection","collectionExportName":"WorkbookPhotoAssetCollectionCollection","schema":{"tableName":"workbook_photo_assets","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_photo_assets\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"intake_id\\" UUID NOT NULL,\\n \\"asset_id\\" UUID,\\n \\"name\\" TEXT,\\n \\"mime_type\\" TEXT,\\n \\"sha256\\" TEXT,\\n \\"position\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_photo_intakes","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"asset_id":{"type":"UUID","referenceKind":"crossPackageRef","notNull":false,"unique":false},"name":{"type":"TEXT","notNull":false,"unique":false},"mime_type":{"type":"TEXT","notNull":false,"unique":false},"sha256":{"type":"TEXT","notNull":false,"unique":false},"position":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"workbook_photo_assets_tenant_id_intake_id_idx","columns":["tenant_id","intake_id","asset_id"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_photo_assets_slug_context_idx","columns":["slug","context"]},{"name":"workbook_photo_assets_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_photo_assets_learner_id_idx","columns":["learner_id"]},{"name":"workbook_photo_assets_intake_id_idx","columns":["intake_id"]},{"name":"workbook_photo_assets_asset_id_idx","columns":["asset_id"]}],"version":"9d49acb2"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookPhotoDecision":{"name":"workbookphotodecision","className":"WorkbookPhotoDecision","qualifiedName":"@happyvertical/smrt-education:WorkbookPhotoDecision","collection":"workbookphotodecisions","description":"Immutable provider/guardian/capture decision, retaining provenance and retry key.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-photo-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"intakeId":{"type":"foreignKey","required":true,"related":"WorkbookPhotoIntake","_meta":{"required":true}},"requestKey":{"type":"text","required":false},"sequence":{"type":"integer","required":true,"default":0},"actorUserId":{"type":"text","required":false},"bodyJson":{"type":"text","required":false,"_meta":{}}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbook_photo_decisions","conflictColumns":["tenant_id","intake_id","request_key"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookPhotoDecision","collectionExportName":"WorkbookPhotoDecisionCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"intakeId","rule":"required","fieldType":"foreignKey"},{"field":"sequence","rule":"required","fieldType":"integer"}],"schema":{"tableName":"workbook_photo_decisions","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_photo_decisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"intake_id\\" UUID NOT NULL,\\n \\"request_key\\" TEXT,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 0,\\n \\"actor_user_id\\" TEXT,\\n \\"body_json\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_photo_intakes","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"request_key":{"type":"TEXT","notNull":false,"unique":false},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"body_json":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_photo_decisions_tenant_id_intake_id_idx","columns":["tenant_id","intake_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_photo_decisions_slug_context_idx","columns":["slug","context"]},{"name":"workbook_photo_decisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_photo_decisions_learner_id_idx","columns":["learner_id"]},{"name":"workbook_photo_decisions_intake_id_idx","columns":["intake_id"]}],"version":"4c8b4e5f"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookPhotoDecisionCollection":{"name":"workbookphotodecisioncollection","className":"WorkbookPhotoDecisionCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookPhotoDecisionCollection","collection":"workbookphotodecisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-photo-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_photo_decisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookPhotoDecision","exportName":"WorkbookPhotoDecisionCollection","collectionExportName":"WorkbookPhotoDecisionCollectionCollection","schema":{"tableName":"workbook_photo_decisions","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_photo_decisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"intake_id\\" UUID NOT NULL,\\n \\"request_key\\" TEXT,\\n \\"sequence\\" INTEGER NOT NULL DEFAULT 0,\\n \\"actor_user_id\\" TEXT,\\n \\"body_json\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"intake_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_photo_intakes","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"request_key":{"type":"TEXT","notNull":false,"unique":false},"sequence":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"actor_user_id":{"type":"TEXT","notNull":false,"unique":false},"body_json":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_photo_decisions_tenant_id_intake_id_idx","columns":["tenant_id","intake_id","request_key"],"unique":true,"nullsNotDistinct":true},{"name":"workbook_photo_decisions_slug_context_idx","columns":["slug","context"]},{"name":"workbook_photo_decisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_photo_decisions_learner_id_idx","columns":["learner_id"]},{"name":"workbook_photo_decisions_intake_id_idx","columns":["intake_id"]}],"version":"4c8b4e5f"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookContextRevision":{"name":"workbookcontextrevision","className":"WorkbookContextRevision","qualifiedName":"@happyvertical/smrt-education:WorkbookContextRevision","collection":"workbookcontextrevisions","description":"Versioned contextual metadata; never edits Workbook identity or learning evidence.","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-photo-models.ts","packageName":"@happyvertical/smrt-education","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"learnerId":{"type":"foreignKey","required":true,"related":"Learner","_meta":{"required":true}},"workbookId":{"type":"foreignKey","required":true,"related":"Workbook","_meta":{"required":true}},"decisionId":{"type":"foreignKey","required":true,"related":"WorkbookPhotoDecision","_meta":{"required":true}},"metadataJson":{"type":"text","required":false,"_meta":{}}},"methods":{"delete":{"name":"delete","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"save":{"name":"save","async":true,"parameters":[{"name":"options","type":"SmrtSaveOptions","optional":true}],"returnType":"Promise<this>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"workbook_context_revisions","conflictColumns":["tenant_id","decision_id"],"api":false,"mcp":false,"cli":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"WorkbookContextRevision","collectionExportName":"WorkbookContextRevisionCollection","validationRules":[{"field":"learnerId","rule":"required","fieldType":"foreignKey"},{"field":"workbookId","rule":"required","fieldType":"foreignKey"},{"field":"decisionId","rule":"required","fieldType":"foreignKey"}],"schema":{"tableName":"workbook_context_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_context_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"workbook_id\\" UUID NOT NULL,\\n \\"decision_id\\" UUID NOT NULL,\\n \\"metadata_json\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"workbook_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbooks","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"decision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_photo_decisions","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"metadata_json":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_context_revisions_tenant_id_decision_id_idx","columns":["tenant_id","decision_id"],"unique":true},{"name":"workbook_context_revisions_slug_context_idx","columns":["slug","context"]},{"name":"workbook_context_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_context_revisions_learner_id_idx","columns":["learner_id"]},{"name":"workbook_context_revisions_workbook_id_idx","columns":["workbook_id"]},{"name":"workbook_context_revisions_decision_id_idx","columns":["decision_id"]}],"version":"b1e8b4dc"},"importPath":"@happyvertical/smrt-education"},"@happyvertical/smrt-education:WorkbookContextRevisionCollection":{"name":"workbookcontextrevisioncollection","className":"WorkbookContextRevisionCollection","qualifiedName":"@happyvertical/smrt-education:WorkbookContextRevisionCollection","collection":"workbookcontextrevisions","filePath":"/home/runner/work/smrt/smrt/packages/education/src/workbook-photo-models.ts","packageName":"@happyvertical/smrt-education","fields":{},"methods":{},"decoratorConfig":{"tableName":"workbook_context_revisions","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"WorkbookContextRevision","exportName":"WorkbookContextRevisionCollection","collectionExportName":"WorkbookContextRevisionCollectionCollection","schema":{"tableName":"workbook_context_revisions","ddl":"CREATE TABLE IF NOT EXISTS \\"workbook_context_revisions\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"learner_id\\" UUID NOT NULL,\\n \\"workbook_id\\" UUID NOT NULL,\\n \\"decision_id\\" UUID NOT NULL,\\n \\"metadata_json\\" TEXT\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"learner_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"learners","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"workbook_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbooks","column":"id","onDelete":"NO ACTION","onUpdate":"CASCADE"}},"decision_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false,"foreignKey":{"table":"workbook_photo_decisions","column":"id","onDelete":"CASCADE","onUpdate":"CASCADE"}},"metadata_json":{"type":"TEXT","notNull":false,"unique":false}},"indexes":[{"name":"workbook_context_revisions_tenant_id_decision_id_idx","columns":["tenant_id","decision_id"],"unique":true},{"name":"workbook_context_revisions_slug_context_idx","columns":["slug","context"]},{"name":"workbook_context_revisions_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"workbook_context_revisions_learner_id_idx","columns":["learner_id"]},{"name":"workbook_context_revisions_workbook_id_idx","columns":["workbook_id"]},{"name":"workbook_context_revisions_decision_id_idx","columns":["decision_id"]}],"version":"b1e8b4dc"},"importPath":"@happyvertical/smrt-education"}},"moduleType":"smrt","recipes":[{"id":"education.catalog","className":"EducationCatalogRecipe","label":"Course catalog","summary":"Organize courses, sections, lessons, and their authorized learning materials.","synonyms":["courses","lessons","curriculum catalog"],"models":["@happyvertical/smrt-education:Course","@happyvertical/smrt-education:CourseSection","@happyvertical/smrt-education:Lesson","@happyvertical/smrt-education:LessonAsset"],"nav":[{"label":"Courses","model":"@happyvertical/smrt-education:Course","icon":"folder","description":"Courses available to this family.","noun":"course"}],"requires":[],"section":{"id":"education","label":"Education","icon":"folder","description":"Courses and lessons for learning."},"help":{"markdown":"# Course catalog\\n\\nManage courses, their sections, and lessons. Private family copies and answer\\nkeys remain visible only through the application\u2019s authorized catalog service.\\n","fieldRefs":[]},"runtime":"both","demo":{"mode":"server","reasons":["Needs a server because its package depends on @happyvertical/smrt-agents, @happyvertical/smrt-jobs, @happyvertical/smrt-profiles, @happyvertical/smrt-reports, @happyvertical/smrt-secrets, @happyvertical/smrt-tenancy, @happyvertical/smrt-users, which do not build for a browser (#3615, #3617, #3624, #3625, #3626, #3627)."]}},{"id":"education.learner","className":"EducationLearnerRecipe","label":"Learners","summary":"Plan learner curricula and retain enrollment-scoped progress.","synonyms":["learners","enrollments","learning progress"],"models":["@happyvertical/smrt-education:Learner","@happyvertical/smrt-education:Curriculum","@happyvertical/smrt-education:Enrollment","@happyvertical/smrt-education:LessonProgress"],"nav":[{"label":"Learners","model":"@happyvertical/smrt-education:Learner","icon":"users","description":"Authorized learners in this family.","noun":"learner"}],"requires":[],"section":{"id":"education","label":"Education","icon":"folder","description":"Courses and lessons for learning."},"help":{"markdown":"# Learners\\n\\nUse \`LearnerService\` in an authenticated exact-tenant context to read a learner,\\nplan a curriculum as an authorized guardian, enroll in a visible course, and\\nstart a lesson. Recipe metadata does not expose model CRUD. Hosts authenticate\\nusers, provision family membership, and validate guardian ProfileRelationship\\ntypes and effective terms. See \`agents/learner-service.md\` for the boundary.\\n","fieldRefs":[]},"runtime":"both","demo":{"mode":"server","reasons":["Needs a server because its package depends on @happyvertical/smrt-agents, @happyvertical/smrt-jobs, @happyvertical/smrt-profiles, @happyvertical/smrt-reports, @happyvertical/smrt-secrets, @happyvertical/smrt-tenancy, @happyvertical/smrt-users, which do not build for a browser (#3615, #3617, #3624, #3625, #3626, #3627)."]}},{"id":"education.supervisor","className":"EducationSupervisorRecipe","label":"Homeschool groups","summary":"Review parent-authorized learning work and retain revision-bound comments.","synonyms":["homeschool groups","supervisor review"],"models":["@happyvertical/smrt-education:EducationGroup","@happyvertical/smrt-education:GroupLearnerInvitation","@happyvertical/smrt-education:GroupLearnerMembership","@happyvertical/smrt-education:GroupLearnerRosterEntry","@happyvertical/smrt-education:GroupSharingPolicy","@happyvertical/smrt-education:GroupRevisionComment"],"nav":[{"label":"Groups","model":"@happyvertical/smrt-education:EducationGroup","icon":"users","description":"Groups and currently authorized shared learning work.","noun":"group"}],"requires":[],"section":{"id":"education","label":"Education","icon":"users","description":"Courses and lessons for learning."},"help":{"markdown":"# Homeschool groups\\n\\nCompose \`education.supervisor\` with the education learner workflow to manage\\nindependent group tenants and parent-approved links to existing family learners.\\nRecipe discovery supplies models and navigation metadata; it grants no generated\\nCRUD or family access.\\n\\nHosts use the closed group sharing services with a live session authorizer on\\nthe supplied database executor. Supervisors remain group members, never family\\nguardians. A parent must choose an explicit sharing policy when accepting a\\ntargeted invitation. Work, revisions, source bytes and comment attribution remain\\nfamily-owned after leaving a group.\\n\\nEvery roster, work, revision, media, comment and progress request must check\\ncurrent authority and policy. Serve media through the authorized reader and a\\nprivate, non-cacheable host response; never publish storage URLs. Saved parent\\ncomment visibility defaults to parent-only. Supervisor comments cannot grade or\\nchange learning evidence.\\n\\nSee the shipped \`agents/group-sharing.md\` contract for selectors, facet semantics,\\ntransaction requirements and migration expectations.\\n","fieldRefs":[]},"runtime":"both","demo":{"mode":"server","reasons":["Needs a server because its package depends on @happyvertical/smrt-agents, @happyvertical/smrt-jobs, @happyvertical/smrt-profiles, @happyvertical/smrt-reports, @happyvertical/smrt-secrets, @happyvertical/smrt-tenancy, @happyvertical/smrt-users, which do not build for a browser (#3615, #3617, #3624, #3625, #3626, #3627)."]}}],"smrtDependencies":["@happyvertical/smrt-assets","@happyvertical/smrt-core","@happyvertical/smrt-ingestion","@happyvertical/smrt-profiles","@happyvertical/smrt-tenancy","@happyvertical/smrt-users"],"browser":{"status":"server-only","issues":["#3615","#3617","#3624","#3625","#3626","#3627"],"via":["@happyvertical/smrt-agents","@happyvertical/smrt-jobs","@happyvertical/smrt-profiles","@happyvertical/smrt-reports","@happyvertical/smrt-secrets","@happyvertical/smrt-tenancy","@happyvertical/smrt-users"]},"stampsConstructors":true}`));
8
8
  //#endregion
9
9
  //#region src/catalog-capability.ts
10
10
  var CATALOG_REPRESENTATION_MEDIA_TYPES = {