@burdenoff/microfe-technospam 2026.1102.5 → 2026.1103.1

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.
Files changed (26) hide show
  1. package/dist/generated/wspace-types.d.ts +102 -5
  2. package/dist/generated/wspace-types.d.ts.map +1 -1
  3. package/dist/stories/fixtures/technospamFixtures.d.ts.map +1 -1
  4. package/dist/technospam/api/canonicalLearning.d.ts +26 -1
  5. package/dist/technospam/api/canonicalLearning.d.ts.map +1 -1
  6. package/dist/technospam/api/canonicalLearning.js +31 -21
  7. package/dist/technospam/api/canonicalLearning.js.map +1 -1
  8. package/dist/technospam/api/technospamApi.d.ts +69 -13
  9. package/dist/technospam/api/technospamApi.d.ts.map +1 -1
  10. package/dist/technospam/api/technospamApi.js +462 -375
  11. package/dist/technospam/api/technospamApi.js.map +1 -1
  12. package/dist/technospam/components/admin/AssessmentsAdminTab.js +1 -1
  13. package/dist/technospam/components/admin/AssessmentsAdminTab.js.map +1 -1
  14. package/dist/technospam/components/admin/EnterpriseIntegrationsTab.js +1 -1
  15. package/dist/technospam/components/admin/EnterpriseIntegrationsTab.js.map +1 -1
  16. package/dist/technospam/pages/AdminAdminDashboardPagePage.js +2 -2
  17. package/dist/technospam/pages/AdminAdminDashboardPagePage.js.map +1 -1
  18. package/dist/technospam/pages/AnalyticsAnalyticsPagePage.js +1 -1
  19. package/dist/technospam/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
  20. package/dist/technospam/pages/CoursesCourseDetailsPagePage.js +1 -1
  21. package/dist/technospam/pages/CoursesCourseDetailsPagePage.js.map +1 -1
  22. package/dist/technospam/pages/CoursesCoursesPagePage.js +1 -1
  23. package/dist/technospam/pages/CoursesCoursesPagePage.js.map +1 -1
  24. package/dist/technospam/pages/DashboardDashboardPagePage.js +1 -1
  25. package/dist/technospam/pages/DashboardDashboardPagePage.js.map +1 -1
  26. package/package.json +1 -1
