@timeback/sdk 0.1.5 → 0.1.6

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.
@@ -15391,7 +15391,7 @@ var TimebackSubject = exports_external.enum([
15391
15391
  "Math",
15392
15392
  "None",
15393
15393
  "Other"
15394
- ]);
15394
+ ]).meta({ id: "TimebackSubject", description: "Subject area" });
15395
15395
  var TimebackGrade = exports_external.union([
15396
15396
  exports_external.literal(-1),
15397
15397
  exports_external.literal(0),
@@ -15408,7 +15408,10 @@ var TimebackGrade = exports_external.union([
15408
15408
  exports_external.literal(11),
15409
15409
  exports_external.literal(12),
15410
15410
  exports_external.literal(13)
15411
- ]);
15411
+ ]).meta({
15412
+ id: "TimebackGrade",
15413
+ description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
15414
+ });
15412
15415
  var ScoreStatus = exports_external.enum([
15413
15416
  "exempt",
15414
15417
  "fully graded",
@@ -15638,62 +15641,84 @@ var CaliperListEventsParams = exports_external.object({
15638
15641
  actorEmail: exports_external.email().optional()
15639
15642
  }).strict();
15640
15643
  var CourseIds = exports_external.object({
15641
- staging: exports_external.string().optional(),
15642
- production: exports_external.string().optional()
15643
- });
15644
- var CourseType = exports_external.enum(["base", "hole-filling", "optional"]);
15645
- var PublishStatus = exports_external.enum(["draft", "testing", "published", "deactivated"]);
15644
+ staging: exports_external.string().meta({ description: "Course ID in staging environment" }).optional(),
15645
+ production: exports_external.string().meta({ description: "Course ID in production environment" }).optional()
15646
+ }).meta({ id: "CourseIds", description: "Environment-specific course IDs (populated by sync)" });
15647
+ var CourseType = exports_external.enum(["base", "hole-filling", "optional"]).meta({ id: "CourseType", description: "Course classification type" });
15648
+ var PublishStatus = exports_external.enum(["draft", "testing", "published", "deactivated"]).meta({ id: "PublishStatus", description: "Course publication status" });
15646
15649
  var CourseGoals = exports_external.object({
15647
- dailyXp: exports_external.number().int().positive().optional(),
15648
- dailyLessons: exports_external.number().int().positive().optional(),
15649
- dailyActiveMinutes: exports_external.number().int().positive().optional(),
15650
- dailyAccuracy: exports_external.number().int().min(0).max(100).optional(),
15651
- dailyMasteredUnits: exports_external.number().int().positive().optional()
15652
- });
15650
+ dailyXp: exports_external.number().int().positive().meta({ description: "Target XP to earn per day" }).optional(),
15651
+ dailyLessons: exports_external.number().int().positive().meta({ description: "Target lessons to complete per day" }).optional(),
15652
+ dailyActiveMinutes: exports_external.number().int().positive().meta({ description: "Target active learning minutes per day" }).optional(),
15653
+ dailyAccuracy: exports_external.number().int().min(0).max(100).meta({ description: "Target accuracy percentage (0-100)" }).optional(),
15654
+ dailyMasteredUnits: exports_external.number().int().positive().meta({ description: "Target units to master per day" }).optional()
15655
+ }).meta({ id: "CourseGoals", description: "Daily learning goals for a course" });
15653
15656
  var CourseMetrics = exports_external.object({
15654
- totalXp: exports_external.number().int().positive().optional(),
15655
- totalLessons: exports_external.number().int().positive().optional(),
15656
- totalGrades: exports_external.number().int().positive().optional()
15657
- });
15657
+ totalXp: exports_external.number().int().positive().meta({ description: "Total XP available in the course" }).optional(),
15658
+ totalLessons: exports_external.number().int().positive().meta({ description: "Total number of lessons/activities" }).optional(),
15659
+ totalGrades: exports_external.number().int().positive().meta({ description: "Total grade levels covered" }).optional()
15660
+ }).meta({ id: "CourseMetrics", description: "Aggregate metrics for a course" });
15658
15661
  var CourseMetadata = exports_external.object({
15659
15662
  courseType: CourseType.optional(),
15660
- isSupplemental: exports_external.boolean().optional(),
15661
- isCustom: exports_external.boolean().optional(),
15663
+ isSupplemental: exports_external.boolean().meta({ description: "Whether this is supplemental to a base course" }).optional(),
15664
+ isCustom: exports_external.boolean().meta({ description: "Whether this is a custom course for an individual student" }).optional(),
15662
15665
  publishStatus: PublishStatus.optional(),
15663
- contactEmail: exports_external.email().optional(),
15664
- primaryApp: exports_external.string().optional(),
15666
+ contactEmail: exports_external.email().meta({ description: "Contact email for course issues" }).optional(),
15667
+ primaryApp: exports_external.string().meta({ description: "Primary application identifier" }).optional(),
15665
15668
  goals: CourseGoals.optional(),
15666
15669
  metrics: CourseMetrics.optional()
15667
- });
15670
+ }).meta({ id: "CourseMetadata", description: "Course metadata (matches API metadata object)" });
15668
15671
  var CourseDefaults = exports_external.object({
15669
- courseCode: exports_external.string().optional(),
15670
- level: exports_external.string().optional(),
15672
+ courseCode: exports_external.string().meta({ description: "Course code (e.g., 'MATH101')" }).optional(),
15673
+ level: exports_external.string().meta({ description: "Course level (e.g., 'AP', 'Honors')" }).optional(),
15671
15674
  metadata: CourseMetadata.optional()
15675
+ }).meta({
15676
+ id: "CourseDefaults",
15677
+ description: "Default properties that apply to all courses unless overridden"
15672
15678
  });
