timeback-studio 0.1.0 → 0.1.2

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
@@ -14586,11 +14586,11 @@ async function validateEmailWithTimeback(environment, clientId, clientSecret, em
14586
14586
  auth: { clientId, clientSecret }
14587
14587
  });
14588
14588
  try {
14589
- const users = await client.oneroster.users.list({
14589
+ const page = await client.oneroster.users.list({
14590
14590
  where: { email: email3 },
14591
14591
  limit: 1
14592
14592
  });
14593
- if (users.length === 0) {
14593
+ if (page.data.length === 0) {
14594
14594
  return {
14595
14595
  valid: false,
14596
14596
  error: `No user found with email "${email3}" in ${environment}`
@@ -14821,6 +14821,9 @@ import { readFile as readFile2 } from "node:fs/promises";
14821
14821
  import { basename, relative, resolve } from "node:path";
14822
14822
  import { createJiti } from "jiti";
14823
14823
  // ../types/src/zod/primitives.ts
14824
+ var IsoDateTimeRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/;
14825
+ var IsoDateTimeString = exports_external.string().min(1).regex(IsoDateTimeRegex, "must be a valid ISO 8601 datetime");
14826
+ var IsoDateString = exports_external.string().min(1).regex(/^\d{4}-\d{2}-\d{2}$/, "must be a valid ISO 8601 date (YYYY-MM-DD)");
14824
14827
  var TimebackSubject = exports_external.enum([
14825
14828
  "Reading",
14826
14829
  "Language",
@@ -14830,7 +14833,8 @@ var TimebackSubject = exports_external.enum([
14830
14833
  "Science",
14831
14834
  "FastMath",
14832
14835
  "Math",
14833
- "None"
14836
+ "None",
14837
+ "Other"
14834
14838
  ]);
14835
14839
  var TimebackGrade = exports_external.union([
14836
14840
  exports_external.literal(-1),
@@ -14897,16 +14901,16 @@ var TimebackActivityContext = exports_external.object({
14897
14901
  id: exports_external.string(),
14898
14902
  type: exports_external.literal("TimebackActivityContext"),
14899
14903
  subject: TimebackSubject,
14900
- app: exports_external.object({ name: exports_external.string() }).optional(),
14901
- activity: exports_external.object({ id: exports_external.string().optional(), name: exports_external.string().optional() }).optional(),
14902
- course: exports_external.object({ id: exports_external.string(), name: exports_external.string() }),
14904
+ app: exports_external.object({ name: exports_external.string() }),
14905
+ activity: exports_external.object({ id: exports_external.string().optional(), name: exports_external.string() }).strict().optional(),
14906
+ course: exports_external.object({ id: exports_external.string().optional(), name: exports_external.string() }).strict().optional(),
14903
14907
  process: exports_external.boolean().optional()
14904
14908
  });
14905
14909
  var CaliperEventBase = exports_external.object({
14906
14910
  "@context": exports_external.literal("http://purl.imsglobal.org/ctx/caliper/v1p2"),
14907
14911
  id: exports_external.string(),
14908
14912
  type: exports_external.string(),
14909
- eventTime: exports_external.string(),
14913
+ eventTime: IsoDateTimeString,
14910
14914
  profile: exports_external.literal("TimebackProfile"),
14911
14915
  actor: TimebackUser,
14912
14916
  action: exports_external.string(),
@@ -14944,13 +14948,95 @@ var TimebackTimeSpentEvent = CaliperEventBase.extend({
14944
14948
  action: exports_external.literal("SpentTime"),
14945
14949
  generated: TimebackTimeSpentMetricsCollection
14946
14950
  });
14951
+ var ActivityCompletedInput = exports_external.object({
14952
+ actor: TimebackUser,
14953
+ object: TimebackActivityContext,
14954
+ metrics: exports_external.array(TimebackActivityMetric).min(1, "metrics must contain at least one metric"),
14955
+ eventTime: IsoDateTimeString.optional(),
14956
+ metricsId: exports_external.string().optional(),
14957
+ id: exports_external.string().optional(),
14958
+ extensions: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
14959
+ }).strict();
14960
+ var TimeSpentInput = exports_external.object({
14961
+ actor: TimebackUser,
14962
+ object: TimebackActivityContext,
14963
+ metrics: exports_external.array(TimebackTimeMetric).min(1, "metrics must contain at least one metric"),
14964
+ eventTime: IsoDateTimeString.optional(),
14965
+ metricsId: exports_external.string().optional(),
14966
+ id: exports_external.string().optional(),
14967
+ extensions: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
14968
+ }).strict();
14947
14969
  var TimebackEvent = exports_external.union([TimebackActivityEvent, TimebackTimeSpentEvent]);
14948
14970
  var CaliperEnvelope = exports_external.object({
14949
14971
  sensor: exports_external.string(),
14950
- sendTime: exports_external.string(),
14972
+ sendTime: IsoDateTimeString,
14951
14973
  dataVersion: exports_external.literal("http://purl.imsglobal.org/ctx/caliper/v1p2"),
14952
14974
  data: exports_external.array(TimebackEvent)
14953
14975
  });
14976
+ var CaliperProfile = exports_external.enum([
14977
+ "AnnotationProfile",
14978
+ "AssessmentProfile",
14979
+ "ToolUseProfile",
14980
+ "GeneralProfile",
14981
+ "FeedbackProfile",
14982
+ "MediaProfile",
14983
+ "SurveyProfile",
14984
+ "ResourceManagementProfile",
14985
+ "ForumProfile",
14986
+ "AssignableProfile",
14987
+ "GradingProfile",
14988
+ "ReadingProfile",
14989
+ "SessionProfile",
14990
+ "SearchProfile",
14991
+ "ToolLaunchProfile",
14992
+ "TimebackProfile"
14993
+ ]);
14994
+ var CaliperEntity = exports_external.union([exports_external.string(), exports_external.record(exports_external.string(), exports_external.unknown())]);
14995
+ var CaliperActor = exports_external.object({
14996
+ id: exports_external.string(),
14997
+ type: exports_external.string(),
14998
+ extensions: exports_external.object({
14999
+ email: exports_external.email()
15000
+ }).loose()
15001
+ }).strict();
15002
+ var CaliperEvent = exports_external.object({
15003
+ "@context": exports_external.string().optional(),
15004
+ id: exports_external.string(),
15005
+ type: exports_external.string(),
15006
+ actor: exports_external.union([exports_external.string(), CaliperActor, TimebackUser]),
15007
+ action: exports_external.string(),
15008
+ object: CaliperEntity,
15009
+ eventTime: IsoDateTimeString,
15010
+ profile: CaliperProfile,
15011
+ edApp: CaliperEntity.optional(),
15012
+ generated: CaliperEntity.optional(),
15013
+ target: CaliperEntity.optional(),
15014
+ referrer: CaliperEntity.optional(),
15015
+ group: CaliperEntity.optional(),
15016
+ membership: CaliperEntity.optional(),
15017
+ session: CaliperEntity.optional(),
15018
+ federatedSession: CaliperEntity.optional(),
15019
+ extensions: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15020
+ }).strict();
15021
+ var CaliperEnvelopeInput = exports_external.object({
15022
+ sensor: exports_external.string().min(1, "sensor must be a non-empty string"),
15023
+ sendTime: IsoDateTimeString,
15024
+ dataVersion: exports_external.literal("http://purl.imsglobal.org/ctx/caliper/v1p2"),
15025
+ data: exports_external.array(CaliperEvent).min(1, "data must contain at least one event")
15026
+ });
15027
+ var CaliperSendEventsInput = exports_external.object({
15028
+ sensor: exports_external.string().min(1, "sensor must be a non-empty string"),
15029
+ events: exports_external.array(CaliperEvent).min(1, "events must contain at least one event")
15030
+ });
15031
+ var CaliperListEventsParams = exports_external.object({
15032
+ limit: exports_external.number().int().positive().optional(),
15033
+ offset: exports_external.number().int().min(0).optional(),
15034
+ sensor: exports_external.string().min(1).optional(),
15035
+ startDate: IsoDateTimeString.optional(),
15036
+ endDate: IsoDateTimeString.optional(),
15037
+ actorId: exports_external.string().min(1).optional(),
15038
+ actorEmail: exports_external.email().optional()
15039
+ }).strict();
14954
15040
  // ../types/src/zod/config.ts
14955
15041
  var CourseIds = exports_external.object({
14956
15042
  staging: exports_external.string().optional(),
@@ -14997,11 +15083,12 @@ var TimebackConfig = exports_external.object({
14997
15083
  sensors: exports_external.array(exports_external.string().url()).optional()
14998
15084
  });
14999
15085
  // ../types/src/zod/edubridge.ts
15086
+ var EdubridgeDateString = exports_external.union([IsoDateString, IsoDateTimeString]);
15000
15087
  var EduBridgeEnrollment = exports_external.object({
15001
15088
  id: exports_external.string(),
15002
15089
  role: exports_external.string(),
15003
- beginDate: exports_external.string().nullable(),
15004
- endDate: exports_external.string().nullable(),
15090
+ beginDate: EdubridgeDateString.nullable(),
15091
+ endDate: EdubridgeDateString.nullable(),
15005
15092
  metadata: exports_external.object({
15006
15093
  goals: exports_external.object({ dailyXp: exports_external.number().optional() }).optional(),
15007
15094
  metrics: exports_external.object({ totalXp: exports_external.number().optional(), totalLessons: exports_external.number().optional() }).optional()
@@ -15035,17 +15122,590 @@ var EduBridgeAnalyticsFacts = exports_external.record(exports_external.string(),
15035
15122
  var EduBridgeEnrollmentAnalyticsResponse = exports_external.object({
15036
15123
  message: exports_external.string(),
15037
15124
  enrollmentId: exports_external.string(),
15038
- startDate: exports_external.string(),
15039
- endDate: exports_external.string(),
15125
+ startDate: EdubridgeDateString,
15126
+ endDate: EdubridgeDateString,
15040
15127
  facts: EduBridgeAnalyticsFacts,
15041
15128
  factsByApp: exports_external.unknown()
15042
15129
  });
15130
+ var NonEmptyString = exports_external.string().trim().min(1);
15131
+ var EmailOrStudentId = exports_external.object({
15132
+ email: exports_external.email().optional(),
15133
+ studentId: NonEmptyString.optional()
15134
+ }).superRefine((value, ctx) => {
15135
+ if (!value.email && !value.studentId) {
15136
+ ctx.addIssue({
15137
+ code: exports_external.ZodIssueCode.custom,
15138
+ message: "must provide either email or studentId",
15139
+ path: ["email"]
15140
+ });
15141
+ ctx.addIssue({
15142
+ code: exports_external.ZodIssueCode.custom,
15143
+ message: "must provide either email or studentId",
15144
+ path: ["studentId"]
15145
+ });
15146
+ }
15147
+ });
15043
15148
  var SubjectTrackInput = exports_external.object({
15044
- subject: exports_external.string(),
15045
- gradeLevel: exports_external.string(),
15046
- targetCourseId: exports_external.string(),
15149
+ subject: NonEmptyString,
15150
+ gradeLevel: NonEmptyString,
15151
+ targetCourseId: NonEmptyString,
15047
15152
  metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15048
15153
  });
15154
+ var SubjectTrackUpsertInput = SubjectTrackInput.extend({
15155
+ id: NonEmptyString
15156
+ });
15157
+ var EdubridgeListEnrollmentsParams = exports_external.object({
15158
+ userId: NonEmptyString
15159
+ });
15160
+ var EdubridgeEnrollOptions = exports_external.object({
15161
+ sourcedId: NonEmptyString.optional(),
15162
+ role: EnrollmentRole.optional(),
15163
+ beginDate: EdubridgeDateString.optional(),
15164
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15165
+ });
15166
+ var EdubridgeUsersListParams = exports_external.object({
15167
+ fields: exports_external.string().optional(),
15168
+ limit: exports_external.number().int().positive().optional(),
15169
+ offset: exports_external.number().int().nonnegative().optional(),
15170
+ sort: exports_external.string().optional(),
15171
+ orderBy: exports_external.enum(["asc", "desc"]).optional(),
15172
+ filter: exports_external.string().optional(),
15173
+ search: exports_external.string().optional(),
15174
+ roles: exports_external.array(OneRosterUserRole).min(1),
15175
+ orgSourcedIds: exports_external.array(NonEmptyString).optional()
15176
+ });
15177
+ var EdubridgeActivityParams = EmailOrStudentId.extend({
15178
+ startDate: EdubridgeDateString,
15179
+ endDate: EdubridgeDateString,
15180
+ timezone: exports_external.string().optional()
15181
+ });
15182
+ var EdubridgeWeeklyFactsParams = EmailOrStudentId.extend({
15183
+ weekDate: EdubridgeDateString,
15184
+ timezone: exports_external.string().optional()
15185
+ });
15186
+ var EdubridgeEnrollmentFactsParams = exports_external.object({
15187
+ enrollmentId: NonEmptyString,
15188
+ startDate: EdubridgeDateString.optional(),
15189
+ endDate: EdubridgeDateString.optional(),
15190
+ timezone: exports_external.string().optional()
15191
+ });
15192
+ // ../types/src/zod/oneroster.ts
15193
+ var NonEmptyString2 = exports_external.string().min(1);
15194
+ var Status = exports_external.enum(["active", "tobedeleted"]);
15195
+ var Metadata = exports_external.record(exports_external.string(), exports_external.unknown()).nullable().optional();
15196
+ var Ref = exports_external.object({
15197
+ sourcedId: NonEmptyString2,
15198
+ type: exports_external.string().optional(),
15199
+ href: exports_external.string().optional()
15200
+ }).strict();
15201
+ var OneRosterDateString = exports_external.union([IsoDateString, IsoDateTimeString]);
15202
+ var OneRosterUserRoleInput = exports_external.object({
15203
+ roleType: exports_external.enum(["primary", "secondary"]),
15204
+ role: OneRosterUserRole,
15205
+ org: Ref,
15206
+ userProfile: exports_external.string().optional(),
15207
+ metadata: Metadata,
15208
+ beginDate: OneRosterDateString.optional(),
15209
+ endDate: OneRosterDateString.optional()
15210
+ }).strict();
15211
+ var OneRosterUserCreateInput = exports_external.object({
15212
+ sourcedId: NonEmptyString2.describe("sourcedId must be a non-empty string"),
15213
+ status: Status.optional(),
15214
+ enabledUser: exports_external.boolean(),
15215
+ givenName: NonEmptyString2.describe("givenName must be a non-empty string"),
15216
+ familyName: NonEmptyString2.describe("familyName must be a non-empty string"),
15217
+ middleName: NonEmptyString2.optional(),
15218
+ username: NonEmptyString2.optional(),
15219
+ email: exports_external.email().optional(),
15220
+ roles: exports_external.array(OneRosterUserRoleInput).min(1, "roles must include at least one role"),
15221
+ userIds: exports_external.array(exports_external.object({
15222
+ type: NonEmptyString2,
15223
+ identifier: NonEmptyString2
15224
+ }).strict()).optional(),
15225
+ agents: exports_external.array(Ref).optional(),
15226
+ grades: exports_external.array(TimebackGrade).optional(),
15227
+ identifier: NonEmptyString2.optional(),
15228
+ sms: NonEmptyString2.optional(),
15229
+ phone: NonEmptyString2.optional(),
15230
+ pronouns: NonEmptyString2.optional(),
15231
+ password: NonEmptyString2.optional(),
15232
+ metadata: Metadata
15233
+ }).strict();
15234
+ var OneRosterCourseCreateInput = exports_external.object({
15235
+ sourcedId: NonEmptyString2.describe("sourcedId must be a non-empty string").optional(),
15236
+ status: Status.optional(),
15237
+ title: NonEmptyString2.describe("title must be a non-empty string"),
15238
+ org: Ref,
15239
+ courseCode: NonEmptyString2.optional(),
15240
+ subjects: exports_external.array(TimebackSubject).optional(),
15241
+ grades: exports_external.array(TimebackGrade).optional(),
15242
+ level: NonEmptyString2.optional(),
15243
+ metadata: Metadata
15244
+ }).strict();
15245
+ var OneRosterClassCreateInput = exports_external.object({
15246
+ sourcedId: NonEmptyString2.describe("sourcedId must be a non-empty string").optional(),
15247
+ status: Status.optional(),
15248
+ title: NonEmptyString2.describe("title must be a non-empty string"),
15249
+ terms: exports_external.array(Ref).min(1, "terms must have at least one item"),
15250
+ course: Ref,
15251
+ org: Ref,
15252
+ classCode: NonEmptyString2.optional(),
15253
+ classType: exports_external.enum(["homeroom", "scheduled"]).optional(),
15254
+ location: NonEmptyString2.optional(),
15255
+ grades: exports_external.array(TimebackGrade).optional(),
15256
+ subjects: exports_external.array(TimebackSubject).optional(),
15257
+ subjectCodes: exports_external.array(NonEmptyString2).optional(),
15258
+ periods: exports_external.array(NonEmptyString2).optional(),
15259
+ metadata: Metadata
15260
+ }).strict();
15261
+ var StringBoolean = exports_external.enum(["true", "false"]);
15262
+ var OneRosterEnrollmentCreateInput = exports_external.object({
15263
+ sourcedId: NonEmptyString2.describe("sourcedId must be a non-empty string").optional(),
15264
+ status: Status.optional(),
15265
+ user: Ref,
15266
+ class: Ref,
15267
+ school: Ref.optional(),
15268
+ role: OneRosterUserRole,
15269
+ primary: StringBoolean.optional(),
15270
+ beginDate: OneRosterDateString.optional(),
15271
+ endDate: OneRosterDateString.optional(),
15272
+ metadata: Metadata
15273
+ }).strict();
15274
+ var OneRosterCategoryCreateInput = exports_external.object({
15275
+ sourcedId: NonEmptyString2.optional(),
15276
+ title: NonEmptyString2.describe("title must be a non-empty string"),
15277
+ status: Status,
15278
+ weight: exports_external.number().nullable().optional(),
15279
+ metadata: Metadata
15280
+ }).strict();
15281
+ var OneRosterLineItemCreateInput = exports_external.object({
15282
+ sourcedId: NonEmptyString2.optional(),
15283
+ title: NonEmptyString2.describe("title must be a non-empty string"),
15284
+ class: Ref,
15285
+ school: Ref,
15286
+ category: Ref,
15287
+ assignDate: OneRosterDateString,
15288
+ dueDate: OneRosterDateString,
15289
+ status: Status,
15290
+ description: exports_external.string().optional(),
15291
+ resultValueMin: exports_external.number().nullable().optional(),
15292
+ resultValueMax: exports_external.number().nullable().optional(),
15293
+ scoreScale: Ref.optional(),
15294
+ metadata: Metadata
15295
+ }).strict();
15296
+ var OneRosterResultCreateInput = exports_external.object({
15297
+ sourcedId: NonEmptyString2.optional(),
15298
+ lineItem: Ref,
15299
+ student: Ref,
15300
+ class: Ref.optional(),
15301
+ scoreDate: OneRosterDateString,
15302
+ scoreStatus: exports_external.enum([
15303
+ "exempt",
15304
+ "fully graded",
15305
+ "not submitted",
15306
+ "partially graded",
15307
+ "submitted"
15308
+ ]),
15309
+ score: exports_external.number().nullable().optional(),
15310
+ textScore: exports_external.string().nullable().optional(),
15311
+ status: Status,
15312
+ comment: exports_external.string().nullable().optional(),
15313
+ metadata: Metadata
15314
+ }).strict();
15315
+ var OneRosterScoreScaleCreateInput = exports_external.object({
15316
+ sourcedId: NonEmptyString2.optional(),
15317
+ title: NonEmptyString2.describe("title must be a non-empty string"),
15318
+ status: Status.optional(),
15319
+ type: exports_external.string().optional(),
15320
+ class: Ref.optional(),
15321
+ course: Ref.nullable().optional(),
15322
+ scoreScaleValue: exports_external.array(exports_external.object({
15323
+ itemValueLHS: NonEmptyString2,
15324
+ itemValueRHS: NonEmptyString2,
15325
+ value: exports_external.string().optional(),
15326
+ description: exports_external.string().optional()
15327
+ }).strict()).optional(),
15328
+ minScore: exports_external.number().optional(),
15329
+ maxScore: exports_external.number().optional(),
15330
+ metadata: Metadata
15331
+ }).strict();
15332
+ var OneRosterAssessmentLineItemCreateInput = exports_external.object({
15333
+ sourcedId: NonEmptyString2.optional(),
15334
+ title: NonEmptyString2.describe("title must be a non-empty string"),
15335
+ class: Ref,
15336
+ school: Ref,
15337
+ category: Ref,
15338
+ assignDate: OneRosterDateString,
15339
+ dueDate: OneRosterDateString,
15340
+ status: Status,
15341
+ metadata: Metadata
15342
+ }).strict();
15343
+ var OneRosterAssessmentResultCreateInput = exports_external.object({
15344
+ sourcedId: NonEmptyString2.optional(),
15345
+ lineItem: Ref,
15346
+ student: Ref,
15347
+ scoreDate: OneRosterDateString,
15348
+ scoreStatus: exports_external.enum([
15349
+ "exempt",
15350
+ "fully graded",
15351
+ "not submitted",
15352
+ "partially graded",
15353
+ "submitted"
15354
+ ]),
15355
+ score: exports_external.string().optional(),
15356
+ status: Status,
15357
+ metadata: Metadata
15358
+ }).strict();
15359
+ var OneRosterOrgCreateInput = exports_external.object({
15360
+ sourcedId: NonEmptyString2.optional(),
15361
+ status: Status.optional(),
15362
+ name: NonEmptyString2.describe("name must be a non-empty string"),
15363
+ type: OrganizationType,
15364
+ identifier: NonEmptyString2.optional(),
15365
+ parent: Ref.optional(),
15366
+ metadata: Metadata
15367
+ }).strict();
15368
+ var OneRosterSchoolCreateInput = exports_external.object({
15369
+ sourcedId: NonEmptyString2.optional(),
15370
+ status: Status.optional(),
15371
+ name: NonEmptyString2.describe("name must be a non-empty string"),
15372
+ type: exports_external.literal("school").optional(),
15373
+ identifier: NonEmptyString2.optional(),
15374
+ parent: Ref.optional(),
15375
+ metadata: Metadata
15376
+ }).strict();
15377
+ var OneRosterAcademicSessionCreateInput = exports_external.object({
15378
+ sourcedId: NonEmptyString2.describe("sourcedId must be a non-empty string"),
15379
+ status: Status,
15380
+ title: NonEmptyString2.describe("title must be a non-empty string"),
15381
+ startDate: OneRosterDateString,
15382
+ endDate: OneRosterDateString,
15383
+ type: exports_external.enum(["gradingPeriod", "semester", "schoolYear", "term"]),
15384
+ schoolYear: NonEmptyString2.describe("schoolYear must be a non-empty string"),
15385
+ org: Ref,
15386
+ parent: Ref.optional(),
15387
+ children: exports_external.array(Ref).optional(),
15388
+ metadata: Metadata
15389
+ }).strict();
15390
+ var OneRosterComponentResourceCreateInput = exports_external.object({
15391
+ sourcedId: NonEmptyString2.optional(),
15392
+ title: NonEmptyString2.describe("title must be a non-empty string"),
15393
+ courseComponent: Ref,
15394
+ resource: Ref,
15395
+ status: Status,
15396
+ metadata: Metadata
15397
+ }).strict();
15398
+ var OneRosterCourseComponentCreateInput = exports_external.object({
15399
+ sourcedId: NonEmptyString2.optional(),
15400
+ title: NonEmptyString2.describe("title must be a non-empty string"),
15401
+ course: Ref,
15402
+ status: Status,
15403
+ metadata: Metadata
15404
+ }).strict();
15405
+ var OneRosterEnrollInput = exports_external.object({
15406
+ sourcedId: NonEmptyString2.describe("sourcedId must be a non-empty string"),
15407
+ role: exports_external.enum(["student", "teacher"]),
15408
+ primary: StringBoolean.optional(),
15409
+ beginDate: OneRosterDateString.optional(),
15410
+ endDate: OneRosterDateString.optional(),
15411
+ metadata: Metadata
15412
+ }).strict();
15413
+ var OneRosterAgentInput = exports_external.object({
15414
+ agentSourcedId: NonEmptyString2.describe("agentSourcedId must be a non-empty string")
15415
+ }).strict();
15416
+ var OneRosterCredentialInput = exports_external.object({
15417
+ type: NonEmptyString2.describe("type must be a non-empty string"),
15418
+ username: NonEmptyString2.describe("username must be a non-empty string"),
15419
+ password: exports_external.string().optional(),
15420
+ metadata: Metadata
15421
+ }).strict();
15422
+ var OneRosterDemographicsCreateInput = exports_external.object({
15423
+ sourcedId: NonEmptyString2.describe("sourcedId must be a non-empty string")
15424
+ }).loose();
15425
+ var OneRosterResourceCreateInput = exports_external.object({
15426
+ sourcedId: NonEmptyString2.optional(),
15427
+ title: NonEmptyString2.describe("title must be a non-empty string"),
15428
+ vendorResourceId: NonEmptyString2.describe("vendorResourceId must be a non-empty string"),
15429
+ roles: exports_external.array(exports_external.enum(["primary", "secondary"])).optional(),
15430
+ importance: exports_external.enum(["primary", "secondary"]).optional(),
15431
+ vendorId: exports_external.string().optional(),
15432
+ applicationId: exports_external.string().optional(),
15433
+ status: Status.optional(),
15434
+ metadata: Metadata
15435
+ }).strict();
15436
+ var CourseStructureItem = exports_external.object({
15437
+ url: NonEmptyString2.describe("courseStructure.url must be a non-empty string"),
15438
+ skillCode: NonEmptyString2.describe("courseStructure.skillCode must be a non-empty string"),
15439
+ lessonCode: NonEmptyString2.describe("courseStructure.lessonCode must be a non-empty string"),
15440
+ title: NonEmptyString2.describe("courseStructure.title must be a non-empty string"),
15441
+ "unit-title": NonEmptyString2.describe("courseStructure.unit-title must be a non-empty string"),
15442
+ status: NonEmptyString2.describe("courseStructure.status must be a non-empty string"),
15443
+ xp: exports_external.number()
15444
+ }).loose();
15445
+ var OneRosterCourseStructureInput = exports_external.object({
15446
+ course: exports_external.object({
15447
+ sourcedId: NonEmptyString2.describe("course.sourcedId must be a non-empty string").optional(),
15448
+ title: NonEmptyString2.describe("course.title must be a non-empty string"),
15449
+ org: Ref,
15450
+ status: Status,
15451
+ metadata: Metadata
15452
+ }).strict(),
15453
+ courseStructure: exports_external.record(exports_external.string(), CourseStructureItem)
15454
+ }).strict();
15455
+ var OneRosterBulkResultItem = exports_external.object({
15456
+ student: Ref
15457
+ }).loose();
15458
+ var OneRosterBulkResultsInput = exports_external.array(OneRosterBulkResultItem).min(1, "results must have at least one item");
15459
+ // ../types/src/zod/qti.ts
15460
+ var QtiAssessmentItemType = exports_external.enum([
15461
+ "choice",
15462
+ "text-entry",
15463
+ "extended-text",
15464
+ "inline-choice",
15465
+ "match",
15466
+ "order",
15467
+ "associate",
15468
+ "select-point",
15469
+ "graphic-order",
15470
+ "graphic-associate",
15471
+ "graphic-gap-match",
15472
+ "hotspot",
15473
+ "hottext",
15474
+ "slider",
15475
+ "drawing",
15476
+ "media",
15477
+ "upload"
15478
+ ]);
15479
+ var QtiCardinality = exports_external.enum(["single", "multiple", "ordered", "record"]);
15480
+ var QtiBaseType = exports_external.enum([
15481
+ "identifier",
15482
+ "boolean",
15483
+ "integer",
15484
+ "float",
15485
+ "string",
15486
+ "point",
15487
+ "pair",
15488
+ "directedPair",
15489
+ "duration",
15490
+ "file",
15491
+ "uri"
15492
+ ]);
15493
+ var QtiDifficulty = exports_external.enum(["easy", "medium", "hard"]);
15494
+ var QtiNavigationMode = exports_external.enum(["linear", "nonlinear"]);
15495
+ var QtiSubmissionMode = exports_external.enum(["individual", "simultaneous"]);
15496
+ var QtiShowHide = exports_external.enum(["show", "hide"]);
15497
+ var QtiValidationSchema = exports_external.enum(["test", "item", "stimulus"]);
15498
+ var QtiFeedbackType = exports_external.enum(["QUESTION", "LESSON"]);
15499
+ var QtiCorrectResponse = exports_external.object({
15500
+ value: exports_external.array(exports_external.string())
15501
+ }).strict();
15502
+ var QtiResponseDeclaration = exports_external.object({
15503
+ identifier: exports_external.string().min(1),
15504
+ cardinality: QtiCardinality,
15505
+ baseType: QtiBaseType.optional(),
15506
+ correctResponse: QtiCorrectResponse
15507
+ }).strict();
15508
+ var QtiOutcomeDeclaration = exports_external.object({
15509
+ identifier: exports_external.string().min(1),
15510
+ cardinality: QtiCardinality,
15511
+ baseType: QtiBaseType.optional()
15512
+ }).strict();
15513
+ var QtiTestOutcomeDeclaration = exports_external.object({
15514
+ identifier: exports_external.string().min(1),
15515
+ cardinality: QtiCardinality.optional(),
15516
+ baseType: QtiBaseType,
15517
+ normalMaximum: exports_external.number().optional(),
15518
+ normalMinimum: exports_external.number().optional(),
15519
+ defaultValue: exports_external.object({
15520
+ value: exports_external.unknown().optional()
15521
+ }).strict().optional()
15522
+ }).strict();
15523
+ var QtiInlineFeedback = exports_external.object({
15524
+ outcomeIdentifier: exports_external.string().min(1),
15525
+ variableIdentifier: exports_external.string().min(1)
15526
+ }).strict();
15527
+ var QtiResponseProcessing = exports_external.object({
15528
+ templateType: exports_external.enum(["match_correct", "map_response"]),
15529
+ responseDeclarationIdentifier: exports_external.string().min(1),
15530
+ outcomeIdentifier: exports_external.string().min(1),
15531
+ correctResponseIdentifier: exports_external.string().min(1),
15532
+ incorrectResponseIdentifier: exports_external.string().min(1),
15533
+ inlineFeedback: QtiInlineFeedback.optional()
15534
+ }).strict();
15535
+ var QtiLearningObjectiveSet = exports_external.object({
15536
+ source: exports_external.string().min(1),
15537
+ learningObjectiveIds: exports_external.array(exports_external.string())
15538
+ }).strict();
15539
+ var QtiItemMetadata = exports_external.object({
15540
+ subject: exports_external.string().optional(),
15541
+ grade: TimebackGrade.optional(),
15542
+ difficulty: QtiDifficulty.optional(),
15543
+ learningObjectiveSet: exports_external.array(QtiLearningObjectiveSet).optional()
15544
+ }).strict();
15545
+ var QtiModalFeedback = exports_external.object({
15546
+ outcomeIdentifier: exports_external.string().min(1),
15547
+ identifier: exports_external.string().min(1),
15548
+ showHide: QtiShowHide,
15549
+ content: exports_external.string(),
15550
+ title: exports_external.string()
15551
+ }).strict();
15552
+ var QtiFeedbackInline = exports_external.object({
15553
+ outcomeIdentifier: exports_external.string().min(1),
15554
+ identifier: exports_external.string().min(1),
15555
+ showHide: QtiShowHide,
15556
+ content: exports_external.string(),
15557
+ class: exports_external.array(exports_external.string())
15558
+ }).strict();
15559
+ var QtiFeedbackBlock = exports_external.object({
15560
+ outcomeIdentifier: exports_external.string().min(1),
15561
+ identifier: exports_external.string().min(1),
15562
+ showHide: QtiShowHide,
15563
+ content: exports_external.string(),
15564
+ class: exports_external.array(exports_external.string())
15565
+ }).strict();
15566
+ var QtiStylesheet = exports_external.object({
15567
+ href: exports_external.string().min(1),
15568
+ type: exports_external.string().min(1)
15569
+ }).strict();
15570
+ var QtiCatalogInfo = exports_external.object({
15571
+ id: exports_external.string().min(1),
15572
+ support: exports_external.string(),
15573
+ content: exports_external.string()
15574
+ }).strict();
15575
+ var QtiPaginationParams = exports_external.object({
15576
+ page: exports_external.number().int().positive().optional(),
15577
+ limit: exports_external.number().int().positive().optional(),
15578
+ sort: exports_external.string().optional(),
15579
+ order: exports_external.enum(["asc", "desc"]).optional()
15580
+ }).strict();
15581
+ var QtiAssessmentItemCreateInput = exports_external.object({
15582
+ identifier: exports_external.string().min(1),
15583
+ title: exports_external.string().min(1),
15584
+ type: QtiAssessmentItemType,
15585
+ qtiVersion: exports_external.string().optional(),
15586
+ timeDependent: exports_external.boolean().optional(),
15587
+ adaptive: exports_external.boolean().optional(),
15588
+ responseDeclarations: exports_external.array(QtiResponseDeclaration).optional(),
15589
+ outcomeDeclarations: exports_external.array(QtiOutcomeDeclaration).optional(),
15590
+ responseProcessing: QtiResponseProcessing.optional(),
15591
+ metadata: QtiItemMetadata.optional(),
15592
+ modalFeedback: exports_external.array(QtiModalFeedback).optional(),
15593
+ feedbackInline: exports_external.array(QtiFeedbackInline).optional(),
15594
+ feedbackBlock: exports_external.array(QtiFeedbackBlock).optional()
15595
+ }).strict();
15596
+ var QtiAssessmentItemUpdateInput = exports_external.object({
15597
+ identifier: exports_external.string().min(1).optional(),
15598
+ title: exports_external.string().min(1),
15599
+ type: QtiAssessmentItemType,
15600
+ qtiVersion: exports_external.string().optional(),
15601
+ timeDependent: exports_external.boolean().optional(),
15602
+ adaptive: exports_external.boolean().optional(),
15603
+ responseDeclarations: exports_external.array(QtiResponseDeclaration).optional(),
15604
+ outcomeDeclarations: exports_external.array(QtiOutcomeDeclaration).optional(),
15605
+ responseProcessing: QtiResponseProcessing.optional(),
15606
+ metadata: QtiItemMetadata.optional(),
15607
+ modalFeedback: exports_external.array(QtiModalFeedback).optional(),
15608
+ feedbackInline: exports_external.array(QtiFeedbackInline).optional(),
15609
+ feedbackBlock: exports_external.array(QtiFeedbackBlock).optional(),
15610
+ rawXml: exports_external.string(),
15611
+ content: exports_external.record(exports_external.string(), exports_external.unknown())
15612
+ }).strict();
15613
+ var QtiAssessmentItemProcessResponseInput = exports_external.object({
15614
+ response: exports_external.union([exports_external.string(), exports_external.array(exports_external.string())])
15615
+ }).strict();
15616
+ var QtiAssessmentItemRef = exports_external.object({
15617
+ identifier: exports_external.string().min(1),
15618
+ href: exports_external.union([exports_external.string(), exports_external.array(exports_external.string()), exports_external.array(exports_external.array(exports_external.string()))]).optional(),
15619
+ sequence: exports_external.number().optional()
15620
+ }).strict();
15621
+ var QtiAssessmentSection = exports_external.object({
15622
+ identifier: exports_external.string().min(1),
15623
+ title: exports_external.string().min(1),
15624
+ visible: exports_external.boolean(),
15625
+ required: exports_external.boolean().optional(),
15626
+ fixed: exports_external.boolean().optional(),
15627
+ sequence: exports_external.number().optional(),
15628
+ "qti-assessment-item-ref": exports_external.array(QtiAssessmentItemRef).optional()
15629
+ }).strict();
15630
+ var QtiTestPart = exports_external.object({
15631
+ identifier: exports_external.string().min(1),
15632
+ navigationMode: QtiNavigationMode,
15633
+ submissionMode: QtiSubmissionMode,
15634
+ "qti-assessment-section": exports_external.union([QtiAssessmentSection, exports_external.array(QtiAssessmentSection)])
15635
+ }).strict();
15636
+ var QtiReorderItemsInput = exports_external.object({
15637
+ items: exports_external.array(QtiAssessmentItemRef).min(1)
15638
+ }).strict();
15639
+ var QtiAssessmentTestMetadataUpdateInput = exports_external.object({
15640
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15641
+ }).strict();
15642
+ var QtiAssessmentTestCreateInput = exports_external.object({
15643
+ identifier: exports_external.string().min(1),
15644
+ title: exports_external.string().min(1),
15645
+ qtiVersion: exports_external.string().optional(),
15646
+ toolName: exports_external.string().optional(),
15647
+ toolVersion: exports_external.string().optional(),
15648
+ timeLimit: exports_external.number().optional(),
15649
+ maxAttempts: exports_external.number().optional(),
15650
+ toolsEnabled: exports_external.record(exports_external.string(), exports_external.boolean()).optional(),
15651
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
15652
+ "qti-test-part": QtiTestPart,
15653
+ "qti-outcome-declaration": exports_external.array(QtiTestOutcomeDeclaration).optional()
15654
+ }).strict();
15655
+ var QtiAssessmentTestUpdateInput = exports_external.object({
15656
+ identifier: exports_external.string().min(1).optional(),
15657
+ title: exports_external.string().min(1),
15658
+ qtiVersion: exports_external.string().optional(),
15659
+ toolName: exports_external.string().optional(),
15660
+ toolVersion: exports_external.string().optional(),
15661
+ timeLimit: exports_external.number().optional(),
15662
+ maxAttempts: exports_external.number().optional(),
15663
+ toolsEnabled: exports_external.record(exports_external.string(), exports_external.boolean()).optional(),
15664
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
15665
+ "qti-test-part": QtiTestPart,
15666
+ "qti-outcome-declaration": exports_external.array(QtiTestOutcomeDeclaration).optional()
15667
+ }).strict();
15668
+ var QtiStimulusCreateInput = exports_external.object({
15669
+ identifier: exports_external.string().min(1),
15670
+ title: exports_external.string().min(1),
15671
+ label: exports_external.string().optional(),
15672
+ language: exports_external.string().optional(),
15673
+ stylesheet: QtiStylesheet.optional(),
15674
+ content: exports_external.string(),
15675
+ catalogInfo: exports_external.array(QtiCatalogInfo).optional(),
15676
+ toolName: exports_external.string().optional(),
15677
+ toolVersion: exports_external.string().optional(),
15678
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15679
+ }).strict();
15680
+ var QtiStimulusUpdateInput = exports_external.object({
15681
+ identifier: exports_external.string().min(1).optional(),
15682
+ title: exports_external.string().min(1),
15683
+ label: exports_external.string().optional(),
15684
+ language: exports_external.string().optional(),
15685
+ stylesheet: QtiStylesheet.optional(),
15686
+ content: exports_external.string(),
15687
+ catalogInfo: exports_external.array(QtiCatalogInfo).optional(),
15688
+ toolName: exports_external.string().optional(),
15689
+ toolVersion: exports_external.string().optional(),
15690
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15691
+ }).strict();
15692
+ var QtiValidateInput = exports_external.object({
15693
+ xml: exports_external.string().optional(),
15694
+ schema: QtiValidationSchema,
15695
+ entityId: exports_external.string().optional()
15696
+ }).strict();
15697
+ var QtiValidateBatchInput = exports_external.object({
15698
+ xml: exports_external.array(exports_external.string()),
15699
+ schema: QtiValidationSchema,
15700
+ entityIds: exports_external.array(exports_external.string())
15701
+ }).strict();
15702
+ var QtiLessonFeedbackInput = exports_external.object({
15703
+ questionId: exports_external.string().optional(),
15704
+ userId: exports_external.string().min(1),
15705
+ feedback: exports_external.string().min(1),
15706
+ lessonId: exports_external.string().min(1),
15707
+ humanApproved: exports_external.boolean().optional()
15708
+ }).strict();
15049
15709
  // ../internal/cli-infra/src/config/timeback.ts
15050
15710
  var FILE_PATTERNS2 = ["timeback.config.ts", "timeback.config.js", "timeback.config.mjs"];
15051
15711
  var jiti = createJiti(import.meta.url, { fsCache: false });
@@ -15191,7 +15851,7 @@ function getParser(opts = {}) {
15191
15851
 
15192
15852
  // ../internal/cli-infra/src/search/search.ts
15193
15853
  function searchCourses(client, query, max = 50) {
15194
- return client.oneroster.courses.list({
15854
+ return client.oneroster.courses.listAll({
15195
15855
  search: query,
15196
15856
  where: { status: "active" },
15197
15857
  max
@@ -16097,7 +16757,7 @@ async function resolveConfig(courseIds, opts, credentials, configuredEnvs, defau
16097
16757
  return resolved;
16098
16758
  }
16099
16759
 
16100
- // ../../node_modules/.bun/@hono+node-server@1.19.7+fde825ba4efdc684/node_modules/@hono/node-server/dist/index.mjs
16760
+ // ../../node_modules/.bun/@hono+node-server@1.19.9+fd698e00a3b2abce/node_modules/@hono/node-server/dist/index.mjs
16101
16761
  import { createServer as createServerHTTP } from "http";
16102
16762
  import { Http2ServerRequest as Http2ServerRequest2 } from "http2";
16103
16763
  import { Http2ServerRequest } from "http2";
@@ -16406,17 +17066,9 @@ var buildOutgoingHttpHeaders = (headers) => {
16406
17066
  return res;
16407
17067
  };
16408
17068
  var X_ALREADY_SENT = "x-hono-already-sent";
16409
- var webFetch = global.fetch;
16410
17069
  if (typeof global.crypto === "undefined") {
16411
17070
  global.crypto = crypto;
16412
17071
  }
16413
- global.fetch = (info, init2) => {
16414
- init2 = {
16415
- compress: false,
16416
- ...init2
16417
- };
16418
- return webFetch(info, init2);
16419
- };
16420
17072
  var outgoingEnded = Symbol("outgoingEnded");
16421
17073
  var handleRequestError = () => new Response(null, {
16422
17074
  status: 400
@@ -16639,7 +17291,7 @@ var serve = (options, listeningListener) => {
16639
17291
  return server;
16640
17292
  };
16641
17293
 
16642
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/compose.js
17294
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/compose.js
16643
17295
  var compose = (middleware, onError, onNotFound) => {
16644
17296
  return (context, next) => {
16645
17297
  let index = -1;
@@ -16683,10 +17335,10 @@ var compose = (middleware, onError, onNotFound) => {
16683
17335
  };
16684
17336
  };
16685
17337
 
16686
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/request/constants.js
17338
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/request/constants.js
16687
17339
  var GET_MATCH_RESULT = /* @__PURE__ */ Symbol();
16688
17340
 
16689
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/utils/body.js
17341
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/utils/body.js
16690
17342
  var parseBody = async (request, options = /* @__PURE__ */ Object.create(null)) => {
16691
17343
  const { all = false, dot = false } = options;
16692
17344
  const headers = request instanceof HonoRequest ? request.raw.headers : request.headers;
@@ -16754,7 +17406,7 @@ var handleParsingNestedValues = (form, key, value) => {
16754
17406
  });
16755
17407
  };
16756
17408
 
16757
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/utils/url.js
17409
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/utils/url.js
16758
17410
  var splitPath = (path) => {
16759
17411
  const paths = path.split("/");
16760
17412
  if (paths[0] === "") {
@@ -16952,7 +17604,7 @@ var getQueryParams = (url2, key) => {
16952
17604
  };
16953
17605
  var decodeURIComponent_ = decodeURIComponent;
16954
17606
 
16955
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/request.js
17607
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/request.js
16956
17608
  var tryDecodeURIComponent = (str) => tryDecode(str, decodeURIComponent_);
16957
17609
  var HonoRequest = class {
16958
17610
  raw;
@@ -17063,7 +17715,7 @@ var HonoRequest = class {
17063
17715
  }
17064
17716
  };
17065
17717
 
17066
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/utils/html.js
17718
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/utils/html.js
17067
17719
  var HtmlEscapedCallbackPhase = {
17068
17720
  Stringify: 1,
17069
17721
  BeforeStream: 2,
@@ -17101,7 +17753,7 @@ var resolveCallback = async (str, phase, preserveCallbacks, context, buffer) =>
17101
17753
  }
17102
17754
  };
17103
17755
 
17104
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/context.js
17756
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/context.js
17105
17757
  var TEXT_PLAIN = "text/plain; charset=UTF-8";
17106
17758
  var setDefaultContentType = (contentType, headers) => {
17107
17759
  return {
@@ -17267,7 +17919,7 @@ var Context = class {
17267
17919
  };
17268
17920
  };
17269
17921
 
17270
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/router.js
17922
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/router.js
17271
17923
  var METHOD_NAME_ALL = "ALL";
17272
17924
  var METHOD_NAME_ALL_LOWERCASE = "all";
17273
17925
  var METHODS = ["get", "post", "put", "delete", "options", "patch"];
@@ -17275,10 +17927,10 @@ var MESSAGE_MATCHER_IS_ALREADY_BUILT = "Can not add a route since the matcher is
17275
17927
  var UnsupportedPathError = class extends Error {
17276
17928
  };
17277
17929
 
17278
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/utils/constants.js
17930
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/utils/constants.js
17279
17931
  var COMPOSED_HANDLER = "__COMPOSED_HANDLER";
17280
17932
 
17281
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/hono-base.js
17933
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/hono-base.js
17282
17934
  var notFoundHandler = (c) => {
17283
17935
  return c.text("404 Not Found", 404);
17284
17936
  };
@@ -17497,7 +18149,7 @@ var Hono = class _Hono {
17497
18149
  };
17498
18150
  };
17499
18151
 
17500
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/router/reg-exp-router/matcher.js
18152
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/router/reg-exp-router/matcher.js
17501
18153
  var emptyParam = [];
17502
18154
  function match(method, path) {
17503
18155
  const matchers = this.buildAllMatchers();
@@ -17518,7 +18170,7 @@ function match(method, path) {
17518
18170
  return match2(method, path);
17519
18171
  }
17520
18172
 
17521
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/router/reg-exp-router/node.js
18173
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/router/reg-exp-router/node.js
17522
18174
  var LABEL_REG_EXP_STR = "[^/]+";
17523
18175
  var ONLY_WILDCARD_REG_EXP_STR = ".*";
17524
18176
  var TAIL_WILDCARD_REG_EXP_STR = "(?:|/.*)";
@@ -17622,7 +18274,7 @@ var Node = class _Node {
17622
18274
  }
17623
18275
  };
17624
18276
 
17625
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/router/reg-exp-router/trie.js
18277
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/router/reg-exp-router/trie.js
17626
18278
  var Trie = class {
17627
18279
  #context = { varIndex: 0 };
17628
18280
  #root = new Node;
@@ -17678,7 +18330,7 @@ var Trie = class {
17678
18330
  }
17679
18331
  };
17680
18332
 
17681
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/router/reg-exp-router/router.js
18333
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/router/reg-exp-router/router.js
17682
18334
  var nullMatcher = [/^$/, [], /* @__PURE__ */ Object.create(null)];
17683
18335
  var wildcardRegExpCache = /* @__PURE__ */ Object.create(null);
17684
18336
  function buildWildcardRegExp(path) {
@@ -17843,7 +18495,7 @@ var RegExpRouter = class {
17843
18495
  }
17844
18496
  };
17845
18497
 
17846
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/router/reg-exp-router/prepared-router.js
18498
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/router/reg-exp-router/prepared-router.js
17847
18499
  var PreparedRegExpRouter = class {
17848
18500
  name = "PreparedRegExpRouter";
17849
18501
  #matchers;
@@ -17915,7 +18567,7 @@ var PreparedRegExpRouter = class {
17915
18567
  match = match;
17916
18568
  };
17917
18569
 
17918
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/router/smart-router/router.js
18570
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/router/smart-router/router.js
17919
18571
  var SmartRouter = class {
17920
18572
  name = "SmartRouter";
17921
18573
  #routers = [];
@@ -17970,7 +18622,7 @@ var SmartRouter = class {
17970
18622
  }
17971
18623
  };
17972
18624
 
17973
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/router/trie-router/node.js
18625
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/router/trie-router/node.js
17974
18626
  var emptyParams = /* @__PURE__ */ Object.create(null);
17975
18627
  var Node2 = class _Node2 {
17976
18628
  #methods;
@@ -18124,7 +18776,7 @@ var Node2 = class _Node2 {
18124
18776
  }
18125
18777
  };
18126
18778
 
18127
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/router/trie-router/router.js
18779
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/router/trie-router/router.js
18128
18780
  var TrieRouter = class {
18129
18781
  name = "TrieRouter";
18130
18782
  #node;
@@ -18146,7 +18798,7 @@ var TrieRouter = class {
18146
18798
  }
18147
18799
  };
18148
18800
 
18149
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/hono.js
18801
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/hono.js
18150
18802
  var Hono2 = class extends Hono {
18151
18803
  constructor(options = {}) {
18152
18804
  super(options);
@@ -18156,7 +18808,7 @@ var Hono2 = class extends Hono {
18156
18808
  }
18157
18809
  };
18158
18810
 
18159
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/middleware/cors/index.js
18811
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/middleware/cors/index.js
18160
18812
  var cors = (options) => {
18161
18813
  const defaults = {
18162
18814
  origin: "*",
@@ -18683,7 +19335,7 @@ class BootstrapService {
18683
19335
  return enrollmentData.enrollments;
18684
19336
  }
18685
19337
  try {
18686
- const users = await this.client.oneroster.users.list({
19338
+ const users = await this.client.oneroster.users.listAll({
18687
19339
  where: { sourcedId: { in: studentUserIds } }
18688
19340
  });
18689
19341
  const userMap = new Map(users.map((u2) => [u2.sourcedId, u2]));
@@ -18706,7 +19358,7 @@ class BootstrapService {
18706
19358
  }
18707
19359
  const uniqueResourceIds = [...new Set(resourceIds)];
18708
19360
  try {
18709
- const resources = await this.client.oneroster.resources.list({
19361
+ const resources = await this.client.oneroster.resources.listAll({
18710
19362
  where: { sourcedId: { in: uniqueResourceIds } }
18711
19363
  });
18712
19364
  const resourceMap = new Map(resources.map((r2) => [r2.sourcedId, r2]));
@@ -18742,7 +19394,7 @@ class BootstrapService {
18742
19394
  return null;
18743
19395
  }
18744
19396
  try {
18745
- const [user] = await this.client.oneroster.users.list({ where: { email: email3 }, limit: 1 });
19397
+ const user = await this.client.oneroster.users.first({ where: { email: email3 } });
18746
19398
  return user ?? null;
18747
19399
  } catch (error48) {
18748
19400
  const message = getErrorMessage(error48);
@@ -18761,7 +19413,7 @@ class BootstrapService {
18761
19413
  return { enrollments, studentIds, teacherIds, studentsByClass };
18762
19414
  }
18763
19415
  try {
18764
- const fetchedEnrollments = await this.client.oneroster.enrollments.list({
19416
+ const fetchedEnrollments = await this.client.oneroster.enrollments.listAll({
18765
19417
  where: {
18766
19418
  "class.sourcedId": { in: classIds }
18767
19419
  }
@@ -19106,7 +19758,7 @@ class StudentSearchService {
19106
19758
  const trimmedQuery = query.trim();
19107
19759
  log5.debug("Searching students", { query: trimmedQuery, max });
19108
19760
  try {
19109
- const users = await this.client.oneroster.students.list({
19761
+ const users = await this.client.oneroster.students.listAll({
19110
19762
  search: trimmedQuery,
19111
19763
  where: { status: "active" },
19112
19764
  max
@@ -19184,7 +19836,7 @@ function createManager(ctx) {
19184
19836
  log6.debug("Manager ready", { environments: manager.names });
19185
19837
  return manager;
19186
19838
  }
19187
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/helper/factory/index.js
19839
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/helper/factory/index.js
19188
19840
  var Factory = class {
19189
19841
  initApp;
19190
19842
  #defaultAppOptions;
@@ -19247,7 +19899,7 @@ function createEnvMiddleware(ctx, manager) {
19247
19899
  await next();
19248
19900
  });
19249
19901
  }
19250
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/utils/stream.js
19902
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/utils/stream.js
19251
19903
  var StreamingApi = class {
19252
19904
  writer;
19253
19905
  encoder;
@@ -19313,7 +19965,7 @@ var StreamingApi = class {
19313
19965
  }
19314
19966
  };
19315
19967
 
19316
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/helper/streaming/utils.js
19968
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/helper/streaming/utils.js
19317
19969
  var isOldBunVersion = () => {
19318
19970
  const version2 = typeof Bun !== "undefined" ? Bun.version : undefined;
19319
19971
  if (version2 === undefined) {
@@ -19324,7 +19976,7 @@ var isOldBunVersion = () => {
19324
19976
  return result;
19325
19977
  };
19326
19978
 
19327
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/helper/streaming/sse.js
19979
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/helper/streaming/sse.js
19328
19980
  var SSEStreamingApi = class extends StreamingApi {
19329
19981
  constructor(writable, readable) {
19330
19982
  super(writable, readable);