@timeback/caliper 0.2.0 → 0.2.1-beta.20260331190459

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  validateNonEmptyString,
10
10
  validateOffsetListParams,
11
11
  validateWithSchema
12
- } from "./chunk-m7qcd4j8.js";
12
+ } from "./chunk-3bz9d5vy.js";
13
13
  import {
14
14
  CALIPER_DATA_VERSION,
15
15
  CALIPER_ENV_VARS,
@@ -281,8 +281,19 @@ function resolveToProvider2(config, registry = DEFAULT_PROVIDER_REGISTRY) {
281
281
  return resolveToProvider(config, CALIPER_ENV_VARS, registry);
282
282
  }
283
283
 
284
- // ../../types/src/zod/primitives.ts
284
+ // ../../types/dist/zod/index.js
285
285
  import { z } from "zod/v4";
286
+ import { z as z2 } from "zod/v4";
287
+ import { z as z3 } from "zod/v4";
288
+ import { z as z4 } from "zod/v4";
289
+ import { z as z5 } from "zod/v4";
290
+ import { z as z6 } from "zod/v4";
291
+ import { z as z7 } from "zod/v4";
292
+ import { z as z8 } from "zod/v4";
293
+ import { z as z9 } from "zod/v4";
294
+ import { z as z10 } from "zod/v4";
295
+ import { z as z11 } from "zod/v4";
296
+ import { z as z12 } from "zod/v4";
286
297
  var IsoDateTimeRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/;
287
298
  var IsoDateTimeString = z.string().min(1).regex(IsoDateTimeRegex, "must be a valid ISO 8601 datetime");
288
299
  var IsoDateString = z.string().min(1).regex(/^\d{4}-\d{2}-\d{2}$/, "must be a valid ISO 8601 date (YYYY-MM-DD)");
@@ -299,7 +310,7 @@ var TimebackSubject = z.enum([
299
310
  "None",
300
311
  "Other"
301
312
  ]).meta({ id: "TimebackSubject", description: "Subject area" });
302
- var TimebackGrade = z.union([
313
+ var NumericTimebackGrade = z.union([
303
314
  z.literal(-1),
304
315
  z.literal(0),
305
316
  z.literal(1),
@@ -315,7 +326,39 @@ var TimebackGrade = z.union([
315
326
  z.literal(11),
316
327
  z.literal(12),
317
328
  z.literal(13)
318
- ]).meta({
329
+ ]);
330
+ var StringTimebackGrade = z.string().transform((value, ctx) => {
331
+ const raw = value.toLowerCase().trim().replaceAll("_", " ");
332
+ if (raw === "") {
333
+ ctx.addIssue({
334
+ code: "custom",
335
+ message: "must be a valid Timeback grade"
336
+ });
337
+ return z.NEVER;
338
+ }
339
+ const stripped = raw.replace(/\bgrade\b/g, "").replace(/(\d+)(st|nd|rd|th)\b/g, "$1").trim();
340
+ if (stripped === "pre-k" || stripped === "pk") {
341
+ return -1;
342
+ }
343
+ if (stripped === "k") {
344
+ return 0;
345
+ }
346
+ if (stripped === "middle school") {
347
+ return 7;
348
+ }
349
+ const normalized = stripped.replace(/\s+/g, "");
350
+ const withoutLeadingZeros = normalized.replace(/^0+/, "") || "0";
351
+ const parsed = Number(withoutLeadingZeros);
352
+ if (!Number.isInteger(parsed)) {
353
+ ctx.addIssue({
354
+ code: "custom",
355
+ message: "must be a valid Timeback grade"
356
+ });
357
+ return z.NEVER;
358
+ }
359
+ return parsed;
360
+ });
361
+ var TimebackGrade = z.union([z.number(), StringTimebackGrade]).pipe(NumericTimebackGrade).meta({
319
362
  id: "TimebackGrade",
320
363
  description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
321
364
  });
@@ -398,8 +441,6 @@ var IMSErrorResponse = z.object({
398
441
  }))
399
442
  }).optional()
400
443
  });