15673
15679
  var CourseEnvOverrides = exports_external.object({
15674
- level: exports_external.string().optional(),
15675
- sensor: exports_external.string().url().optional(),
15676
- launchUrl: exports_external.string().url().optional(),
15680
+ level: exports_external.string().meta({ description: "Course level for this environment" }).optional(),
15681
+ sensor: exports_external.url().meta({ description: "Caliper sensor endpoint URL for this environment" }).optional(),
15682
+ launchUrl: exports_external.url().meta({ description: "LTI launch URL for this environment" }).optional(),
15677
15683
  metadata: CourseMetadata.optional()
15684
+ }).meta({
15685
+ id: "CourseEnvOverrides",
15686
+ description: "Environment-specific course overrides (non-identity fields)"
15678
15687
  });
15679
15688
  var CourseOverrides = exports_external.object({
15680
- staging: CourseEnvOverrides.optional(),
15681
- production: CourseEnvOverrides.optional()
15682
- });
15689
+ staging: CourseEnvOverrides.meta({
15690
+ description: "Overrides for staging environment"
15691
+ }).optional(),
15692
+ production: CourseEnvOverrides.meta({
15693
+ description: "Overrides for production environment"
15694
+ }).optional()
15695
+ }).meta({ id: "CourseOverrides", description: "Per-environment course overrides" });
15683
15696
  var CourseConfig = CourseDefaults.extend({
15684
- subject: TimebackSubject,
15685
- grade: TimebackGrade.optional(),
15697
+ subject: TimebackSubject.meta({ description: "Subject area for this course" }),
15698
+ grade: TimebackGrade.meta({
15699
+ description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
15700
+ }).optional(),
15686
15701
  ids: CourseIds.nullable().optional(),
15687
- sensor: exports_external.string().url().optional(),
15688
- launchUrl: exports_external.string().url().optional(),
15702
+ sensor: exports_external.url().meta({ description: "Caliper sensor endpoint URL for this course" }).optional(),
15703
+ launchUrl: exports_external.url().meta({ description: "LTI launch URL for this course" }).optional(),
15689
15704
  overrides: CourseOverrides.optional()
15705
+ }).meta({
15706
+ id: "CourseConfig",
15707
+ description: "Configuration for a single course. Must have either grade or courseCode (or both)."
15690
15708
  });
15691
15709
  var TimebackConfig = exports_external.object({
15692
- name: exports_external.string().min(1, "App name is required"),
15693
- defaults: CourseDefaults.optional(),
15694
- courses: exports_external.array(CourseConfig).min(1, "At least one course is required"),
15695
- sensor: exports_external.string().url().optional(),
15696
- launchUrl: exports_external.string().url().optional()
15710
+ $schema: exports_external.string().meta({ description: "JSON Schema reference for editor support" }).optional(),
15711
+ name: exports_external.string().min(1, "App name is required").meta({ description: "Display name for your app" }),
15712
+ defaults: CourseDefaults.meta({
15713
+ description: "Default properties applied to all courses"
15714
+ }).optional(),
15715
+ courses: exports_external.array(CourseConfig).min(1, "At least one course is required").meta({ description: "Courses available in this app" }),
15716
+ sensor: exports_external.url().meta({ description: "Default Caliper sensor endpoint URL for all courses" }).optional(),
15717
+ launchUrl: exports_external.url().meta({ description: "Default LTI launch URL for all courses" }).optional()
15718
+ }).meta({
15719
+ id: "TimebackConfig",
15720
+ title: "Timeback Config",
15721
+ description: "Configuration schema for timeback.config.json files"
15697
15722
  }).refine((config2) => {
15698
15723
  return config2.courses.every((c) => c.grade !== undefined || c.courseCode !== undefined);
15699
15724
  }, {
@@ -31769,7 +31794,7 @@ var TimebackSubject2 = exports_external2.enum([
31769
31794
  "Math",
31770
31795
  "None",
31771
31796
  "Other"
31772
- ]);
31797
+ ]).meta({ id: "TimebackSubject", description: "Subject area" });
31773
31798
  var TimebackGrade2 = exports_external2.union([
31774
31799
  exports_external2.literal(-1),
31775
31800
  exports_external2.literal(0),
@@ -31786,7 +31811,10 @@ var TimebackGrade2 = exports_external2.union([
31786
31811
  exports_external2.literal(11),
31787
31812
  exports_external2.literal(12),
31788
31813
  exports_external2.literal(13)
31789
- ]);
31814
+ ]).meta({
31815
+ id: "TimebackGrade",
31816
+ description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
31817
+ });
31790
31818
  var ScoreStatus2 = exports_external2.enum([
31791
31819
  "exempt",
31792
31820
  "fully graded",
@@ -32016,62 +32044,84 @@ var CaliperListEventsParams2 = exports_external2.object({
32016
32044
  actorEmail: exports_external2.email().optional()
32017
32045
  }).strict();
32018
32046
  var CourseIds2 = exports_external2.object({
32019
- staging: exports_external2.string().optional(),
32020
- production: exports_external2.string().optional()
32021
- });
32022
- var CourseType2 = exports_external2.enum(["base", "hole-filling", "optional"]);
32023
- var PublishStatus2 = exports_external2.enum(["draft", "testing", "published", "deactivated"]);
32047
+ staging: exports_external2.string().meta({ description: "Course ID in staging environment" }).optional(),
32048
+ production: exports_external2.string().meta({ description: "Course ID in production environment" }).optional()
32049
+ }).meta({ id: "CourseIds", description: "Environment-specific course IDs (populated by sync)" });
32050
+ var CourseType2 = exports_external2.enum(["base", "hole-filling", "optional"]).meta({ id: "CourseType", description: "Course classification type" });
32051
+ var PublishStatus2 = exports_external2.enum(["draft", "testing", "published", "deactivated"]).meta({ id: "PublishStatus", description: "Course publication status" });
32024
32052
  var CourseGoals2 = exports_external2.object({
32025
- dailyXp: exports_external2.number().int().positive().optional(),
32026
- dailyLessons: exports_external2.number().int().positive().optional(),
32027
- dailyActiveMinutes: exports_external2.number().int().positive().optional(),
32028
- dailyAccuracy: exports_external2.number().int().min(0).max(100).optional(),
32029
- dailyMasteredUnits: exports_external2.number().int().positive().optional()
32030
- });
32053
+ dailyXp: exports_external2.number().int().positive().meta({ description: "Target XP to earn per day" }).optional(),
32054
+ dailyLessons: exports_external2.number().int().positive().meta({ description: "Target lessons to complete per day" }).optional(),
32055
+ dailyActiveMinutes: exports_external2.number().int().positive().meta({ description: "Target active learning minutes per day" }).optional(),
32056
+ dailyAccuracy: exports_external2.number().int().min(0).max(100).meta({ description: "Target accuracy percentage (0-100)" }).optional(),
32057
+ dailyMasteredUnits: exports_external2.number().int().positive().meta({ description: "Target units to master per day" }).optional()
32058
+ }).meta({ id: "CourseGoals", description: "Daily learning goals for a course" });
32031
32059
  var CourseMetrics2 = exports_external2.object({
32032
- totalXp: exports_external2.number().int().positive().optional(),
32033
- totalLessons: exports_external2.number().int().positive().optional(),
32034
- totalGrades: exports_external2.number().int().positive().optional()
32035
- });
32060
+ totalXp: exports_external2.number().int().positive().meta({ description: "Total XP available in the course" }).optional(),
32061
+ totalLessons: exports_external2.number().int().positive().meta({ description: "Total number of lessons/activities" }).optional(),
32062
+ totalGrades: exports_external2.number().int().positive().meta({ description: "Total grade levels covered" }).optional()
32063
+ }).meta({ id: "CourseMetrics", description: "Aggregate metrics for a course" });
32036
32064
  var CourseMetadata2 = exports_external2.object({
32037
32065
  courseType: CourseType2.optional(),
32038
- isSupplemental: exports_external2.boolean().optional(),
32039
- isCustom: exports_external2.boolean().optional(),
32066
+ isSupplemental: exports_external2.boolean().meta({ description: "Whether this is supplemental to a base course" }).optional(),
32067
+ isCustom: exports_external2.boolean().meta({ description: "Whether this is a custom course for an individual student" }).optional(),
32040
32068
  publishStatus: PublishStatus2.optional(),
32041
- contactEmail: exports_external2.email().optional(),
32042
- primaryApp: exports_external2.string().optional(),
32069
+ contactEmail: exports_external2.email().meta({ description: "Contact email for course issues" }).optional(),
32070
+ primaryApp: exports_external2.string().meta({ description: "Primary application identifier" }).optional(),
32043
32071
  goals: CourseGoals2.optional(),
32044
32072
  metrics: CourseMetrics2.optional()
32045
- });
32073
+ }).meta({ id: "CourseMetadata", description: "Course metadata (matches API metadata object)" });
32046
32074
  var CourseDefaults2 = exports_external2.object({
32047
- courseCode: exports_external2.string().optional(),
32048
- level: exports_external2.string().optional(),
32075
+ courseCode: exports_external2.string().meta({ description: "Course code (e.g., 'MATH101')" }).optional(),
32076
+ level: exports_external2.string().meta({ description: "Course level (e.g., 'AP', 'Honors')" }).optional(),
32049
32077
  metadata: CourseMetadata2.optional()
32078
+ }).meta({
32079
+ id: "CourseDefaults",
32080
+ description: "Default properties that apply to all courses unless overridden"
32050
32081
  });
