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/bin.js CHANGED
@@ -16696,11 +16696,11 @@ async function validateEmailWithTimeback(environment, clientId, clientSecret, em
16696
16696
  auth: { clientId, clientSecret }
16697
16697
  });
16698
16698
  try {
16699
- const users = await client.oneroster.users.list({
16699
+ const page = await client.oneroster.users.list({
16700
16700
  where: { email: email3 },
16701
16701
  limit: 1
16702
16702
  });
16703
- if (users.length === 0) {
16703
+ if (page.data.length === 0) {
16704
16704
  return {
16705
16705
  valid: false,
16706
16706
  error: `No user found with email "${email3}" in ${environment}`
@@ -16931,6 +16931,9 @@ import { readFile as readFile2 } from "node:fs/promises";
16931
16931
  import { basename, relative, resolve } from "node:path";
16932
16932
  import { createJiti } from "jiti";
16933
16933
  // ../types/src/zod/primitives.ts
16934
+ var IsoDateTimeRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/;
16935
+ var IsoDateTimeString = exports_external.string().min(1).regex(IsoDateTimeRegex, "must be a valid ISO 8601 datetime");
16936
+ var IsoDateString = exports_external.string().min(1).regex(/^\d{4}-\d{2}-\d{2}$/, "must be a valid ISO 8601 date (YYYY-MM-DD)");
16934
16937
  var TimebackSubject = exports_external.enum([
16935
16938
  "Reading",
16936
16939
  "Language",
@@ -16940,7 +16943,8 @@ var TimebackSubject = exports_external.enum([
16940
16943
  "Science",
16941
16944
  "FastMath",
16942
16945
  "Math",
16943
- "None"
16946
+ "None",
16947
+ "Other"
16944
16948
  ]);
16945
16949
  var TimebackGrade = exports_external.union([
16946
16950
  exports_external.literal(-1),
@@ -17007,16 +17011,16 @@ var TimebackActivityContext = exports_external.object({
17007
17011
  id: exports_external.string(),
17008
17012
  type: exports_external.literal("TimebackActivityContext"),
17009
17013
  subject: TimebackSubject,
17010
- app: exports_external.object({ name: exports_external.string() }).optional(),
17011
- activity: exports_external.object({ id: exports_external.string().optional(), name: exports_external.string().optional() }).optional(),
17012
- course: exports_external.object({ id: exports_external.string(), name: exports_external.string() }),
17014
+ app: exports_external.object({ name: exports_external.string() }),
17015
+ activity: exports_external.object({ id: exports_external.string().optional(), name: exports_external.string() }).strict().optional(),
17016
+ course: exports_external.object({ id: exports_external.string().optional(), name: exports_external.string() }).strict().optional(),
17013
17017
  process: exports_external.boolean().optional()
17014
17018
  });
17015
17019
  var CaliperEventBase = exports_external.object({
17016
17020
  "@context": exports_external.literal("http://purl.imsglobal.org/ctx/caliper/v1p2"),
17017
17021
  id: exports_external.string(),
17018
17022
  type: exports_external.string(),
17019
- eventTime: exports_external.string(),
17023
+ eventTime: IsoDateTimeString,
17020
17024
  profile: exports_external.literal("TimebackProfile"),
17021
17025
  actor: TimebackUser,
17022
17026
  action: exports_external.string(),
@@ -17054,13 +17058,95 @@ var TimebackTimeSpentEvent = CaliperEventBase.extend({
17054
17058
  action: exports_external.literal("SpentTime"),
17055
17059
  generated: TimebackTimeSpentMetricsCollection
17056
17060
  });
17061
+ var ActivityCompletedInput = exports_external.object({
17062
+ actor: TimebackUser,
17063
+ object: TimebackActivityContext,
17064
+ metrics: exports_external.array(TimebackActivityMetric).min(1, "metrics must contain at least one metric"),
17065
+ eventTime: IsoDateTimeString.optional(),
17066
+ metricsId: exports_external.string().optional(),
17067
+ id: exports_external.string().optional(),
17068
+ extensions: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
17069
+ }).strict();
17070
+ var TimeSpentInput = exports_external.object({
17071
+ actor: TimebackUser,
17072
+ object: TimebackActivityContext,
17073
+ metrics: exports_external.array(TimebackTimeMetric).min(1, "metrics must contain at least one metric"),
17074
+ eventTime: IsoDateTimeString.optional(),
17075
+ metricsId: exports_external.string().optional(),
17076
+ id: exports_external.string().optional(),
17077
+ extensions: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
17078
+ }).strict();
17057
17079
  var TimebackEvent = exports_external.union([TimebackActivityEvent, TimebackTimeSpentEvent]);
17058
17080
  var CaliperEnvelope = exports_external.object({
17059
17081
  sensor: exports_external.string(),
17060
- sendTime: exports_external.string(),
17082
+ sendTime: IsoDateTimeString,
17061
17083
  dataVersion: exports_external.literal("http://purl.imsglobal.org/ctx/caliper/v1p2"),
17062
17084
  data: exports_external.array(TimebackEvent)
17063
17085
  });
17086
+ var CaliperProfile = exports_external.enum([
17087
+ "AnnotationProfile",
17088
+ "AssessmentProfile",
17089
+ "ToolUseProfile",
17090
+ "GeneralProfile",
17091
+ "FeedbackProfile",
17092
+ "MediaProfile",
17093
+ "SurveyProfile",
17094
+ "ResourceManagementProfile",
17095
+ "ForumProfile",
17096
+ "AssignableProfile",
17097
+ "GradingProfile",
17098
+ "ReadingProfile",
17099
+ "SessionProfile",
17100
+ "SearchProfile",
17101
+ "ToolLaunchProfile",
17102
+ "TimebackProfile"
17103
+ ]);
17104
+ var CaliperEntity = exports_external.union([exports_external.string(), exports_external.record(exports_external.string(), exports_external.unknown())]);
17105
+ var CaliperActor = exports_external.object({
17106
+ id: exports_external.string(),
17107
+ type: exports_external.string(),
17108
+ extensions: exports_external.object({
17109
+ email: exports_external.email()
17110
+ }).loose()
17111
+ }).strict();
17112
+ var CaliperEvent = exports_external.object({
17113
+ "@context": exports_external.string().optional(),
17114
+ id: exports_external.string(),
17115
+ type: exports_external.string(),
17116
+ actor: exports_external.union([exports_external.string(), CaliperActor, TimebackUser]),
17117
+ action: exports_external.string(),
17118
+ object: CaliperEntity,
17119
+ eventTime: IsoDateTimeString,
17120
+ profile: CaliperProfile,
17121
+ edApp: CaliperEntity.optional(),
17122
+ generated: CaliperEntity.optional(),
17123
+ target: CaliperEntity.optional(),
17124
+ referrer: CaliperEntity.optional(),
17125
+ group: CaliperEntity.optional(),
17126
+ membership: CaliperEntity.optional(),
17127
+ session: CaliperEntity.optional(),
17128
+ federatedSession: CaliperEntity.optional(),
17129
+ extensions: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
17130
+ }).strict();
17131
+ var CaliperEnvelopeInput = exports_external.object({
17132
+ sensor: exports_external.string().min(1, "sensor must be a non-empty string"),
17133
+ sendTime: IsoDateTimeString,
17134
+ dataVersion: exports_external.literal("http://purl.imsglobal.org/ctx/caliper/v1p2"),
17135
+ data: exports_external.array(CaliperEvent).min(1, "data must contain at least one event")
17136
+ });
17137
+ var CaliperSendEventsInput = exports_external.object({
17138
+ sensor: exports_external.string().min(1, "sensor must be a non-empty string"),
17139
+ events: exports_external.array(CaliperEvent).min(1, "events must contain at least one event")
17140
+ });
17141
+ var CaliperListEventsParams = exports_external.object({
17142
+ limit: exports_external.number().int().positive().optional(),
17143
+ offset: exports_external.number().int().min(0).optional(),
17144
+ sensor: exports_external.string().min(1).optional(),
17145
+ startDate: IsoDateTimeString.optional(),
17146
+ endDate: IsoDateTimeString.optional(),
17147
+ actorId: exports_external.string().min(1).optional(),
17148
+ actorEmail: exports_external.email().optional()
17149
+ }).strict();
17064
17150
  // ../types/src/zod/config.ts
17065
17151
  var CourseIds = exports_external.object({
17066
17152
  staging: exports_external.string().optional(),
@@ -17107,11 +17193,12 @@ var TimebackConfig = exports_external.object({
17107
17193
  sensors: exports_external.array(exports_external.string().url()).optional()
17108
17194
  });
17109
17195
  // ../types/src/zod/edubridge.ts
17196
+ var EdubridgeDateString = exports_external.union([IsoDateString, IsoDateTimeString]);
17110
17197
  var EduBridgeEnrollment = exports_external.object({
17111
17198
  id: exports_external.string(),
17112
17199
  role: exports_external.string(),
17113
- beginDate: exports_external.string().nullable(),
17114
- endDate: exports_external.string().nullable(),
17200
+ beginDate: EdubridgeDateString.nullable(),
17201
+ endDate: EdubridgeDateString.nullable(),
17115
17202
  metadata: exports_external.object({
17116
17203
  goals: exports_external.object({ dailyXp: exports_external.number().optional() }).optional(),
17117
17204
  metrics: exports_external.object({ totalXp: exports_external.number().optional(), totalLessons: exports_external.number().optional() }).optional()
@@ -17145,17 +17232,590 @@ var EduBridgeAnalyticsFacts = exports_external.record(exports_external.string(),
17145
17232
  var EduBridgeEnrollmentAnalyticsResponse = exports_external.object({
17146
17233
  message: exports_external.string(),
17147
17234
  enrollmentId: exports_external.string(),
17148
- startDate: exports_external.string(),
17149
- endDate: exports_external.string(),
17235
+ startDate: EdubridgeDateString,
17236
+ endDate: EdubridgeDateString,
17150
17237
  facts: EduBridgeAnalyticsFacts,
17151
17238
  factsByApp: exports_external.unknown()
17152
17239
  });
17240
+ var NonEmptyString = exports_external.string().trim().min(1);
17241
+ var EmailOrStudentId = exports_external.object({
17242
+ email: exports_external.email().optional(),
17243
+ studentId: NonEmptyString.optional()
17244
+ }).superRefine((value, ctx) => {
17245
+ if (!value.email && !value.studentId) {
17246
+ ctx.addIssue({
17247
+ code: exports_external.ZodIssueCode.custom,
17248
+ message: "must provide either email or studentId",
17249
+ path: ["email"]
17250
+ });
17251
+ ctx.addIssue({
17252
+ code: exports_external.ZodIssueCode.custom,
17253
+ message: "must provide either email or studentId",
17254
+ path: ["studentId"]
17255
+ });
17256
+ }
17257
+ });
17153
17258
  var SubjectTrackInput = exports_external.object({
17154
- subject: exports_external.string(),
17155
- gradeLevel: exports_external.string(),
17156
- targetCourseId: exports_external.string(),
17259
+ subject: NonEmptyString,
17260
+ gradeLevel: NonEmptyString,
17261
+ targetCourseId: NonEmptyString,
17157
17262
  metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
17158
17263
  });
17264
+ var SubjectTrackUpsertInput = SubjectTrackInput.extend({
17265
+ id: NonEmptyString
17266
+ });
17267
+ var EdubridgeListEnrollmentsParams = exports_external.object({
17268
+ userId: NonEmptyString
17269
+ });
17270
+ var EdubridgeEnrollOptions = exports_external.object({
17271
+ sourcedId: NonEmptyString.optional(),
17272
+ role: EnrollmentRole.optional(),
17273
+ beginDate: EdubridgeDateString.optional(),
17274
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
17275
+ });
17276
+ var EdubridgeUsersListParams = exports_external.object({
17277
+ fields: exports_external.string().optional(),
17278
+ limit: exports_external.number().int().positive().optional(),
17279
+ offset: exports_external.number().int().nonnegative().optional(),
17280
+ sort: exports_external.string().optional(),
17281
+ orderBy: exports_external.enum(["asc", "desc"]).optional(),
17282
+ filter: exports_external.string().optional(),
17283
+ search: exports_external.string().optional(),
17284
+ roles: exports_external.array(OneRosterUserRole).min(1),
17285
+ orgSourcedIds: exports_external.array(NonEmptyString).optional()
17286
+ });
17287
+ var EdubridgeActivityParams = EmailOrStudentId.extend({
17288
+ startDate: EdubridgeDateString,
17289
+ endDate: EdubridgeDateString,
17290
+ timezone: exports_external.string().optional()
17291
+ });
17292
+ var EdubridgeWeeklyFactsParams = EmailOrStudentId.extend({
17293
+ weekDate: EdubridgeDateString,
17294
+ timezone: exports_external.string().optional()
17295
+ });
17296
+ var EdubridgeEnrollmentFactsParams = exports_external.object({
17297
+ enrollmentId: NonEmptyString,
17298
+ startDate: EdubridgeDateString.optional(),
17299
+ endDate: EdubridgeDateString.optional(),
17300
+ timezone: exports_external.string().optional()
17301
+ });
17302
+ // ../types/src/zod/oneroster.ts
17303
+ var NonEmptyString2 = exports_external.string().min(1);
17304
+ var Status = exports_external.enum(["active", "tobedeleted"]);
17305
+ var Metadata = exports_external.record(exports_external.string(), exports_external.unknown()).nullable().optional();
17306
+ var Ref = exports_external.object({
17307
+ sourcedId: NonEmptyString2,
17308
+ type: exports_external.string().optional(),
17309
+ href: exports_external.string().optional()
17310
+ }).strict();
17311
+ var OneRosterDateString = exports_external.union([IsoDateString, IsoDateTimeString]);
17312
+ var OneRosterUserRoleInput = exports_external.object({
17313
+ roleType: exports_external.enum(["primary", "secondary"]),
17314
+ role: OneRosterUserRole,
17315
+ org: Ref,
17316
+ userProfile: exports_external.string().optional(),
17317
+ metadata: Metadata,
17318
+ beginDate: OneRosterDateString.optional(),
17319
+ endDate: OneRosterDateString.optional()
17320
+ }).strict();
17321
+ var OneRosterUserCreateInput = exports_external.object({
17322
+ sourcedId: NonEmptyString2.describe("sourcedId must be a non-empty string"),
17323
+ status: Status.optional(),
17324
+ enabledUser: exports_external.boolean(),
17325
+ givenName: NonEmptyString2.describe("givenName must be a non-empty string"),
17326
+ familyName: NonEmptyString2.describe("familyName must be a non-empty string"),
17327
+ middleName: NonEmptyString2.optional(),
17328
+ username: NonEmptyString2.optional(),
17329
+ email: exports_external.email().optional(),
17330
+ roles: exports_external.array(OneRosterUserRoleInput).min(1, "roles must include at least one role"),
17331
+ userIds: exports_external.array(exports_external.object({
17332
+ type: NonEmptyString2,
17333
+ identifier: NonEmptyString2
17334
+ }).strict()).optional(),
17335
+ agents: exports_external.array(Ref).optional(),
17336
+ grades: exports_external.array(TimebackGrade).optional(),
17337
+ identifier: NonEmptyString2.optional(),
17338
+ sms: NonEmptyString2.optional(),
17339
+ phone: NonEmptyString2.optional(),
17340
+ pronouns: NonEmptyString2.optional(),
17341
+ password: NonEmptyString2.optional(),
17342
+ metadata: Metadata
17343
+ }).strict();
17344
+ var OneRosterCourseCreateInput = exports_external.object({
17345
+ sourcedId: NonEmptyString2.describe("sourcedId must be a non-empty string").optional(),
17346
+ status: Status.optional(),
17347
+ title: NonEmptyString2.describe("title must be a non-empty string"),
17348
+ org: Ref,
17349
+ courseCode: NonEmptyString2.optional(),
17350
+ subjects: exports_external.array(TimebackSubject).optional(),
17351
+ grades: exports_external.array(TimebackGrade).optional(),
17352
+ level: NonEmptyString2.optional(),
17353
+ metadata: Metadata
17354
+ }).strict();
17355
+ var OneRosterClassCreateInput = exports_external.object({
17356
+ sourcedId: NonEmptyString2.describe("sourcedId must be a non-empty string").optional(),
17357
+ status: Status.optional(),
17358
+ title: NonEmptyString2.describe("title must be a non-empty string"),
17359
+ terms: exports_external.array(Ref).min(1, "terms must have at least one item"),
17360
+ course: Ref,
17361
+ org: Ref,
17362
+ classCode: NonEmptyString2.optional(),
17363
+ classType: exports_external.enum(["homeroom", "scheduled"]).optional(),
17364
+ location: NonEmptyString2.optional(),
17365
+ grades: exports_external.array(TimebackGrade).optional(),
17366
+ subjects: exports_external.array(TimebackSubject).optional(),
17367
+ subjectCodes: exports_external.array(NonEmptyString2).optional(),
17368
+ periods: exports_external.array(NonEmptyString2).optional(),
17369
+ metadata: Metadata
17370
+ }).strict();
17371
+ var StringBoolean = exports_external.enum(["true", "false"]);
17372
+ var OneRosterEnrollmentCreateInput = exports_external.object({
17373
+ sourcedId: NonEmptyString2.describe("sourcedId must be a non-empty string").optional(),
17374
+ status: Status.optional(),
17375
+ user: Ref,
17376
+ class: Ref,
17377
+ school: Ref.optional(),
17378
+ role: OneRosterUserRole,
17379
+ primary: StringBoolean.optional(),
17380
+ beginDate: OneRosterDateString.optional(),
17381
+ endDate: OneRosterDateString.optional(),
17382
+ metadata: Metadata
17383
+ }).strict();
17384
+ var OneRosterCategoryCreateInput = exports_external.object({
17385
+ sourcedId: NonEmptyString2.optional(),
17386
+ title: NonEmptyString2.describe("title must be a non-empty string"),
17387
+ status: Status,
17388
+ weight: exports_external.number().nullable().optional(),
17389
+ metadata: Metadata
17390
+ }).strict();
17391
+ var OneRosterLineItemCreateInput = exports_external.object({
17392
+ sourcedId: NonEmptyString2.optional(),
17393
+ title: NonEmptyString2.describe("title must be a non-empty string"),
17394
+ class: Ref,
17395
+ school: Ref,
17396
+ category: Ref,
17397
+ assignDate: OneRosterDateString,
17398
+ dueDate: OneRosterDateString,
17399
+ status: Status,
17400
+ description: exports_external.string().optional(),
17401
+ resultValueMin: exports_external.number().nullable().optional(),
17402
+ resultValueMax: exports_external.number().nullable().optional(),
17403
+ scoreScale: Ref.optional(),
17404
+ metadata: Metadata
17405
+ }).strict();
17406
+ var OneRosterResultCreateInput = exports_external.object({
17407
+ sourcedId: NonEmptyString2.optional(),
17408
+ lineItem: Ref,
17409
+ student: Ref,
17410
+ class: Ref.optional(),
17411
+ scoreDate: OneRosterDateString,
17412
+ scoreStatus: exports_external.enum([
17413
+ "exempt",
17414
+ "fully graded",
17415
+ "not submitted",
17416
+ "partially graded",
17417
+ "submitted"
17418
+ ]),
17419
+ score: exports_external.number().nullable().optional(),
17420
+ textScore: exports_external.string().nullable().optional(),
17421
+ status: Status,
17422
+ comment: exports_external.string().nullable().optional(),
17423
+ metadata: Metadata
17424
+ }).strict();
17425
+ var OneRosterScoreScaleCreateInput = exports_external.object({
17426
+ sourcedId: NonEmptyString2.optional(),
17427
+ title: NonEmptyString2.describe("title must be a non-empty string"),
17428
+ status: Status.optional(),
17429
+ type: exports_external.string().optional(),
17430
+ class: Ref.optional(),
17431
+ course: Ref.nullable().optional(),
17432
+ scoreScaleValue: exports_external.array(exports_external.object({
17433
+ itemValueLHS: NonEmptyString2,
17434
+ itemValueRHS: NonEmptyString2,
17435
+ value: exports_external.string().optional(),
17436
+ description: exports_external.string().optional()
17437
+ }).strict()).optional(),
17438
+ minScore: exports_external.number().optional(),
17439
+ maxScore: exports_external.number().optional(),
17440
+ metadata: Metadata
17441
+ }).strict();
17442
+ var OneRosterAssessmentLineItemCreateInput = exports_external.object({
17443
+ sourcedId: NonEmptyString2.optional(),
17444
+ title: NonEmptyString2.describe("title must be a non-empty string"),
17445
+ class: Ref,
17446
+ school: Ref,
17447
+ category: Ref,
17448
+ assignDate: OneRosterDateString,
17449
+ dueDate: OneRosterDateString,
17450
+ status: Status,
17451
+ metadata: Metadata
17452
+ }).strict();
17453
+ var OneRosterAssessmentResultCreateInput = exports_external.object({
17454
+ sourcedId: NonEmptyString2.optional(),
17455
+ lineItem: Ref,
17456
+ student: Ref,
17457
+ scoreDate: OneRosterDateString,
17458
+ scoreStatus: exports_external.enum([
17459
+ "exempt",
17460
+ "fully graded",
17461
+ "not submitted",
17462
+ "partially graded",
17463
+ "submitted"
17464
+ ]),
17465
+ score: exports_external.string().optional(),
17466
+ status: Status,
17467
+ metadata: Metadata
17468
+ }).strict();
17469
+ var OneRosterOrgCreateInput = exports_external.object({
17470
+ sourcedId: NonEmptyString2.optional(),
17471
+ status: Status.optional(),
17472
+ name: NonEmptyString2.describe("name must be a non-empty string"),
17473
+ type: OrganizationType,
17474
+ identifier: NonEmptyString2.optional(),
17475
+ parent: Ref.optional(),
17476
+ metadata: Metadata
17477
+ }).strict();
17478
+ var OneRosterSchoolCreateInput = exports_external.object({
17479
+ sourcedId: NonEmptyString2.optional(),
17480
+ status: Status.optional(),
17481
+ name: NonEmptyString2.describe("name must be a non-empty string"),
17482
+ type: exports_external.literal("school").optional(),
17483
+ identifier: NonEmptyString2.optional(),
17484
+ parent: Ref.optional(),
17485
+ metadata: Metadata
17486
+ }).strict();
17487
+ var OneRosterAcademicSessionCreateInput = exports_external.object({
17488
+ sourcedId: NonEmptyString2.describe("sourcedId must be a non-empty string"),
17489
+ status: Status,
17490
+ title: NonEmptyString2.describe("title must be a non-empty string"),
17491
+ startDate: OneRosterDateString,
17492
+ endDate: OneRosterDateString,
17493
+ type: exports_external.enum(["gradingPeriod", "semester", "schoolYear", "term"]),
17494
+ schoolYear: NonEmptyString2.describe("schoolYear must be a non-empty string"),
17495
+ org: Ref,
17496
+ parent: Ref.optional(),
17497
+ children: exports_external.array(Ref).optional(),
17498
+ metadata: Metadata
17499
+ }).strict();
17500
+ var OneRosterComponentResourceCreateInput = exports_external.object({
17501
+ sourcedId: NonEmptyString2.optional(),
17502
+ title: NonEmptyString2.describe("title must be a non-empty string"),
17503
+ courseComponent: Ref,
17504
+ resource: Ref,
17505
+ status: Status,
17506
+ metadata: Metadata
17507
+ }).strict();
17508
+ var OneRosterCourseComponentCreateInput = exports_external.object({
17509
+ sourcedId: NonEmptyString2.optional(),
17510
+ title: NonEmptyString2.describe("title must be a non-empty string"),
17511
+ course: Ref,
17512
+ status: Status,
17513
+ metadata: Metadata
17514
+ }).strict();
17515
+ var OneRosterEnrollInput = exports_external.object({
17516
+ sourcedId: NonEmptyString2.describe("sourcedId must be a non-empty string"),
17517
+ role: exports_external.enum(["student", "teacher"]),
17518
+ primary: StringBoolean.optional(),
17519
+ beginDate: OneRosterDateString.optional(),
17520
+ endDate: OneRosterDateString.optional(),
17521
+ metadata: Metadata
17522
+ }).strict();
17523
+ var OneRosterAgentInput = exports_external.object({
17524
+ agentSourcedId: NonEmptyString2.describe("agentSourcedId must be a non-empty string")
17525
+ }).strict();
17526
+ var OneRosterCredentialInput = exports_external.object({
17527
+ type: NonEmptyString2.describe("type must be a non-empty string"),
17528
+ username: NonEmptyString2.describe("username must be a non-empty string"),
17529
+ password: exports_external.string().optional(),
17530
+ metadata: Metadata
17531
+ }).strict();
17532
+ var OneRosterDemographicsCreateInput = exports_external.object({
17533
+ sourcedId: NonEmptyString2.describe("sourcedId must be a non-empty string")
17534
+ }).loose();
17535
+ var OneRosterResourceCreateInput = exports_external.object({
17536
+ sourcedId: NonEmptyString2.optional(),
17537
+ title: NonEmptyString2.describe("title must be a non-empty string"),
17538
+ vendorResourceId: NonEmptyString2.describe("vendorResourceId must be a non-empty string"),
17539
+ roles: exports_external.array(exports_external.enum(["primary", "secondary"])).optional(),
17540
+ importance: exports_external.enum(["primary", "secondary"]).optional(),
17541
+ vendorId: exports_external.string().optional(),
17542
+ applicationId: exports_external.string().optional(),
17543
+ status: Status.optional(),
17544
+ metadata: Metadata
17545
+ }).strict();
17546
+ var CourseStructureItem = exports_external.object({
17547
+ url: NonEmptyString2.describe("courseStructure.url must be a non-empty string"),
17548
+ skillCode: NonEmptyString2.describe("courseStructure.skillCode must be a non-empty string"),
17549
+ lessonCode: NonEmptyString2.describe("courseStructure.lessonCode must be a non-empty string"),
17550
+ title: NonEmptyString2.describe("courseStructure.title must be a non-empty string"),
17551
+ "unit-title": NonEmptyString2.describe("courseStructure.unit-title must be a non-empty string"),
17552
+ status: NonEmptyString2.describe("courseStructure.status must be a non-empty string"),
17553
+ xp: exports_external.number()
17554
+ }).loose();
17555
+ var OneRosterCourseStructureInput = exports_external.object({
17556
+ course: exports_external.object({
17557
+ sourcedId: NonEmptyString2.describe("course.sourcedId must be a non-empty string").optional(),
17558
+ title: NonEmptyString2.describe("course.title must be a non-empty string"),
17559
+ org: Ref,
17560
+ status: Status,
17561
+ metadata: Metadata
17562
+ }).strict(),
17563
+ courseStructure: exports_external.record(exports_external.string(), CourseStructureItem)
17564
+ }).strict();
17565
+ var OneRosterBulkResultItem = exports_external.object({
17566
+ student: Ref
17567
+ }).loose();
17568
+ var OneRosterBulkResultsInput = exports_external.array(OneRosterBulkResultItem).min(1, "results must have at least one item");
17569
+ // ../types/src/zod/qti.ts
17570
+ var QtiAssessmentItemType = exports_external.enum([
17571
+ "choice",
17572
+ "text-entry",
17573
+ "extended-text",
17574
+ "inline-choice",
17575
+ "match",
17576
+ "order",
17577
+ "associate",
17578
+ "select-point",
17579
+ "graphic-order",
17580
+ "graphic-associate",
17581
+ "graphic-gap-match",
17582
+ "hotspot",
17583
+ "hottext",
17584
+ "slider",
17585
+ "drawing",
17586
+ "media",
17587
+ "upload"
17588
+ ]);
17589
+ var QtiCardinality = exports_external.enum(["single", "multiple", "ordered", "record"]);
17590
+ var QtiBaseType = exports_external.enum([
17591
+ "identifier",
17592
+ "boolean",
17593
+ "integer",
17594
+ "float",
17595
+ "string",
17596
+ "point",
17597
+ "pair",
17598
+ "directedPair",
17599
+ "duration",
17600
+ "file",
17601
+ "uri"
17602
+ ]);
17603
+ var QtiDifficulty = exports_external.enum(["easy", "medium", "hard"]);
17604
+ var QtiNavigationMode = exports_external.enum(["linear", "nonlinear"]);
17605
+ var QtiSubmissionMode = exports_external.enum(["individual", "simultaneous"]);
17606
+ var QtiShowHide = exports_external.enum(["show", "hide"]);
17607
+ var QtiValidationSchema = exports_external.enum(["test", "item", "stimulus"]);
17608
+ var QtiFeedbackType = exports_external.enum(["QUESTION", "LESSON"]);
17609
+ var QtiCorrectResponse = exports_external.object({
17610
+ value: exports_external.array(exports_external.string())
17611
+ }).strict();
17612
+ var QtiResponseDeclaration = exports_external.object({
17613
+ identifier: exports_external.string().min(1),
17614
+ cardinality: QtiCardinality,
17615
+ baseType: QtiBaseType.optional(),
17616
+ correctResponse: QtiCorrectResponse
17617
+ }).strict();
17618
+ var QtiOutcomeDeclaration = exports_external.object({
17619
+ identifier: exports_external.string().min(1),
17620
+ cardinality: QtiCardinality,
17621
+ baseType: QtiBaseType.optional()
17622
+ }).strict();
17623
+ var QtiTestOutcomeDeclaration = exports_external.object({
17624
+ identifier: exports_external.string().min(1),
17625
+ cardinality: QtiCardinality.optional(),
17626
+ baseType: QtiBaseType,
17627
+ normalMaximum: exports_external.number().optional(),
17628
+ normalMinimum: exports_external.number().optional(),
17629
+ defaultValue: exports_external.object({
17630
+ value: exports_external.unknown().optional()
17631
+ }).strict().optional()
17632
+ }).strict();
17633
+ var QtiInlineFeedback = exports_external.object({
17634
+ outcomeIdentifier: exports_external.string().min(1),
17635
+ variableIdentifier: exports_external.string().min(1)
17636
+ }).strict();
17637
+ var QtiResponseProcessing = exports_external.object({
17638
+ templateType: exports_external.enum(["match_correct", "map_response"]),
17639
+ responseDeclarationIdentifier: exports_external.string().min(1),
17640
+ outcomeIdentifier: exports_external.string().min(1),
17641
+ correctResponseIdentifier: exports_external.string().min(1),
17642
+ incorrectResponseIdentifier: exports_external.string().min(1),
17643
+ inlineFeedback: QtiInlineFeedback.optional()
17644
+ }).strict();
17645
+ var QtiLearningObjectiveSet = exports_external.object({
17646
+ source: exports_external.string().min(1),
17647
+ learningObjectiveIds: exports_external.array(exports_external.string())
17648
+ }).strict();
17649
+ var QtiItemMetadata = exports_external.object({
17650
+ subject: exports_external.string().optional(),
17651
+ grade: TimebackGrade.optional(),
17652
+ difficulty: QtiDifficulty.optional(),
17653
+ learningObjectiveSet: exports_external.array(QtiLearningObjectiveSet).optional()
17654
+ }).strict();
17655
+ var QtiModalFeedback = exports_external.object({
17656
+ outcomeIdentifier: exports_external.string().min(1),
17657
+ identifier: exports_external.string().min(1),
17658
+ showHide: QtiShowHide,
17659
+ content: exports_external.string(),
17660
+ title: exports_external.string()
17661
+ }).strict();
17662
+ var QtiFeedbackInline = exports_external.object({
17663
+ outcomeIdentifier: exports_external.string().min(1),
17664
+ identifier: exports_external.string().min(1),
17665
+ showHide: QtiShowHide,
17666
+ content: exports_external.string(),
17667
+ class: exports_external.array(exports_external.string())
17668
+ }).strict();
17669
+ var QtiFeedbackBlock = exports_external.object({
17670
+ outcomeIdentifier: exports_external.string().min(1),
17671
+ identifier: exports_external.string().min(1),
17672
+ showHide: QtiShowHide,
17673
+ content: exports_external.string(),
17674
+ class: exports_external.array(exports_external.string())
17675
+ }).strict();
17676
+ var QtiStylesheet = exports_external.object({
17677
+ href: exports_external.string().min(1),
17678
+ type: exports_external.string().min(1)
17679
+ }).strict();
17680
+ var QtiCatalogInfo = exports_external.object({
17681
+ id: exports_external.string().min(1),
17682
+ support: exports_external.string(),
17683
+ content: exports_external.string()
17684
+ }).strict();
17685
+ var QtiPaginationParams = exports_external.object({
17686
+ page: exports_external.number().int().positive().optional(),
17687
+ limit: exports_external.number().int().positive().optional(),
17688
+ sort: exports_external.string().optional(),
17689
+ order: exports_external.enum(["asc", "desc"]).optional()
17690
+ }).strict();
17691
+ var QtiAssessmentItemCreateInput = exports_external.object({
17692
+ identifier: exports_external.string().min(1),
17693
+ title: exports_external.string().min(1),
17694
+ type: QtiAssessmentItemType,
17695
+ qtiVersion: exports_external.string().optional(),
17696
+ timeDependent: exports_external.boolean().optional(),
17697
+ adaptive: exports_external.boolean().optional(),
17698
+ responseDeclarations: exports_external.array(QtiResponseDeclaration).optional(),
17699
+ outcomeDeclarations: exports_external.array(QtiOutcomeDeclaration).optional(),
17700
+ responseProcessing: QtiResponseProcessing.optional(),
17701
+ metadata: QtiItemMetadata.optional(),
17702
+ modalFeedback: exports_external.array(QtiModalFeedback).optional(),
17703
+ feedbackInline: exports_external.array(QtiFeedbackInline).optional(),
17704
+ feedbackBlock: exports_external.array(QtiFeedbackBlock).optional()
17705
+ }).strict();
17706
+ var QtiAssessmentItemUpdateInput = exports_external.object({
17707
+ identifier: exports_external.string().min(1).optional(),
17708
+ title: exports_external.string().min(1),
17709
+ type: QtiAssessmentItemType,
17710
+ qtiVersion: exports_external.string().optional(),
17711
+ timeDependent: exports_external.boolean().optional(),
17712
+ adaptive: exports_external.boolean().optional(),
17713
+ responseDeclarations: exports_external.array(QtiResponseDeclaration).optional(),
17714
+ outcomeDeclarations: exports_external.array(QtiOutcomeDeclaration).optional(),
17715
+ responseProcessing: QtiResponseProcessing.optional(),
17716
+ metadata: QtiItemMetadata.optional(),
17717
+ modalFeedback: exports_external.array(QtiModalFeedback).optional(),
17718
+ feedbackInline: exports_external.array(QtiFeedbackInline).optional(),
17719
+ feedbackBlock: exports_external.array(QtiFeedbackBlock).optional(),
17720
+ rawXml: exports_external.string(),
17721
+ content: exports_external.record(exports_external.string(), exports_external.unknown())
17722
+ }).strict();
17723
+ var QtiAssessmentItemProcessResponseInput = exports_external.object({
17724
+ response: exports_external.union([exports_external.string(), exports_external.array(exports_external.string())])
17725
+ }).strict();
17726
+ var QtiAssessmentItemRef = exports_external.object({
17727
+ identifier: exports_external.string().min(1),
17728
+ href: exports_external.union([exports_external.string(), exports_external.array(exports_external.string()), exports_external.array(exports_external.array(exports_external.string()))]).optional(),
17729
+ sequence: exports_external.number().optional()
17730
+ }).strict();
17731
+ var QtiAssessmentSection = exports_external.object({
17732
+ identifier: exports_external.string().min(1),
17733
+ title: exports_external.string().min(1),
17734
+ visible: exports_external.boolean(),
17735
+ required: exports_external.boolean().optional(),
17736
+ fixed: exports_external.boolean().optional(),
17737
+ sequence: exports_external.number().optional(),
17738
+ "qti-assessment-item-ref": exports_external.array(QtiAssessmentItemRef).optional()
17739
+ }).strict();
17740
+ var QtiTestPart = exports_external.object({
17741
+ identifier: exports_external.string().min(1),
17742
+ navigationMode: QtiNavigationMode,
17743
+ submissionMode: QtiSubmissionMode,
17744
+ "qti-assessment-section": exports_external.union([QtiAssessmentSection, exports_external.array(QtiAssessmentSection)])
17745
+ }).strict();
17746
+ var QtiReorderItemsInput = exports_external.object({
17747
+ items: exports_external.array(QtiAssessmentItemRef).min(1)
17748
+ }).strict();
17749
+ var QtiAssessmentTestMetadataUpdateInput = exports_external.object({
17750
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
17751
+ }).strict();
17752
+ var QtiAssessmentTestCreateInput = exports_external.object({
17753
+ identifier: exports_external.string().min(1),
17754
+ title: exports_external.string().min(1),
17755
+ qtiVersion: exports_external.string().optional(),
17756
+ toolName: exports_external.string().optional(),
17757
+ toolVersion: exports_external.string().optional(),
17758
+ timeLimit: exports_external.number().optional(),
17759
+ maxAttempts: exports_external.number().optional(),
17760
+ toolsEnabled: exports_external.record(exports_external.string(), exports_external.boolean()).optional(),
17761
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
17762
+ "qti-test-part": QtiTestPart,
17763
+ "qti-outcome-declaration": exports_external.array(QtiTestOutcomeDeclaration).optional()
17764
+ }).strict();
17765
+ var QtiAssessmentTestUpdateInput = exports_external.object({
17766
+ identifier: exports_external.string().min(1).optional(),
17767
+ title: exports_external.string().min(1),
17768
+ qtiVersion: exports_external.string().optional(),
17769
+ toolName: exports_external.string().optional(),
17770
+ toolVersion: exports_external.string().optional(),
17771
+ timeLimit: exports_external.number().optional(),
17772
+ maxAttempts: exports_external.number().optional(),
17773
+ toolsEnabled: exports_external.record(exports_external.string(), exports_external.boolean()).optional(),
17774
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
17775
+ "qti-test-part": QtiTestPart,
17776
+ "qti-outcome-declaration": exports_external.array(QtiTestOutcomeDeclaration).optional()
17777
+ }).strict();
17778
+ var QtiStimulusCreateInput = exports_external.object({
17779
+ identifier: exports_external.string().min(1),
17780
+ title: exports_external.string().min(1),
17781
+ label: exports_external.string().optional(),
17782
+ language: exports_external.string().optional(),
17783
+ stylesheet: QtiStylesheet.optional(),
17784
+ content: exports_external.string(),
17785
+ catalogInfo: exports_external.array(QtiCatalogInfo).optional(),
17786
+ toolName: exports_external.string().optional(),
17787
+ toolVersion: exports_external.string().optional(),
17788
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
17789
+ }).strict();
17790
+ var QtiStimulusUpdateInput = exports_external.object({
17791
+ identifier: exports_external.string().min(1).optional(),
17792
+ title: exports_external.string().min(1),
17793
+ label: exports_external.string().optional(),
17794
+ language: exports_external.string().optional(),
17795
+ stylesheet: QtiStylesheet.optional(),
17796
+ content: exports_external.string(),
17797
+ catalogInfo: exports_external.array(QtiCatalogInfo).optional(),
17798
+ toolName: exports_external.string().optional(),
17799
+ toolVersion: exports_external.string().optional(),
17800
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
17801
+ }).strict();
17802
+ var QtiValidateInput = exports_external.object({
17803
+ xml: exports_external.string().optional(),
17804
+ schema: QtiValidationSchema,
17805
+ entityId: exports_external.string().optional()
17806
+ }).strict();
17807
+ var QtiValidateBatchInput = exports_external.object({
17808
+ xml: exports_external.array(exports_external.string()),
17809
+ schema: QtiValidationSchema,
17810
+ entityIds: exports_external.array(exports_external.string())
17811
+ }).strict();
17812
+ var QtiLessonFeedbackInput = exports_external.object({
17813
+ questionId: exports_external.string().optional(),
17814
+ userId: exports_external.string().min(1),
17815
+ feedback: exports_external.string().min(1),
17816
+ lessonId: exports_external.string().min(1),
17817
+ humanApproved: exports_external.boolean().optional()
17818
+ }).strict();
17159
17819
  // ../internal/cli-infra/src/config/timeback.ts
17160
17820
  var FILE_PATTERNS2 = ["timeback.config.ts", "timeback.config.js", "timeback.config.mjs"];
17161
17821
  var jiti = createJiti(import.meta.url, { fsCache: false });
@@ -17301,7 +17961,7 @@ function getParser(opts = {}) {
17301
17961
 
17302
17962
  // ../internal/cli-infra/src/search/search.ts
17303
17963
  function searchCourses(client, query, max = 50) {
17304
- return client.oneroster.courses.list({
17964
+ return client.oneroster.courses.listAll({
17305
17965
  search: query,
17306
17966
  where: { status: "active" },
17307
17967
  max
@@ -18207,7 +18867,7 @@ async function resolveConfig(courseIds, opts, credentials, configuredEnvs, defau
18207
18867
  return resolved;
18208
18868
  }
18209
18869
 
18210
- // ../../node_modules/.bun/@hono+node-server@1.19.7+fde825ba4efdc684/node_modules/@hono/node-server/dist/index.mjs
18870
+ // ../../node_modules/.bun/@hono+node-server@1.19.9+fd698e00a3b2abce/node_modules/@hono/node-server/dist/index.mjs
18211
18871
  import { createServer as createServerHTTP } from "http";
18212
18872
  import { Http2ServerRequest as Http2ServerRequest2 } from "http2";
18213
18873
  import { Http2ServerRequest } from "http2";
@@ -18516,17 +19176,9 @@ var buildOutgoingHttpHeaders = (headers) => {
18516
19176
  return res;
18517
19177
  };
18518
19178
  var X_ALREADY_SENT = "x-hono-already-sent";
18519
- var webFetch = global.fetch;
18520
19179
  if (typeof global.crypto === "undefined") {
18521
19180
  global.crypto = crypto;
18522
19181
  }
18523
- global.fetch = (info, init2) => {
18524
- init2 = {
18525
- compress: false,
18526
- ...init2
18527
- };
18528
- return webFetch(info, init2);
18529
- };
18530
19182
  var outgoingEnded = Symbol("outgoingEnded");
18531
19183
  var handleRequestError = () => new Response(null, {
18532
19184
  status: 400
@@ -18749,7 +19401,7 @@ var serve = (options, listeningListener) => {
18749
19401
  return server;
18750
19402
  };
18751
19403
 
18752
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/compose.js
19404
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/compose.js
18753
19405
  var compose = (middleware, onError, onNotFound) => {
18754
19406
  return (context, next) => {
18755
19407
  let index = -1;
@@ -18793,10 +19445,10 @@ var compose = (middleware, onError, onNotFound) => {
18793
19445
  };
18794
19446
  };
18795
19447
 
18796
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/request/constants.js
19448
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/request/constants.js
18797
19449
  var GET_MATCH_RESULT = /* @__PURE__ */ Symbol();
18798
19450
 
18799
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/utils/body.js
19451
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/utils/body.js
18800
19452
  var parseBody = async (request, options = /* @__PURE__ */ Object.create(null)) => {
18801
19453
  const { all = false, dot = false } = options;
18802
19454
  const headers = request instanceof HonoRequest ? request.raw.headers : request.headers;
@@ -18864,7 +19516,7 @@ var handleParsingNestedValues = (form, key, value) => {
18864
19516
  });
18865
19517
  };
18866
19518
 
18867
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/utils/url.js
19519
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/utils/url.js
18868
19520
  var splitPath = (path) => {
18869
19521
  const paths = path.split("/");
18870
19522
  if (paths[0] === "") {
@@ -19062,7 +19714,7 @@ var getQueryParams = (url2, key) => {
19062
19714
  };
19063
19715
  var decodeURIComponent_ = decodeURIComponent;
19064
19716
 
19065
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/request.js
19717
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/request.js
19066
19718
  var tryDecodeURIComponent = (str) => tryDecode(str, decodeURIComponent_);
19067
19719
  var HonoRequest = class {
19068
19720
  raw;
@@ -19173,7 +19825,7 @@ var HonoRequest = class {
19173
19825
  }
19174
19826
  };
19175
19827
 
19176
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/utils/html.js
19828
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/utils/html.js
19177
19829
  var HtmlEscapedCallbackPhase = {
19178
19830
  Stringify: 1,
19179
19831
  BeforeStream: 2,
@@ -19211,7 +19863,7 @@ var resolveCallback = async (str, phase, preserveCallbacks, context, buffer) =>
19211
19863
  }
19212
19864
  };
19213
19865
 
19214
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/context.js
19866
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/context.js
19215
19867
  var TEXT_PLAIN = "text/plain; charset=UTF-8";
19216
19868
  var setDefaultContentType = (contentType, headers) => {
19217
19869
  return {
@@ -19377,7 +20029,7 @@ var Context = class {
19377
20029
  };
19378
20030
  };
19379
20031
 
19380
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/router.js
20032
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/router.js
19381
20033
  var METHOD_NAME_ALL = "ALL";
19382
20034
  var METHOD_NAME_ALL_LOWERCASE = "all";
19383
20035
  var METHODS = ["get", "post", "put", "delete", "options", "patch"];
@@ -19385,10 +20037,10 @@ var MESSAGE_MATCHER_IS_ALREADY_BUILT = "Can not add a route since the matcher is
19385
20037
  var UnsupportedPathError = class extends Error {
19386
20038
  };
19387
20039
 
19388
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/utils/constants.js
20040
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/utils/constants.js
19389
20041
  var COMPOSED_HANDLER = "__COMPOSED_HANDLER";
19390
20042
 
19391
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/hono-base.js
20043
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/hono-base.js
19392
20044
  var notFoundHandler = (c) => {
19393
20045
  return c.text("404 Not Found", 404);
19394
20046
  };
@@ -19607,7 +20259,7 @@ var Hono = class _Hono {
19607
20259
  };
19608
20260
  };
19609
20261
 
19610
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/router/reg-exp-router/matcher.js
20262
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/router/reg-exp-router/matcher.js
19611
20263
  var emptyParam = [];
19612
20264
  function match(method, path) {
19613
20265
  const matchers = this.buildAllMatchers();
@@ -19628,7 +20280,7 @@ function match(method, path) {
19628
20280
  return match2(method, path);
19629
20281
  }
19630
20282
 
19631
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/router/reg-exp-router/node.js
20283
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/router/reg-exp-router/node.js
19632
20284
  var LABEL_REG_EXP_STR = "[^/]+";
19633
20285
  var ONLY_WILDCARD_REG_EXP_STR = ".*";
19634
20286
  var TAIL_WILDCARD_REG_EXP_STR = "(?:|/.*)";
@@ -19732,7 +20384,7 @@ var Node = class _Node {
19732
20384
  }
19733
20385
  };
19734
20386
 
19735
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/router/reg-exp-router/trie.js
20387
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/router/reg-exp-router/trie.js
19736
20388
  var Trie = class {
19737
20389
  #context = { varIndex: 0 };
19738
20390
  #root = new Node;
@@ -19788,7 +20440,7 @@ var Trie = class {
19788
20440
  }
19789
20441
  };
19790
20442
 
19791
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/router/reg-exp-router/router.js
20443
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/router/reg-exp-router/router.js
19792
20444
  var nullMatcher = [/^$/, [], /* @__PURE__ */ Object.create(null)];
19793
20445
  var wildcardRegExpCache = /* @__PURE__ */ Object.create(null);
19794
20446
  function buildWildcardRegExp(path) {
@@ -19953,7 +20605,7 @@ var RegExpRouter = class {
19953
20605
  }
19954
20606
  };
19955
20607
 
19956
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/router/reg-exp-router/prepared-router.js
20608
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/router/reg-exp-router/prepared-router.js
19957
20609
  var PreparedRegExpRouter = class {
19958
20610
  name = "PreparedRegExpRouter";
19959
20611
  #matchers;
@@ -20025,7 +20677,7 @@ var PreparedRegExpRouter = class {
20025
20677
  match = match;
20026
20678
  };
20027
20679
 
20028
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/router/smart-router/router.js
20680
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/router/smart-router/router.js
20029
20681
  var SmartRouter = class {
20030
20682
  name = "SmartRouter";
20031
20683
  #routers = [];
@@ -20080,7 +20732,7 @@ var SmartRouter = class {
20080
20732
  }
20081
20733
  };
20082
20734
 
20083
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/router/trie-router/node.js
20735
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/router/trie-router/node.js
20084
20736
  var emptyParams = /* @__PURE__ */ Object.create(null);
20085
20737
  var Node2 = class _Node2 {
20086
20738
  #methods;
@@ -20234,7 +20886,7 @@ var Node2 = class _Node2 {
20234
20886
  }
20235
20887
  };
20236
20888
 
20237
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/router/trie-router/router.js
20889
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/router/trie-router/router.js
20238
20890
  var TrieRouter = class {
20239
20891
  name = "TrieRouter";
20240
20892
  #node;
@@ -20256,7 +20908,7 @@ var TrieRouter = class {
20256
20908
  }
20257
20909
  };
20258
20910
 
20259
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/hono.js
20911
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/hono.js
20260
20912
  var Hono2 = class extends Hono {
20261
20913
  constructor(options = {}) {
20262
20914
  super(options);
@@ -20266,7 +20918,7 @@ var Hono2 = class extends Hono {
20266
20918
  }
20267
20919
  };
20268
20920
 
20269
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/middleware/cors/index.js
20921
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/middleware/cors/index.js
20270
20922
  var cors = (options) => {
20271
20923
  const defaults = {
20272
20924
  origin: "*",
@@ -20793,7 +21445,7 @@ class BootstrapService {
20793
21445
  return enrollmentData.enrollments;
20794
21446
  }
20795
21447
  try {
20796
- const users = await this.client.oneroster.users.list({
21448
+ const users = await this.client.oneroster.users.listAll({
20797
21449
  where: { sourcedId: { in: studentUserIds } }
20798
21450
  });
20799
21451
  const userMap = new Map(users.map((u2) => [u2.sourcedId, u2]));
@@ -20816,7 +21468,7 @@ class BootstrapService {
20816
21468
  }
20817
21469
  const uniqueResourceIds = [...new Set(resourceIds)];
20818
21470
  try {
20819
- const resources = await this.client.oneroster.resources.list({
21471
+ const resources = await this.client.oneroster.resources.listAll({
20820
21472
  where: { sourcedId: { in: uniqueResourceIds } }
20821
21473
  });
20822
21474
  const resourceMap = new Map(resources.map((r2) => [r2.sourcedId, r2]));
@@ -20852,7 +21504,7 @@ class BootstrapService {
20852
21504
  return null;
20853
21505
  }
20854
21506
  try {
20855
- const [user] = await this.client.oneroster.users.list({ where: { email: email3 }, limit: 1 });
21507
+ const user = await this.client.oneroster.users.first({ where: { email: email3 } });
20856
21508
  return user ?? null;
20857
21509
  } catch (error48) {
20858
21510
  const message = getErrorMessage(error48);
@@ -20871,7 +21523,7 @@ class BootstrapService {
20871
21523
  return { enrollments, studentIds, teacherIds, studentsByClass };
20872
21524
  }
20873
21525
  try {
20874
- const fetchedEnrollments = await this.client.oneroster.enrollments.list({
21526
+ const fetchedEnrollments = await this.client.oneroster.enrollments.listAll({
20875
21527
  where: {
20876
21528
  "class.sourcedId": { in: classIds }
20877
21529
  }
@@ -21216,7 +21868,7 @@ class StudentSearchService {
21216
21868
  const trimmedQuery = query.trim();
21217
21869
  log5.debug("Searching students", { query: trimmedQuery, max });
21218
21870
  try {
21219
- const users = await this.client.oneroster.students.list({
21871
+ const users = await this.client.oneroster.students.listAll({
21220
21872
  search: trimmedQuery,
21221
21873
  where: { status: "active" },
21222
21874
  max
@@ -21294,7 +21946,7 @@ function createManager(ctx) {
21294
21946
  log6.debug("Manager ready", { environments: manager.names });
21295
21947
  return manager;
21296
21948
  }
21297
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/helper/factory/index.js
21949
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/helper/factory/index.js
21298
21950
  var Factory = class {
21299
21951
  initApp;
21300
21952
  #defaultAppOptions;
@@ -21357,7 +22009,7 @@ function createEnvMiddleware(ctx, manager) {
21357
22009
  await next();
21358
22010
  });
21359
22011
  }
21360
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/utils/stream.js
22012
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/utils/stream.js
21361
22013
  var StreamingApi = class {
21362
22014
  writer;
21363
22015
  encoder;
@@ -21423,7 +22075,7 @@ var StreamingApi = class {
21423
22075
  }
21424
22076
  };
21425
22077
 
21426
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/helper/streaming/utils.js
22078
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/helper/streaming/utils.js
21427
22079
  var isOldBunVersion = () => {
21428
22080
  const version2 = typeof Bun !== "undefined" ? Bun.version : undefined;
21429
22081
  if (version2 === undefined) {
@@ -21434,7 +22086,7 @@ var isOldBunVersion = () => {
21434
22086
  return result;
21435
22087
  };
21436
22088
 
21437
- // ../../node_modules/.bun/hono@4.11.3/node_modules/hono/dist/helper/streaming/sse.js
22089
+ // ../../node_modules/.bun/hono@4.11.4/node_modules/hono/dist/helper/streaming/sse.js
21438
22090
  var SSEStreamingApi = class extends StreamingApi {
21439
22091
  constructor(writable, readable) {
21440
22092
  super(writable, readable);