timeback-studio 0.1.10 → 0.1.11-beta.20260223234236

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.
Files changed (3) hide show
  1. package/dist/bin.js +301 -163
  2. package/dist/index.js +301 -163
  3. package/package.json +1 -1
package/dist/bin.js CHANGED
@@ -16693,6 +16693,10 @@ var CredentialsSchema = exports_external.object({
16693
16693
  });
16694
16694
  var ClientIdSchema = exports_external.string().min(1, "Client ID is required").regex(/^[a-z0-9]+$/, "Client ID must contain only lowercase letters and numbers");
16695
16695
  var ClientSecretSchema = exports_external.string().min(1, "Client secret is required").regex(/^[a-z0-9]+$/, "Client secret must contain only lowercase letters and numbers").max(53, "Client secret must be less than 53 characters");
16696
+ var MasteryTrackCredentialsSchema = exports_external.object({
16697
+ apiKey: exports_external.string().min(1, "API key is required"),
16698
+ email: exports_external.email("Valid email is required")
16699
+ });
16696
16700
  // ../internal/cli-infra/src/ui.ts
16697
16701
  function intro(title) {
16698
16702
  console.log("");
@@ -16708,9 +16712,11 @@ var outro = {
16708
16712
 
16709
16713
  // ../internal/cli-infra/src/credentials/store.ts
16710
16714
  import { mkdir, readFile, stat, writeFile } from "node:fs/promises";
16715
+ import { join as join2 } from "node:path";
16716
+
16717
+ // ../internal/cli-infra/src/paths.ts
16711
16718
  import { homedir, platform as platform2 } from "node:os";
16712
16719
  import { join } from "node:path";
16713
- var ENVIRONMENTS = ["staging", "production"];
16714
16720
  function getConfigDir() {
16715
16721
  const home = homedir();
16716
16722
  switch (platform2()) {
@@ -16722,8 +16728,11 @@ function getConfigDir() {
16722
16728
  return join(process.env.XDG_CONFIG_HOME || join(home, ".config"), "timeback");
16723
16729
  }
16724
16730
  }
16731
+
16732
+ // ../internal/cli-infra/src/credentials/store.ts
16733
+ var ENVIRONMENTS = ["staging", "production"];
16725
16734
  var CREDENTIALS_DIR = getConfigDir();
16726
- var CREDENTIALS_FILE = join(CREDENTIALS_DIR, "credentials.json");
16735
+ var CREDENTIALS_FILE = join2(CREDENTIALS_DIR, "credentials.json");
16727
16736
  function getCredentialsPath() {
16728
16737
  return CREDENTIALS_FILE;
16729
16738
  }
@@ -16753,22 +16762,26 @@ async function readCredentialsStore() {
16753
16762
  }
16754
16763
  }
16755
16764
  async function writeCredentialsStore(store) {
16756
- if (!await ensureCredentialsDir())
16765
+ if (!await ensureCredentialsDir()) {
16757
16766
  return false;
16758
- const { staging, production } = store;
16759
- const cleaned = {};
16760
- if (staging)
16761
- cleaned.staging = staging;
16762
- if (production)
16763
- cleaned.production = production;
16767
+ }
16768
+ const cleaned = { ...store };
16769
+ delete cleaned.default;
16764
16770
  await writeFile(CREDENTIALS_FILE, JSON.stringify(cleaned, null, 2), { mode: 384 });
16765
16771
  return true;
16766
16772
  }
16767
16773
  async function getSavedCredentials(environment) {
16768
16774
  const store = await readCredentialsStore();
16769
- const creds = store[environment];
16770
- if (creds) {
16771
- const result = CredentialsSchema.safeParse(creds);
16775
+ const namespaced = store.timeback?.[environment];
16776
+ if (namespaced) {
16777
+ const result = CredentialsSchema.safeParse(namespaced);
16778
+ if (result.success) {
16779
+ return result.data;
16780
+ }
16781
+ }
16782
+ const legacy = store[environment];
16783
+ if (legacy) {
16784
+ const result = CredentialsSchema.safeParse(legacy);
16772
16785
  if (result.success) {
16773
16786
  return result.data;
16774
16787
  }
@@ -16777,23 +16790,38 @@ async function getSavedCredentials(environment) {
16777
16790
  }
16778
16791
  async function saveCredentials(environment, credentials) {
16779
16792
  const store = await readCredentialsStore();
16780
- store[environment] = credentials;
16793
+ store.timeback = store.timeback ?? {};
16794
+ store.timeback[environment] = credentials;
16795
+ delete store[environment];
16781
16796
  return writeCredentialsStore(store);
16782
16797
  }
16783
16798
  async function clearCredentials(environment) {
16799
+ const store = await readCredentialsStore();
16784
16800
  if (environment) {
16785
- const store = await readCredentialsStore();
16801
+ delete store.timeback?.[environment];
16802
+ if (store.timeback && Object.keys(store.timeback).length === 0) {
16803
+ delete store.timeback;
16804
+ }
16786
16805
  delete store[environment];
16787
16806
  await writeCredentialsStore(store);
16788
16807
  } else {
16789
- await writeCredentialsStore({});
16808
+ delete store.timeback;
16809
+ delete store["staging"];
16810
+ delete store["production"];
16811
+ await writeCredentialsStore(store);
16790
16812
  }
16791
16813
  }
16792
16814
  async function getConfiguredEnvironments() {
16793
16815
  const store = await readCredentialsStore();
16794
16816
  const configured = [];
16795
16817
  for (const env2 of ENVIRONMENTS) {
16796
- if (store[env2]) {
16818
+ const namespaced = store.timeback?.[env2];
16819
+ if (namespaced && CredentialsSchema.safeParse(namespaced).success) {
16820
+ configured.push(env2);
16821
+ continue;
16822
+ }
16823
+ const legacy = store[env2];
16824
+ if (legacy && CredentialsSchema.safeParse(legacy).success) {
16797
16825
  configured.push(env2);
16798
16826
  }
16799
16827
  }
@@ -17252,6 +17280,39 @@ var CaliperListEventsParams = exports_external.object({
17252
17280
  actorId: exports_external.string().min(1).optional(),
17253
17281
  actorEmail: exports_external.email().optional()
17254
17282
  }).strict();
17283
+ // ../types/src/zod/webhooks.ts
17284
+ var WebhookCreateInput = exports_external.object({
17285
+ name: exports_external.string().min(1, "name must be a non-empty string"),
17286
+ targetUrl: exports_external.url("targetUrl must be a valid URL"),
17287
+ secret: exports_external.string().min(1, "secret must be a non-empty string"),
17288
+ active: exports_external.boolean(),
17289
+ sensor: exports_external.string().nullable().optional(),
17290
+ description: exports_external.string().nullable().optional()
17291
+ }).strict();
17292
+ var WebhookFilterType = exports_external.enum(["string", "number", "boolean"]);
17293
+ var WebhookFilterOperation = exports_external.enum([
17294
+ "eq",
17295
+ "neq",
17296
+ "gt",
17297
+ "gte",
17298
+ "lt",
17299
+ "lte",
17300
+ "contains",
17301
+ "notContains",
17302
+ "in",
17303
+ "notIn",
17304
+ "startsWith",
17305
+ "endsWith",
17306
+ "regexp"
17307
+ ]);
17308
+ var WebhookFilterCreateInput = exports_external.object({
17309
+ webhookId: exports_external.string().min(1, "webhookId must be a non-empty string"),
17310
+ filterKey: exports_external.string().min(1, "filterKey must be a non-empty string"),
17311
+ filterValue: exports_external.string().min(1, "filterValue must be a non-empty string"),
17312
+ filterType: WebhookFilterType,
17313
+ filterOperator: WebhookFilterOperation,
17314
+ active: exports_external.boolean()
17315
+ }).strict();
17255
17316
  // ../types/src/zod/case.ts
17256
17317
  var NonEmptyString = exports_external.string().trim().min(1);
17257
17318
  var InputNodeURISchema = exports_external.object({
@@ -17651,12 +17712,89 @@ var EdubridgeEnrollmentFactsParams = exports_external.object({
17651
17712
  endDate: EdubridgeDateString.optional(),
17652
17713
  timezone: exports_external.string().optional()
17653
17714
  });
17715
+ // ../types/src/zod/masterytrack.ts
17716
+ var NonEmptyString4 = exports_external.string().trim().min(1);
17717
+ var MasteryTrackAuthorizerInput = exports_external.object({
17718
+ email: exports_external.email()
17719
+ });
17720
+ var MasteryTrackInventorySearchParams = exports_external.object({
17721
+ name: NonEmptyString4.optional(),
17722
+ timeback_id: NonEmptyString4.optional(),
17723
+ grade: NonEmptyString4.optional(),
17724
+ subject: NonEmptyString4.optional(),
17725
+ all: exports_external.boolean().optional()
17726
+ });
17727
+ var MasteryTrackAssignmentInput = exports_external.object({
17728
+ student_email: exports_external.email(),
17729
+ timeback_id: NonEmptyString4.optional(),
17730
+ subject: NonEmptyString4.optional(),
17731
+ grade_rank: exports_external.number().int().min(0).max(12).optional(),
17732
+ assessment_line_item_sourced_id: NonEmptyString4.optional(),
17733
+ assessment_result_sourced_id: NonEmptyString4.optional()
17734
+ }).superRefine((value, ctx) => {
17735
+ const hasTimebackId = !!value.timeback_id;
17736
+ const hasSubject = !!value.subject;
17737
+ const hasGradeRank = value.grade_rank !== undefined;
17738
+ if (!hasTimebackId && !hasSubject) {
17739
+ ctx.addIssue({
17740
+ code: exports_external.ZodIssueCode.custom,
17741
+ message: "must provide either timeback_id or subject",
17742
+ path: ["timeback_id"]
17743
+ });
17744
+ ctx.addIssue({
17745
+ code: exports_external.ZodIssueCode.custom,
17746
+ message: "must provide either timeback_id or subject",
17747
+ path: ["subject"]
17748
+ });
17749
+ }
17750
+ if (hasGradeRank && !hasSubject) {
17751
+ ctx.addIssue({
17752
+ code: exports_external.ZodIssueCode.custom,
17753
+ message: "grade_rank requires subject",
17754
+ path: ["grade_rank"]
17755
+ });
17756
+ }
17757
+ const hasLineItem = !!value.assessment_line_item_sourced_id;
17758
+ const hasResultId = !!value.assessment_result_sourced_id;
17759
+ if (hasLineItem !== hasResultId) {
17760
+ ctx.addIssue({
17761
+ code: exports_external.ZodIssueCode.custom,
17762
+ message: "assessment_line_item_sourced_id and assessment_result_sourced_id must be provided together",
17763
+ path: hasLineItem ? ["assessment_result_sourced_id"] : ["assessment_line_item_sourced_id"]
17764
+ });
17765
+ }
17766
+ });
17767
+ var MasteryTrackInvalidateAssignmentInput = exports_external.object({
17768
+ student_email: exports_external.email(),
17769
+ assignment_id: exports_external.number().int().positive().optional(),
17770
+ timeback_id: NonEmptyString4.optional(),
17771
+ subject: NonEmptyString4.optional(),
17772
+ grade_rank: exports_external.number().int().min(0).max(12).optional()
17773
+ }).superRefine((value, ctx) => {
17774
+ const byAssignment = value.assignment_id !== undefined;
17775
+ const byTimeback = !!value.timeback_id;
17776
+ const bySubjectGrade = !!value.subject && value.grade_rank !== undefined;
17777
+ if (!byAssignment && !byTimeback && !bySubjectGrade) {
17778
+ ctx.addIssue({
17779
+ code: exports_external.ZodIssueCode.custom,
17780
+ message: "Either assignment_id, timeback_id, or (subject and grade_rank) is required",
17781
+ path: ["assignment_id"]
17782
+ });
17783
+ }
17784
+ if (value.grade_rank !== undefined && !value.subject) {
17785
+ ctx.addIssue({
17786
+ code: exports_external.ZodIssueCode.custom,
17787
+ message: "grade_rank requires subject",
17788
+ path: ["grade_rank"]
17789
+ });
17790
+ }
17791
+ });
17654
17792
  // ../types/src/zod/oneroster.ts
17655
- var NonEmptyString4 = exports_external.string().min(1);
17793
+ var NonEmptyString5 = exports_external.string().min(1);
17656
17794
  var Status = exports_external.enum(["active", "tobedeleted"]);
17657
17795
  var Metadata = exports_external.record(exports_external.string(), exports_external.unknown()).nullable().optional();
17658
17796
  var Ref = exports_external.object({
17659
- sourcedId: NonEmptyString4,
17797
+ sourcedId: NonEmptyString5,
17660
17798
  type: exports_external.string().optional(),
17661
17799
  href: exports_external.string().optional()
17662
17800
  }).strict();
@@ -17671,58 +17809,58 @@ var OneRosterUserRoleInput = exports_external.object({
17671
17809
  endDate: OneRosterDateString.optional()
17672
17810
  }).strict();
17673
17811
  var OneRosterUserCreateInput = exports_external.object({
17674
- sourcedId: NonEmptyString4.describe("sourcedId must be a non-empty string"),
17812
+ sourcedId: NonEmptyString5.describe("sourcedId must be a non-empty string"),
17675
17813
  status: Status.optional(),
17676
17814
  enabledUser: exports_external.boolean(),
17677
- givenName: NonEmptyString4.describe("givenName must be a non-empty string"),
17678
- familyName: NonEmptyString4.describe("familyName must be a non-empty string"),
17679
- middleName: NonEmptyString4.optional(),
17680
- username: NonEmptyString4.optional(),
17815
+ givenName: NonEmptyString5.describe("givenName must be a non-empty string"),
17816
+ familyName: NonEmptyString5.describe("familyName must be a non-empty string"),
17817
+ middleName: NonEmptyString5.optional(),
17818
+ username: NonEmptyString5.optional(),
17681
17819
  email: exports_external.email().optional(),
17682
17820
  roles: exports_external.array(OneRosterUserRoleInput).min(1, "roles must include at least one role"),
17683
17821
  userIds: exports_external.array(exports_external.object({
17684
- type: NonEmptyString4,
17685
- identifier: NonEmptyString4
17822
+ type: NonEmptyString5,
17823
+ identifier: NonEmptyString5
17686
17824
  }).strict()).optional(),
17687
17825
  agents: exports_external.array(Ref).optional(),
17688
17826
  grades: exports_external.array(TimebackGrade).optional(),
17689
- identifier: NonEmptyString4.optional(),
17690
- sms: NonEmptyString4.optional(),
17691
- phone: NonEmptyString4.optional(),
17692
- pronouns: NonEmptyString4.optional(),
17693
- password: NonEmptyString4.optional(),
17827
+ identifier: NonEmptyString5.optional(),
17828
+ sms: NonEmptyString5.optional(),
17829
+ phone: NonEmptyString5.optional(),
17830
+ pronouns: NonEmptyString5.optional(),
17831
+ password: NonEmptyString5.optional(),
17694
17832
  metadata: Metadata
17695
17833
  }).strict();
17696
17834
  var OneRosterCourseCreateInput = exports_external.object({
17697
- sourcedId: NonEmptyString4.describe("sourcedId must be a non-empty string").optional(),
17835
+ sourcedId: NonEmptyString5.describe("sourcedId must be a non-empty string").optional(),
17698
17836
  status: Status.optional(),
17699
- title: NonEmptyString4.describe("title must be a non-empty string"),
17837
+ title: NonEmptyString5.describe("title must be a non-empty string"),
17700
17838
  org: Ref,
17701
- courseCode: NonEmptyString4.optional(),
17839
+ courseCode: NonEmptyString5.optional(),
17702
17840
  subjects: exports_external.array(TimebackSubject).optional(),
17703
17841
  grades: exports_external.array(TimebackGrade).optional(),
17704
- level: NonEmptyString4.optional(),
17842
+ level: NonEmptyString5.optional(),
17705
17843
  metadata: Metadata
17706
17844
  }).strict();
17707
17845
  var OneRosterClassCreateInput = exports_external.object({
17708
- sourcedId: NonEmptyString4.describe("sourcedId must be a non-empty string").optional(),
17846
+ sourcedId: NonEmptyString5.describe("sourcedId must be a non-empty string").optional(),
17709
17847
  status: Status.optional(),
17710
- title: NonEmptyString4.describe("title must be a non-empty string"),
17848
+ title: NonEmptyString5.describe("title must be a non-empty string"),
17711
17849
  terms: exports_external.array(Ref).min(1, "terms must have at least one item"),
17712
17850
  course: Ref,
17713
17851
  org: Ref,
17714
- classCode: NonEmptyString4.optional(),
17852
+ classCode: NonEmptyString5.optional(),
17715
17853
  classType: exports_external.enum(["homeroom", "scheduled"]).optional(),
17716
- location: NonEmptyString4.optional(),
17854
+ location: NonEmptyString5.optional(),
17717
17855
  grades: exports_external.array(TimebackGrade).optional(),
17718
17856
  subjects: exports_external.array(TimebackSubject).optional(),
17719
- subjectCodes: exports_external.array(NonEmptyString4).optional(),
17720
- periods: exports_external.array(NonEmptyString4).optional(),
17857
+ subjectCodes: exports_external.array(NonEmptyString5).optional(),
17858
+ periods: exports_external.array(NonEmptyString5).optional(),
17721
17859
  metadata: Metadata
17722
17860
  }).strict();
17723
17861
  var StringBoolean = exports_external.enum(["true", "false"]);
17724
17862
  var OneRosterEnrollmentCreateInput = exports_external.object({
17725
- sourcedId: NonEmptyString4.describe("sourcedId must be a non-empty string").optional(),
17863
+ sourcedId: NonEmptyString5.describe("sourcedId must be a non-empty string").optional(),
17726
17864
  status: Status.optional(),
17727
17865
  user: Ref,
17728
17866
  class: Ref,
@@ -17734,15 +17872,15 @@ var OneRosterEnrollmentCreateInput = exports_external.object({
17734
17872
  metadata: Metadata
17735
17873
  }).strict();
17736
17874
  var OneRosterCategoryCreateInput = exports_external.object({
17737
- sourcedId: NonEmptyString4.optional(),
17738
- title: NonEmptyString4.describe("title must be a non-empty string"),
17875
+ sourcedId: NonEmptyString5.optional(),
17876
+ title: NonEmptyString5.describe("title must be a non-empty string"),
17739
17877
  status: Status,
17740
17878
  weight: exports_external.number().nullable().optional(),
17741
17879
  metadata: Metadata
17742
17880
  }).strict();
17743
17881
  var OneRosterLineItemCreateInput = exports_external.object({
17744
- sourcedId: NonEmptyString4.optional(),
17745
- title: NonEmptyString4.describe("title must be a non-empty string"),
17882
+ sourcedId: NonEmptyString5.optional(),
17883
+ title: NonEmptyString5.describe("title must be a non-empty string"),
17746
17884
  class: Ref,
17747
17885
  school: Ref,
17748
17886
  category: Ref,
@@ -17756,7 +17894,7 @@ var OneRosterLineItemCreateInput = exports_external.object({
17756
17894
  metadata: Metadata
17757
17895
  }).strict();
17758
17896
  var OneRosterResultCreateInput = exports_external.object({
17759
- sourcedId: NonEmptyString4.optional(),
17897
+ sourcedId: NonEmptyString5.optional(),
17760
17898
  lineItem: Ref,
17761
17899
  student: Ref,
17762
17900
  class: Ref.optional(),
@@ -17775,15 +17913,15 @@ var OneRosterResultCreateInput = exports_external.object({
17775
17913
  metadata: Metadata
17776
17914
  }).strict();
17777
17915
  var OneRosterScoreScaleCreateInput = exports_external.object({
17778
- sourcedId: NonEmptyString4.optional(),
17779
- title: NonEmptyString4.describe("title must be a non-empty string"),
17916
+ sourcedId: NonEmptyString5.optional(),
17917
+ title: NonEmptyString5.describe("title must be a non-empty string"),
17780
17918
  status: Status.optional(),
17781
17919
  type: exports_external.string().optional(),
17782
17920
  class: Ref.optional(),
17783
17921
  course: Ref.nullable().optional(),
17784
17922
  scoreScaleValue: exports_external.array(exports_external.object({
17785
- itemValueLHS: NonEmptyString4,
17786
- itemValueRHS: NonEmptyString4,
17923
+ itemValueLHS: NonEmptyString5,
17924
+ itemValueRHS: NonEmptyString5,
17787
17925
  value: exports_external.string().optional(),
17788
17926
  description: exports_external.string().optional()
17789
17927
  }).strict()).optional(),
@@ -17792,10 +17930,10 @@ var OneRosterScoreScaleCreateInput = exports_external.object({
17792
17930
  metadata: Metadata
17793
17931
  }).strict();
17794
17932
  var OneRosterAssessmentLineItemCreateInput = exports_external.object({
17795
- sourcedId: NonEmptyString4.optional(),
17933
+ sourcedId: NonEmptyString5.optional(),
17796
17934
  status: Status.optional(),
17797
17935
  dateLastModified: IsoDateTimeString.optional(),
17798
- title: NonEmptyString4.describe("title must be a non-empty string"),
17936
+ title: NonEmptyString5.describe("title must be a non-empty string"),
17799
17937
  description: exports_external.string().nullable().optional(),
17800
17938
  class: Ref.nullable().optional(),
17801
17939
  parentAssessmentLineItem: Ref.nullable().optional(),
@@ -17821,7 +17959,7 @@ var LearningObjectiveScoreSetSchema = exports_external.array(exports_external.ob
17821
17959
  learningObjectiveResults: exports_external.array(LearningObjectiveResult)
17822
17960
  }));
17823
17961
  var OneRosterAssessmentResultCreateInput = exports_external.object({
17824
- sourcedId: NonEmptyString4.optional(),
17962
+ sourcedId: NonEmptyString5.optional(),
17825
17963
  status: Status.optional(),
17826
17964
  dateLastModified: IsoDateTimeString.optional(),
17827
17965
  metadata: Metadata,
@@ -17847,53 +17985,53 @@ var OneRosterAssessmentResultCreateInput = exports_external.object({
17847
17985
  missing: exports_external.string().nullable().optional()
17848
17986
  }).strict();
17849
17987
  var OneRosterOrgCreateInput = exports_external.object({
17850
- sourcedId: NonEmptyString4.optional(),
17988
+ sourcedId: NonEmptyString5.optional(),
17851
17989
  status: Status.optional(),
17852
- name: NonEmptyString4.describe("name must be a non-empty string"),
17990
+ name: NonEmptyString5.describe("name must be a non-empty string"),
17853
17991
  type: OrganizationType,
17854
- identifier: NonEmptyString4.optional(),
17992
+ identifier: NonEmptyString5.optional(),
17855
17993
  parent: Ref.optional(),
17856
17994
  metadata: Metadata
17857
17995
  }).strict();
17858
17996
  var OneRosterSchoolCreateInput = exports_external.object({
17859
- sourcedId: NonEmptyString4.optional(),
17997
+ sourcedId: NonEmptyString5.optional(),
17860
17998
  status: Status.optional(),
17861
- name: NonEmptyString4.describe("name must be a non-empty string"),
17999
+ name: NonEmptyString5.describe("name must be a non-empty string"),
17862
18000
  type: exports_external.literal("school").optional(),
17863
- identifier: NonEmptyString4.optional(),
18001
+ identifier: NonEmptyString5.optional(),
17864
18002
  parent: Ref.optional(),
17865
18003
  metadata: Metadata
17866
18004
  }).strict();
17867
18005
  var OneRosterAcademicSessionCreateInput = exports_external.object({
17868
- sourcedId: NonEmptyString4.describe("sourcedId must be a non-empty string"),
18006
+ sourcedId: NonEmptyString5.describe("sourcedId must be a non-empty string"),
17869
18007
  status: Status,
17870
- title: NonEmptyString4.describe("title must be a non-empty string"),
18008
+ title: NonEmptyString5.describe("title must be a non-empty string"),
17871
18009
  startDate: OneRosterDateString,
17872
18010
  endDate: OneRosterDateString,
17873
18011
  type: exports_external.enum(["gradingPeriod", "semester", "schoolYear", "term"]),
17874
- schoolYear: NonEmptyString4.describe("schoolYear must be a non-empty string"),
18012
+ schoolYear: NonEmptyString5.describe("schoolYear must be a non-empty string"),
17875
18013
  org: Ref,
17876
18014
  parent: Ref.optional(),
17877
18015
  children: exports_external.array(Ref).optional(),
17878
18016
  metadata: Metadata
17879
18017
  }).strict();
17880
18018
  var OneRosterComponentResourceCreateInput = exports_external.object({
17881
- sourcedId: NonEmptyString4.optional(),
17882
- title: NonEmptyString4.describe("title must be a non-empty string"),
18019
+ sourcedId: NonEmptyString5.optional(),
18020
+ title: NonEmptyString5.describe("title must be a non-empty string"),
17883
18021
  courseComponent: Ref,
17884
18022
  resource: Ref,
17885
18023
  status: Status,
17886
18024
  metadata: Metadata
17887
18025
  }).strict();
17888
18026
  var OneRosterCourseComponentCreateInput = exports_external.object({
17889
- sourcedId: NonEmptyString4.optional(),
17890
- title: NonEmptyString4.describe("title must be a non-empty string"),
18027
+ sourcedId: NonEmptyString5.optional(),
18028
+ title: NonEmptyString5.describe("title must be a non-empty string"),
17891
18029
  course: Ref,
17892
18030
  status: Status,
17893
18031
  metadata: Metadata
17894
18032
  }).strict();
17895
18033
  var OneRosterEnrollInput = exports_external.object({
17896
- sourcedId: NonEmptyString4.describe("sourcedId must be a non-empty string"),
18034
+ sourcedId: NonEmptyString5.describe("sourcedId must be a non-empty string"),
17897
18035
  role: exports_external.enum(["student", "teacher"]),
17898
18036
  primary: StringBoolean.optional(),
17899
18037
  beginDate: OneRosterDateString.optional(),
@@ -17901,16 +18039,16 @@ var OneRosterEnrollInput = exports_external.object({
17901
18039
  metadata: Metadata
17902
18040
  }).strict();
17903
18041
  var OneRosterAgentInput = exports_external.object({
17904
- agentSourcedId: NonEmptyString4.describe("agentSourcedId must be a non-empty string")
18042
+ agentSourcedId: NonEmptyString5.describe("agentSourcedId must be a non-empty string")
17905
18043
  }).strict();
17906
18044
  var OneRosterCredentialInput = exports_external.object({
17907
- type: NonEmptyString4.describe("type must be a non-empty string"),
17908
- username: NonEmptyString4.describe("username must be a non-empty string"),
18045
+ type: NonEmptyString5.describe("type must be a non-empty string"),
18046
+ username: NonEmptyString5.describe("username must be a non-empty string"),
17909
18047
  password: exports_external.string().optional(),
17910
18048
  metadata: Metadata
17911
18049
  }).strict();
17912
18050
  var OneRosterDemographicsCreateInput = exports_external.object({
17913
- sourcedId: NonEmptyString4.describe("sourcedId must be a non-empty string")
18051
+ sourcedId: NonEmptyString5.describe("sourcedId must be a non-empty string")
17914
18052
  }).loose();
17915
18053
  var CommonResourceMetadataSchema = exports_external.object({
17916
18054
  type: ResourceType,
@@ -17982,9 +18120,9 @@ var ResourceMetadataSchema = exports_external.discriminatedUnion("type", [
17982
18120
  AssessmentBankMetadataSchema
17983
18121
  ]);
17984
18122
  var OneRosterResourceCreateInput = exports_external.object({
17985
- sourcedId: NonEmptyString4.optional(),
17986
- title: NonEmptyString4.describe("title must be a non-empty string"),
17987
- vendorResourceId: NonEmptyString4.describe("vendorResourceId must be a non-empty string"),
18123
+ sourcedId: NonEmptyString5.optional(),
18124
+ title: NonEmptyString5.describe("title must be a non-empty string"),
18125
+ vendorResourceId: NonEmptyString5.describe("vendorResourceId must be a non-empty string"),
17988
18126
  roles: exports_external.array(exports_external.enum(["primary", "secondary"])).optional(),
17989
18127
  importance: exports_external.enum(["primary", "secondary"]).optional(),
17990
18128
  vendorId: exports_external.string().optional(),
@@ -17993,18 +18131,18 @@ var OneRosterResourceCreateInput = exports_external.object({
17993
18131
  metadata: ResourceMetadataSchema.nullable().optional()
17994
18132
  }).strict();
17995
18133
  var CourseStructureItem = exports_external.object({
17996
- url: NonEmptyString4.describe("courseStructure.url must be a non-empty string"),
17997
- skillCode: NonEmptyString4.describe("courseStructure.skillCode must be a non-empty string"),
17998
- lessonCode: NonEmptyString4.describe("courseStructure.lessonCode must be a non-empty string"),
17999
- title: NonEmptyString4.describe("courseStructure.title must be a non-empty string"),
18000
- "unit-title": NonEmptyString4.describe("courseStructure.unit-title must be a non-empty string"),
18001
- status: NonEmptyString4.describe("courseStructure.status must be a non-empty string"),
18134
+ url: NonEmptyString5.describe("courseStructure.url must be a non-empty string"),
18135
+ skillCode: NonEmptyString5.describe("courseStructure.skillCode must be a non-empty string"),
18136
+ lessonCode: NonEmptyString5.describe("courseStructure.lessonCode must be a non-empty string"),
18137
+ title: NonEmptyString5.describe("courseStructure.title must be a non-empty string"),
18138
+ "unit-title": NonEmptyString5.describe("courseStructure.unit-title must be a non-empty string"),
18139
+ status: NonEmptyString5.describe("courseStructure.status must be a non-empty string"),
18002
18140
  xp: exports_external.number()
18003
18141
  }).loose();
18004
18142
  var OneRosterCourseStructureInput = exports_external.object({
18005
18143
  course: exports_external.object({
18006
- sourcedId: NonEmptyString4.describe("course.sourcedId must be a non-empty string").optional(),
18007
- title: NonEmptyString4.describe("course.title must be a non-empty string"),
18144
+ sourcedId: NonEmptyString5.describe("course.sourcedId must be a non-empty string").optional(),
18145
+ title: NonEmptyString5.describe("course.title must be a non-empty string"),
18008
18146
  org: Ref,
18009
18147
  status: Status,
18010
18148
  metadata: Metadata
@@ -18016,7 +18154,7 @@ var OneRosterBulkResultItem = exports_external.object({
18016
18154
  }).loose();
18017
18155
  var OneRosterBulkResultsInput = exports_external.array(OneRosterBulkResultItem).min(1, "results must have at least one item");
18018
18156
  // ../types/src/zod/powerpath.ts
18019
- var NonEmptyString5 = exports_external.string().trim().min(1);
18157
+ var NonEmptyString6 = exports_external.string().trim().min(1);
18020
18158
  var ToolProvider = exports_external.enum(["edulastic", "mastery-track"]);
18021
18159
  var LessonTypeRequired = exports_external.enum([
18022
18160
  "powerpath-100",
@@ -18029,14 +18167,14 @@ var LessonTypeRequired = exports_external.enum([
18029
18167
  var GradeArray = exports_external.array(TimebackGrade);
18030
18168
  var ResourceMetadata = exports_external.record(exports_external.string(), exports_external.unknown()).optional();
18031
18169
  var ExternalTestBase = exports_external.object({
18032
- courseId: NonEmptyString5,
18033
- lessonTitle: NonEmptyString5.optional(),
18170
+ courseId: NonEmptyString6,
18171
+ lessonTitle: NonEmptyString6.optional(),
18034
18172
  launchUrl: exports_external.url().optional(),
18035
18173
  toolProvider: ToolProvider,
18036
- unitTitle: NonEmptyString5.optional(),
18037
- courseComponentSourcedId: NonEmptyString5.optional(),
18038
- vendorId: NonEmptyString5.optional(),
18039
- description: NonEmptyString5.optional(),
18174
+ unitTitle: NonEmptyString6.optional(),
18175
+ courseComponentSourcedId: NonEmptyString6.optional(),
18176
+ vendorId: NonEmptyString6.optional(),
18177
+ description: NonEmptyString6.optional(),
18040
18178
  resourceMetadata: ResourceMetadata.nullable().optional(),
18041
18179
  grades: GradeArray
18042
18180
  });
@@ -18046,26 +18184,26 @@ var ExternalTestOut = ExternalTestBase.extend({
18046
18184
  });
18047
18185
  var ExternalPlacement = ExternalTestBase.extend({
18048
18186
  lessonType: exports_external.literal("placement"),
18049
- courseIdOnFail: NonEmptyString5.optional(),
18187
+ courseIdOnFail: NonEmptyString6.optional(),
18050
18188
  xp: exports_external.number().optional()
18051
18189
  });
18052
18190
  var InternalTestBase = exports_external.object({
18053
- courseId: NonEmptyString5,
18191
+ courseId: NonEmptyString6,
18054
18192
  lessonType: LessonTypeRequired,
18055
- lessonTitle: NonEmptyString5.optional(),
18056
- unitTitle: NonEmptyString5.optional(),
18057
- courseComponentSourcedId: NonEmptyString5.optional(),
18193
+ lessonTitle: NonEmptyString6.optional(),
18194
+ unitTitle: NonEmptyString6.optional(),
18195
+ courseComponentSourcedId: NonEmptyString6.optional(),
18058
18196
  resourceMetadata: ResourceMetadata.nullable().optional(),
18059
18197
  xp: exports_external.number().optional(),
18060
18198
  grades: GradeArray.optional(),
18061
- courseIdOnFail: NonEmptyString5.optional()
18199
+ courseIdOnFail: NonEmptyString6.optional()
18062
18200
  });
18063
18201
  var PowerPathCreateInternalTestInput = exports_external.union([
18064
18202
  InternalTestBase.extend({
18065
18203
  testType: exports_external.literal("qti"),
18066
18204
  qti: exports_external.object({
18067
18205
  url: exports_external.url(),
18068
- title: NonEmptyString5.optional(),
18206
+ title: NonEmptyString6.optional(),
18069
18207
  metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
18070
18208
  })
18071
18209
  }),
@@ -18074,28 +18212,28 @@ var PowerPathCreateInternalTestInput = exports_external.union([
18074
18212
  assessmentBank: exports_external.object({
18075
18213
  resources: exports_external.array(exports_external.object({
18076
18214
  url: exports_external.url(),
18077
- title: NonEmptyString5.optional(),
18215
+ title: NonEmptyString6.optional(),
18078
18216
  metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
18079
18217
  }))
18080
18218
  })
18081
18219
  })
18082
18220
  ]);
18083
18221
  var PowerPathCreateNewAttemptInput = exports_external.object({
18084
- student: NonEmptyString5,
18085
- lesson: NonEmptyString5
18222
+ student: NonEmptyString6,
18223
+ lesson: NonEmptyString6
18086
18224
  });
18087
18225
  var PowerPathFinalStudentAssessmentResponseInput = exports_external.object({
18088
- student: NonEmptyString5,
18089
- lesson: NonEmptyString5
18226
+ student: NonEmptyString6,
18227
+ lesson: NonEmptyString6
18090
18228
  });
18091
18229
  var PowerPathLessonPlansCreateInput = exports_external.object({
18092
- courseId: NonEmptyString5,
18093
- userId: NonEmptyString5,
18094
- classId: NonEmptyString5.optional()
18230
+ courseId: NonEmptyString6,
18231
+ userId: NonEmptyString6,
18232
+ classId: NonEmptyString6.optional()
18095
18233
  });
18096
18234
  var LessonPlanTarget = exports_external.object({
18097
18235
  type: exports_external.enum(["component", "resource"]),
18098
- id: NonEmptyString5
18236
+ id: NonEmptyString6
18099
18237
  });
18100
18238
  var PowerPathLessonPlanOperationInput = exports_external.union([
18101
18239
  exports_external.object({
@@ -18108,8 +18246,8 @@ var PowerPathLessonPlanOperationInput = exports_external.union([
18108
18246
  exports_external.object({
18109
18247
  type: exports_external.literal("add-custom-resource"),
18110
18248
  payload: exports_external.object({
18111
- resource_id: NonEmptyString5,
18112
- parent_component_id: NonEmptyString5,
18249
+ resource_id: NonEmptyString6,
18250
+ parent_component_id: NonEmptyString6,
18113
18251
  skipped: exports_external.boolean().optional()
18114
18252
  })
18115
18253
  }),
@@ -18117,14 +18255,14 @@ var PowerPathLessonPlanOperationInput = exports_external.union([
18117
18255
  type: exports_external.literal("move-item-before"),
18118
18256
  payload: exports_external.object({
18119
18257
  target: LessonPlanTarget,
18120
- reference_id: NonEmptyString5
18258
+ reference_id: NonEmptyString6
18121
18259
  })
18122
18260
  }),
18123
18261
  exports_external.object({
18124
18262
  type: exports_external.literal("move-item-after"),
18125
18263
  payload: exports_external.object({
18126
18264
  target: LessonPlanTarget,
18127
- reference_id: NonEmptyString5
18265
+ reference_id: NonEmptyString6
18128
18266
  })
18129
18267
  }),
18130
18268
  exports_external.object({
@@ -18143,135 +18281,135 @@ var PowerPathLessonPlanOperationInput = exports_external.union([
18143
18281
  type: exports_external.literal("change-item-parent"),
18144
18282
  payload: exports_external.object({
18145
18283
  target: LessonPlanTarget,
18146
- new_parent_id: NonEmptyString5,
18284
+ new_parent_id: NonEmptyString6,
18147
18285
  position: exports_external.enum(["start", "end"]).optional()
18148
18286
  })
18149
18287
  })
18150
18288
  ]);
18151
18289
  var PowerPathLessonPlanOperationsInput = exports_external.object({
18152
18290
  operation: exports_external.array(PowerPathLessonPlanOperationInput),
18153
- reason: NonEmptyString5.optional()
18291
+ reason: NonEmptyString6.optional()
18154
18292
  });
18155
18293
  var PowerPathLessonPlanUpdateStudentItemResponseInput = exports_external.object({
18156
- studentId: NonEmptyString5,
18157
- componentResourceId: NonEmptyString5,
18294
+ studentId: NonEmptyString6,
18295
+ componentResourceId: NonEmptyString6,
18158
18296
  result: exports_external.object({
18159
18297
  status: exports_external.enum(["active", "tobedeleted"]),
18160
18298
  metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
18161
18299
  score: exports_external.number().optional(),
18162
- textScore: NonEmptyString5.optional(),
18163
- scoreDate: NonEmptyString5,
18300
+ textScore: NonEmptyString6.optional(),
18301
+ scoreDate: NonEmptyString6,
18164
18302
  scorePercentile: exports_external.number().optional(),
18165
18303
  scoreStatus: ScoreStatus,
18166
- comment: NonEmptyString5.optional(),
18304
+ comment: NonEmptyString6.optional(),
18167
18305
  learningObjectiveSet: exports_external.array(exports_external.object({
18168
- source: NonEmptyString5,
18306
+ source: NonEmptyString6,
18169
18307
  learningObjectiveResults: exports_external.array(exports_external.object({
18170
- learningObjectiveId: NonEmptyString5,
18308
+ learningObjectiveId: NonEmptyString6,
18171
18309
  score: exports_external.number().optional(),
18172
- textScore: NonEmptyString5.optional()
18310
+ textScore: NonEmptyString6.optional()
18173
18311
  }))
18174
18312
  })).optional(),
18175
- inProgress: NonEmptyString5.optional(),
18176
- incomplete: NonEmptyString5.optional(),
18177
- late: NonEmptyString5.optional(),
18178
- missing: NonEmptyString5.optional()
18313
+ inProgress: NonEmptyString6.optional(),
18314
+ incomplete: NonEmptyString6.optional(),
18315
+ late: NonEmptyString6.optional(),
18316
+ missing: NonEmptyString6.optional()
18179
18317
  })
18180
18318
  });
18181
18319
  var PowerPathMakeExternalTestAssignmentInput = exports_external.object({
18182
- student: NonEmptyString5,
18183
- lesson: NonEmptyString5,
18184
- applicationName: NonEmptyString5.optional(),
18185
- testId: NonEmptyString5.optional(),
18320
+ student: NonEmptyString6,
18321
+ lesson: NonEmptyString6,
18322
+ applicationName: NonEmptyString6.optional(),
18323
+ testId: NonEmptyString6.optional(),
18186
18324
  skipCourseEnrollment: exports_external.boolean().optional()
18187
18325
  });
18188
18326
  var PowerPathPlacementResetUserPlacementInput = exports_external.object({
18189
- student: NonEmptyString5,
18327
+ student: NonEmptyString6,
18190
18328
  subject: TimebackSubject
18191
18329
  });
18192
18330
  var PowerPathResetAttemptInput = exports_external.object({
18193
- student: NonEmptyString5,
18194
- lesson: NonEmptyString5
18331
+ student: NonEmptyString6,
18332
+ lesson: NonEmptyString6
18195
18333
  });
18196
18334
  var PowerPathScreeningResetSessionInput = exports_external.object({
18197
- userId: NonEmptyString5
18335
+ userId: NonEmptyString6
18198
18336
  });
18199
18337
  var PowerPathScreeningAssignTestInput = exports_external.object({
18200
- userId: NonEmptyString5,
18338
+ userId: NonEmptyString6,
18201
18339
  subject: exports_external.enum(["Math", "Reading", "Language", "Science"])
18202
18340
  });
18203
18341
  var PowerPathTestAssignmentsCreateInput = exports_external.object({
18204
- student: NonEmptyString5,
18342
+ student: NonEmptyString6,
18205
18343
  subject: TimebackSubject,
18206
18344
  grade: TimebackGrade,
18207
- testName: NonEmptyString5.optional()
18345
+ testName: NonEmptyString6.optional()
18208
18346
  });
18209
18347
  var PowerPathTestAssignmentsUpdateInput = exports_external.object({
18210
- testName: NonEmptyString5
18348
+ testName: NonEmptyString6
18211
18349
  });
18212
18350
  var PowerPathTestAssignmentItemInput = exports_external.object({
18213
- student: NonEmptyString5,
18351
+ student: NonEmptyString6,
18214
18352
  subject: TimebackSubject,
18215
18353
  grade: TimebackGrade,
18216
- testName: NonEmptyString5.optional()
18354
+ testName: NonEmptyString6.optional()
18217
18355
  });
18218
18356
  var PowerPathTestAssignmentsBulkInput = exports_external.object({
18219
18357
  items: exports_external.array(PowerPathTestAssignmentItemInput)
18220
18358
  });
18221
18359
  var PowerPathTestAssignmentsImportInput = exports_external.object({
18222
18360
  spreadsheetUrl: exports_external.url(),
18223
- sheet: NonEmptyString5
18361
+ sheet: NonEmptyString6
18224
18362
  });
18225
18363
  var PowerPathTestAssignmentsListParams = exports_external.object({
18226
- student: NonEmptyString5,
18364
+ student: NonEmptyString6,
18227
18365
  status: exports_external.enum(["assigned", "in_progress", "completed", "failed", "expired", "cancelled"]).optional(),
18228
- subject: NonEmptyString5.optional(),
18366
+ subject: NonEmptyString6.optional(),
18229
18367
  grade: TimebackGrade.optional(),
18230
18368
  limit: exports_external.number().int().positive().max(3000).optional(),
18231
18369
  offset: exports_external.number().int().nonnegative().optional()
18232
18370
  });
18233
18371
  var PowerPathTestAssignmentsAdminParams = exports_external.object({
18234
- student: NonEmptyString5.optional(),
18372
+ student: NonEmptyString6.optional(),
18235
18373
  status: exports_external.enum(["assigned", "in_progress", "completed", "failed", "expired", "cancelled"]).optional(),
18236
- subject: NonEmptyString5.optional(),
18374
+ subject: NonEmptyString6.optional(),
18237
18375
  grade: TimebackGrade.optional(),
18238
18376
  limit: exports_external.number().int().positive().max(3000).optional(),
18239
18377
  offset: exports_external.number().int().nonnegative().optional()
18240
18378
  });
18241
18379
  var PowerPathUpdateStudentQuestionResponseInput = exports_external.object({
18242
- student: NonEmptyString5,
18243
- question: NonEmptyString5,
18244
- response: exports_external.union([NonEmptyString5, exports_external.array(NonEmptyString5)]).optional(),
18245
- responses: exports_external.record(exports_external.string(), exports_external.union([NonEmptyString5, exports_external.array(NonEmptyString5)])).optional(),
18246
- lesson: NonEmptyString5
18380
+ student: NonEmptyString6,
18381
+ question: NonEmptyString6,
18382
+ response: exports_external.union([NonEmptyString6, exports_external.array(NonEmptyString6)]).optional(),
18383
+ responses: exports_external.record(exports_external.string(), exports_external.union([NonEmptyString6, exports_external.array(NonEmptyString6)])).optional(),
18384
+ lesson: NonEmptyString6
18247
18385
  });
18248
18386
  var PowerPathGetAssessmentProgressParams = exports_external.object({
18249
- student: NonEmptyString5,
18250
- lesson: NonEmptyString5,
18387
+ student: NonEmptyString6,
18388
+ lesson: NonEmptyString6,
18251
18389
  attempt: exports_external.number().int().positive().optional()
18252
18390
  });
18253
18391
  var PowerPathGetNextQuestionParams = exports_external.object({
18254
- student: NonEmptyString5,
18255
- lesson: NonEmptyString5
18392
+ student: NonEmptyString6,
18393
+ lesson: NonEmptyString6
18256
18394
  });
18257
18395
  var PowerPathGetAttemptsParams = exports_external.object({
18258
- student: NonEmptyString5,
18259
- lesson: NonEmptyString5
18396
+ student: NonEmptyString6,
18397
+ lesson: NonEmptyString6
18260
18398
  });
18261
18399
  var PowerPathTestOutParams = exports_external.object({
18262
- student: NonEmptyString5,
18263
- lesson: NonEmptyString5.optional(),
18400
+ student: NonEmptyString6,
18401
+ lesson: NonEmptyString6.optional(),
18264
18402
  finalized: exports_external.boolean().optional(),
18265
- toolProvider: NonEmptyString5.optional(),
18403
+ toolProvider: NonEmptyString6.optional(),
18266
18404
  attempt: exports_external.number().int().positive().optional()
18267
18405
  });
18268
18406
  var PowerPathImportExternalTestAssignmentResultsParams = exports_external.object({
18269
- student: NonEmptyString5,
18270
- lesson: NonEmptyString5,
18271
- applicationName: NonEmptyString5.optional()
18407
+ student: NonEmptyString6,
18408
+ lesson: NonEmptyString6,
18409
+ applicationName: NonEmptyString6.optional()
18272
18410
  });
18273
18411
  var PowerPathPlacementQueryParams = exports_external.object({
18274
- student: NonEmptyString5,
18412
+ student: NonEmptyString6,
18275
18413
  subject: TimebackSubject
18276
18414
  });
18277
18415
  var PowerPathSyllabusQueryParams = exports_external.object({
@@ -18985,10 +19123,10 @@ class Spinner {
18985
19123
  }
18986
19124
  }
18987
19125
  // ../internal/utils/src/server/runtime.ts
18988
- import { join as join2 } from "node:path";
19126
+ import { join as join3 } from "node:path";
18989
19127
  var STANDALONE_PATHS = [
18990
- join2(".timeback", "bin"),
18991
- join2(".local", "bin"),
19128
+ join3(".timeback", "bin"),
19129
+ join3(".local", "bin"),
18992
19130
  "/usr/local/bin/timeback",
18993
19131
  "/opt/homebrew/bin/timeback"
18994
19132
  ];