32051
32082
  var CourseEnvOverrides2 = exports_external2.object({
32052
- level: exports_external2.string().optional(),
32053
- sensor: exports_external2.string().url().optional(),
32054
- launchUrl: exports_external2.string().url().optional(),
32083
+ level: exports_external2.string().meta({ description: "Course level for this environment" }).optional(),
32084
+ sensor: exports_external2.url().meta({ description: "Caliper sensor endpoint URL for this environment" }).optional(),
32085
+ launchUrl: exports_external2.url().meta({ description: "LTI launch URL for this environment" }).optional(),
32055
32086
  metadata: CourseMetadata2.optional()
32087
+ }).meta({
32088
+ id: "CourseEnvOverrides",
32089
+ description: "Environment-specific course overrides (non-identity fields)"
32056
32090
  });
32057
32091
  var CourseOverrides2 = exports_external2.object({
32058
- staging: CourseEnvOverrides2.optional(),
32059
- production: CourseEnvOverrides2.optional()
32060
- });
32092
+ staging: CourseEnvOverrides2.meta({
32093
+ description: "Overrides for staging environment"
32094
+ }).optional(),
32095
+ production: CourseEnvOverrides2.meta({
32096
+ description: "Overrides for production environment"
32097
+ }).optional()
32098
+ }).meta({ id: "CourseOverrides", description: "Per-environment course overrides" });
32061
32099
  var CourseConfig2 = CourseDefaults2.extend({
32062
- subject: TimebackSubject2,
32063
- grade: TimebackGrade2.optional(),
32100
+ subject: TimebackSubject2.meta({ description: "Subject area for this course" }),
32101
+ grade: TimebackGrade2.meta({
32102
+ description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
32103
+ }).optional(),
32064
32104
  ids: CourseIds2.nullable().optional(),
32065
- sensor: exports_external2.string().url().optional(),
32066
- launchUrl: exports_external2.string().url().optional(),
32105
+ sensor: exports_external2.url().meta({ description: "Caliper sensor endpoint URL for this course" }).optional(),
32106
+ launchUrl: exports_external2.url().meta({ description: "LTI launch URL for this course" }).optional(),
32067
32107
  overrides: CourseOverrides2.optional()
32108
+ }).meta({
32109
+ id: "CourseConfig",
32110
+ description: "Configuration for a single course. Must have either grade or courseCode (or both)."
32068
32111
  });
