@timeback/core 0.1.2 → 0.1.3

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.
@@ -15,6 +15,7 @@ export * as OneRoster from '@timeback/oneroster/types';
15
15
  export * as Caliper from '@timeback/caliper/types';
16
16
  export * as Edubridge from '@timeback/edubridge/types';
17
17
  export * as Qti from '@timeback/qti/types';
18
+ export * as PowerPath from '@timeback/powerpath/types';
18
19
  /**
19
20
  * Supported Timeback platform implementations.
20
21
  * Derived from PLATFORMS constant in {@link @timeback/internal-constants.PLATFORMS}.
@@ -33,6 +34,7 @@ export interface EnvServiceUrls {
33
34
  caliper: string;
34
35
  edubridge: string;
35
36
  qti: string;
37
+ powerpath?: string;
36
38
  authUrl: string;
37
39
  }
38
40
  /**
@@ -73,6 +75,8 @@ export interface ServiceUrls {
73
75
  edubridge?: ServiceEndpoint;
74
76
  /** QTI API endpoint */
75
77
  qti?: ServiceEndpoint;
78
+ /** PowerPath API endpoint */
79
+ powerpath?: ServiceEndpoint;
76
80
  }
77
81
  /**
78
82
  * Environment mode: URLs derived from platform and environment.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -58,8 +58,15 @@ __export(exports_types4, {
58
58
  default: () => types_default3
59
59
  });
60
60
  var types_default3 = undefined;
61
+ // ../powerpath/dist/types.js
62
+ var exports_types5 = {};
63
+ __export(exports_types5, {
64
+ default: () => types_default4
65
+ });
66
+ var types_default4 = undefined;
61
67
  export {
62
68
  exports_types4 as Qti,
69
+ exports_types5 as PowerPath,
63
70
  exports_types as OneRoster,
64
71
  exports_types3 as Edubridge,
65
72
  exports_types2 as Caliper
package/dist/utils.js CHANGED
@@ -485,6 +485,9 @@ var BEYONDAI_PATHS = {
485
485
  },
486
486
  edubridge: {
487
487
  base: "/edubridge"
488
+ },
489
+ powerpath: {
490
+ base: "/powerpath"
488
491
  }
489
492
  };
490
493
  var LEARNWITHAI_PATHS = {
@@ -500,7 +503,8 @@ var LEARNWITHAI_PATHS = {
500
503
  gradebook: "/gradebook/1.0",
501
504
  resources: "/resources/1.0"
502
505
  },
503
- edubridge: null
506
+ edubridge: null,
507
+ powerpath: null
504
508
  };
505
509
  var PLATFORM_PATHS = {
506
510
  BEYOND_AI: BEYONDAI_PATHS,
@@ -520,7 +524,8 @@ function resolvePathProfiles(pathProfile, customPaths) {
520
524
  return {
521
525
  caliper: customPaths?.caliper ?? basePaths.caliper,
522
526
  oneroster: customPaths?.oneroster ?? basePaths.oneroster,
523
- edubridge: customPaths?.edubridge ?? basePaths.edubridge
527
+ edubridge: customPaths?.edubridge ?? basePaths.edubridge,
528
+ powerpath: customPaths?.powerpath ?? basePaths.powerpath
524
529
  };
525
530
  }
526
531
 
@@ -556,6 +561,10 @@ class TimebackProvider {
556
561
  baseUrl: platformEndpoints.api[env],
557
562
  authUrl: this.authUrl
558
563
  },
564
+ powerpath: {
565
+ baseUrl: platformEndpoints.api[env],
566
+ authUrl: this.authUrl
567
+ },
559
568
  caliper: {
560
569
  baseUrl: platformEndpoints.caliper[env],
561
570
  authUrl: this.authUrl
@@ -572,6 +581,7 @@ class TimebackProvider {
572
581
  this.endpoints = {
573
582
  oneroster: { baseUrl: config.baseUrl, authUrl: this.authUrl },
574
583
  edubridge: { baseUrl: config.baseUrl, authUrl: this.authUrl },
584
+ powerpath: { baseUrl: config.baseUrl, authUrl: this.authUrl },
575
585
  caliper: { baseUrl: config.baseUrl, authUrl: this.authUrl },
576
586
  qti: { baseUrl: config.baseUrl, authUrl: this.authUrl }
577
587
  };
@@ -14862,6 +14872,47 @@ var OneRosterUserRole = exports_external.enum([
14862
14872
  "teacher"
14863
14873
  ]);
14864
14874
  var EnrollmentRole = exports_external.enum(["administrator", "proctor", "student", "teacher"]);
14875
+ var ResourceType = exports_external.enum([
14876
+ "qti",
14877
+ "text",
14878
+ "audio",
14879
+ "video",
14880
+ "interactive",
14881
+ "visual",
14882
+ "course-material",
14883
+ "assessment-bank"
14884
+ ]);
14885
+ var QtiSubType = exports_external.enum(["qti-test", "qti-question", "qti-stimulus", "qti-test-bank"]);
14886
+ var CourseMaterialSubType = exports_external.enum(["unit", "course", "resource-collection"]);
14887
+ var QuestionType = exports_external.enum([
14888
+ "choice",
14889
+ "order",
14890
+ "associate",
14891
+ "match",
14892
+ "hotspot",
14893
+ "hottext",
14894
+ "select-point",
14895
+ "graphic-order",
14896
+ "graphic-associate",
14897
+ "graphic-gap-match",
14898
+ "text-entry",
14899
+ "extended-text",
14900
+ "inline-choice",
14901
+ "upload",
14902
+ "slider",
14903
+ "drawing",
14904
+ "media",
14905
+ "custom"
14906
+ ]);
14907
+ var Difficulty = exports_external.enum(["easy", "medium", "hard"]);
14908
+ var LearningObjectiveSetSchema = exports_external.array(exports_external.object({
14909
+ source: exports_external.string(),
14910
+ learningObjectiveIds: exports_external.array(exports_external.string())
14911
+ }));
14912
+ var FastFailConfigSchema = exports_external.object({
14913
+ consecutive_failures: exports_external.number().int().min(1).optional(),
14914
+ stagnation_limit: exports_external.number().int().min(1).optional()
14915
+ }).optional();
14865
14916
  var LessonType = exports_external.enum(["powerpath-100", "quiz", "test-out", "placement", "unit-test", "alpha-read-article"]).nullable();
14866
14917
  var IMSErrorResponse = exports_external.object({
14867
14918
  imsx_codeMajor: exports_external.enum(["failure", "success"]),
@@ -14937,7 +14988,11 @@ var ActivityCompletedInput = exports_external.object({
14937
14988
  eventTime: IsoDateTimeString.optional(),
14938
14989
  metricsId: exports_external.string().optional(),
14939
14990
  id: exports_external.string().optional(),
14940
- extensions: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
14991
+ extensions: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
14992
+ attempt: exports_external.number().int().min(1).optional(),
14993
+ generatedExtensions: exports_external.object({
14994
+ pctCompleteApp: exports_external.number().optional()
14995
+ }).loose().optional()
14941
14996
  }).strict();
14942
14997
  var TimeSpentInput = exports_external.object({
14943
14998
  actor: TimebackUser,
@@ -15052,16 +15107,59 @@ var CourseDefaults = exports_external.object({
15052
15107
  level: exports_external.string().optional(),
15053
15108
  metadata: CourseMetadata.optional()
15054
15109
  });
15110
+ var CourseEnvOverrides = exports_external.object({
15111
+ level: exports_external.string().optional(),
15112
+ sensor: exports_external.string().url().optional(),
15113
+ launchUrl: exports_external.string().url().optional(),
15114
+ metadata: CourseMetadata.optional()
15115
+ });
15116
+ var CourseOverrides = exports_external.object({
15117
+ staging: CourseEnvOverrides.optional(),
15118
+ production: CourseEnvOverrides.optional()
15119
+ });
15055
15120
  var CourseConfig = CourseDefaults.extend({
15056
15121
  subject: TimebackSubject,
15057
- grade: TimebackGrade,
15058
- ids: CourseIds.nullable().optional()
15122
+ grade: TimebackGrade.optional(),
15123
+ ids: CourseIds.nullable().optional(),
15124
+ sensor: exports_external.string().url().optional(),
15125
+ launchUrl: exports_external.string().url().optional(),
15126
+ overrides: CourseOverrides.optional()
15059
15127
  });
15060
15128
  var TimebackConfig = exports_external.object({
15061
15129
  name: exports_external.string().min(1, "App name is required"),
15062
15130
  defaults: CourseDefaults.optional(),
15063
15131
  courses: exports_external.array(CourseConfig).min(1, "At least one course is required"),
15064
- sensors: exports_external.array(exports_external.string().url()).optional()
15132
+ sensor: exports_external.string().url().optional(),
15133
+ launchUrl: exports_external.string().url().optional()
15134
+ }).refine((config2) => {
15135
+ return config2.courses.every((c) => c.grade !== undefined || c.courseCode !== undefined);
15136
+ }, {
15137
+ message: "Each course must have either a grade or a courseCode",
15138
+ path: ["courses"]
15139
+ }).refine((config2) => {
15140
+ const withGrade = config2.courses.filter((c) => c.grade !== undefined);
15141
+ const keys = withGrade.map((c) => `${c.subject}:${c.grade}`);
15142
+ return new Set(keys).size === keys.length;
15143
+ }, {
15144
+ message: "Duplicate (subject, grade) pair found; each must be unique",
15145
+ path: ["courses"]
15146
+ }).refine((config2) => {
15147
+ const withCode = config2.courses.filter((c) => c.courseCode !== undefined);
15148
+ const codes = withCode.map((c) => c.courseCode);
15149
+ return new Set(codes).size === codes.length;
15150
+ }, {
15151
+ message: "Duplicate courseCode found; each must be unique",
15152
+ path: ["courses"]
15153
+ }).refine((config2) => {
15154
+ return config2.courses.every((c) => c.sensor !== undefined || config2.sensor !== undefined);
15155
+ }, {
15156
+ message: "Each course must have an effective sensor; set a top-level `sensor` or per-course `sensor`",
15157
+ path: ["courses"]
15158
+ }).refine((config2) => {
15159
+ return config2.courses.every((c) => c.launchUrl !== undefined || config2.launchUrl !== undefined);
15160
+ }, {
15161
+ message: "Each course must have an effective launchUrl; set a top-level `launchUrl` or per-course `launchUrl`",
15162
+ path: ["courses"]
15065
15163
  });
15066
15164
  var EdubridgeDateString = exports_external.union([IsoDateString, IsoDateTimeString]);
15067
15165
  var EduBridgeEnrollment = exports_external.object({
@@ -15310,20 +15408,45 @@ var OneRosterScoreScaleCreateInput = exports_external.object({
15310
15408
  }).strict();
15311
15409
  var OneRosterAssessmentLineItemCreateInput = exports_external.object({
15312
15410
  sourcedId: NonEmptyString2.optional(),
15411
+ status: Status.optional(),
15412
+ dateLastModified: IsoDateTimeString.optional(),
15313
15413
  title: NonEmptyString2.describe("title must be a non-empty string"),
15314
- class: Ref,
15315
- school: Ref,
15316
- category: Ref,
15317
- assignDate: OneRosterDateString,
15318
- dueDate: OneRosterDateString,
15319
- status: Status,
15414
+ description: exports_external.string().nullable().optional(),
15415
+ class: Ref.nullable().optional(),
15416
+ parentAssessmentLineItem: Ref.nullable().optional(),
15417
+ scoreScale: Ref.nullable().optional(),
15418
+ resultValueMin: exports_external.number().nullable().optional(),
15419
+ resultValueMax: exports_external.number().nullable().optional(),
15420
+ component: Ref.nullable().optional(),
15421
+ componentResource: Ref.nullable().optional(),
15422
+ learningObjectiveSet: exports_external.array(exports_external.object({
15423
+ source: exports_external.string(),
15424
+ learningObjectiveIds: exports_external.array(exports_external.string())
15425
+ })).optional().nullable(),
15426
+ course: Ref.nullable().optional(),
15320
15427
  metadata: Metadata
15321
15428
  }).strict();
15429
+ var LearningObjectiveResult = exports_external.object({
15430
+ learningObjectiveId: exports_external.string(),
15431
+ score: exports_external.number().optional(),
15432
+ textScore: exports_external.string().optional()
15433
+ });
15434
+ var LearningObjectiveScoreSetSchema = exports_external.array(exports_external.object({
15435
+ source: exports_external.string(),
15436
+ learningObjectiveResults: exports_external.array(LearningObjectiveResult)
15437
+ }));
15322
15438
  var OneRosterAssessmentResultCreateInput = exports_external.object({
15323
15439
  sourcedId: NonEmptyString2.optional(),
15324
- lineItem: Ref,
15440
+ status: Status.optional(),
15441
+ dateLastModified: IsoDateTimeString.optional(),
15442
+ metadata: Metadata,
15443
+ assessmentLineItem: Ref,
15325
15444
  student: Ref,
15326
- scoreDate: OneRosterDateString,
15445
+ score: exports_external.number().nullable().optional(),
15446
+ textScore: exports_external.string().nullable().optional(),
15447
+ scoreDate: exports_external.string().datetime(),
15448
+ scoreScale: Ref.nullable().optional(),
15449
+ scorePercentile: exports_external.number().nullable().optional(),
15327
15450
  scoreStatus: exports_external.enum([
15328
15451
  "exempt",
15329
15452
  "fully graded",
@@ -15331,9 +15454,12 @@ var OneRosterAssessmentResultCreateInput = exports_external.object({
15331
15454
  "partially graded",
15332
15455
  "submitted"
15333
15456
  ]),
15334
- score: exports_external.string().optional(),
15335
- status: Status,
15336
- metadata: Metadata
15457
+ comment: exports_external.string().nullable().optional(),
15458
+ learningObjectiveSet: LearningObjectiveScoreSetSchema.nullable().optional(),
15459
+ inProgress: exports_external.string().nullable().optional(),
15460
+ incomplete: exports_external.string().nullable().optional(),
15461
+ late: exports_external.string().nullable().optional(),
15462
+ missing: exports_external.string().nullable().optional()
15337
15463
  }).strict();
15338
15464
  var OneRosterOrgCreateInput = exports_external.object({
15339
15465
  sourcedId: NonEmptyString2.optional(),
@@ -15401,6 +15527,75 @@ var OneRosterCredentialInput = exports_external.object({
15401
15527
  var OneRosterDemographicsCreateInput = exports_external.object({
15402
15528
  sourcedId: NonEmptyString2.describe("sourcedId must be a non-empty string")
15403
15529
  }).loose();
15530
+ var CommonResourceMetadataSchema = exports_external.object({
15531
+ type: ResourceType,
15532
+ subject: TimebackSubject.nullish(),
15533
+ grades: exports_external.array(TimebackGrade).nullish(),
15534
+ language: exports_external.string().nullish(),
15535
+ xp: exports_external.number().nullish(),
15536
+ url: exports_external.url().nullish(),
15537
+ keywords: exports_external.array(exports_external.string()).nullish(),
15538
+ learningObjectiveSet: LearningObjectiveSetSchema.nullish(),
15539
+ lessonType: exports_external.string().nullish()
15540
+ }).passthrough();
15541
+ var QtiMetadataSchema = CommonResourceMetadataSchema.extend({
15542
+ type: exports_external.literal("qti"),
15543
+ subType: QtiSubType,
15544
+ questionType: QuestionType.optional(),
15545
+ difficulty: Difficulty.optional()
15546
+ });
15547
+ var TextMetadataSchema = CommonResourceMetadataSchema.extend({
15548
+ type: exports_external.literal("text"),
15549
+ format: exports_external.string(),
15550
+ author: exports_external.string().optional(),
15551
+ pageCount: exports_external.number().optional()
15552
+ });
15553
+ var AudioMetadataSchema = CommonResourceMetadataSchema.extend({
15554
+ type: exports_external.literal("audio"),
15555
+ duration: exports_external.string().regex(/^\d{2}:\d{2}:\d{2}(\.\d{2})?$/).optional(),
15556
+ format: exports_external.string(),
15557
+ speaker: exports_external.string().optional()
15558
+ });
15559
+ var VideoMetadataSchema = CommonResourceMetadataSchema.extend({
15560
+ type: exports_external.literal("video"),
15561
+ duration: exports_external.string().regex(/^\d{2}:\d{2}:\d{2}(\.\d{2})?$/).optional(),
15562
+ captionsAvailable: exports_external.boolean().optional(),
15563
+ format: exports_external.string()
15564
+ });
15565
+ var InteractiveMetadataSchema = CommonResourceMetadataSchema.extend({
15566
+ type: exports_external.literal("interactive"),
15567
+ launchUrl: exports_external.url().optional(),
15568
+ toolProvider: exports_external.string().optional(),
15569
+ instructionalMethod: exports_external.string().optional(),
15570
+ courseIdOnFail: exports_external.string().nullable().optional(),
15571
+ fail_fast: FastFailConfigSchema
15572
+ });
15573
+ var VisualMetadataSchema = CommonResourceMetadataSchema.extend({
15574
+ type: exports_external.literal("visual"),
15575
+ format: exports_external.string(),
15576
+ resolution: exports_external.string().optional()
15577
+ });
15578
+ var CourseMaterialMetadataSchema = CommonResourceMetadataSchema.extend({
15579
+ type: exports_external.literal("course-material"),
15580
+ subType: CourseMaterialSubType,
15581
+ author: exports_external.string().optional(),
15582
+ format: exports_external.string(),
15583
+ instructionalMethod: exports_external.string().optional()
15584
+ });
15585
+ var AssessmentBankMetadataSchema = CommonResourceMetadataSchema.extend({
15586
+ type: exports_external.literal("assessment-bank"),
15587
+ resources: exports_external.array(exports_external.string())
15588
+ });
15589
+ var ResourceMetadataSchema = exports_external.discriminatedUnion("type", [
15590
+ QtiMetadataSchema,
15591
+ TextMetadataSchema,
15592
+ AudioMetadataSchema,
15593
+ VideoMetadataSchema,
15594
+ InteractiveMetadataSchema,
15595
+ VisualMetadataSchema,
15596
+ CourseMaterialMetadataSchema,
15597
+ AssessmentBankMetadataSchema
15598
+ ]);
15404
15599
  var OneRosterResourceCreateInput = exports_external.object({
15405
15600
  sourcedId: NonEmptyString2.optional(),
15406
15601
  title: NonEmptyString2.describe("title must be a non-empty string"),
@@ -15410,7 +15605,7 @@ var OneRosterResourceCreateInput = exports_external.object({
15410
15605
  vendorId: exports_external.string().optional(),
15411
15606
  applicationId: exports_external.string().optional(),
15412
15607
  status: Status.optional(),
15413
- metadata: Metadata
15608
+ metadata: ResourceMetadataSchema.nullable().optional()
15414
15609
  }).strict();
15415
15610
  var CourseStructureItem = exports_external.object({
15416
15611
  url: NonEmptyString2.describe("courseStructure.url must be a non-empty string"),
@@ -15435,6 +15630,267 @@ var OneRosterBulkResultItem = exports_external.object({
15435
15630
  student: Ref
15436
15631
  }).loose();
15437
15632
  var OneRosterBulkResultsInput = exports_external.array(OneRosterBulkResultItem).min(1, "results must have at least one item");
15633
+ var NonEmptyString3 = exports_external.string().trim().min(1);
15634
+ var ToolProvider = exports_external.enum(["edulastic", "mastery-track"]);
15635
+ var LessonTypeRequired = exports_external.enum([
15636
+ "powerpath-100",
15637
+ "quiz",
15638
+ "test-out",
15639
+ "placement",
15640
+ "unit-test",
15641
+ "alpha-read-article"
15642
+ ]);
15643
+ var GradeArray = exports_external.array(TimebackGrade);
15644
+ var ResourceMetadata = exports_external.record(exports_external.string(), exports_external.unknown()).optional();
15645
+ var ExternalTestBase = exports_external.object({
15646
+ courseId: NonEmptyString3,
15647
+ lessonTitle: NonEmptyString3.optional(),
15648
+ launchUrl: exports_external.url().optional(),
15649
+ toolProvider: ToolProvider,
15650
+ unitTitle: NonEmptyString3.optional(),
15651
+ courseComponentSourcedId: NonEmptyString3.optional(),
15652
+ vendorId: NonEmptyString3.optional(),
15653
+ description: NonEmptyString3.optional(),
15654
+ resourceMetadata: ResourceMetadata.nullable().optional(),
15655
+ grades: GradeArray
15656
+ });
15657
+ var ExternalTestOut = ExternalTestBase.extend({
15658
+ lessonType: exports_external.literal("test-out"),
15659
+ xp: exports_external.number()
15660
+ });
15661
+ var ExternalPlacement = ExternalTestBase.extend({
15662
+ lessonType: exports_external.literal("placement"),
15663
+ courseIdOnFail: NonEmptyString3.optional(),
15664
+ xp: exports_external.number().optional()
15665
+ });
15666
+ var InternalTestBase = exports_external.object({
15667
+ courseId: NonEmptyString3,
15668
+ lessonType: LessonTypeRequired,
15669
+ lessonTitle: NonEmptyString3.optional(),
15670
+ unitTitle: NonEmptyString3.optional(),
15671
+ courseComponentSourcedId: NonEmptyString3.optional(),
15672
+ resourceMetadata: ResourceMetadata.nullable().optional(),
15673
+ xp: exports_external.number().optional(),
15674
+ grades: GradeArray.optional(),
15675
+ courseIdOnFail: NonEmptyString3.optional()
15676
+ });
15677
+ var PowerPathCreateInternalTestInput = exports_external.union([
15678
+ InternalTestBase.extend({
15679
+ testType: exports_external.literal("qti"),
15680
+ qti: exports_external.object({
15681
+ url: exports_external.url(),
15682
+ title: NonEmptyString3.optional(),
15683
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15684
+ })
15685
+ }),
15686
+ InternalTestBase.extend({
15687
+ testType: exports_external.literal("assessment-bank"),
15688
+ assessmentBank: exports_external.object({
15689
+ resources: exports_external.array(exports_external.object({
15690
+ url: exports_external.url(),
15691
+ title: NonEmptyString3.optional(),
15692
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15693
+ }))
15694
+ })
15695
+ })
15696
+ ]);
15697
+ var PowerPathCreateNewAttemptInput = exports_external.object({
15698
+ student: NonEmptyString3,
15699
+ lesson: NonEmptyString3
15700
+ });
15701
+ var PowerPathFinalStudentAssessmentResponseInput = exports_external.object({
15702
+ student: NonEmptyString3,
15703
+ lesson: NonEmptyString3
15704
+ });
15705
+ var PowerPathLessonPlansCreateInput = exports_external.object({
15706
+ courseId: NonEmptyString3,
15707
+ userId: NonEmptyString3,
15708
+ classId: NonEmptyString3.optional()
15709
+ });
15710
+ var LessonPlanTarget = exports_external.object({
15711
+ type: exports_external.enum(["component", "resource"]),
15712
+ id: NonEmptyString3
15713
+ });
15714
+ var PowerPathLessonPlanOperationInput = exports_external.union([
15715
+ exports_external.object({
15716
+ type: exports_external.literal("set-skipped"),
15717
+ payload: exports_external.object({
15718
+ target: LessonPlanTarget,
15719
+ value: exports_external.boolean()
15720
+ })
15721
+ }),
15722
+ exports_external.object({
15723
+ type: exports_external.literal("add-custom-resource"),
15724
+ payload: exports_external.object({
15725
+ resource_id: NonEmptyString3,
15726
+ parent_component_id: NonEmptyString3,
15727
+ skipped: exports_external.boolean().optional()
15728
+ })
15729
+ }),
15730
+ exports_external.object({
15731
+ type: exports_external.literal("move-item-before"),
15732
+ payload: exports_external.object({
15733
+ target: LessonPlanTarget,
15734
+ reference_id: NonEmptyString3
15735
+ })
15736
+ }),
15737
+ exports_external.object({
15738
+ type: exports_external.literal("move-item-after"),
15739
+ payload: exports_external.object({
15740
+ target: LessonPlanTarget,
15741
+ reference_id: NonEmptyString3
15742
+ })
15743
+ }),
15744
+ exports_external.object({
15745
+ type: exports_external.literal("move-item-to-start"),
15746
+ payload: exports_external.object({
15747
+ target: LessonPlanTarget
15748
+ })
15749
+ }),
15750
+ exports_external.object({
15751
+ type: exports_external.literal("move-item-to-end"),
15752
+ payload: exports_external.object({
15753
+ target: LessonPlanTarget
15754
+ })
15755
+ }),
15756
+ exports_external.object({
15757
+ type: exports_external.literal("change-item-parent"),
15758
+ payload: exports_external.object({
15759
+ target: LessonPlanTarget,
15760
+ new_parent_id: NonEmptyString3,
15761
+ position: exports_external.enum(["start", "end"]).optional()
15762
+ })
15763
+ })
15764
+ ]);
15765
+ var PowerPathLessonPlanOperationsInput = exports_external.object({
15766
+ operation: exports_external.array(PowerPathLessonPlanOperationInput),
15767
+ reason: NonEmptyString3.optional()
15768
+ });
15769
+ var PowerPathLessonPlanUpdateStudentItemResponseInput = exports_external.object({
15770
+ studentId: NonEmptyString3,
15771
+ componentResourceId: NonEmptyString3,
15772
+ result: exports_external.object({
15773
+ status: exports_external.enum(["active", "tobedeleted"]),
15774
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
15775
+ score: exports_external.number().optional(),
15776
+ textScore: NonEmptyString3.optional(),
15777
+ scoreDate: NonEmptyString3,
15778
+ scorePercentile: exports_external.number().optional(),
15779
+ scoreStatus: ScoreStatus,
15780
+ comment: NonEmptyString3.optional(),
15781
+ learningObjectiveSet: exports_external.array(exports_external.object({
15782
+ source: NonEmptyString3,
15783
+ learningObjectiveResults: exports_external.array(exports_external.object({
15784
+ learningObjectiveId: NonEmptyString3,
15785
+ score: exports_external.number().optional(),
15786
+ textScore: NonEmptyString3.optional()
15787
+ }))
15788
+ })).optional(),
15789
+ inProgress: NonEmptyString3.optional(),
15790
+ incomplete: NonEmptyString3.optional(),
15791
+ late: NonEmptyString3.optional(),
15792
+ missing: NonEmptyString3.optional()
15793
+ })
15794
+ });
15795
+ var PowerPathMakeExternalTestAssignmentInput = exports_external.object({
15796
+ student: NonEmptyString3,
15797
+ lesson: NonEmptyString3,
15798
+ applicationName: NonEmptyString3.optional(),
15799
+ testId: NonEmptyString3.optional(),
15800
+ skipCourseEnrollment: exports_external.boolean().optional()
15801
+ });
15802
+ var PowerPathPlacementResetUserPlacementInput = exports_external.object({
15803
+ student: NonEmptyString3,
15804
+ subject: TimebackSubject
15805
+ });
15806
+ var PowerPathResetAttemptInput = exports_external.object({
15807
+ student: NonEmptyString3,
15808
+ lesson: NonEmptyString3
15809
+ });
15810
+ var PowerPathScreeningResetSessionInput = exports_external.object({
15811
+ userId: NonEmptyString3
15812
+ });
15813
+ var PowerPathScreeningAssignTestInput = exports_external.object({
15814
+ userId: NonEmptyString3,
15815
+ subject: exports_external.enum(["Math", "Reading", "Language", "Science"])
15816
+ });
15817
+ var PowerPathTestAssignmentsCreateInput = exports_external.object({
15818
+ student: NonEmptyString3,
15819
+ subject: TimebackSubject,
15820
+ grade: TimebackGrade,
15821
+ testName: NonEmptyString3.optional()
15822
+ });
15823
+ var PowerPathTestAssignmentsUpdateInput = exports_external.object({
15824
+ testName: NonEmptyString3
15825
+ });
15826
+ var PowerPathTestAssignmentItemInput = exports_external.object({
15827
+ student: NonEmptyString3,
15828
+ subject: TimebackSubject,
15829
+ grade: TimebackGrade,
15830
+ testName: NonEmptyString3.optional()
15831
+ });
15832
+ var PowerPathTestAssignmentsBulkInput = exports_external.object({
15833
+ items: exports_external.array(PowerPathTestAssignmentItemInput)
15834
+ });
15835
+ var PowerPathTestAssignmentsImportInput = exports_external.object({
15836
+ spreadsheetUrl: exports_external.url(),
15837
+ sheet: NonEmptyString3
15838
+ });
15839
+ var PowerPathTestAssignmentsListParams = exports_external.object({
15840
+ student: NonEmptyString3,
15841
+ status: exports_external.enum(["assigned", "in_progress", "completed", "failed", "expired", "cancelled"]).optional(),
15842
+ subject: NonEmptyString3.optional(),
15843
+ grade: TimebackGrade.optional(),
15844
+ limit: exports_external.number().int().positive().max(3000).optional(),
15845
+ offset: exports_external.number().int().nonnegative().optional()
15846
+ });
15847
+ var PowerPathTestAssignmentsAdminParams = exports_external.object({
15848
+ student: NonEmptyString3.optional(),
15849
+ status: exports_external.enum(["assigned", "in_progress", "completed", "failed", "expired", "cancelled"]).optional(),
15850
+ subject: NonEmptyString3.optional(),
15851
+ grade: TimebackGrade.optional(),
15852
+ limit: exports_external.number().int().positive().max(3000).optional(),
15853
+ offset: exports_external.number().int().nonnegative().optional()
15854
+ });
15855
+ var PowerPathUpdateStudentQuestionResponseInput = exports_external.object({
15856
+ student: NonEmptyString3,
15857
+ question: NonEmptyString3,
15858
+ response: exports_external.union([NonEmptyString3, exports_external.array(NonEmptyString3)]).optional(),
15859
+ responses: exports_external.record(exports_external.string(), exports_external.union([NonEmptyString3, exports_external.array(NonEmptyString3)])).optional(),
15860
+ lesson: NonEmptyString3
15861
+ });
15862
+ var PowerPathGetAssessmentProgressParams = exports_external.object({
15863
+ student: NonEmptyString3,
15864
+ lesson: NonEmptyString3,
15865
+ attempt: exports_external.number().int().positive().optional()
15866
+ });
15867
+ var PowerPathGetNextQuestionParams = exports_external.object({
15868
+ student: NonEmptyString3,
15869
+ lesson: NonEmptyString3
15870
+ });
15871
+ var PowerPathGetAttemptsParams = exports_external.object({
15872
+ student: NonEmptyString3,
15873
+ lesson: NonEmptyString3
15874
+ });
15875
+ var PowerPathTestOutParams = exports_external.object({
15876
+ student: NonEmptyString3,
15877
+ lesson: NonEmptyString3.optional(),
15878
+ finalized: exports_external.boolean().optional(),
15879
+ toolProvider: NonEmptyString3.optional(),
15880
+ attempt: exports_external.number().int().positive().optional()
15881
+ });
15882
+ var PowerPathImportExternalTestAssignmentResultsParams = exports_external.object({
15883
+ student: NonEmptyString3,
15884
+ lesson: NonEmptyString3,
15885
+ applicationName: NonEmptyString3.optional()
15886
+ });
15887
+ var PowerPathPlacementQueryParams = exports_external.object({
15888
+ student: NonEmptyString3,
15889
+ subject: TimebackSubject
15890
+ });
15891
+ var PowerPathSyllabusQueryParams = exports_external.object({
15892
+ status: exports_external.enum(["active", "tobedeleted"]).optional()
15893
+ });
15438
15894
  var QtiAssessmentItemType = exports_external.enum([
15439
15895
  "choice",
15440
15896
  "text-entry",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@timeback/core",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -30,12 +30,13 @@
30
30
  "test": "bun test --no-env-file unit.test.ts"
31
31
  },
32
32
  "devDependencies": {
33
- "@timeback/caliper": "0.1.1",
33
+ "@timeback/caliper": "0.1.2",
34
34
  "@timeback/edubridge": "0.1.1",
35
35
  "@timeback/internal-client-infra": "0.0.0",
36
36
  "@timeback/internal-constants": "0.0.0",
37
37
  "@timeback/internal-utils": "0.0.0",
38
- "@timeback/oneroster": "0.1.2",
38
+ "@timeback/oneroster": "0.1.3",
39
+ "@timeback/powerpath": "0.1.1",
39
40
  "@timeback/qti": "0.1.1",
40
41
  "@types/bun": "latest"
41
42
  },