401
- // ../../types/src/zod/caliper.ts
402
- import { z as z2 } from "zod/v4";
403
444
  var CaliperIri = z2.union([z2.url(), z2.string().regex(/^urn:/, "Must be a URL or URN")]);
404
445
  var TimebackUser = z2.object({
405
446
  id: z2.url(),
@@ -604,8 +645,6 @@ var QuestionGradedInput = z2.object({
604
645
  session: CaliperEntity.optional(),
605
646
  extensions: z2.record(z2.string(), z2.unknown()).optional()
606
647
  }).strict();
607
- // ../../types/src/zod/webhooks.ts
608
- import { z as z3 } from "zod/v4";
609
648
  var WebhookCreateInput = z3.object({
610
649
  name: NonEmptyString,
611
650
  targetUrl: z3.url("targetUrl must be a valid URL"),
@@ -638,8 +677,6 @@ var WebhookFilterCreateInput = z3.object({
638
677
  filterOperator: WebhookFilterOperation,
639
678
  active: z3.boolean()
640
679
  }).strict();
641
- // ../../types/src/zod/case.ts
642
- import { z as z4 } from "zod/v4";
643
680
  var UuidString = z4.string().uuid();
644
681
  var InputNodeURISchema = z4.object({
645
682
  title: NonEmptyString,
@@ -713,8 +750,6 @@ var CasePackageInput = z4.object({
713
750
  CFDefinitions: CFDefinitionsSchema.optional(),
714
751
  extensions: z4.unknown().optional()
715
752
  });
716
- // ../../types/src/zod/clr.ts
717
- import { z as z5 } from "zod/v4";
718
753
  var W3C_CREDENTIALS_CONTEXT = "https://www.w3.org/ns/credentials/v2";
719
754
  var ClrContextArray = z5.array(z5.url()).min(3, "@context must include W3C, CLR, and OB context URLs").refine((arr) => arr[0] === W3C_CREDENTIALS_CONTEXT, `First @context entry must be "${W3C_CREDENTIALS_CONTEXT}"`);
720
755
  var ClrImageSchema = z5.object({
@@ -814,8 +849,6 @@ var ClrCredentialInput = z5.object({
814
849
  proof: z5.array(ClrProofSchema).optional(),
815
850
  credentialSchema: z5.array(ClrCredentialSchemaSchema).optional()
816
851
  });
817
- // ../../types/src/zod/config.ts
818
- import { z as z6 } from "zod/v4";
819
852
  var CourseIds = z6.object({
820
853
  staging: z6.string().meta({ description: "Course ID in staging environment" }).optional(),
821
854
  production: z6.string().meta({ description: "Course ID in production environment" }).optional()
@@ -936,10 +969,7 @@ var TimebackConfig = z6.object({
936
969
  message: "Each course must have an effective sensor. Either set `sensor` explicitly (top-level or per-course), or provide a `launchUrl` so sensor can be derived from its origin.",
937
970
  path: ["courses"]
938
971
  });
939
- // ../../types/src/zod/edubridge.ts
940
- import { z as z7 } from "zod/v4";
941
972
  var EdubridgeDateString = z7.union([IsoDateTimeString, IsoDateString]);
942
- var EdubridgeDateStringInput = EdubridgeDateString.transform((date) => date.includes("T") ? date : `${date}T00:00:00.000Z`);
943
973
  var EduBridgeEnrollment = z7.object({
944
974
  id: z7.string(),
945
975
  role: z7.string(),
@@ -958,7 +988,9 @@ var EduBridgeEnrollment = z7.object({
958
988
  school: z7.object({
959
989
  id: z7.string(),
960
990
  name: z7.string()
961
- })
991
+ }),
992
+ testOutSupported: z7.boolean(),
993
+ testOutEligible: z7.boolean()
962
994
  });
963
995
  var SubjectMetrics = z7.object({
964
996
  activityMetrics: z7.object({
@@ -1027,22 +1059,20 @@ var EdubridgeUsersListParams = z7.object({
1027
1059
  orgSourcedIds: z7.array(NonEmptyString).optional()
1028
1060
  });
1029
1061
  var EdubridgeActivityParams = EmailOrStudentId.extend({
1030
- startDate: EdubridgeDateStringInput,
1031
- endDate: EdubridgeDateStringInput,
1062
+ startDate: EdubridgeDateString,
1063
+ endDate: EdubridgeDateString,
1032
1064
  timezone: z7.string().optional()
1033
1065
  });
1034
1066
  var EdubridgeWeeklyFactsParams = EmailOrStudentId.extend({
1035
- weekDate: EdubridgeDateStringInput,
1067
+ weekDate: EdubridgeDateString,
1036
1068
  timezone: z7.string().optional()
1037
1069
  });
1038
1070
  var EdubridgeEnrollmentFactsParams = z7.object({
1039
1071
  enrollmentId: NonEmptyString,
1040
- startDate: EdubridgeDateStringInput.optional(),
1041
- endDate: EdubridgeDateStringInput.optional(),
1072
+ startDate: EdubridgeDateString.optional(),
1073
+ endDate: EdubridgeDateString.optional(),
1042
1074
  timezone: z7.string().optional()
1043
1075
  });
1044
- // ../../types/src/zod/masterytrack.ts
1045
- import { z as z8 } from "zod/v4";
1046
1076
  var MasteryTrackAuthorizerInput = z8.object({
1047
1077
  email: z8.email()
1048
1078
  });
@@ -1118,8 +1148,6 @@ var MasteryTrackInvalidateAssignmentInput = z8.object({
1118
1148
  });
1119
1149
  }
1120
1150
  });
1121
- // ../../types/src/zod/oneroster.ts
1122
- import { z as z9 } from "zod/v4";
1123
1151
  var Status = z9.enum(["active", "tobedeleted"]);
1124
1152
  var Metadata = z9.record(z9.string(), z9.unknown()).nullable().optional();
1125
1153
  var Ref = z9.object({
@@ -1127,7 +1155,42 @@ var Ref = z9.object({
1127
1155
  type: z9.string().optional(),
1128
1156
  href: z9.string().optional()
1129
1157
  }).strict();
1158
+ var GuidRefType = z9.enum([
1159
+ "academicSession",
1160
+ "assessmentLineItem",
1161
+ "category",
1162
+ "class",
1163
+ "course",
1164
+ "demographics",
1165
+ "enrollment",
1166
+ "gradingPeriod",
1167
+ "lineItem",
1168
+ "org",
1169
+ "resource",
1170
+ "result",
1171
+ "scoreScale",
1172
+ "student",
1173
+ "teacher",
1174
+ "term",
1175
+ "user",
1176
+ "componentResource",
1177
+ "courseComponent"
1178
+ ]);
1179
+ var GuidRef = z9.object({
1180
+ sourcedId: NonEmptyString,
1181
+ type: GuidRefType,
1182
+ href: z9.url()
1183
+ }).strict();
1130
1184
  var OneRosterDateString = z9.union([IsoDateString, IsoDateTimeString]).transform((date) => date.includes("T") ? date : `${date}T00:00:00Z`);
1185
+ var LearningObjectiveResult = z9.object({
1186
+ learningObjectiveId: z9.string(),
1187
+ score: z9.number().optional(),
1188
+ textScore: z9.string().optional()
1189
+ });
1190
+ var LearningObjectiveScoreSetSchema = z9.array(z9.object({
1191
+ source: z9.string(),
1192
+ learningObjectiveResults: z9.array(LearningObjectiveResult)
1193
+ }));
1131
1194
  var OneRosterUserRoleInput = z9.object({
1132
1195
  roleType: z9.enum(["primary", "secondary"]),
1133
1196
  role: OneRosterUserRole,
@@ -1140,35 +1203,46 @@ var OneRosterUserRoleInput = z9.object({
1140
1203
  var OneRosterUserCreateInput = z9.object({
1141
1204
  sourcedId: NonEmptyString.describe("sourcedId must be a non-empty string"),
1142
1205
  status: Status.optional(),
1143
- enabledUser: z9.boolean(),
1206
+ enabledUser: z9.union([
1207
+ z9.boolean(),
1208
+ z9.enum(["true", "false"]).transform((value) => value === "true")
1209
+ ]),
1144
1210
  givenName: NonEmptyString.describe("givenName must be a non-empty string"),
1145
1211
  familyName: NonEmptyString.describe("familyName must be a non-empty string"),
1146
- middleName: NonEmptyString.optional(),
1147
- username: NonEmptyString.optional(),
1212
+ middleName: NonEmptyString.nullable().optional(),
1213
+ preferredFirstName: NonEmptyString.nullable().optional(),
1214
+ preferredMiddleName: NonEmptyString.nullable().optional(),
1215
+ preferredLastName: NonEmptyString.nullable().optional(),
1216
+ username: NonEmptyString.nullable().optional(),
1148
1217
  email: z9.email(),
1218
+ userMasterIdentifier: z9.string().nullable().optional(),
1149
1219
  roles: z9.array(OneRosterUserRoleInput).min(1, "roles must include at least one role"),
1150
1220
  userIds: z9.array(z9.object({
1151
1221
  type: NonEmptyString,
1152
1222
  identifier: NonEmptyString
1153
1223
  }).strict()).optional(),
1154
1224
  agents: z9.array(Ref).optional(),
1225
+ primaryOrg: Ref.optional(),
1155
1226
  grades: z9.array(TimebackGrade).optional(),
1156
- identifier: NonEmptyString.optional(),
1157
- sms: NonEmptyString.optional(),
1158
- phone: NonEmptyString.optional(),
1159
- pronouns: NonEmptyString.optional(),
1160
- password: NonEmptyString.optional(),
1227
+ sms: NonEmptyString.nullable().optional(),
1228
+ phone: NonEmptyString.nullable().optional(),
1229
+ pronouns: NonEmptyString.nullable().optional(),
1230
+ password: NonEmptyString.nullable().optional(),
1161
1231
  metadata: Metadata
1162
1232
  }).strict();
1163
1233
  var OneRosterCourseCreateInput = z9.object({
1164
1234
  sourcedId: NonEmptyString.describe("sourcedId must be a non-empty string").optional(),
1165
- status: Status.optional(),
1235
+ status: Status,
1166
1236
  title: NonEmptyString.describe("title must be a non-empty string"),
1167
1237
  org: Ref,
1168
- courseCode: NonEmptyString.optional(),
1169
- subjects: z9.array(TimebackSubject).optional(),
1170
- grades: z9.array(TimebackGrade).optional(),
1171
- level: NonEmptyString.optional(),
1238
+ courseCode: NonEmptyString.nullable().optional(),
1239
+ subjects: z9.array(TimebackSubject).nullable().optional(),
1240
+ subjectCodes: z9.array(z9.string()).nullable().optional(),
1241
+ grades: z9.array(TimebackGrade).nullable().optional(),
1242
+ level: NonEmptyString.nullable().optional(),
1243
+ academicSession: Ref.nullable().optional(),
1244
+ schoolYear: GuidRef.nullable().optional(),
1245
+ gradingScheme: NonEmptyString.nullable().optional(),
1172
1246
  metadata: Metadata
1173
1247
  }).strict();
1174
1248
  var OneRosterClassCreateInput = z9.object({
@@ -1178,9 +1252,9 @@ var OneRosterClassCreateInput = z9.object({
1178
1252
  terms: z9.array(Ref).min(1, "terms must have at least one item"),
1179
1253
  course: Ref,
1180
1254
  org: Ref,
1181
- classCode: NonEmptyString.optional(),
1255
+ classCode: NonEmptyString.nullable().optional(),
1182
1256
  classType: z9.enum(["homeroom", "scheduled"]).optional(),
1183
- location: NonEmptyString.optional(),
1257
+ location: NonEmptyString.nullable().optional(),
1184
1258
  grades: z9.array(TimebackGrade).optional(),
1185
1259
  subjects: z9.array(TimebackSubject).optional(),
1186
1260
  subjectCodes: z9.array(NonEmptyString).optional(),
@@ -1215,18 +1289,21 @@ var OneRosterLineItemCreateInput = z9.object({
1215
1289
  category: Ref,
1216
1290
  assignDate: OneRosterDateString,
1217
1291
  dueDate: OneRosterDateString,
1218
- status: Status,
1219
- description: z9.string().optional(),
1292
+ status: Status.optional(),
1293
+ description: z9.string().nullable().optional(),
1220
1294
  resultValueMin: z9.number().nullable().optional(),
1221
1295
  resultValueMax: z9.number().nullable().optional(),
1222
- scoreScale: Ref.optional(),
1296
+ gradingPeriod: Ref.nullable().optional(),
1297
+ academicSession: Ref.nullable().optional(),
1298
+ scoreScale: Ref.nullable().optional(),
1299
+ learningObjectiveSet: LearningObjectiveSetSchema.nullable().optional(),
1223
1300
  metadata: Metadata
1224
1301
  }).strict();
1225
1302
  var OneRosterResultCreateInput = z9.object({
1226
1303
  sourcedId: NonEmptyString.optional(),
1227
1304
  lineItem: Ref,
1228
1305
  student: Ref,
1229
- class: Ref.optional(),
1306
+ class: Ref.nullable().optional(),
1230
1307
  scoreDate: OneRosterDateString,
1231
1308
  scoreStatus: z9.enum([
1232
1309
  "exempt",
@@ -1238,14 +1315,20 @@ var OneRosterResultCreateInput = z9.object({
1238
1315
  score: z9.number().nullable().optional(),
1239
1316
  textScore: z9.string().nullable().optional(),
1240
1317
  status: Status,
1318
+ scoreScale: Ref.nullable().optional(),
1241
1319
  comment: z9.string().nullable().optional(),
1320
+ learningObjectiveSet: LearningObjectiveScoreSetSchema.nullable().optional(),
1321
+ inProgress: z9.string().optional(),
1322
+ incomplete: z9.string().optional(),
1323
+ late: z9.string().optional(),
1324
+ missing: z9.string().optional(),
1242
1325
  metadata: Metadata
1243
1326
  }).strict();
1244
1327
  var OneRosterScoreScaleCreateInput = z9.object({
1245
1328
  sourcedId: NonEmptyString.optional(),
1246
1329
  title: NonEmptyString.describe("title must be a non-empty string"),
1247
- status: Status.optional(),
1248
- type: z9.string(),
1330
+ status: Status,
1331
+ type: NonEmptyString,
1249
1332
  class: Ref,
1250
1333
  course: Ref.nullable().optional(),
1251
1334
  scoreScaleValue: z9.array(z9.object({
@@ -1254,13 +1337,11 @@ var OneRosterScoreScaleCreateInput = z9.object({
1254
1337
  value: z9.string().optional(),
1255
1338
  description: z9.string().optional()
1256
1339
  }).strict()),
1257
- minScore: z9.number().optional(),
1258
- maxScore: z9.number().optional(),
1259
1340
  metadata: Metadata
1260
1341
  }).strict();
1261
1342
  var OneRosterAssessmentLineItemCreateInput = z9.object({
1262
1343
  sourcedId: NonEmptyString.optional(),
1263
- status: Status.optional(),
1344
+ status: Status,
1264
1345
  dateLastModified: IsoDateTimeString.optional(),
1265
1346
  title: NonEmptyString.describe("title must be a non-empty string"),
1266
1347
  description: z9.string().nullable().optional(),
@@ -1278,18 +1359,9 @@ var OneRosterAssessmentLineItemCreateInput = z9.object({
1278
1359
  course: Ref.nullable().optional(),
1279
1360
  metadata: Metadata
1280
1361
  }).strict();
1281
- var LearningObjectiveResult = z9.object({
1282
- learningObjectiveId: z9.string(),
1283
- score: z9.number().optional(),
1284
- textScore: z9.string().optional()
1285
- });
1286
- var LearningObjectiveScoreSetSchema = z9.array(z9.object({
1287
- source: z9.string(),
1288
- learningObjectiveResults: z9.array(LearningObjectiveResult)
1289
- }));
1290
1362
  var OneRosterAssessmentResultCreateInput = z9.object({
1291
1363
  sourcedId: NonEmptyString.optional(),
1292
- status: Status.optional(),
1364
+ status: Status,
1293
1365
  dateLastModified: IsoDateTimeString.optional(),
1294
1366
  metadata: Metadata,
1295
1367
  assessmentLineItem: Ref,
@@ -1318,7 +1390,7 @@ var OneRosterOrgCreateInput = z9.object({
1318
1390
  status: Status.optional(),
1319
1391
  name: NonEmptyString.describe("name must be a non-empty string"),
1320
1392
  type: OrganizationType,
1321
- identifier: NonEmptyString.optional(),
1393
+ identifier: z9.string().nullish(),
1322
1394
  parent: Ref.optional(),
1323
1395
  metadata: Metadata
1324
1396
  }).strict();
@@ -1326,8 +1398,8 @@ var OneRosterSchoolCreateInput = z9.object({
1326
1398
  sourcedId: NonEmptyString.optional(),
1327
1399
  status: Status.optional(),
1328
1400
  name: NonEmptyString.describe("name must be a non-empty string"),
1329
- type: z9.literal("school").optional(),
1330
- identifier: NonEmptyString.optional(),
1401
+ type: z9.literal("school").default("school"),
1402
+ identifier: z9.string().nullish(),
1331
1403
  parent: Ref.optional(),
1332
1404
  metadata: Metadata
1333
1405
  }).strict();
@@ -1345,11 +1417,13 @@ var OneRosterAcademicSessionCreateInput = z9.object({
1345
1417
  metadata: Metadata
1346
1418
  }).strict();
1347
1419
  var OneRosterComponentResourceCreateInput = z9.object({
1348
- sourcedId: NonEmptyString.optional(),
1420
+ sourcedId: NonEmptyString,
1349
1421
  title: NonEmptyString.describe("title must be a non-empty string"),
1350
1422
  courseComponent: Ref,
1351
1423
  resource: Ref,
1352
1424
  status: Status,
1425
+ sortOrder: z9.number().optional(),
1426
+ lessonType: LessonType.optional(),
1353
1427
  metadata: Metadata
1354
1428
  }).strict();
1355
1429
  var OneRosterCourseComponentCreateInput = z9.object({
@@ -1357,8 +1431,17 @@ var OneRosterCourseComponentCreateInput = z9.object({
1357
1431
  title: NonEmptyString.describe("title must be a non-empty string"),
1358
1432
  course: Ref,
1359
1433
  status: Status,
1434
+ sortOrder: z9.number().optional(),
1435
+ parent: Ref.nullable().optional(),
1436
+ courseComponent: Ref.nullable().optional(),
1437
+ prerequisites: z9.array(z9.string()).nullable().optional(),
1438
+ prerequisiteCriteria: z9.string().nullable().optional(),
1439
+ unlockDate: OneRosterDateString.nullable().optional(),
1360
1440
  metadata: Metadata
1361
- }).strict();
1441
+ }).strict().transform(({ courseComponent, parent, ...rest }) => ({
1442
+ ...rest,
1443
+ parent: parent === undefined ? courseComponent ?? undefined : parent
1444
+ }));
1362
1445
  var OneRosterEnrollInput = z9.object({
1363
1446
  sourcedId: NonEmptyString.describe("sourcedId must be a non-empty string"),
1364
1447
  role: z9.enum(["student", "teacher"]),
@@ -1378,8 +1461,23 @@ var OneRosterCredentialInput = z9.object({
1378
1461
  })
1379
1462
  }).strict();
1380
1463
  var OneRosterDemographicsCreateInput = z9.object({
1381
- sourcedId: NonEmptyString.describe("sourcedId must be a non-empty string")
1382
- }).loose();
1464
+ sourcedId: NonEmptyString.describe("sourcedId must be a non-empty string"),
1465
+ status: Status.optional(),
1466
+ metadata: Metadata,
1467
+ birthDate: z9.string().regex(/^\d{4}-\d{2}-\d{2}$/).nullable().optional(),
1468
+ sex: z9.enum(["male", "female"]).nullable().optional(),
1469
+ americanIndianOrAlaskaNative: StringBoolean.nullable().optional(),
1470
+ asian: StringBoolean.nullable().optional(),
1471
+ blackOrAfricanAmerican: StringBoolean.nullable().optional(),
1472
+ nativeHawaiianOrOtherPacificIslander: StringBoolean.nullable().optional(),
1473
+ white: StringBoolean.nullable().optional(),
1474
+ demographicRaceTwoOrMoreRaces: StringBoolean.nullable().optional(),
1475
+ hispanicOrLatinoEthnicity: StringBoolean.nullable().optional(),
1476
+ countryOfBirthCode: z9.string().nullable().optional(),
1477
+ stateOfBirthAbbreviation: z9.string().nullable().optional(),
1478
+ cityOfBirth: z9.string().nullable().optional(),
1479
+ publicSchoolResidenceStatus: z9.string().nullable().optional()
1480
+ }).strict();
1383
1481
  var CommonResourceMetadataSchema = z9.object({
1384
1482
  type: ResourceType,
1385
1483
  subject: TimebackSubject.nullish(),
@@ -1449,16 +1547,63 @@ var ResourceMetadataSchema = z9.discriminatedUnion("type", [
1449
1547
  CourseMaterialMetadataSchema,
1450
1548
  AssessmentBankMetadataSchema
1451
1549
  ]);
1550
+ var ReservedResourceMetadataKeys = new Set([
1551
+ "type",
1552
+ "subject",
1553
+ "grades",
1554
+ "language",
1555
+ "xp",
1556
+ "url",
1557
+ "keywords",
1558
+ "learningObjectiveSet",
1559
+ "lessonType",
1560
+ "subType",
1561
+ "questionType",
1562
+ "difficulty",
1563
+ "format",
1564
+ "author",
1565
+ "pageCount",
1566
+ "duration",
1567
+ "speaker",
1568
+ "captionsAvailable",
1569
+ "launchUrl",
1570
+ "toolProvider",
1571
+ "instructionalMethod",
1572
+ "courseIdOnFail",
1573
+ "resolution",
1574
+ "resources"
1575
+ ]);
1576
+ var UntypedResourceMetadataSchema = z9.record(z9.string(), z9.unknown()).superRefine((metadata, ctx) => {
1577
+ if ("fail_fast" in metadata) {
1578
+ const result = FastFailConfigSchema.safeParse(metadata.fail_fast);
1579
+ if (!result.success) {
1580
+ for (const issue of result.error.issues) {
1581
+ ctx.addIssue({
1582
+ ...issue,
1583
+ path: ["fail_fast", ...issue.path]
1584
+ });
1585
+ }
1586
+ }
1587
+ }
1588
+ const reservedKeys = Object.keys(metadata).filter((key) => ReservedResourceMetadataKeys.has(key));
1589
+ if (reservedKeys.length === 0) {
1590
+ return;
1591
+ }
1592
+ ctx.addIssue({
1593
+ code: "custom",
1594
+ message: `metadata keys ${reservedKeys.map((key) => `\`${key}\``).join(", ")} require a valid \`type\` discriminator`
1595
+ });
1596
+ });
1452
1597
  var OneRosterResourceCreateInput = z9.object({
1453
1598
  sourcedId: NonEmptyString.optional(),
1454
1599
  title: NonEmptyString.describe("title must be a non-empty string"),
1455
1600
  vendorResourceId: NonEmptyString.describe("vendorResourceId must be a non-empty string"),
1456
1601
  roles: z9.array(z9.enum(["primary", "secondary"])).optional(),
1457
1602
  importance: z9.enum(["primary", "secondary"]).optional(),
1458
- vendorId: z9.string().optional(),
1459
- applicationId: z9.string().optional(),
1603
+ vendorId: NonEmptyString.nullable().optional(),
1604
+ applicationId: NonEmptyString.nullable().optional(),
1460
1605
  status: Status.optional(),
1461
- metadata: ResourceMetadataSchema.nullable().optional()
1606
+ metadata: z9.union([ResourceMetadataSchema, UntypedResourceMetadataSchema]).nullable().optional()
1462
1607
  }).strict();
1463
1608
  var CourseStructureItem = z9.object({
1464
1609
  url: NonEmptyString.describe("courseStructure.url must be a non-empty string"),
@@ -1483,8 +1628,6 @@ var OneRosterBulkResultItem = z9.object({
1483
1628
  student: Ref
1484
1629
  }).loose();
1485
1630
  var OneRosterBulkResultsInput = z9.array(OneRosterBulkResultItem).min(1, "results must have at least one item");
1486
- // ../../types/src/zod/powerpath.ts
1487
- import { z as z10 } from "zod/v4";
1488
1631
  var ToolProvider = z10.enum(["edulastic", "mastery-track"]);
1489
1632
  var LessonTypeRequired = z10.enum([
1490
1633
  "powerpath-100",
@@ -1753,11 +1896,21 @@ var PowerPathPlacementQueryParams = z10.object({
1753
1896
  student: NonEmptyString,
1754
1897
  subject: TimebackSubject
1755
1898
  });
1899
+ var PowerPathMakeExternalStudentTestOutAssignmentInput = z10.object({
1900
+ oneRosterSourcedId: NonEmptyString,
1901
+ subject: NonEmptyString
1902
+ });
1903
+ var PowerPathRenderConfigUpsertInput = z10.object({
1904
+ courseIds: z10.array(NonEmptyString).min(1),
1905
+ rendererId: NonEmptyString,
1906
+ rendererUrl: z10.url(),
1907
+ rendererVersion: NonEmptyString.optional(),
1908
+ suppressFeedback: z10.boolean().optional(),
1909
+ suppressCorrectResponse: z10.boolean().optional()
1910
+ });
1756
1911
  var PowerPathSyllabusQueryParams = z10.object({
1757
1912
  status: z10.enum(["active", "tobedeleted"]).optional()
1758
1913
  });
1759
- // ../../types/src/zod/qti.ts
1760
- import { z as z11 } from "zod/v4";
1761
1914
  var QtiAssessmentItemType = z11.enum([
1762
1915
  "choice",
1763
1916
  "text-entry",
@@ -2017,6 +2170,22 @@ var QtiLessonFeedbackInput = z11.object({
2017
2170
  lessonId: NonEmptyString,
2018
2171
  humanApproved: z11.boolean().optional()
2019
2172
  }).strict();
2173
+ var ReportingAuthMode = z12.enum(["creator_only", "same_org", "all_orgs"]);
2174
+ var ReportingSavedQueryId = z12.string().uuid();
2175
+ var ReportingUserEmail = z12.email();
2176
+ var ReportingQueryInput = z12.object({
2177
+ sql: NonEmptyString
2178
+ });
2179
+ var PersistReportingQueryInput = z12.object({
2180
+ endpointName: NonEmptyString,
2181
+ sql: NonEmptyString,
2182
+ authMode: ReportingAuthMode,
2183
+ description: NonEmptyString.optional()
2184
+ });
2185
+ var RemoveReportingQueryInput = z12.object({
2186
+ endpointId: ReportingSavedQueryId
2187
+ });
2188
+
2020
2189
  // src/resources/events.ts
2021
2190
  class EventsResource {
2022
2191
  transport;
@@ -2256,8 +2425,8 @@ function createCaliperClient(registry = DEFAULT_PROVIDER_REGISTRY) {
2256
2425
  _provider;
2257
2426
  events;
2258
2427
  jobs;
2259
- constructor(config2 = {}) {
2260
- const resolved = resolveToProvider2(config2, registry);
2428
+ constructor(config = {}) {
2429
+ const resolved = resolveToProvider2(config, registry);
2261
2430
  let eventTransformer;
2262
2431
  if (resolved.mode === "transport") {
2263
2432
  this.transport = resolved.transport;