32069
32112
  var TimebackConfig2 = exports_external2.object({
32070
- name: exports_external2.string().min(1, "App name is required"),
32071
- defaults: CourseDefaults2.optional(),
32072
- courses: exports_external2.array(CourseConfig2).min(1, "At least one course is required"),
32073
- sensor: exports_external2.string().url().optional(),
32074
- launchUrl: exports_external2.string().url().optional()
32113
+ $schema: exports_external2.string().meta({ description: "JSON Schema reference for editor support" }).optional(),
32114
+ name: exports_external2.string().min(1, "App name is required").meta({ description: "Display name for your app" }),
32115
+ defaults: CourseDefaults2.meta({
32116
+ description: "Default properties applied to all courses"
32117
+ }).optional(),
32118
+ courses: exports_external2.array(CourseConfig2).min(1, "At least one course is required").meta({ description: "Courses available in this app" }),
32119
+ sensor: exports_external2.url().meta({ description: "Default Caliper sensor endpoint URL for all courses" }).optional(),
32120
+ launchUrl: exports_external2.url().meta({ description: "Default LTI launch URL for all courses" }).optional()
32121
+ }).meta({
32122
+ id: "TimebackConfig",
32123
+ title: "Timeback Config",
32124
+ description: "Configuration schema for timeback.config.json files"
32075
32125
  }).refine((config22) => {
32076
32126
  return config22.courses.every((c) => c.grade !== undefined || c.courseCode !== undefined);
32077
32127
  }, {
@@ -49177,7 +49227,7 @@ var TimebackSubject3 = exports_external3.enum([
49177
49227
  "Math",
49178
49228
  "None",
49179
49229
  "Other"
49180
- ]);
49230
+ ]).meta({ id: "TimebackSubject", description: "Subject area" });
49181
49231
  var TimebackGrade3 = exports_external3.union([
49182
49232
  exports_external3.literal(-1),
49183
49233
  exports_external3.literal(0),
@@ -49194,7 +49244,10 @@ var TimebackGrade3 = exports_external3.union([
49194
49244
  exports_external3.literal(11),
49195
49245
  exports_external3.literal(12),
49196
49246
  exports_external3.literal(13)
49197
- ]);
49247
+ ]).meta({
49248
+ id: "TimebackGrade",
49249
+ description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
49250
+ });
49198
49251
  var ScoreStatus3 = exports_external3.enum([
49199
49252
  "exempt",
49200
49253
  "fully graded",
@@ -49424,62 +49477,84 @@ var CaliperListEventsParams3 = exports_external3.object({
49424
49477
  actorEmail: exports_external3.email().optional()
49425
49478
  }).strict();
49426
49479
  var CourseIds3 = exports_external3.object({
49427
- staging: exports_external3.string().optional(),
49428
- production: exports_external3.string().optional()
49429
- });
49430
- var CourseType3 = exports_external3.enum(["base", "hole-filling", "optional"]);
49431
- var PublishStatus3 = exports_external3.enum(["draft", "testing", "published", "deactivated"]);
49480
+ staging: exports_external3.string().meta({ description: "Course ID in staging environment" }).optional(),
49481
+ production: exports_external3.string().meta({ description: "Course ID in production environment" }).optional()
49482
+ }).meta({ id: "CourseIds", description: "Environment-specific course IDs (populated by sync)" });
49483
+ var CourseType3 = exports_external3.enum(["base", "hole-filling", "optional"]).meta({ id: "CourseType", description: "Course classification type" });
49484
+ var PublishStatus3 = exports_external3.enum(["draft", "testing", "published", "deactivated"]).meta({ id: "PublishStatus", description: "Course publication status" });
49432
49485
  var CourseGoals3 = exports_external3.object({
49433
- dailyXp: exports_external3.number().int().positive().optional(),
49434
- dailyLessons: exports_external3.number().int().positive().optional(),
49435
- dailyActiveMinutes: exports_external3.number().int().positive().optional(),
49436
- dailyAccuracy: exports_external3.number().int().min(0).max(100).optional(),
49437
- dailyMasteredUnits: exports_external3.number().int().positive().optional()
49438
- });
49486
+ dailyXp: exports_external3.number().int().positive().meta({ description: "Target XP to earn per day" }).optional(),
49487
+ dailyLessons: exports_external3.number().int().positive().meta({ description: "Target lessons to complete per day" }).optional(),
49488
+ dailyActiveMinutes: exports_external3.number().int().positive().meta({ description: "Target active learning minutes per day" }).optional(),
49489
+ dailyAccuracy: exports_external3.number().int().min(0).max(100).meta({ description: "Target accuracy percentage (0-100)" }).optional(),
49490
+ dailyMasteredUnits: exports_external3.number().int().positive().meta({ description: "Target units to master per day" }).optional()
49491
+ }).meta({ id: "CourseGoals", description: "Daily learning goals for a course" });
49439
49492
  var CourseMetrics3 = exports_external3.object({
49440
- totalXp: exports_external3.number().int().positive().optional(),
49441
- totalLessons: exports_external3.number().int().positive().optional(),
49442
- totalGrades: exports_external3.number().int().positive().optional()
49443
- });
49493
+ totalXp: exports_external3.number().int().positive().meta({ description: "Total XP available in the course" }).optional(),
49494
+ totalLessons: exports_external3.number().int().positive().meta({ description: "Total number of lessons/activities" }).optional(),
49495
+ totalGrades: exports_external3.number().int().positive().meta({ description: "Total grade levels covered" }).optional()
49496
+ }).meta({ id: "CourseMetrics", description: "Aggregate metrics for a course" });
49444
49497
  var CourseMetadata3 = exports_external3.object({
49445
49498
  courseType: CourseType3.optional(),
49446
- isSupplemental: exports_external3.boolean().optional(),
49447
- isCustom: exports_external3.boolean().optional(),
49499
+ isSupplemental: exports_external3.boolean().meta({ description: "Whether this is supplemental to a base course" }).optional(),
49500
+ isCustom: exports_external3.boolean().meta({ description: "Whether this is a custom course for an individual student" }).optional(),
49448
49501
  publishStatus: PublishStatus3.optional(),
49449
- contactEmail: exports_external3.email().optional(),
49450
- primaryApp: exports_external3.string().optional(),
49502
+ contactEmail: exports_external3.email().meta({ description: "Contact email for course issues" }).optional(),
49503
+ primaryApp: exports_external3.string().meta({ description: "Primary application identifier" }).optional(),
49451
49504
  goals: CourseGoals3.optional(),
49452
49505
  metrics: CourseMetrics3.optional()
49453
- });
49506
+ }).meta({ id: "CourseMetadata", description: "Course metadata (matches API metadata object)" });
49454
49507
  var CourseDefaults3 = exports_external3.object({
49455
- courseCode: exports_external3.string().optional(),
49456
- level: exports_external3.string().optional(),
49508
+ courseCode: exports_external3.string().meta({ description: "Course code (e.g., 'MATH101')" }).optional(),
49509
+ level: exports_external3.string().meta({ description: "Course level (e.g., 'AP', 'Honors')" }).optional(),
49457
49510
  metadata: CourseMetadata3.optional()
49511
+ }).meta({
49512
+ id: "CourseDefaults",
49513
+ description: "Default properties that apply to all courses unless overridden"
49458
49514
  });