@@ -100752,19 +100752,45 @@ export type Query = {
100752
100752
  tecAssessmentQuestionKey: Array<TecQuizQuestionKey>;
100753
100753
  /** Preview the cost of a session with a mentor before booking it -- does not create anything. Read access mirrors tecMentor (reading the mentor's rate). */
100754
100754
  tecCalculateSessionCost: TecSessionCostEstimate;
100755
+ /** One TechnoSpam certificate, by its Technospam id, for the instructor/admin view (replaces tecCertificate). Same "list-all" gate as tecCanonicalCertificates. Null for an id outside the caller's workspace. */
100756
+ tecCanonicalCertificate?: Maybe<BuiCertificate>;
100757
+ /** Instructor/admin view of every TechnoSpam certificate in the workspace as canonical Buildmyiq certificates (replaces tecListCertificates). Newest issue first; `courseId` is a Technospam course id. A learner reading their own certificates uses buiMyCertificates(source: TECHNOSPAM). */
100758
+ tecCanonicalCertificates: TecCanonicalCertificateConnection;
100759
+ /** One TechnoSpam course, by its Technospam id, as its canonical Buildmyiq course (replaces tecCourse). Null for an id outside the caller's workspace. */
100760
+ tecCanonicalCourse?: Maybe<BuiCourse>;
100761
+ /** The workspace's TechnoSpam course catalog as canonical Buildmyiq courses (replaces tecListCourses). Newest first. `status` and `level` filter like tecListCourses. */
100762
+ tecCanonicalCourses: TecCanonicalCourseConnection;
100763
+ /** One TechnoSpam enrollment, by its Technospam id, for the instructor/admin view (replaces tecEnrollment). Same "list-all" gate as tecCanonicalEnrollments. Null for an id outside the caller's workspace. */
100764
+ tecCanonicalEnrollment?: Maybe<BuiEnrollment>;
100765
+ /** Instructor/admin roster: every learner's TechnoSpam enrollments in the workspace as canonical Buildmyiq enrollments (replaces tecListEnrollments). `courseId` is a Technospam course id; startDate/endDate filter by when the learner enrolled (inclusive). Gated behind "list-all", which the plain Viewer role does not hold. A learner reading their own enrollments uses buiMyEnrollments(source: TECHNOSPAM). */
100766
+ tecCanonicalEnrollments: TecCanonicalEnrollmentConnection;
100767
+ /** One TechnoSpam lesson, by its Technospam id, as its canonical Buildmyiq lesson (replaces tecLesson). Null for an id outside the caller's workspace. */
100768
+ tecCanonicalLesson?: Maybe<BuiLesson>;
100769
+ /** The lessons of one TechnoSpam course (Technospam course id), in position order, as canonical Buildmyiq lessons (replaces tecListLessons). Lesson bodies, editor metadata and quiz questions ride on the technospam* overlay fields, which apply the TechnoSpam plan gate. */
100770
+ tecCanonicalLessons: TecCanonicalLessonConnection;
100755
100771
  /** BOFF-10480: compare up to `limit` (default 200, max 200) records of each kind in the calling workspace with their canonical Buildmyiq records. Read-only; the background parity check repairs drift on its own schedule. */
100756
100772
  tecCanonicalLmsParity: TecCanonicalParityReport;
100757
- /** A single certificate by id, for the instructor/admin view (BOFF-3863). Same "list-all" gating as tecListCertificates. A learner reading their own certificate must use buiMyCertificate instead. */
100773
+ /**
100774
+ * A single certificate by id, for the instructor/admin view (BOFF-3863). Same "list-all" gating as tecListCertificates. A learner reading their own certificate must use buiMyCertificate instead.
100775
+ * @deprecated Use tecCanonicalCertificate(id: <Technospam certificate id>), which returns the canonical BuiCertificate. Deprecated 2026-11-02 (BOFF-10566, OVL-24 phase 2d); removal no earlier than 2027-01-31.
100776
+ */
100758
100777
  tecCertificate?: Maybe<TecCertificate>;
100778
+ /** @deprecated Use tecCanonicalCourse(id: <Technospam course id>), which returns the canonical BuiCourse; the Technospam view is on BuiCourse.technospamCourse. Deprecated 2026-11-02 (BOFF-10566, OVL-24 phase 2d); removal no earlier than 2027-01-31. */
100759
100779
  tecCourse?: Maybe<TecCourse>;
100760
- /** A single enrollment by id, for the instructor/admin view (BOFF-3863). Gated behind "list-all" like tecListEnrollments, because it can return any learner's enrollment. A learner reading their own enrollment must use buiMyEnrollment instead. Returns null for an id outside the workspace. */
100780
+ /**
100781
+ * A single enrollment by id, for the instructor/admin view (BOFF-3863). Gated behind "list-all" like tecListEnrollments, because it can return any learner's enrollment. A learner reading their own enrollment must use buiMyEnrollment instead. Returns null for an id outside the workspace.
100782
+ * @deprecated Use tecCanonicalEnrollment(id: <Technospam enrollment id>), which returns the canonical BuiEnrollment. Deprecated 2026-11-02 (BOFF-10566, OVL-24 phase 2d); removal no earlier than 2027-01-31.
100783
+ */
100761
100784
  tecEnrollment?: Maybe<TecEnrollment>;
100762
100785
  /** Export the workspace's learner activity as xAPI statements (BOFF-4430): enrollments (registered), lesson completions (completed), course completions (completed), certificates (passed) and certificate revocations (voided). `since` is inclusive, `until` exclusive; `limit` defaults to 200 and is capped at 1000. Same "list-all" gate as tecListEnrollments, because it covers every learner in the workspace. */
100763
100786
  tecExportXapiStatements: TecXapiStatementPage;
100764
100787
  tecHackathon?: Maybe<TecHackathon>;
100765
100788
  /** Liveness/identity probe for the Technospam subgraph. */
100766
100789
  tecHealth: Scalars['String']['output'];
100767
- /** A single lesson by id (BOFF-3863). Same read gate as tecListLessons; premium-gated lesson content is still locked by the TecLesson field resolvers. Returns null for an id outside the caller's workspace. */
100790
+ /**
100791
+ * A single lesson by id (BOFF-3863). Same read gate as tecListLessons; premium-gated lesson content is still locked by the TecLesson field resolvers. Returns null for an id outside the caller's workspace.
100792
+ * @deprecated Use tecCanonicalLesson(id: <Technospam lesson id>), which returns the canonical BuiLesson; the Technospam view is on BuiLesson.technospamLesson, technospamContent, technospamStarterCode and technospamQuizQuestions. Deprecated 2026-11-02 (BOFF-10566, OVL-24 phase 2d); removal no earlier than 2027-01-31.
100793
+ */
100768
100794
  tecLesson?: Maybe<TecLesson>;
100769
100795
  /** Lesson-author view of a QUIZ lesson including the answer key (BOFF-4107). Gated on technospam-lesson update, the same permission that edits it, so a learner can never read the key. Empty for a lesson without a quiz. */
100770
100796
  tecLessonQuizKey: Array<TecQuizQuestionKey>;
@@ -100772,12 +100798,20 @@ export type Query = {
100772
100798
  tecListAssessmentAttempts: Array<TecAssessmentAttempt>;
100773
100799
  /** Assessments in the workspace, optionally for one course or status. */
100774
100800
  tecListAssessments: Array<TecAssessment>;
100775
- /** Cross-learner, instructor/admin view of certificates — same "list-all" gating as tecListEnrollments. A learner viewing their own certificates must use buiMyCertificates(source: TECHNOSPAM) instead. */
100801
+ /**
100802
+ * Cross-learner, instructor/admin view of certificates — same "list-all" gating as tecListEnrollments. A learner viewing their own certificates must use buiMyCertificates(source: TECHNOSPAM) instead.
100803
+ * @deprecated Use tecCanonicalCertificates (same filters and gate, cursor-paginated), which returns the canonical BuiCertificate records; the Technospam view is on BuiCertificate.technospamCertificate. Deprecated 2026-11-02 (BOFF-10566, OVL-24 phase 2d); removal no earlier than 2027-01-31.
100804
+ */
100776
100805
  tecListCertificates: Array<TecCertificate>;
100806
+ /** @deprecated Use tecCanonicalCourses, which returns the canonical BuiCourse records with the same technospam-course gate; the Technospam view is on BuiCourse.technospamCourse and technospamIsLocked. Deprecated 2026-11-02 (BOFF-10566, OVL-24 phase 2d); removal no earlier than 2027-01-31. */
100777
100807
  tecListCourses: TecCourseConnection;
100778
- /** startDate/endDate filter enrollments by createdAt (inclusive), used to power the analytics page's date-range picker. This is the cross-learner, instructor/admin view — it returns every learner's enrollments in the workspace (optionally filtered to one learnerId). Gated behind the "list-all" action, which is NOT granted to the plain Viewer role by default. A learner viewing their own enrollments must use buiMyEnrollments(source: TECHNOSPAM) instead. */
100808
+ /**
100809
+ * startDate/endDate filter enrollments by createdAt (inclusive), used to power the analytics page's date-range picker. This is the cross-learner, instructor/admin view — it returns every learner's enrollments in the workspace (optionally filtered to one learnerId). Gated behind the "list-all" action, which is NOT granted to the plain Viewer role by default. A learner viewing their own enrollments must use buiMyEnrollments(source: TECHNOSPAM) instead.
100810
+ * @deprecated Use tecCanonicalEnrollments (same arguments and gate), which returns the canonical BuiEnrollment records; the Technospam view is on BuiEnrollment.technospamEnrollment. Deprecated 2026-11-02 (BOFF-10566, OVL-24 phase 2d); removal no earlier than 2027-01-31.
100811
+ */
100779
100812
  tecListEnrollments: TecEnrollmentConnection;
100780
100813
  tecListHackathons: TecHackathonConnection;
100814
+ /** @deprecated Use tecCanonicalLessons(courseId: <Technospam course id>), which returns the canonical BuiLesson records; the Technospam view is on BuiLesson.technospamLesson and the other technospam* overlay fields. Deprecated 2026-11-02 (BOFF-10566, OVL-24 phase 2d); removal no earlier than 2027-01-31. */
100781
100815
  tecListLessons: TecLessonConnection;
100782
100816
  tecListMentors: TecMentorConnection;
100783
100817
  /** Cross-mentor admin/finance view of the payout ledger (e.g. for reconciling what every mentor is currently owed). Gated behind "list-all", which is NOT granted to the plain Viewer/Mentor role by default. */
@@ -113079,6 +113113,47 @@ export type QueryTecCalculateSessionCostArgs = {
113079
113113
  mentorId: Scalars['ID']['input'];
113080
113114
  };
113081
113115
  /** Base Query type with placeholder field. Extended by individual query files. */
113116
+ export type QueryTecCanonicalCertificateArgs = {
113117
+ id: Scalars['ID']['input'];
113118
+ };
113119
+ /** Base Query type with placeholder field. Extended by individual query files. */
113120
+ export type QueryTecCanonicalCertificatesArgs = {
113121
+ courseId?: InputMaybe<Scalars['ID']['input']>;
113122
+ learnerId?: InputMaybe<Scalars['ID']['input']>;
113123
+ pagination?: InputMaybe<PaginationInput>;
113124
+ };
113125
+ /** Base Query type with placeholder field. Extended by individual query files. */
113126
+ export type QueryTecCanonicalCourseArgs = {
113127
+ id: Scalars['ID']['input'];
113128
+ };
113129
+ /** Base Query type with placeholder field. Extended by individual query files. */
113130
+ export type QueryTecCanonicalCoursesArgs = {
113131
+ level?: InputMaybe<TecCourseLevel>;
113132
+ pagination?: InputMaybe<PaginationInput>;
113133
+ status?: InputMaybe<TecCourseStatus>;
113134
+ };
113135
+ /** Base Query type with placeholder field. Extended by individual query files. */
113136
+ export type QueryTecCanonicalEnrollmentArgs = {
113137
+ id: Scalars['ID']['input'];
113138
+ };
113139
+ /** Base Query type with placeholder field. Extended by individual query files. */
113140
+ export type QueryTecCanonicalEnrollmentsArgs = {
113141
+ courseId?: InputMaybe<Scalars['ID']['input']>;
113142
+ endDate?: InputMaybe<Scalars['DateTime']['input']>;
113143
+ learnerId?: InputMaybe<Scalars['ID']['input']>;
113144
+ pagination?: InputMaybe<PaginationInput>;
113145
+ startDate?: InputMaybe<Scalars['DateTime']['input']>;
113146
+ };
113147
+ /** Base Query type with placeholder field. Extended by individual query files. */
113148
+ export type QueryTecCanonicalLessonArgs = {
113149
+ id: Scalars['ID']['input'];
113150
+ };
113151
+ /** Base Query type with placeholder field. Extended by individual query files. */
113152
+ export type QueryTecCanonicalLessonsArgs = {
113153
+ courseId: Scalars['ID']['input'];
113154
+ pagination?: InputMaybe<PaginationInput>;
113155
+ };
113156
+ /** Base Query type with placeholder field. Extended by individual query files. */
113082
113157
  export type QueryTecCanonicalLmsParityArgs = {
113083
113158
  limit?: InputMaybe<Scalars['Int']['input']>;
113084
113159
  };
@@ -124974,6 +125049,26 @@ export type TecBookSessionInput = {
124974
125049
  scheduledAt: Scalars['DateTime']['input'];
124975
125050
  topic: Scalars['String']['input'];
124976
125051
  };
125052
+ export type TecCanonicalCertificateConnection = {
125053
+ __typename?: 'TecCanonicalCertificateConnection';
125054
+ items: Array<BuiCertificate>;
125055
+ pageInfo: TecPageInfo;
125056
+ };
125057
+ export type TecCanonicalCourseConnection = {
125058
+ __typename?: 'TecCanonicalCourseConnection';
125059
+ items: Array<BuiCourse>;
125060
+ pageInfo: TecPageInfo;
125061
+ };
125062
+ export type TecCanonicalEnrollmentConnection = {
125063
+ __typename?: 'TecCanonicalEnrollmentConnection';
125064
+ items: Array<BuiEnrollment>;
125065
+ pageInfo: TecPageInfo;
125066
+ };
125067
+ export type TecCanonicalLessonConnection = {
125068
+ __typename?: 'TecCanonicalLessonConnection';
125069
+ items: Array<BuiLesson>;
125070
+ pageInfo: TecPageInfo;
125071
+ };
124977
125072
  /** One Technospam LMS record whose canonical Buildmyiq record differs from it. */
124978
125073
  export type TecCanonicalParityMismatch = {
124979
125074
  __typename?: 'TecCanonicalParityMismatch';
@@ -125350,6 +125445,8 @@ export type TecLesson = {
125350
125445
  kind: TecLessonKind;
125351
125446
  /** INTERACTIVE lessons (BOFF-4107): language slug the runnable workspace executes, e.g. "python". Null for other kinds. */
125352
125447
  language?: Maybe<Scalars['String']['output']>;
125448
+ /** BOFF-10574: the calling learner's recorded score (percent) for this lesson when they completed it by passing its quiz; null for any other lesson or completion. Lets a SCORM launch report the score to the LMS again when a completed quiz lesson is relaunched. */
125449
+ myQuizScore?: Maybe<Scalars['Int']['output']>;
125353
125450
  position: Scalars['Int']['output'];
125354
125451
  /** QUIZ lessons: the questions, without the answer key (grading happens server-side in tecSubmitLessonQuiz). Empty when `isLocked`. */
125355
125452
  quizQuestions: Array<TecQuizQuestion>;