@timeback/edubridge 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -487,6 +487,9 @@ var BEYONDAI_PATHS = {
487
487
  },
488
488
  edubridge: {
489
489
  base: "/edubridge"
490
+ },
491
+ powerpath: {
492
+ base: "/powerpath"
490
493
  }
491
494
  };
492
495
  var LEARNWITHAI_PATHS = {
@@ -502,7 +505,8 @@ var LEARNWITHAI_PATHS = {
502
505
  gradebook: "/gradebook/1.0",
503
506
  resources: "/resources/1.0"
504
507
  },
505
- edubridge: null
508
+ edubridge: null,
509
+ powerpath: null
506
510
  };
507
511
  var PLATFORM_PATHS = {
508
512
  BEYOND_AI: BEYONDAI_PATHS,
@@ -524,7 +528,8 @@ function resolvePathProfiles(pathProfile, customPaths) {
524
528
  return {
525
529
  caliper: customPaths?.caliper ?? basePaths.caliper,
526
530
  oneroster: customPaths?.oneroster ?? basePaths.oneroster,
527
- edubridge: customPaths?.edubridge ?? basePaths.edubridge
531
+ edubridge: customPaths?.edubridge ?? basePaths.edubridge,
532
+ powerpath: customPaths?.powerpath ?? basePaths.powerpath
528
533
  };
529
534
  }
530
535
 
@@ -560,6 +565,10 @@ class TimebackProvider {
560
565
  baseUrl: platformEndpoints.api[env],
561
566
  authUrl: this.authUrl
562
567
  },
568
+ powerpath: {
569
+ baseUrl: platformEndpoints.api[env],
570
+ authUrl: this.authUrl
571
+ },
563
572
  caliper: {
564
573
  baseUrl: platformEndpoints.caliper[env],
565
574
  authUrl: this.authUrl
@@ -576,6 +585,7 @@ class TimebackProvider {
576
585
  this.endpoints = {
577
586
  oneroster: { baseUrl: config.baseUrl, authUrl: this.authUrl },
578
587
  edubridge: { baseUrl: config.baseUrl, authUrl: this.authUrl },
588
+ powerpath: { baseUrl: config.baseUrl, authUrl: this.authUrl },
579
589
  caliper: { baseUrl: config.baseUrl, authUrl: this.authUrl },
580
590
  qti: { baseUrl: config.baseUrl, authUrl: this.authUrl }
581
591
  };
@@ -694,7 +704,17 @@ class TimebackProvider {
694
704
  // ../../internal/client-infra/src/utils/utils.ts
695
705
  function getEnv(key) {
696
706
  try {
697
- return typeof process === "undefined" ? undefined : process.env[key];
707
+ if (typeof process === "undefined")
708
+ return;
709
+ if (typeof key === "string") {
710
+ return process.env[key];
711
+ }
712
+ for (const k of key) {
713
+ const value = process.env[k];
714
+ if (value !== undefined)
715
+ return value;
716
+ }
717
+ return;
698
718
  } catch {
699
719
  return;
700
720
  }
@@ -728,6 +748,18 @@ var DEFAULT_PROVIDER_REGISTRY = {
728
748
  };
729
749
 
730
750
  // ../../internal/client-infra/src/config/resolve.ts
751
+ function primaryEnvVar(key) {
752
+ if (typeof key === "string") {
753
+ return key;
754
+ }
755
+ if (key.length === 0) {
756
+ throw new Error(`Missing env var key: ${key}`);
757
+ }
758
+ return key[0];
759
+ }
760
+ function formatEnvVarKey(key) {
761
+ return primaryEnvVar(key);
762
+ }
731
763
  function validateEnv(env) {
732
764
  if (env !== "staging" && env !== "production") {
733
765
  throw new Error(`Invalid env "${env}": must be "staging" or "production"`);
@@ -738,10 +770,10 @@ function validateAuth(auth, envVars) {
738
770
  const clientId = auth?.clientId ?? getEnv(envVars.clientId);
739
771
  const clientSecret = auth?.clientSecret ?? getEnv(envVars.clientSecret);
740
772
  if (!clientId) {
741
- throw new Error(`Missing clientId: provide in config or set ${envVars.clientId}`);
773
+ throw new Error(`Missing clientId: provide in config or set ${formatEnvVarKey(envVars.clientId)}`);
742
774
  }
743
775
  if (!clientSecret) {
744
- throw new Error(`Missing clientSecret: provide in config or set ${envVars.clientSecret}`);
776
+ throw new Error(`Missing clientSecret: provide in config or set ${formatEnvVarKey(envVars.clientSecret)}`);
745
777
  }
746
778
  return { clientId, clientSecret };
747
779
  }
@@ -757,21 +789,21 @@ function buildMissingEnvError(envVars) {
757
789
  const clientId = getEnv(envVars.clientId);
758
790
  const clientSecret = getEnv(envVars.clientSecret);
759
791
  if (baseUrl === undefined && clientId === undefined) {
760
- const hint = envVars.env ?? envVars.baseUrl;
792
+ const hint = formatEnvVarKey(envVars.env ?? envVars.baseUrl);
761
793
  return `Missing env: provide in config or set ${hint}`;
762
794
  }
763
795
  const missing = [];
764
796
  if (baseUrl === undefined) {
765
- missing.push(envVars.env ?? envVars.baseUrl);
797
+ missing.push(formatEnvVarKey(envVars.env ?? envVars.baseUrl));
766
798
  }
767
799
  if (baseUrl !== undefined && authUrl === undefined) {
768
- missing.push(envVars.authUrl);
800
+ missing.push(formatEnvVarKey(envVars.authUrl));
769
801
  }
770
802
  if (clientId === undefined) {
771
- missing.push(envVars.clientId);
803
+ missing.push(formatEnvVarKey(envVars.clientId));
772
804
  }
773
805
  if (clientSecret === undefined) {
774
- missing.push(envVars.clientSecret);
806
+ missing.push(formatEnvVarKey(envVars.clientSecret));
775
807
  }
776
808
  return `Missing environment variables: ${missing.join(", ")}`;
777
809
  }
@@ -1267,10 +1299,10 @@ function validateNonEmptyString(value, name) {
1267
1299
  }
1268
1300
  // src/constants.ts
1269
1301
  var EDUBRIDGE_ENV_VARS = {
1270
- baseUrl: "EDUBRIDGE_BASE_URL",
1271
- clientId: "EDUBRIDGE_CLIENT_ID",
1272
- clientSecret: "EDUBRIDGE_CLIENT_SECRET",
1273
- authUrl: "EDUBRIDGE_TOKEN_URL"
1302
+ baseUrl: ["TIMEBACK_API_BASE_URL", "TIMEBACK_BASE_URL", "EDUBRIDGE_BASE_URL"],
1303
+ clientId: ["TIMEBACK_API_CLIENT_ID", "TIMEBACK_CLIENT_ID", "EDUBRIDGE_CLIENT_ID"],
1304
+ clientSecret: ["TIMEBACK_API_CLIENT_SECRET", "TIMEBACK_CLIENT_SECRET", "EDUBRIDGE_CLIENT_SECRET"],
1305
+ authUrl: ["TIMEBACK_API_AUTH_URL", "TIMEBACK_AUTH_URL", "EDUBRIDGE_TOKEN_URL"]
1274
1306
  };
1275
1307
 
1276
1308
  // src/lib/resolve.ts
@@ -1381,7 +1413,7 @@ class Transport extends BaseTransport {
1381
1413
  }
1382
1414
  }
1383
1415
 
1384
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/external.js
1416
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/external.js
1385
1417
  var exports_external = {};
1386
1418
  __export(exports_external, {
1387
1419
  xor: () => xor,
@@ -1622,7 +1654,7 @@ __export(exports_external, {
1622
1654
  $brand: () => $brand
1623
1655
  });
1624
1656
 
1625
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/index.js
1657
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/index.js
1626
1658
  var exports_core2 = {};
1627
1659
  __export(exports_core2, {
1628
1660
  version: () => version,
@@ -1900,7 +1932,7 @@ __export(exports_core2, {
1900
1932
  $ZodAny: () => $ZodAny
1901
1933
  });
1902
1934
 
1903
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/core.js
1935
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/core.js
1904
1936
  var NEVER = Object.freeze({
1905
1937
  status: "aborted"
1906
1938
  });
@@ -1976,7 +2008,7 @@ function config(newConfig) {
1976
2008
  Object.assign(globalConfig, newConfig);
1977
2009
  return globalConfig;
1978
2010
  }
1979
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/util.js
2011
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/util.js
1980
2012
  var exports_util = {};
1981
2013
  __export(exports_util, {
1982
2014
  unwrapMessage: () => unwrapMessage,
@@ -2650,7 +2682,7 @@ class Class {
2650
2682
  constructor(..._args) {}
2651
2683
  }
2652
2684
 
2653
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/errors.js
2685
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/errors.js
2654
2686
  var initializer = (inst, def) => {
2655
2687
  inst.name = "$ZodError";
2656
2688
  Object.defineProperty(inst, "_zod", {
@@ -2787,7 +2819,7 @@ function prettifyError(error) {
2787
2819
  `);
2788
2820
  }
2789
2821
 
2790
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/parse.js
2822
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/parse.js
2791
2823
  var _parse = (_Err) => (schema, value, _ctx, _params) => {
2792
2824
  const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };
2793
2825
  const result = schema._zod.run({ value, issues: [] }, ctx);
@@ -2874,7 +2906,7 @@ var _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {
2874
2906
  return _safeParseAsync(_Err)(schema, value, _ctx);
2875
2907
  };
2876
2908
  var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync($ZodRealError);
2877
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/regexes.js
2909
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/regexes.js
2878
2910
  var exports_regexes = {};
2879
2911
  __export(exports_regexes, {
2880
2912
  xid: () => xid,
@@ -3031,7 +3063,7 @@ var sha512_hex = /^[0-9a-fA-F]{128}$/;
3031
3063
  var sha512_base64 = /* @__PURE__ */ fixedBase64(86, "==");
3032
3064
  var sha512_base64url = /* @__PURE__ */ fixedBase64url(86);
3033
3065
 
3034
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/checks.js
3066
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/checks.js
3035
3067
  var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => {
3036
3068
  var _a;
3037
3069
  inst._zod ?? (inst._zod = {});
@@ -3578,7 +3610,7 @@ var $ZodCheckOverwrite = /* @__PURE__ */ $constructor("$ZodCheckOverwrite", (ins
3578
3610
  };
3579
3611
  });
3580
3612
 
3581
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/doc.js
3613
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/doc.js
3582
3614
  class Doc {
3583
3615
  constructor(args = []) {
3584
3616
  this.content = [];
@@ -3616,14 +3648,14 @@ class Doc {
3616
3648
  }
3617
3649
  }
3618
3650
 
3619
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/versions.js
3651
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/versions.js
3620
3652
  var version = {
3621
3653
  major: 4,
3622
3654
  minor: 3,
3623
- patch: 5
3655
+ patch: 6
3624
3656
  };
3625
3657
 
3626
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/schemas.js
3658
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/schemas.js
3627
3659
  var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
3628
3660
  var _a;
3629
3661
  inst ?? (inst = {});
@@ -4906,7 +4938,7 @@ var $ZodRecord = /* @__PURE__ */ $constructor("$ZodRecord", (inst, def) => {
4906
4938
  if (keyResult instanceof Promise) {
4907
4939
  throw new Error("Async schemas not supported in object keys currently");
4908
4940
  }
4909
- const checkNumericKey = typeof key === "string" && number.test(key) && keyResult.issues.length && keyResult.issues.some((iss) => iss.code === "invalid_type" && iss.expected === "number");
4941
+ const checkNumericKey = typeof key === "string" && number.test(key) && keyResult.issues.length;
4910
4942
  if (checkNumericKey) {
4911
4943
  const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);
4912
4944
  if (retryResult instanceof Promise) {
@@ -5585,7 +5617,7 @@ function handleRefineResult(result, payload, input, inst) {
5585
5617
  payload.issues.push(issue2(_iss));
5586
5618
  }
5587
5619
  }
5588
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/index.js
5620
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/index.js
5589
5621
  var exports_locales = {};
5590
5622
  __export(exports_locales, {
5591
5623
  zhTW: () => zh_TW_default,
@@ -5639,7 +5671,7 @@ __export(exports_locales, {
5639
5671
  ar: () => ar_default
5640
5672
  });
5641
5673
 
5642
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ar.js
5674
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ar.js
5643
5675
  var error = () => {
5644
5676
  const Sizable = {
5645
5677
  string: { unit: "حرف", verb: "أن يحوي" },
@@ -5745,7 +5777,7 @@ function ar_default() {
5745
5777
  localeError: error()
5746
5778
  };
5747
5779
  }
5748
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/az.js
5780
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/az.js
5749
5781
  var error2 = () => {
5750
5782
  const Sizable = {
5751
5783
  string: { unit: "simvol", verb: "olmalıdır" },
@@ -5850,7 +5882,7 @@ function az_default() {
5850
5882
  localeError: error2()
5851
5883
  };
5852
5884
  }
5853
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/be.js
5885
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/be.js
5854
5886
  function getBelarusianPlural(count, one, few, many) {
5855
5887
  const absCount = Math.abs(count);
5856
5888
  const lastDigit = absCount % 10;
@@ -6006,7 +6038,7 @@ function be_default() {
6006
6038
  localeError: error3()
6007
6039
  };
6008
6040
  }
6009
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/bg.js
6041
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/bg.js
6010
6042
  var error4 = () => {
6011
6043
  const Sizable = {
6012
6044
  string: { unit: "символа", verb: "да съдържа" },
@@ -6126,7 +6158,7 @@ function bg_default() {
6126
6158
  localeError: error4()
6127
6159
  };
6128
6160
  }
6129
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ca.js
6161
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ca.js
6130
6162
  var error5 = () => {
6131
6163
  const Sizable = {
6132
6164
  string: { unit: "caràcters", verb: "contenir" },
@@ -6233,7 +6265,7 @@ function ca_default() {
6233
6265
  localeError: error5()
6234
6266
  };
6235
6267
  }
6236
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/cs.js
6268
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/cs.js
6237
6269
  var error6 = () => {
6238
6270
  const Sizable = {
6239
6271
  string: { unit: "znaků", verb: "mít" },
@@ -6344,7 +6376,7 @@ function cs_default() {
6344
6376
  localeError: error6()
6345
6377
  };
6346
6378
  }
6347
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/da.js
6379
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/da.js
6348
6380
  var error7 = () => {
6349
6381
  const Sizable = {
6350
6382
  string: { unit: "tegn", verb: "havde" },
@@ -6459,7 +6491,7 @@ function da_default() {
6459
6491
  localeError: error7()
6460
6492
  };
6461
6493
  }
6462
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/de.js
6494
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/de.js
6463
6495
  var error8 = () => {
6464
6496
  const Sizable = {
6465
6497
  string: { unit: "Zeichen", verb: "zu haben" },
@@ -6567,7 +6599,7 @@ function de_default() {
6567
6599
  localeError: error8()
6568
6600
  };
6569
6601
  }
6570
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/en.js
6602
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/en.js
6571
6603
  var error9 = () => {
6572
6604
  const Sizable = {
6573
6605
  string: { unit: "characters", verb: "to have" },
@@ -6673,7 +6705,7 @@ function en_default() {
6673
6705
  localeError: error9()
6674
6706
  };
6675
6707
  }
6676
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/eo.js
6708
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/eo.js
6677
6709
  var error10 = () => {
6678
6710
  const Sizable = {
6679
6711
  string: { unit: "karaktrojn", verb: "havi" },
@@ -6782,7 +6814,7 @@ function eo_default() {
6782
6814
  localeError: error10()
6783
6815
  };
6784
6816
  }
6785
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/es.js
6817
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/es.js
6786
6818
  var error11 = () => {
6787
6819
  const Sizable = {
6788
6820
  string: { unit: "caracteres", verb: "tener" },
@@ -6914,7 +6946,7 @@ function es_default() {
6914
6946
  localeError: error11()
6915
6947
  };
6916
6948
  }
6917
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/fa.js
6949
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/fa.js
6918
6950
  var error12 = () => {
6919
6951
  const Sizable = {
6920
6952
  string: { unit: "کاراکتر", verb: "داشته باشد" },
@@ -7028,7 +7060,7 @@ function fa_default() {
7028
7060
  localeError: error12()
7029
7061
  };
7030
7062
  }
7031
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/fi.js
7063
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/fi.js
7032
7064
  var error13 = () => {
7033
7065
  const Sizable = {
7034
7066
  string: { unit: "merkkiä", subject: "merkkijonon" },
@@ -7140,7 +7172,7 @@ function fi_default() {
7140
7172
  localeError: error13()
7141
7173
  };
7142
7174
  }
7143
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/fr.js
7175
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/fr.js
7144
7176
  var error14 = () => {
7145
7177
  const Sizable = {
7146
7178
  string: { unit: "caractères", verb: "avoir" },
@@ -7248,7 +7280,7 @@ function fr_default() {
7248
7280
  localeError: error14()
7249
7281
  };
7250
7282
  }
7251
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/fr-CA.js
7283
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/fr-CA.js
7252
7284
  var error15 = () => {
7253
7285
  const Sizable = {
7254
7286
  string: { unit: "caractères", verb: "avoir" },
@@ -7355,7 +7387,7 @@ function fr_CA_default() {
7355
7387
  localeError: error15()
7356
7388
  };
7357
7389
  }
7358
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/he.js
7390
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/he.js
7359
7391
  var error16 = () => {
7360
7392
  const TypeNames = {
7361
7393
  string: { label: "מחרוזת", gender: "f" },
@@ -7548,7 +7580,7 @@ function he_default() {
7548
7580
  localeError: error16()
7549
7581
  };
7550
7582
  }
7551
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/hu.js
7583
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/hu.js
7552
7584
  var error17 = () => {
7553
7585
  const Sizable = {
7554
7586
  string: { unit: "karakter", verb: "legyen" },
@@ -7656,7 +7688,7 @@ function hu_default() {
7656
7688
  localeError: error17()
7657
7689
  };
7658
7690
  }
7659
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/hy.js
7691
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/hy.js
7660
7692
  function getArmenianPlural(count, one, many) {
7661
7693
  return Math.abs(count) === 1 ? one : many;
7662
7694
  }
@@ -7803,7 +7835,7 @@ function hy_default() {
7803
7835
  localeError: error18()
7804
7836
  };
7805
7837
  }
7806
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/id.js
7838
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/id.js
7807
7839
  var error19 = () => {
7808
7840
  const Sizable = {
7809
7841
  string: { unit: "karakter", verb: "memiliki" },
@@ -7909,7 +7941,7 @@ function id_default() {
7909
7941
  localeError: error19()
7910
7942
  };
7911
7943
  }
7912
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/is.js
7944
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/is.js
7913
7945
  var error20 = () => {
7914
7946
  const Sizable = {
7915
7947
  string: { unit: "stafi", verb: "að hafa" },
@@ -8018,7 +8050,7 @@ function is_default() {
8018
8050
  localeError: error20()
8019
8051
  };
8020
8052
  }
8021
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/it.js
8053
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/it.js
8022
8054
  var error21 = () => {
8023
8055
  const Sizable = {
8024
8056
  string: { unit: "caratteri", verb: "avere" },
@@ -8126,7 +8158,7 @@ function it_default() {
8126
8158
  localeError: error21()
8127
8159
  };
8128
8160
  }
8129
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ja.js
8161
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ja.js
8130
8162
  var error22 = () => {
8131
8163
  const Sizable = {
8132
8164
  string: { unit: "文字", verb: "である" },
@@ -8233,7 +8265,7 @@ function ja_default() {
8233
8265
  localeError: error22()
8234
8266
  };
8235
8267
  }
8236
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ka.js
8268
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ka.js
8237
8269
  var error23 = () => {
8238
8270
  const Sizable = {
8239
8271
  string: { unit: "სიმბოლო", verb: "უნდა შეიცავდეს" },
@@ -8345,7 +8377,7 @@ function ka_default() {
8345
8377
  localeError: error23()
8346
8378
  };
8347
8379
  }
8348
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/km.js
8380
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/km.js
8349
8381
  var error24 = () => {
8350
8382
  const Sizable = {
8351
8383
  string: { unit: "តួអក្សរ", verb: "គួរមាន" },
@@ -8456,11 +8488,11 @@ function km_default() {
8456
8488
  };
8457
8489
  }
8458
8490
 
8459
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/kh.js
8491
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/kh.js
8460
8492
  function kh_default() {
8461
8493
  return km_default();
8462
8494
  }
8463
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ko.js
8495
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ko.js
8464
8496
  var error25 = () => {
8465
8497
  const Sizable = {
8466
8498
  string: { unit: "문자", verb: "to have" },
@@ -8571,7 +8603,7 @@ function ko_default() {
8571
8603
  localeError: error25()
8572
8604
  };
8573
8605
  }
8574
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/lt.js
8606
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/lt.js
8575
8607
  var capitalizeFirstCharacter = (text) => {
8576
8608
  return text.charAt(0).toUpperCase() + text.slice(1);
8577
8609
  };
@@ -8774,7 +8806,7 @@ function lt_default() {
8774
8806
  localeError: error26()
8775
8807
  };
8776
8808
  }
8777
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/mk.js
8809
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/mk.js
8778
8810
  var error27 = () => {
8779
8811
  const Sizable = {
8780
8812
  string: { unit: "знаци", verb: "да имаат" },
@@ -8883,7 +8915,7 @@ function mk_default() {
8883
8915
  localeError: error27()
8884
8916
  };
8885
8917
  }
8886
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ms.js
8918
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ms.js
8887
8919
  var error28 = () => {
8888
8920
  const Sizable = {
8889
8921
  string: { unit: "aksara", verb: "mempunyai" },
@@ -8990,7 +9022,7 @@ function ms_default() {
8990
9022
  localeError: error28()
8991
9023
  };
8992
9024
  }
8993
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/nl.js
9025
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/nl.js
8994
9026
  var error29 = () => {
8995
9027
  const Sizable = {
8996
9028
  string: { unit: "tekens", verb: "heeft" },
@@ -9100,7 +9132,7 @@ function nl_default() {
9100
9132
  localeError: error29()
9101
9133
  };
9102
9134
  }
9103
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/no.js
9135
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/no.js
9104
9136
  var error30 = () => {
9105
9137
  const Sizable = {
9106
9138
  string: { unit: "tegn", verb: "å ha" },
@@ -9208,7 +9240,7 @@ function no_default() {
9208
9240
  localeError: error30()
9209
9241
  };
9210
9242
  }
9211
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ota.js
9243
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ota.js
9212
9244
  var error31 = () => {
9213
9245
  const Sizable = {
9214
9246
  string: { unit: "harf", verb: "olmalıdır" },
@@ -9317,7 +9349,7 @@ function ota_default() {
9317
9349
  localeError: error31()
9318
9350
  };
9319
9351
  }
9320
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ps.js
9352
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ps.js
9321
9353
  var error32 = () => {
9322
9354
  const Sizable = {
9323
9355
  string: { unit: "توکي", verb: "ولري" },
@@ -9431,7 +9463,7 @@ function ps_default() {
9431
9463
  localeError: error32()
9432
9464
  };
9433
9465
  }
9434
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/pl.js
9466
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/pl.js
9435
9467
  var error33 = () => {
9436
9468
  const Sizable = {
9437
9469
  string: { unit: "znaków", verb: "mieć" },
@@ -9540,7 +9572,7 @@ function pl_default() {
9540
9572
  localeError: error33()
9541
9573
  };
9542
9574
  }
9543
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/pt.js
9575
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/pt.js
9544
9576
  var error34 = () => {
9545
9577
  const Sizable = {
9546
9578
  string: { unit: "caracteres", verb: "ter" },
@@ -9648,7 +9680,7 @@ function pt_default() {
9648
9680
  localeError: error34()
9649
9681
  };
9650
9682
  }
9651
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ru.js
9683
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ru.js
9652
9684
  function getRussianPlural(count, one, few, many) {
9653
9685
  const absCount = Math.abs(count);
9654
9686
  const lastDigit = absCount % 10;
@@ -9804,7 +9836,7 @@ function ru_default() {
9804
9836
  localeError: error35()
9805
9837
  };
9806
9838
  }
9807
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/sl.js
9839
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/sl.js
9808
9840
  var error36 = () => {
9809
9841
  const Sizable = {
9810
9842
  string: { unit: "znakov", verb: "imeti" },
@@ -9913,7 +9945,7 @@ function sl_default() {
9913
9945
  localeError: error36()
9914
9946
  };
9915
9947
  }
9916
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/sv.js
9948
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/sv.js
9917
9949
  var error37 = () => {
9918
9950
  const Sizable = {
9919
9951
  string: { unit: "tecken", verb: "att ha" },
@@ -10023,7 +10055,7 @@ function sv_default() {
10023
10055
  localeError: error37()
10024
10056
  };
10025
10057
  }
10026
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ta.js
10058
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ta.js
10027
10059
  var error38 = () => {
10028
10060
  const Sizable = {
10029
10061
  string: { unit: "எழுத்துக்கள்", verb: "கொண்டிருக்க வேண்டும்" },
@@ -10133,7 +10165,7 @@ function ta_default() {
10133
10165
  localeError: error38()
10134
10166
  };
10135
10167
  }
10136
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/th.js
10168
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/th.js
10137
10169
  var error39 = () => {
10138
10170
  const Sizable = {
10139
10171
  string: { unit: "ตัวอักษร", verb: "ควรมี" },
@@ -10243,7 +10275,7 @@ function th_default() {
10243
10275
  localeError: error39()
10244
10276
  };
10245
10277
  }
10246
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/tr.js
10278
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/tr.js
10247
10279
  var error40 = () => {
10248
10280
  const Sizable = {
10249
10281
  string: { unit: "karakter", verb: "olmalı" },
@@ -10348,7 +10380,7 @@ function tr_default() {
10348
10380
  localeError: error40()
10349
10381
  };
10350
10382
  }
10351
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/uk.js
10383
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/uk.js
10352
10384
  var error41 = () => {
10353
10385
  const Sizable = {
10354
10386
  string: { unit: "символів", verb: "матиме" },
@@ -10457,11 +10489,11 @@ function uk_default() {
10457
10489
  };
10458
10490
  }
10459
10491
 
10460
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ua.js
10492
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ua.js
10461
10493
  function ua_default() {
10462
10494
  return uk_default();
10463
10495
  }
10464
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ur.js
10496
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ur.js
10465
10497
  var error42 = () => {
10466
10498
  const Sizable = {
10467
10499
  string: { unit: "حروف", verb: "ہونا" },
@@ -10571,7 +10603,7 @@ function ur_default() {
10571
10603
  localeError: error42()
10572
10604
  };
10573
10605
  }
10574
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/uz.js
10606
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/uz.js
10575
10607
  var error43 = () => {
10576
10608
  const Sizable = {
10577
10609
  string: { unit: "belgi", verb: "bo‘lishi kerak" },
@@ -10680,7 +10712,7 @@ function uz_default() {
10680
10712
  localeError: error43()
10681
10713
  };
10682
10714
  }
10683
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/vi.js
10715
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/vi.js
10684
10716
  var error44 = () => {
10685
10717
  const Sizable = {
10686
10718
  string: { unit: "ký tự", verb: "có" },
@@ -10788,7 +10820,7 @@ function vi_default() {
10788
10820
  localeError: error44()
10789
10821
  };
10790
10822
  }
10791
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/zh-CN.js
10823
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/zh-CN.js
10792
10824
  var error45 = () => {
10793
10825
  const Sizable = {
10794
10826
  string: { unit: "字符", verb: "包含" },
@@ -10897,7 +10929,7 @@ function zh_CN_default() {
10897
10929
  localeError: error45()
10898
10930
  };
10899
10931
  }
10900
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/zh-TW.js
10932
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/zh-TW.js
10901
10933
  var error46 = () => {
10902
10934
  const Sizable = {
10903
10935
  string: { unit: "字元", verb: "擁有" },
@@ -11004,7 +11036,7 @@ function zh_TW_default() {
11004
11036
  localeError: error46()
11005
11037
  };
11006
11038
  }
11007
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/yo.js
11039
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/yo.js
11008
11040
  var error47 = () => {
11009
11041
  const Sizable = {
11010
11042
  string: { unit: "àmi", verb: "ní" },
@@ -11111,7 +11143,7 @@ function yo_default() {
11111
11143
  localeError: error47()
11112
11144
  };
11113
11145
  }
11114
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/registries.js
11146
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/registries.js
11115
11147
  var _a;
11116
11148
  var $output = Symbol("ZodOutput");
11117
11149
  var $input = Symbol("ZodInput");
@@ -11161,7 +11193,7 @@ function registry() {
11161
11193
  }
11162
11194
  (_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());
11163
11195
  var globalRegistry = globalThis.__zod_globalRegistry;
11164
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/api.js
11196
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/api.js
11165
11197
  function _string(Class2, params) {
11166
11198
  return new Class2({
11167
11199
  type: "string",
@@ -12081,7 +12113,7 @@ function _stringFormat(Class2, format, fnOrRegex, _params = {}) {
12081
12113
  const inst = new Class2(def);
12082
12114
  return inst;
12083
12115
  }
12084
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/to-json-schema.js
12116
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/to-json-schema.js
12085
12117
  function initializeContext(params) {
12086
12118
  let target = params?.target ?? "draft-2020-12";
12087
12119
  if (target === "draft-4")
@@ -12277,7 +12309,7 @@ function finalize(ctx, schema) {
12277
12309
  }
12278
12310
  }
12279
12311
  }
12280
- if (refSchema.$ref) {
12312
+ if (refSchema.$ref && refSeen.def) {
12281
12313
  for (const key in schema2) {
12282
12314
  if (key === "$ref" || key === "allOf")
12283
12315
  continue;
@@ -12426,7 +12458,7 @@ var createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) =
12426
12458
  extractDefs(ctx, schema);
12427
12459
  return finalize(ctx, schema);
12428
12460
  };
12429
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/json-schema-processors.js
12461
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/json-schema-processors.js
12430
12462
  var formatMap = {
12431
12463
  guid: "uuid",
12432
12464
  url: "uri",
@@ -12971,7 +13003,7 @@ function toJSONSchema(input, params) {
12971
13003
  extractDefs(ctx, input);
12972
13004
  return finalize(ctx, input);
12973
13005
  }
12974
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/json-schema-generator.js
13006
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/json-schema-generator.js
12975
13007
  class JSONSchemaGenerator {
12976
13008
  get metadataRegistry() {
12977
13009
  return this.ctx.metadataRegistry;
@@ -13030,9 +13062,9 @@ class JSONSchemaGenerator {
13030
13062
  return plainResult;
13031
13063
  }
13032
13064
  }
13033
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/json-schema.js
13065
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/json-schema.js
13034
13066
  var exports_json_schema = {};
13035
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/schemas.js
13067
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/schemas.js
13036
13068
  var exports_schemas2 = {};
13037
13069
  __export(exports_schemas2, {
13038
13070
  xor: () => xor,
@@ -13201,7 +13233,7 @@ __export(exports_schemas2, {
13201
13233
  ZodAny: () => ZodAny
13202
13234
  });
13203
13235
 
13204
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/checks.js
13236
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/checks.js
13205
13237
  var exports_checks2 = {};
13206
13238
  __export(exports_checks2, {
13207
13239
  uppercase: () => _uppercase,
@@ -13235,7 +13267,7 @@ __export(exports_checks2, {
13235
13267
  endsWith: () => _endsWith
13236
13268
  });
13237
13269
 
13238
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/iso.js
13270
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/iso.js
13239
13271
  var exports_iso = {};
13240
13272
  __export(exports_iso, {
13241
13273
  time: () => time2,
@@ -13276,7 +13308,7 @@ function duration2(params) {
13276
13308
  return _isoDuration(ZodISODuration, params);
13277
13309
  }
13278
13310
 
13279
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/errors.js
13311
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/errors.js
13280
13312
  var initializer2 = (inst, issues) => {
13281
13313
  $ZodError.init(inst, issues);
13282
13314
  inst.name = "ZodError";
@@ -13311,7 +13343,7 @@ var ZodRealError = $constructor("ZodError", initializer2, {
13311
13343
  Parent: Error
13312
13344
  });
13313
13345
 
13314
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/parse.js
13346
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/parse.js
13315
13347
  var parse3 = /* @__PURE__ */ _parse(ZodRealError);
13316
13348
  var parseAsync2 = /* @__PURE__ */ _parseAsync(ZodRealError);
13317
13349
  var safeParse2 = /* @__PURE__ */ _safeParse(ZodRealError);
@@ -13325,7 +13357,7 @@ var safeDecode2 = /* @__PURE__ */ _safeDecode(ZodRealError);
13325
13357
  var safeEncodeAsync2 = /* @__PURE__ */ _safeEncodeAsync(ZodRealError);
13326
13358
  var safeDecodeAsync2 = /* @__PURE__ */ _safeDecodeAsync(ZodRealError);
13327
13359
 
13328
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/schemas.js
13360
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/schemas.js
13329
13361
  var ZodType = /* @__PURE__ */ $constructor("ZodType", (inst, def) => {
13330
13362
  $ZodType.init(inst, def);
13331
13363
  Object.assign(inst["~standard"], {
@@ -14401,7 +14433,7 @@ function json(params) {
14401
14433
  function preprocess(fn, schema) {
14402
14434
  return pipe(transform(fn), schema);
14403
14435
  }
14404
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/compat.js
14436
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/compat.js
14405
14437
  var ZodIssueCode = {
14406
14438
  invalid_type: "invalid_type",
14407
14439
  too_big: "too_big",
@@ -14425,7 +14457,7 @@ function getErrorMap() {
14425
14457
  }
14426
14458
  var ZodFirstPartyTypeKind;
14427
14459
  (function(ZodFirstPartyTypeKind2) {})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));
14428
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/from-json-schema.js
14460
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/from-json-schema.js
14429
14461
  var z = {
14430
14462
  ...exports_schemas2,
14431
14463
  ...exports_checks2,
@@ -14886,7 +14918,7 @@ function fromJSONSchema(schema, params) {
14886
14918
  };
14887
14919
  return convertSchema(schema, ctx);
14888
14920
  }
14889
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/coerce.js
14921
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/coerce.js
14890
14922
  var exports_coerce = {};
14891
14923
  __export(exports_coerce, {
14892
14924
  string: () => string3,
@@ -14911,7 +14943,7 @@ function date4(params) {
14911
14943
  return _coercedDate(ZodDate, params);
14912
14944
  }
14913
14945
 
14914
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/external.js
14946
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/external.js
14915
14947
  config(en_default());
14916
14948
  // ../../types/src/zod/primitives.ts
14917
14949
  var IsoDateTimeRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/;
@@ -14928,7 +14960,7 @@ var TimebackSubject = exports_external.enum([
14928
14960
  "Math",
14929
14961
  "None",
14930
14962
  "Other"
14931
- ]);
14963
+ ]).meta({ id: "TimebackSubject", description: "Subject area" });
14932
14964
  var TimebackGrade = exports_external.union([
14933
14965
  exports_external.literal(-1),
14934
14966
  exports_external.literal(0),
@@ -14945,7 +14977,10 @@ var TimebackGrade = exports_external.union([
14945
14977
  exports_external.literal(11),
14946
14978
  exports_external.literal(12),
14947
14979
  exports_external.literal(13)
14948
- ]);
14980
+ ]).meta({
14981
+ id: "TimebackGrade",
14982
+ description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
14983
+ });
14949
14984
  var ScoreStatus = exports_external.enum([
14950
14985
  "exempt",
14951
14986
  "fully graded",
@@ -14972,6 +15007,47 @@ var OneRosterUserRole = exports_external.enum([
14972
15007
  "teacher"
14973
15008
  ]);
14974
15009
  var EnrollmentRole = exports_external.enum(["administrator", "proctor", "student", "teacher"]);
15010
+ var ResourceType = exports_external.enum([
15011
+ "qti",
15012
+ "text",
15013
+ "audio",
15014
+ "video",
15015
+ "interactive",
15016
+ "visual",
15017
+ "course-material",
15018
+ "assessment-bank"
15019
+ ]);
15020
+ var QtiSubType = exports_external.enum(["qti-test", "qti-question", "qti-stimulus", "qti-test-bank"]);
15021
+ var CourseMaterialSubType = exports_external.enum(["unit", "course", "resource-collection"]);
15022
+ var QuestionType = exports_external.enum([
15023
+ "choice",
15024
+ "order",
15025
+ "associate",
15026
+ "match",
15027
+ "hotspot",
15028
+ "hottext",
15029
+ "select-point",
15030
+ "graphic-order",
15031
+ "graphic-associate",
15032
+ "graphic-gap-match",
15033
+ "text-entry",
15034
+ "extended-text",
15035
+ "inline-choice",
15036
+ "upload",
15037
+ "slider",
15038
+ "drawing",
15039
+ "media",
15040
+ "custom"
15041
+ ]);
15042
+ var Difficulty = exports_external.enum(["easy", "medium", "hard"]);
15043
+ var LearningObjectiveSetSchema = exports_external.array(exports_external.object({
15044
+ source: exports_external.string(),
15045
+ learningObjectiveIds: exports_external.array(exports_external.string())
15046
+ }));
15047
+ var FastFailConfigSchema = exports_external.object({
15048
+ consecutive_failures: exports_external.number().int().min(1).optional(),
15049
+ stagnation_limit: exports_external.number().int().min(1).optional()
15050
+ }).optional();
14975
15051
  var LessonType = exports_external.enum(["powerpath-100", "quiz", "test-out", "placement", "unit-test", "alpha-read-article"]).nullable();
14976
15052
  var IMSErrorResponse = exports_external.object({
14977
15053
  imsx_codeMajor: exports_external.enum(["failure", "success"]),
@@ -15048,7 +15124,11 @@ var ActivityCompletedInput = exports_external.object({
15048
15124
  eventTime: IsoDateTimeString.optional(),
15049
15125
  metricsId: exports_external.string().optional(),
15050
15126
  id: exports_external.string().optional(),
15051
- extensions: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15127
+ extensions: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
15128
+ attempt: exports_external.number().int().min(1).optional(),
15129
+ generatedExtensions: exports_external.object({
15130
+ pctCompleteApp: exports_external.number().optional()
15131
+ }).loose().optional()
15052
15132
  }).strict();
15053
15133
  var TimeSpentInput = exports_external.object({
15054
15134
  actor: TimebackUser,
@@ -15132,51 +15212,122 @@ var CaliperListEventsParams = exports_external.object({
15132
15212
  }).strict();
15133
15213
  // ../../types/src/zod/config.ts
15134
15214
  var CourseIds = exports_external.object({
15135
- staging: exports_external.string().optional(),
15136
- production: exports_external.string().optional()
15137
- });
15138
- var CourseType = exports_external.enum(["base", "hole-filling", "optional"]);
15139
- var PublishStatus = exports_external.enum(["draft", "testing", "published", "deactivated"]);
15215
+ staging: exports_external.string().meta({ description: "Course ID in staging environment" }).optional(),
15216
+ production: exports_external.string().meta({ description: "Course ID in production environment" }).optional()
15217
+ }).meta({ id: "CourseIds", description: "Environment-specific course IDs (populated by sync)" });
15218
+ var CourseType = exports_external.enum(["base", "hole-filling", "optional"]).meta({ id: "CourseType", description: "Course classification type" });
15219
+ var PublishStatus = exports_external.enum(["draft", "testing", "published", "deactivated"]).meta({ id: "PublishStatus", description: "Course publication status" });
15140
15220
  var CourseGoals = exports_external.object({
15141
- dailyXp: exports_external.number().int().positive().optional(),
15142
- dailyLessons: exports_external.number().int().positive().optional(),
15143
- dailyActiveMinutes: exports_external.number().int().positive().optional(),
15144
- dailyAccuracy: exports_external.number().int().min(0).max(100).optional(),
15145
- dailyMasteredUnits: exports_external.number().int().positive().optional()
15146
- });
15221
+ dailyXp: exports_external.number().int().positive().meta({ description: "Target XP to earn per day" }).optional(),
15222
+ dailyLessons: exports_external.number().int().positive().meta({ description: "Target lessons to complete per day" }).optional(),
15223
+ dailyActiveMinutes: exports_external.number().int().positive().meta({ description: "Target active learning minutes per day" }).optional(),
15224
+ dailyAccuracy: exports_external.number().int().min(0).max(100).meta({ description: "Target accuracy percentage (0-100)" }).optional(),
15225
+ dailyMasteredUnits: exports_external.number().int().positive().meta({ description: "Target units to master per day" }).optional()
15226
+ }).meta({ id: "CourseGoals", description: "Daily learning goals for a course" });
15147
15227
  var CourseMetrics = exports_external.object({
15148
- totalXp: exports_external.number().int().positive().optional(),
15149
- totalLessons: exports_external.number().int().positive().optional(),
15150
- totalGrades: exports_external.number().int().positive().optional()
15151
- });
15228
+ totalXp: exports_external.number().int().positive().meta({ description: "Total XP available in the course" }).optional(),
15229
+ totalLessons: exports_external.number().int().positive().meta({ description: "Total number of lessons/activities" }).optional(),
15230
+ totalGrades: exports_external.number().int().positive().meta({ description: "Total grade levels covered" }).optional()
15231
+ }).meta({ id: "CourseMetrics", description: "Aggregate metrics for a course" });
15152
15232
  var CourseMetadata = exports_external.object({
15153
15233
  courseType: CourseType.optional(),
15154
- isSupplemental: exports_external.boolean().optional(),
15155
- isCustom: exports_external.boolean().optional(),
15234
+ isSupplemental: exports_external.boolean().meta({ description: "Whether this is supplemental to a base course" }).optional(),
15235
+ isCustom: exports_external.boolean().meta({ description: "Whether this is a custom course for an individual student" }).optional(),
15156
15236
  publishStatus: PublishStatus.optional(),
15157
- contactEmail: exports_external.email().optional(),
15158
- primaryApp: exports_external.string().optional(),
15237
+ contactEmail: exports_external.email().meta({ description: "Contact email for course issues" }).optional(),
15238
+ primaryApp: exports_external.string().meta({ description: "Primary application identifier" }).optional(),
15159
15239
  goals: CourseGoals.optional(),
15160
15240
  metrics: CourseMetrics.optional()
15161
- });
15241
+ }).meta({ id: "CourseMetadata", description: "Course metadata (matches API metadata object)" });
15162
15242
  var CourseDefaults = exports_external.object({
15163
- courseCode: exports_external.string().optional(),
15164
- level: exports_external.string().optional(),
15243
+ courseCode: exports_external.string().meta({ description: "Course code (e.g., 'MATH101')" }).optional(),
15244
+ level: exports_external.string().meta({ description: "Course level (e.g., 'AP', 'Honors')" }).optional(),
15245
+ metadata: CourseMetadata.optional()
15246
+ }).meta({
15247
+ id: "CourseDefaults",
15248
+ description: "Default properties that apply to all courses unless overridden"
15249
+ });
15250
+ var CourseEnvOverrides = exports_external.object({
15251
+ level: exports_external.string().meta({ description: "Course level for this environment" }).optional(),
15252
+ sensor: exports_external.url().meta({ description: "Caliper sensor endpoint URL for this environment" }).optional(),
15253
+ launchUrl: exports_external.url().meta({ description: "LTI launch URL for this environment" }).optional(),
15165
15254
  metadata: CourseMetadata.optional()
15255
+ }).meta({
15256
+ id: "CourseEnvOverrides",
15257
+ description: "Environment-specific course overrides (non-identity fields)"
15166
15258
  });
15259
+ var CourseOverrides = exports_external.object({
15260
+ staging: CourseEnvOverrides.meta({
15261
+ description: "Overrides for staging environment"
15262
+ }).optional(),
15263
+ production: CourseEnvOverrides.meta({
15264
+ description: "Overrides for production environment"
15265
+ }).optional()
15266
+ }).meta({ id: "CourseOverrides", description: "Per-environment course overrides" });
15167
15267
  var CourseConfig = CourseDefaults.extend({
15168
- subject: TimebackSubject,
15169
- grade: TimebackGrade,
15170
- ids: CourseIds.nullable().optional()
15268
+ subject: TimebackSubject.meta({ description: "Subject area for this course" }),
15269
+ grade: TimebackGrade.meta({
15270
+ description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
15271
+ }).optional(),
15272
+ ids: CourseIds.nullable().optional(),
15273
+ sensor: exports_external.url().meta({ description: "Caliper sensor endpoint URL for this course" }).optional(),
15274
+ launchUrl: exports_external.url().meta({ description: "LTI launch URL for this course" }).optional(),
15275
+ overrides: CourseOverrides.optional()
15276
+ }).meta({
15277
+ id: "CourseConfig",
15278
+ description: "Configuration for a single course. Must have either grade or courseCode (or both)."
15171
15279
  });
15172
15280
  var TimebackConfig = exports_external.object({
15173
- name: exports_external.string().min(1, "App name is required"),
15174
- defaults: CourseDefaults.optional(),
15175
- courses: exports_external.array(CourseConfig).min(1, "At least one course is required"),
15176
- sensors: exports_external.array(exports_external.string().url()).optional()
15281
+ $schema: exports_external.string().meta({ description: "JSON Schema reference for editor support" }).optional(),
15282
+ name: exports_external.string().min(1, "App name is required").meta({ description: "Display name for your app" }),
15283
+ defaults: CourseDefaults.meta({
15284
+ description: "Default properties applied to all courses"
15285
+ }).optional(),
15286
+ courses: exports_external.array(CourseConfig).min(1, "At least one course is required").meta({ description: "Courses available in this app" }),
15287
+ sensor: exports_external.url().meta({ description: "Default Caliper sensor endpoint URL for all courses" }).optional(),
15288
+ launchUrl: exports_external.url().meta({ description: "Default LTI launch URL for all courses" }).optional()
15289
+ }).meta({
15290
+ id: "TimebackConfig",
15291
+ title: "Timeback Config",
15292
+ description: "Configuration schema for timeback.config.json files"
15293
+ }).refine((config2) => {
15294
+ return config2.courses.every((c) => c.grade !== undefined || c.courseCode !== undefined);
15295
+ }, {
15296
+ message: "Each course must have either a grade or a courseCode",
15297
+ path: ["courses"]
15298
+ }).refine((config2) => {
15299
+ const withGrade = config2.courses.filter((c) => c.grade !== undefined);
15300
+ const keys = withGrade.map((c) => `${c.subject}:${c.grade}`);
15301
+ return new Set(keys).size === keys.length;
15302
+ }, {
15303
+ message: "Duplicate (subject, grade) pair found; each must be unique",
15304
+ path: ["courses"]
15305
+ }).refine((config2) => {
15306
+ const withCode = config2.courses.filter((c) => c.courseCode !== undefined);
15307
+ const codes = withCode.map((c) => c.courseCode);
15308
+ return new Set(codes).size === codes.length;
15309
+ }, {
15310
+ message: "Duplicate courseCode found; each must be unique",
15311
+ path: ["courses"]
15312
+ }).refine((config2) => {
15313
+ return config2.courses.every((c) => {
15314
+ if (c.sensor !== undefined || config2.sensor !== undefined) {
15315
+ return true;
15316
+ }
15317
+ const launchUrls = [
15318
+ c.launchUrl,
15319
+ config2.launchUrl,
15320
+ c.overrides?.staging?.launchUrl,
15321
+ c.overrides?.production?.launchUrl
15322
+ ].filter(Boolean);
15323
+ return launchUrls.length > 0;
15324
+ });
15325
+ }, {
15326
+ message: "Each course must have an effective sensor. Either set `sensor` explicitly (top-level or per-course), or provide a `launchUrl` so sensor can be derived from its origin.",
15327
+ path: ["courses"]
15177
15328
  });
15178
15329
  // ../../types/src/zod/edubridge.ts
15179
- var EdubridgeDateString = exports_external.union([IsoDateString, IsoDateTimeString]);
15330
+ var EdubridgeDateString = IsoDateTimeString;
15180
15331
  var EduBridgeEnrollment = exports_external.object({
15181
15332
  id: exports_external.string(),
15182
15333
  role: exports_external.string(),
@@ -15240,13 +15391,11 @@ var EmailOrStudentId = exports_external.object({
15240
15391
  });
15241
15392
  var SubjectTrackInput = exports_external.object({
15242
15393
  subject: NonEmptyString,
15243
- gradeLevel: NonEmptyString,
15244
- targetCourseId: NonEmptyString,
15245
- metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15246
- });
15247
- var SubjectTrackUpsertInput = SubjectTrackInput.extend({
15248
- id: NonEmptyString
15394
+ grade: NonEmptyString,
15395
+ courseId: NonEmptyString,
15396
+ orgSourcedId: NonEmptyString.optional()
15249
15397
  });
15398
+ var SubjectTrackUpsertInput = SubjectTrackInput;
15250
15399
  var EdubridgeListEnrollmentsParams = exports_external.object({
15251
15400
  userId: NonEmptyString
15252
15401
  });
@@ -15424,20 +15573,45 @@ var OneRosterScoreScaleCreateInput = exports_external.object({
15424
15573
  }).strict();
15425
15574
  var OneRosterAssessmentLineItemCreateInput = exports_external.object({
15426
15575
  sourcedId: NonEmptyString2.optional(),
15576
+ status: Status.optional(),
15577
+ dateLastModified: IsoDateTimeString.optional(),
15427
15578
  title: NonEmptyString2.describe("title must be a non-empty string"),
15428
- class: Ref,
15429
- school: Ref,
15430
- category: Ref,
15431
- assignDate: OneRosterDateString,
15432
- dueDate: OneRosterDateString,
15433
- status: Status,
15579
+ description: exports_external.string().nullable().optional(),
15580
+ class: Ref.nullable().optional(),
15581
+ parentAssessmentLineItem: Ref.nullable().optional(),
15582
+ scoreScale: Ref.nullable().optional(),
15583
+ resultValueMin: exports_external.number().nullable().optional(),
15584
+ resultValueMax: exports_external.number().nullable().optional(),
15585
+ component: Ref.nullable().optional(),
15586
+ componentResource: Ref.nullable().optional(),
15587
+ learningObjectiveSet: exports_external.array(exports_external.object({
15588
+ source: exports_external.string(),
15589
+ learningObjectiveIds: exports_external.array(exports_external.string())
15590
+ })).optional().nullable(),
15591
+ course: Ref.nullable().optional(),
15434
15592
  metadata: Metadata
15435
15593
  }).strict();
15594
+ var LearningObjectiveResult = exports_external.object({
15595
+ learningObjectiveId: exports_external.string(),
15596
+ score: exports_external.number().optional(),
15597
+ textScore: exports_external.string().optional()
15598
+ });
15599
+ var LearningObjectiveScoreSetSchema = exports_external.array(exports_external.object({
15600
+ source: exports_external.string(),
15601
+ learningObjectiveResults: exports_external.array(LearningObjectiveResult)
15602
+ }));
15436
15603
  var OneRosterAssessmentResultCreateInput = exports_external.object({
15437
15604
  sourcedId: NonEmptyString2.optional(),
15438
- lineItem: Ref,
15605
+ status: Status.optional(),
15606
+ dateLastModified: IsoDateTimeString.optional(),
15607
+ metadata: Metadata,
15608
+ assessmentLineItem: Ref,
15439
15609
  student: Ref,
15440
- scoreDate: OneRosterDateString,
15610
+ score: exports_external.number().nullable().optional(),
15611
+ textScore: exports_external.string().nullable().optional(),
15612
+ scoreDate: exports_external.string().datetime(),
15613
+ scoreScale: Ref.nullable().optional(),
15614
+ scorePercentile: exports_external.number().nullable().optional(),
15441
15615
  scoreStatus: exports_external.enum([
15442
15616
  "exempt",
15443
15617
  "fully graded",
@@ -15445,9 +15619,12 @@ var OneRosterAssessmentResultCreateInput = exports_external.object({
15445
15619
  "partially graded",
15446
15620
  "submitted"
15447
15621
  ]),
15448
- score: exports_external.string().optional(),
15449
- status: Status,
15450
- metadata: Metadata
15622
+ comment: exports_external.string().nullable().optional(),
15623
+ learningObjectiveSet: LearningObjectiveScoreSetSchema.nullable().optional(),
15624
+ inProgress: exports_external.string().nullable().optional(),
15625
+ incomplete: exports_external.string().nullable().optional(),
15626
+ late: exports_external.string().nullable().optional(),
15627
+ missing: exports_external.string().nullable().optional()
15451
15628
  }).strict();
15452
15629
  var OneRosterOrgCreateInput = exports_external.object({
15453
15630
  sourcedId: NonEmptyString2.optional(),
@@ -15515,6 +15692,75 @@ var OneRosterCredentialInput = exports_external.object({
15515
15692
  var OneRosterDemographicsCreateInput = exports_external.object({
15516
15693
  sourcedId: NonEmptyString2.describe("sourcedId must be a non-empty string")
15517
15694
  }).loose();
15695
+ var CommonResourceMetadataSchema = exports_external.object({
15696
+ type: ResourceType,
15697
+ subject: TimebackSubject.nullish(),
15698
+ grades: exports_external.array(TimebackGrade).nullish(),
15699
+ language: exports_external.string().nullish(),
15700
+ xp: exports_external.number().nullish(),
15701
+ url: exports_external.url().nullish(),
15702
+ keywords: exports_external.array(exports_external.string()).nullish(),
15703
+ learningObjectiveSet: LearningObjectiveSetSchema.nullish(),
15704
+ lessonType: exports_external.string().nullish()
15705
+ }).passthrough();
15706
+ var QtiMetadataSchema = CommonResourceMetadataSchema.extend({
15707
+ type: exports_external.literal("qti"),
15708
+ subType: QtiSubType,
15709
+ questionType: QuestionType.optional(),
15710
+ difficulty: Difficulty.optional()
15711
+ });
15712
+ var TextMetadataSchema = CommonResourceMetadataSchema.extend({
15713
+ type: exports_external.literal("text"),
15714
+ format: exports_external.string(),
15715
+ author: exports_external.string().optional(),
15716
+ pageCount: exports_external.number().optional()
15717
+ });
15718
+ var AudioMetadataSchema = CommonResourceMetadataSchema.extend({
15719
+ type: exports_external.literal("audio"),
15720
+ duration: exports_external.string().regex(/^\d{2}:\d{2}:\d{2}(\.\d{2})?$/).optional(),
15721
+ format: exports_external.string(),
15722
+ speaker: exports_external.string().optional()
15723
+ });
15724
+ var VideoMetadataSchema = CommonResourceMetadataSchema.extend({
15725
+ type: exports_external.literal("video"),
15726
+ duration: exports_external.string().regex(/^\d{2}:\d{2}:\d{2}(\.\d{2})?$/).optional(),
15727
+ captionsAvailable: exports_external.boolean().optional(),
15728
+ format: exports_external.string()
15729
+ });
15730
+ var InteractiveMetadataSchema = CommonResourceMetadataSchema.extend({
15731
+ type: exports_external.literal("interactive"),
15732
+ launchUrl: exports_external.url().optional(),
15733
+ toolProvider: exports_external.string().optional(),
15734
+ instructionalMethod: exports_external.string().optional(),
15735
+ courseIdOnFail: exports_external.string().nullable().optional(),
15736
+ fail_fast: FastFailConfigSchema
15737
+ });
15738
+ var VisualMetadataSchema = CommonResourceMetadataSchema.extend({
15739
+ type: exports_external.literal("visual"),
15740
+ format: exports_external.string(),
15741
+ resolution: exports_external.string().optional()
15742
+ });
15743
+ var CourseMaterialMetadataSchema = CommonResourceMetadataSchema.extend({
15744
+ type: exports_external.literal("course-material"),
15745
+ subType: CourseMaterialSubType,
15746
+ author: exports_external.string().optional(),
15747
+ format: exports_external.string(),
15748
+ instructionalMethod: exports_external.string().optional()
15749
+ });
15750
+ var AssessmentBankMetadataSchema = CommonResourceMetadataSchema.extend({
15751
+ type: exports_external.literal("assessment-bank"),
15752
+ resources: exports_external.array(exports_external.string())
15753
+ });
15754
+ var ResourceMetadataSchema = exports_external.discriminatedUnion("type", [
15755
+ QtiMetadataSchema,
15756
+ TextMetadataSchema,
15757
+ AudioMetadataSchema,
15758
+ VideoMetadataSchema,
15759
+ InteractiveMetadataSchema,
15760
+ VisualMetadataSchema,
15761
+ CourseMaterialMetadataSchema,
15762
+ AssessmentBankMetadataSchema
15763
+ ]);
15518
15764
  var OneRosterResourceCreateInput = exports_external.object({
15519
15765
  sourcedId: NonEmptyString2.optional(),
15520
15766
  title: NonEmptyString2.describe("title must be a non-empty string"),
@@ -15524,7 +15770,7 @@ var OneRosterResourceCreateInput = exports_external.object({
15524
15770
  vendorId: exports_external.string().optional(),
15525
15771
  applicationId: exports_external.string().optional(),
15526
15772
  status: Status.optional(),
15527
- metadata: Metadata
15773
+ metadata: ResourceMetadataSchema.nullable().optional()
15528
15774
  }).strict();
15529
15775
  var CourseStructureItem = exports_external.object({
15530
15776
  url: NonEmptyString2.describe("courseStructure.url must be a non-empty string"),
@@ -15549,6 +15795,268 @@ var OneRosterBulkResultItem = exports_external.object({
15549
15795
  student: Ref
15550
15796
  }).loose();
15551
15797
  var OneRosterBulkResultsInput = exports_external.array(OneRosterBulkResultItem).min(1, "results must have at least one item");
15798
+ // ../../types/src/zod/powerpath.ts
15799
+ var NonEmptyString3 = exports_external.string().trim().min(1);
15800
+ var ToolProvider = exports_external.enum(["edulastic", "mastery-track"]);
15801
+ var LessonTypeRequired = exports_external.enum([
15802
+ "powerpath-100",
15803
+ "quiz",
15804
+ "test-out",
15805
+ "placement",
15806
+ "unit-test",
15807
+ "alpha-read-article"
15808
+ ]);
15809
+ var GradeArray = exports_external.array(TimebackGrade);
15810
+ var ResourceMetadata = exports_external.record(exports_external.string(), exports_external.unknown()).optional();
15811
+ var ExternalTestBase = exports_external.object({
15812
+ courseId: NonEmptyString3,
15813
+ lessonTitle: NonEmptyString3.optional(),
15814
+ launchUrl: exports_external.url().optional(),
15815
+ toolProvider: ToolProvider,
15816
+ unitTitle: NonEmptyString3.optional(),
15817
+ courseComponentSourcedId: NonEmptyString3.optional(),
15818
+ vendorId: NonEmptyString3.optional(),
15819
+ description: NonEmptyString3.optional(),
15820
+ resourceMetadata: ResourceMetadata.nullable().optional(),
15821
+ grades: GradeArray
15822
+ });
15823
+ var ExternalTestOut = ExternalTestBase.extend({
15824
+ lessonType: exports_external.literal("test-out"),
15825
+ xp: exports_external.number()
15826
+ });
15827
+ var ExternalPlacement = ExternalTestBase.extend({
15828
+ lessonType: exports_external.literal("placement"),
15829
+ courseIdOnFail: NonEmptyString3.optional(),
15830
+ xp: exports_external.number().optional()
15831
+ });
15832
+ var InternalTestBase = exports_external.object({
15833
+ courseId: NonEmptyString3,
15834
+ lessonType: LessonTypeRequired,
15835
+ lessonTitle: NonEmptyString3.optional(),
15836
+ unitTitle: NonEmptyString3.optional(),
15837
+ courseComponentSourcedId: NonEmptyString3.optional(),
15838
+ resourceMetadata: ResourceMetadata.nullable().optional(),
15839
+ xp: exports_external.number().optional(),
15840
+ grades: GradeArray.optional(),
15841
+ courseIdOnFail: NonEmptyString3.optional()
15842
+ });
15843
+ var PowerPathCreateInternalTestInput = exports_external.union([
15844
+ InternalTestBase.extend({
15845
+ testType: exports_external.literal("qti"),
15846
+ qti: exports_external.object({
15847
+ url: exports_external.url(),
15848
+ title: NonEmptyString3.optional(),
15849
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15850
+ })
15851
+ }),
15852
+ InternalTestBase.extend({
15853
+ testType: exports_external.literal("assessment-bank"),
15854
+ assessmentBank: exports_external.object({
15855
+ resources: exports_external.array(exports_external.object({
15856
+ url: exports_external.url(),
15857
+ title: NonEmptyString3.optional(),
15858
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15859
+ }))
15860
+ })
15861
+ })
15862
+ ]);
15863
+ var PowerPathCreateNewAttemptInput = exports_external.object({
15864
+ student: NonEmptyString3,
15865
+ lesson: NonEmptyString3
15866
+ });
15867
+ var PowerPathFinalStudentAssessmentResponseInput = exports_external.object({
15868
+ student: NonEmptyString3,
15869
+ lesson: NonEmptyString3
15870
+ });
15871
+ var PowerPathLessonPlansCreateInput = exports_external.object({
15872
+ courseId: NonEmptyString3,
15873
+ userId: NonEmptyString3,
15874
+ classId: NonEmptyString3.optional()
15875
+ });
15876
+ var LessonPlanTarget = exports_external.object({
15877
+ type: exports_external.enum(["component", "resource"]),
15878
+ id: NonEmptyString3
15879
+ });
15880
+ var PowerPathLessonPlanOperationInput = exports_external.union([
15881
+ exports_external.object({
15882
+ type: exports_external.literal("set-skipped"),
15883
+ payload: exports_external.object({
15884
+ target: LessonPlanTarget,
15885
+ value: exports_external.boolean()
15886
+ })
15887
+ }),
15888
+ exports_external.object({
15889
+ type: exports_external.literal("add-custom-resource"),
15890
+ payload: exports_external.object({
15891
+ resource_id: NonEmptyString3,
15892
+ parent_component_id: NonEmptyString3,
15893
+ skipped: exports_external.boolean().optional()
15894
+ })
15895
+ }),
15896
+ exports_external.object({
15897
+ type: exports_external.literal("move-item-before"),
15898
+ payload: exports_external.object({
15899
+ target: LessonPlanTarget,
15900
+ reference_id: NonEmptyString3
15901
+ })
15902
+ }),
15903
+ exports_external.object({
15904
+ type: exports_external.literal("move-item-after"),
15905
+ payload: exports_external.object({
15906
+ target: LessonPlanTarget,
15907
+ reference_id: NonEmptyString3
15908
+ })
15909
+ }),
15910
+ exports_external.object({
15911
+ type: exports_external.literal("move-item-to-start"),
15912
+ payload: exports_external.object({
15913
+ target: LessonPlanTarget
15914
+ })
15915
+ }),
15916
+ exports_external.object({
15917
+ type: exports_external.literal("move-item-to-end"),
15918
+ payload: exports_external.object({
15919
+ target: LessonPlanTarget
15920
+ })
15921
+ }),
15922
+ exports_external.object({
15923
+ type: exports_external.literal("change-item-parent"),
15924
+ payload: exports_external.object({
15925
+ target: LessonPlanTarget,
15926
+ new_parent_id: NonEmptyString3,
15927
+ position: exports_external.enum(["start", "end"]).optional()
15928
+ })
15929
+ })
15930
+ ]);
15931
+ var PowerPathLessonPlanOperationsInput = exports_external.object({
15932
+ operation: exports_external.array(PowerPathLessonPlanOperationInput),
15933
+ reason: NonEmptyString3.optional()
15934
+ });
15935
+ var PowerPathLessonPlanUpdateStudentItemResponseInput = exports_external.object({
15936
+ studentId: NonEmptyString3,
15937
+ componentResourceId: NonEmptyString3,
15938
+ result: exports_external.object({
15939
+ status: exports_external.enum(["active", "tobedeleted"]),
15940
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
15941
+ score: exports_external.number().optional(),
15942
+ textScore: NonEmptyString3.optional(),
15943
+ scoreDate: NonEmptyString3,
15944
+ scorePercentile: exports_external.number().optional(),
15945
+ scoreStatus: ScoreStatus,
15946
+ comment: NonEmptyString3.optional(),
15947
+ learningObjectiveSet: exports_external.array(exports_external.object({
15948
+ source: NonEmptyString3,
15949
+ learningObjectiveResults: exports_external.array(exports_external.object({
15950
+ learningObjectiveId: NonEmptyString3,
15951
+ score: exports_external.number().optional(),
15952
+ textScore: NonEmptyString3.optional()
15953
+ }))
15954
+ })).optional(),
15955
+ inProgress: NonEmptyString3.optional(),
15956
+ incomplete: NonEmptyString3.optional(),
15957
+ late: NonEmptyString3.optional(),
15958
+ missing: NonEmptyString3.optional()
15959
+ })
15960
+ });
15961
+ var PowerPathMakeExternalTestAssignmentInput = exports_external.object({
15962
+ student: NonEmptyString3,
15963
+ lesson: NonEmptyString3,
15964
+ applicationName: NonEmptyString3.optional(),
15965
+ testId: NonEmptyString3.optional(),
15966
+ skipCourseEnrollment: exports_external.boolean().optional()
15967
+ });
15968
+ var PowerPathPlacementResetUserPlacementInput = exports_external.object({
15969
+ student: NonEmptyString3,
15970
+ subject: TimebackSubject
15971
+ });
15972
+ var PowerPathResetAttemptInput = exports_external.object({
15973
+ student: NonEmptyString3,
15974
+ lesson: NonEmptyString3
15975
+ });
15976
+ var PowerPathScreeningResetSessionInput = exports_external.object({
15977
+ userId: NonEmptyString3
15978
+ });
15979
+ var PowerPathScreeningAssignTestInput = exports_external.object({
15980
+ userId: NonEmptyString3,
15981
+ subject: exports_external.enum(["Math", "Reading", "Language", "Science"])
15982
+ });
15983
+ var PowerPathTestAssignmentsCreateInput = exports_external.object({
15984
+ student: NonEmptyString3,
15985
+ subject: TimebackSubject,
15986
+ grade: TimebackGrade,
15987
+ testName: NonEmptyString3.optional()
15988
+ });
15989
+ var PowerPathTestAssignmentsUpdateInput = exports_external.object({
15990
+ testName: NonEmptyString3
15991
+ });
15992
+ var PowerPathTestAssignmentItemInput = exports_external.object({
15993
+ student: NonEmptyString3,
15994
+ subject: TimebackSubject,
15995
+ grade: TimebackGrade,
15996
+ testName: NonEmptyString3.optional()
15997
+ });
15998
+ var PowerPathTestAssignmentsBulkInput = exports_external.object({
15999
+ items: exports_external.array(PowerPathTestAssignmentItemInput)
16000
+ });
16001
+ var PowerPathTestAssignmentsImportInput = exports_external.object({
16002
+ spreadsheetUrl: exports_external.url(),
16003
+ sheet: NonEmptyString3
16004
+ });
16005
+ var PowerPathTestAssignmentsListParams = exports_external.object({
16006
+ student: NonEmptyString3,
16007
+ status: exports_external.enum(["assigned", "in_progress", "completed", "failed", "expired", "cancelled"]).optional(),
16008
+ subject: NonEmptyString3.optional(),
16009
+ grade: TimebackGrade.optional(),
16010
+ limit: exports_external.number().int().positive().max(3000).optional(),
16011
+ offset: exports_external.number().int().nonnegative().optional()
16012
+ });
16013
+ var PowerPathTestAssignmentsAdminParams = exports_external.object({
16014
+ student: NonEmptyString3.optional(),
16015
+ status: exports_external.enum(["assigned", "in_progress", "completed", "failed", "expired", "cancelled"]).optional(),
16016
+ subject: NonEmptyString3.optional(),
16017
+ grade: TimebackGrade.optional(),
16018
+ limit: exports_external.number().int().positive().max(3000).optional(),
16019
+ offset: exports_external.number().int().nonnegative().optional()
16020
+ });
16021
+ var PowerPathUpdateStudentQuestionResponseInput = exports_external.object({
16022
+ student: NonEmptyString3,
16023
+ question: NonEmptyString3,
16024
+ response: exports_external.union([NonEmptyString3, exports_external.array(NonEmptyString3)]).optional(),
16025
+ responses: exports_external.record(exports_external.string(), exports_external.union([NonEmptyString3, exports_external.array(NonEmptyString3)])).optional(),
16026
+ lesson: NonEmptyString3
16027
+ });
16028
+ var PowerPathGetAssessmentProgressParams = exports_external.object({
16029
+ student: NonEmptyString3,
16030
+ lesson: NonEmptyString3,
16031
+ attempt: exports_external.number().int().positive().optional()
16032
+ });
16033
+ var PowerPathGetNextQuestionParams = exports_external.object({
16034
+ student: NonEmptyString3,
16035
+ lesson: NonEmptyString3
16036
+ });
16037
+ var PowerPathGetAttemptsParams = exports_external.object({
16038
+ student: NonEmptyString3,
16039
+ lesson: NonEmptyString3
16040
+ });
16041
+ var PowerPathTestOutParams = exports_external.object({
16042
+ student: NonEmptyString3,
16043
+ lesson: NonEmptyString3.optional(),
16044
+ finalized: exports_external.boolean().optional(),
16045
+ toolProvider: NonEmptyString3.optional(),
16046
+ attempt: exports_external.number().int().positive().optional()
16047
+ });
16048
+ var PowerPathImportExternalTestAssignmentResultsParams = exports_external.object({
16049
+ student: NonEmptyString3,
16050
+ lesson: NonEmptyString3,
16051
+ applicationName: NonEmptyString3.optional()
16052
+ });
16053
+ var PowerPathPlacementQueryParams = exports_external.object({
16054
+ student: NonEmptyString3,
16055
+ subject: TimebackSubject
16056
+ });
16057
+ var PowerPathSyllabusQueryParams = exports_external.object({
16058
+ status: exports_external.enum(["active", "tobedeleted"]).optional()
16059
+ });
15552
16060
  // ../../types/src/zod/qti.ts
15553
16061
  var QtiAssessmentItemType = exports_external.enum([
15554
16062
  "choice",