49459
49515
  var CourseEnvOverrides3 = exports_external3.object({
49460
- level: exports_external3.string().optional(),
49461
- sensor: exports_external3.string().url().optional(),
49462
- launchUrl: exports_external3.string().url().optional(),
49516
+ level: exports_external3.string().meta({ description: "Course level for this environment" }).optional(),
49517
+ sensor: exports_external3.url().meta({ description: "Caliper sensor endpoint URL for this environment" }).optional(),
49518
+ launchUrl: exports_external3.url().meta({ description: "LTI launch URL for this environment" }).optional(),
49463
49519
  metadata: CourseMetadata3.optional()
49520
+ }).meta({
49521
+ id: "CourseEnvOverrides",
49522
+ description: "Environment-specific course overrides (non-identity fields)"
49464
49523
  });
49465
49524
  var CourseOverrides3 = exports_external3.object({
49466
- staging: CourseEnvOverrides3.optional(),
49467
- production: CourseEnvOverrides3.optional()
49468
- });
49525
+ staging: CourseEnvOverrides3.meta({
49526
+ description: "Overrides for staging environment"
49527
+ }).optional(),
49528
+ production: CourseEnvOverrides3.meta({
49529
+ description: "Overrides for production environment"
49530
+ }).optional()
49531
+ }).meta({ id: "CourseOverrides", description: "Per-environment course overrides" });
49469
49532
  var CourseConfig3 = CourseDefaults3.extend({
49470
- subject: TimebackSubject3,
49471
- grade: TimebackGrade3.optional(),
49533
+ subject: TimebackSubject3.meta({ description: "Subject area for this course" }),
49534
+ grade: TimebackGrade3.meta({
49535
+ description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
49536
+ }).optional(),
49472
49537
  ids: CourseIds3.nullable().optional(),
49473
- sensor: exports_external3.string().url().optional(),
49474
- launchUrl: exports_external3.string().url().optional(),
49538
+ sensor: exports_external3.url().meta({ description: "Caliper sensor endpoint URL for this course" }).optional(),
49539
+ launchUrl: exports_external3.url().meta({ description: "LTI launch URL for this course" }).optional(),
49475
49540
  overrides: CourseOverrides3.optional()
49541
+ }).meta({
49542
+ id: "CourseConfig",
49543
+ description: "Configuration for a single course. Must have either grade or courseCode (or both)."
49476
49544
  });
49477
49545
  var TimebackConfig3 = exports_external3.object({
49478
- name: exports_external3.string().min(1, "App name is required"),
49479
- defaults: CourseDefaults3.optional(),
49480
- courses: exports_external3.array(CourseConfig3).min(1, "At least one course is required"),
49481
- sensor: exports_external3.string().url().optional(),
49482
- launchUrl: exports_external3.string().url().optional()
49546
+ $schema: exports_external3.string().meta({ description: "JSON Schema reference for editor support" }).optional(),
49547
+ name: exports_external3.string().min(1, "App name is required").meta({ description: "Display name for your app" }),
49548
+ defaults: CourseDefaults3.meta({
49549
+ description: "Default properties applied to all courses"
49550
+ }).optional(),
49551
+ courses: exports_external3.array(CourseConfig3).min(1, "At least one course is required").meta({ description: "Courses available in this app" }),
49552
+ sensor: exports_external3.url().meta({ description: "Default Caliper sensor endpoint URL for all courses" }).optional(),
49553
+ launchUrl: exports_external3.url().meta({ description: "Default LTI launch URL for all courses" }).optional()
49554
+ }).meta({
49555
+ id: "TimebackConfig",
49556
+ title: "Timeback Config",
49557
+ description: "Configuration schema for timeback.config.json files"
49483
49558
  }).refine((config22) => {
49484
49559
  return config22.courses.every((c) => c.grade !== undefined || c.courseCode !== undefined);
49485
49560
  }, {
@@ -66784,7 +66859,7 @@ var TimebackSubject4 = exports_external4.enum([
66784
66859
  "Math",
66785
66860
  "None",
66786
66861
  "Other"
66787
- ]);
66862
+ ]).meta({ id: "TimebackSubject", description: "Subject area" });
66788
66863
  var TimebackGrade4 = exports_external4.union([
66789
66864
  exports_external4.literal(-1),
66790
66865
  exports_external4.literal(0),
@@ -66801,7 +66876,10 @@ var TimebackGrade4 = exports_external4.union([
66801
66876
  exports_external4.literal(11),
66802
66877
  exports_external4.literal(12),
66803
66878
  exports_external4.literal(13)
66804
- ]);
66879
+ ]).meta({
66880
+ id: "TimebackGrade",
66881
+ description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
66882
+ });
66805
66883
  var ScoreStatus4 = exports_external4.enum([
66806
66884
  "exempt",
66807
66885
  "fully graded",
@@ -67031,62 +67109,84 @@ var CaliperListEventsParams4 = exports_external4.object({
67031
67109
  actorEmail: exports_external4.email().optional()
67032
67110
  }).strict();
67033
67111
  var CourseIds4 = exports_external4.object({
67034
- staging: exports_external4.string().optional(),
67035
- production: exports_external4.string().optional()
67036
- });
67037
- var CourseType4 = exports_external4.enum(["base", "hole-filling", "optional"]);
67038
- var PublishStatus4 = exports_external4.enum(["draft", "testing", "published", "deactivated"]);
67112
+ staging: exports_external4.string().meta({ description: "Course ID in staging environment" }).optional(),
67113
+ production: exports_external4.string().meta({ description: "Course ID in production environment" }).optional()
67114
+ }).meta({ id: "CourseIds", description: "Environment-specific course IDs (populated by sync)" });
67115
+ var CourseType4 = exports_external4.enum(["base", "hole-filling", "optional"]).meta({ id: "CourseType", description: "Course classification type" });
67116
+ var PublishStatus4 = exports_external4.enum(["draft", "testing", "published", "deactivated"]).meta({ id: "PublishStatus", description: "Course publication status" });
67039
67117
  var CourseGoals4 = exports_external4.object({
67040
- dailyXp: exports_external4.number().int().positive().optional(),
67041
- dailyLessons: exports_external4.number().int().positive().optional(),
67042
- dailyActiveMinutes: exports_external4.number().int().positive().optional(),
67043
- dailyAccuracy: exports_external4.number().int().min(0).max(100).optional(),
67044
- dailyMasteredUnits: exports_external4.number().int().positive().optional()
67045
- });
67118
+ dailyXp: exports_external4.number().int().positive().meta({ description: "Target XP to earn per day" }).optional(),
67119
+ dailyLessons: exports_external4.number().int().positive().meta({ description: "Target lessons to complete per day" }).optional(),
67120
+ dailyActiveMinutes: exports_external4.number().int().positive().meta({ description: "Target active learning minutes per day" }).optional(),
67121
+ dailyAccuracy: exports_external4.number().int().min(0).max(100).meta({ description: "Target accuracy percentage (0-100)" }).optional(),
67122
+ dailyMasteredUnits: exports_external4.number().int().positive().meta({ description: "Target units to master per day" }).optional()
67123
+ }).meta({ id: "CourseGoals", description: "Daily learning goals for a course" });
67046
67124
  var CourseMetrics4 = exports_external4.object({
67047
- totalXp: exports_external4.number().int().positive().optional(),
67048
- totalLessons: exports_external4.number().int().positive().optional(),
67049
- totalGrades: exports_external4.number().int().positive().optional()
67050
- });
67125
+ totalXp: exports_external4.number().int().positive().meta({ description: "Total XP available in the course" }).optional(),
67126
+ totalLessons: exports_external4.number().int().positive().meta({ description: "Total number of lessons/activities" }).optional(),
67127
+ totalGrades: exports_external4.number().int().positive().meta({ description: "Total grade levels covered" }).optional()
67128
+ }).meta({ id: "CourseMetrics", description: "Aggregate metrics for a course" });
67051
67129
  var CourseMetadata4 = exports_external4.object({
67052
67130
  courseType: CourseType4.optional(),
67053
- isSupplemental: exports_external4.boolean().optional(),
67054
- isCustom: exports_external4.boolean().optional(),
67131
+ isSupplemental: exports_external4.boolean().meta({ description: "Whether this is supplemental to a base course" }).optional(),
67132
+ isCustom: exports_external4.boolean().meta({ description: "Whether this is a custom course for an individual student" }).optional(),
67055
67133
  publishStatus: PublishStatus4.optional(),
67056
- contactEmail: exports_external4.email().optional(),
67057
- primaryApp: exports_external4.string().optional(),
67134
+ contactEmail: exports_external4.email().meta({ description: "Contact email for course issues" }).optional(),
67135
+ primaryApp: exports_external4.string().meta({ description: "Primary application identifier" }).optional(),
67058
67136
  goals: CourseGoals4.optional(),
67059
67137
  metrics: CourseMetrics4.optional()
67060
- });
67138
+ }).meta({ id: "CourseMetadata", description: "Course metadata (matches API metadata object)" });
67061
67139
  var CourseDefaults4 = exports_external4.object({
67062
- courseCode: exports_external4.string().optional(),
67063
- level: exports_external4.string().optional(),
67140
+ courseCode: exports_external4.string().meta({ description: "Course code (e.g., 'MATH101')" }).optional(),
67141
+ level: exports_external4.string().meta({ description: "Course level (e.g., 'AP', 'Honors')" }).optional(),
67064
67142
  metadata: CourseMetadata4.optional()
67143
+ }).meta({
67144
+ id: "CourseDefaults",
67145
+ description: "Default properties that apply to all courses unless overridden"
67065
67146
  });
67066
67147
  var CourseEnvOverrides4 = exports_external4.object({
67067
- level: exports_external4.string().optional(),
67068
- sensor: exports_external4.string().url().optional(),
67069
- launchUrl: exports_external4.string().url().optional(),
67148
+ level: exports_external4.string().meta({ description: "Course level for this environment" }).optional(),
67149
+ sensor: exports_external4.url().meta({ description: "Caliper sensor endpoint URL for this environment" }).optional(),
67150
+ launchUrl: exports_external4.url().meta({ description: "LTI launch URL for this environment" }).optional(),
67070
67151
  metadata: CourseMetadata4.optional()
67152
+ }).meta({
67153
+ id: "CourseEnvOverrides",
67154
+ description: "Environment-specific course overrides (non-identity fields)"
67071
67155
  });
67072
67156
  var CourseOverrides4 = exports_external4.object({
67073
- staging: CourseEnvOverrides4.optional(),
67074
- production: CourseEnvOverrides4.optional()
67075
- });
67157
+ staging: CourseEnvOverrides4.meta({
67158
+ description: "Overrides for staging environment"
67159
+ }).optional(),
67160
+ production: CourseEnvOverrides4.meta({
67161
+ description: "Overrides for production environment"
67162
+ }).optional()
67163
+ }).meta({ id: "CourseOverrides", description: "Per-environment course overrides" });
67076
67164
  var CourseConfig4 = CourseDefaults4.extend({
67077
- subject: TimebackSubject4,
67078
- grade: TimebackGrade4.optional(),
67165
+ subject: TimebackSubject4.meta({ description: "Subject area for this course" }),
67166
+ grade: TimebackGrade4.meta({
67167
+ description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
67168
+ }).optional(),
67079
67169
  ids: CourseIds4.nullable().optional(),
67080
- sensor: exports_external4.string().url().optional(),
67081
- launchUrl: exports_external4.string().url().optional(),
67170
+ sensor: exports_external4.url().meta({ description: "Caliper sensor endpoint URL for this course" }).optional(),
67171
+ launchUrl: exports_external4.url().meta({ description: "LTI launch URL for this course" }).optional(),
67082
67172
  overrides: CourseOverrides4.optional()
67173
+ }).meta({
67174
+ id: "CourseConfig",
67175
+ description: "Configuration for a single course. Must have either grade or courseCode (or both)."
67083
67176
  });
67084
67177
  var TimebackConfig4 = exports_external4.object({
67085
- name: exports_external4.string().min(1, "App name is required"),
67086
- defaults: CourseDefaults4.optional(),
67087
- courses: exports_external4.array(CourseConfig4).min(1, "At least one course is required"),
67088
- sensor: exports_external4.string().url().optional(),
67089
- launchUrl: exports_external4.string().url().optional()
67178
+ $schema: exports_external4.string().meta({ description: "JSON Schema reference for editor support" }).optional(),
67179
+ name: exports_external4.string().min(1, "App name is required").meta({ description: "Display name for your app" }),
67180
+ defaults: CourseDefaults4.meta({
67181
+ description: "Default properties applied to all courses"
67182
+ }).optional(),
67183
+ courses: exports_external4.array(CourseConfig4).min(1, "At least one course is required").meta({ description: "Courses available in this app" }),
67184
+ sensor: exports_external4.url().meta({ description: "Default Caliper sensor endpoint URL for all courses" }).optional(),
67185
+ launchUrl: exports_external4.url().meta({ description: "Default LTI launch URL for all courses" }).optional()
67186
+ }).meta({
67187
+ id: "TimebackConfig",
67188
+ title: "Timeback Config",
67189
+ description: "Configuration schema for timeback.config.json files"
67090
67190
  }).refine((config22) => {
67091
67191
  return config22.courses.every((c) => c.grade !== undefined || c.courseCode !== undefined);
67092
67192
  }, {
@@ -83421,7 +83521,7 @@ var TimebackSubject5 = exports_external5.enum([
83421
83521
  "Math",
83422
83522
  "None",
83423
83523
  "Other"
83424
- ]);
83524
+ ]).meta({ id: "TimebackSubject", description: "Subject area" });
83425
83525
  var TimebackGrade5 = exports_external5.union([
83426
83526
  exports_external5.literal(-1),
83427
83527
  exports_external5.literal(0),
@@ -83438,7 +83538,10 @@ var TimebackGrade5 = exports_external5.union([
83438
83538
  exports_external5.literal(11),
83439
83539
  exports_external5.literal(12),
83440
83540
  exports_external5.literal(13)
83441
- ]);
83541
+ ]).meta({
83542
+ id: "TimebackGrade",
83543
+ description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
83544
+ });
83442
83545
  var ScoreStatus5 = exports_external5.enum([
83443
83546
  "exempt",
83444
83547
  "fully graded",
@@ -83668,62 +83771,84 @@ var CaliperListEventsParams5 = exports_external5.object({
83668
83771
  actorEmail: exports_external5.email().optional()
83669
83772
  }).strict();
83670
83773
  var CourseIds5 = exports_external5.object({
83671
- staging: exports_external5.string().optional(),
83672
- production: exports_external5.string().optional()
83673
- });
83674
- var CourseType5 = exports_external5.enum(["base", "hole-filling", "optional"]);
83675
- var PublishStatus5 = exports_external5.enum(["draft", "testing", "published", "deactivated"]);
83774
+ staging: exports_external5.string().meta({ description: "Course ID in staging environment" }).optional(),
83775
+ production: exports_external5.string().meta({ description: "Course ID in production environment" }).optional()
83776
+ }).meta({ id: "CourseIds", description: "Environment-specific course IDs (populated by sync)" });
83777
+ var CourseType5 = exports_external5.enum(["base", "hole-filling", "optional"]).meta({ id: "CourseType", description: "Course classification type" });
83778
+ var PublishStatus5 = exports_external5.enum(["draft", "testing", "published", "deactivated"]).meta({ id: "PublishStatus", description: "Course publication status" });
83676
83779
  var CourseGoals5 = exports_external5.object({
83677
- dailyXp: exports_external5.number().int().positive().optional(),
83678
- dailyLessons: exports_external5.number().int().positive().optional(),
83679
- dailyActiveMinutes: exports_external5.number().int().positive().optional(),
83680
- dailyAccuracy: exports_external5.number().int().min(0).max(100).optional(),
83681
- dailyMasteredUnits: exports_external5.number().int().positive().optional()
83682
- });
83780
+ dailyXp: exports_external5.number().int().positive().meta({ description: "Target XP to earn per day" }).optional(),
83781
+ dailyLessons: exports_external5.number().int().positive().meta({ description: "Target lessons to complete per day" }).optional(),
83782
+ dailyActiveMinutes: exports_external5.number().int().positive().meta({ description: "Target active learning minutes per day" }).optional(),
83783
+ dailyAccuracy: exports_external5.number().int().min(0).max(100).meta({ description: "Target accuracy percentage (0-100)" }).optional(),
83784
+ dailyMasteredUnits: exports_external5.number().int().positive().meta({ description: "Target units to master per day" }).optional()
83785
+ }).meta({ id: "CourseGoals", description: "Daily learning goals for a course" });
83683
83786
  var CourseMetrics5 = exports_external5.object({
83684
- totalXp: exports_external5.number().int().positive().optional(),
83685
- totalLessons: exports_external5.number().int().positive().optional(),
83686
- totalGrades: exports_external5.number().int().positive().optional()
83687
- });
83787
+ totalXp: exports_external5.number().int().positive().meta({ description: "Total XP available in the course" }).optional(),
83788
+ totalLessons: exports_external5.number().int().positive().meta({ description: "Total number of lessons/activities" }).optional(),
83789
+ totalGrades: exports_external5.number().int().positive().meta({ description: "Total grade levels covered" }).optional()
83790
+ }).meta({ id: "CourseMetrics", description: "Aggregate metrics for a course" });
83688
83791
  var CourseMetadata5 = exports_external5.object({
83689
83792
  courseType: CourseType5.optional(),
83690
- isSupplemental: exports_external5.boolean().optional(),
83691
- isCustom: exports_external5.boolean().optional(),
83793
+ isSupplemental: exports_external5.boolean().meta({ description: "Whether this is supplemental to a base course" }).optional(),
83794
+ isCustom: exports_external5.boolean().meta({ description: "Whether this is a custom course for an individual student" }).optional(),
83692
83795
  publishStatus: PublishStatus5.optional(),
83693
- contactEmail: exports_external5.email().optional(),
83694
- primaryApp: exports_external5.string().optional(),
83796
+ contactEmail: exports_external5.email().meta({ description: "Contact email for course issues" }).optional(),
83797
+ primaryApp: exports_external5.string().meta({ description: "Primary application identifier" }).optional(),
83695
83798
  goals: CourseGoals5.optional(),
83696
83799
  metrics: CourseMetrics5.optional()
83697
- });
83800
+ }).meta({ id: "CourseMetadata", description: "Course metadata (matches API metadata object)" });
83698
83801
  var CourseDefaults5 = exports_external5.object({
83699
- courseCode: exports_external5.string().optional(),
83700
- level: exports_external5.string().optional(),
83802
+ courseCode: exports_external5.string().meta({ description: "Course code (e.g., 'MATH101')" }).optional(),
83803
+ level: exports_external5.string().meta({ description: "Course level (e.g., 'AP', 'Honors')" }).optional(),
83701
83804
  metadata: CourseMetadata5.optional()
83805
+ }).meta({
83806
+ id: "CourseDefaults",
83807
+ description: "Default properties that apply to all courses unless overridden"
83702
83808
  });
83703
83809
  var CourseEnvOverrides5 = exports_external5.object({
83704
- level: exports_external5.string().optional(),
83705
- sensor: exports_external5.string().url().optional(),
83706
- launchUrl: exports_external5.string().url().optional(),
83810
+ level: exports_external5.string().meta({ description: "Course level for this environment" }).optional(),
83811
+ sensor: exports_external5.url().meta({ description: "Caliper sensor endpoint URL for this environment" }).optional(),
83812
+ launchUrl: exports_external5.url().meta({ description: "LTI launch URL for this environment" }).optional(),
83707
83813
  metadata: CourseMetadata5.optional()
83814
+ }).meta({
83815
+ id: "CourseEnvOverrides",
83816
+ description: "Environment-specific course overrides (non-identity fields)"
83708
83817
  });
83709
83818
  var CourseOverrides5 = exports_external5.object({
83710
- staging: CourseEnvOverrides5.optional(),
83711
- production: CourseEnvOverrides5.optional()
83712
- });
83819
+ staging: CourseEnvOverrides5.meta({
83820
+ description: "Overrides for staging environment"
83821
+ }).optional(),
83822
+ production: CourseEnvOverrides5.meta({
83823
+ description: "Overrides for production environment"
83824
+ }).optional()
83825
+ }).meta({ id: "CourseOverrides", description: "Per-environment course overrides" });
83713
83826
  var CourseConfig5 = CourseDefaults5.extend({
83714
- subject: TimebackSubject5,
83715
- grade: TimebackGrade5.optional(),
83827
+ subject: TimebackSubject5.meta({ description: "Subject area for this course" }),
83828
+ grade: TimebackGrade5.meta({
83829
+ description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
83830
+ }).optional(),
83716
83831
  ids: CourseIds5.nullable().optional(),
83717
- sensor: exports_external5.string().url().optional(),
83718
- launchUrl: exports_external5.string().url().optional(),
83832
+ sensor: exports_external5.url().meta({ description: "Caliper sensor endpoint URL for this course" }).optional(),
83833
+ launchUrl: exports_external5.url().meta({ description: "LTI launch URL for this course" }).optional(),
83719
83834
  overrides: CourseOverrides5.optional()
83835
+ }).meta({
83836
+ id: "CourseConfig",
83837
+ description: "Configuration for a single course. Must have either grade or courseCode (or both)."
83720
83838
  });
83721
83839
  var TimebackConfig5 = exports_external5.object({
83722
- name: exports_external5.string().min(1, "App name is required"),
83723
- defaults: CourseDefaults5.optional(),
83724
- courses: exports_external5.array(CourseConfig5).min(1, "At least one course is required"),
83725
- sensor: exports_external5.string().url().optional(),
83726
- launchUrl: exports_external5.string().url().optional()
83840
+ $schema: exports_external5.string().meta({ description: "JSON Schema reference for editor support" }).optional(),
83841
+ name: exports_external5.string().min(1, "App name is required").meta({ description: "Display name for your app" }),
83842
+ defaults: CourseDefaults5.meta({
83843
+ description: "Default properties applied to all courses"
83844
+ }).optional(),
83845
+ courses: exports_external5.array(CourseConfig5).min(1, "At least one course is required").meta({ description: "Courses available in this app" }),
83846
+ sensor: exports_external5.url().meta({ description: "Default Caliper sensor endpoint URL for all courses" }).optional(),
83847
+ launchUrl: exports_external5.url().meta({ description: "Default LTI launch URL for all courses" }).optional()
83848
+ }).meta({
83849
+ id: "TimebackConfig",
83850
+ title: "Timeback Config",
83851
+ description: "Configuration schema for timeback.config.json files"
83727
83852
  }).refine((config22) => {
83728
83853
  return config22.courses.every((c) => c.grade !== undefined || c.courseCode !== undefined);
83729
83854
  }, {