@timeback/caliper 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
  }
@@ -1477,10 +1509,10 @@ function validateOffsetListParams(params) {
1477
1509
  }
1478
1510
  // src/constants.ts
1479
1511
  var CALIPER_ENV_VARS = {
1480
- baseUrl: "CALIPER_BASE_URL",
1481
- authUrl: "CALIPER_TOKEN_URL",
1482
- clientId: "CALIPER_CLIENT_ID",
1483
- clientSecret: "CALIPER_CLIENT_SECRET"
1512
+ baseUrl: ["TIMEBACK_API_BASE_URL", "TIMEBACK_BASE_URL", "CALIPER_BASE_URL"],
1513
+ authUrl: ["TIMEBACK_API_AUTH_URL", "TIMEBACK_AUTH_URL", "CALIPER_TOKEN_URL"],
1514
+ clientId: ["TIMEBACK_API_CLIENT_ID", "TIMEBACK_CLIENT_ID", "CALIPER_CLIENT_ID"],
1515
+ clientSecret: ["TIMEBACK_API_CLIENT_SECRET", "TIMEBACK_CLIENT_SECRET", "CALIPER_CLIENT_SECRET"]
1484
1516
  };
1485
1517
  var CALIPER_DATA_VERSION = "http://purl.imsglobal.org/ctx/caliper/v1p2";
1486
1518
 
@@ -1512,7 +1544,7 @@ class Transport extends BaseTransport {
1512
1544
  }
1513
1545
  }
1514
1546
 
1515
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/external.js
1547
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/external.js
1516
1548
  var exports_external = {};
1517
1549
  __export(exports_external, {
1518
1550
  xor: () => xor,
@@ -1753,7 +1785,7 @@ __export(exports_external, {
1753
1785
  $brand: () => $brand
1754
1786
  });
1755
1787
 
1756
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/index.js
1788
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/index.js
1757
1789
  var exports_core2 = {};
1758
1790
  __export(exports_core2, {
1759
1791
  version: () => version,
@@ -2031,7 +2063,7 @@ __export(exports_core2, {
2031
2063
  $ZodAny: () => $ZodAny
2032
2064
  });
2033
2065
 
2034
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/core.js
2066
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/core.js
2035
2067
  var NEVER = Object.freeze({
2036
2068
  status: "aborted"
2037
2069
  });
@@ -2107,7 +2139,7 @@ function config(newConfig) {
2107
2139
  Object.assign(globalConfig, newConfig);
2108
2140
  return globalConfig;
2109
2141
  }
2110
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/util.js
2142
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/util.js
2111
2143
  var exports_util = {};
2112
2144
  __export(exports_util, {
2113
2145
  unwrapMessage: () => unwrapMessage,
@@ -2781,7 +2813,7 @@ class Class {
2781
2813
  constructor(..._args) {}
2782
2814
  }
2783
2815
 
2784
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/errors.js
2816
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/errors.js
2785
2817
  var initializer = (inst, def) => {
2786
2818
  inst.name = "$ZodError";
2787
2819
  Object.defineProperty(inst, "_zod", {
@@ -2918,7 +2950,7 @@ function prettifyError(error) {
2918
2950
  `);
2919
2951
  }
2920
2952
 
2921
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/parse.js
2953
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/parse.js
2922
2954
  var _parse = (_Err) => (schema, value, _ctx, _params) => {
2923
2955
  const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };
2924
2956
  const result = schema._zod.run({ value, issues: [] }, ctx);
@@ -3005,7 +3037,7 @@ var _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {
3005
3037
  return _safeParseAsync(_Err)(schema, value, _ctx);
3006
3038
  };
3007
3039
  var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync($ZodRealError);
3008
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/regexes.js
3040
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/regexes.js
3009
3041
  var exports_regexes = {};
3010
3042
  __export(exports_regexes, {
3011
3043
  xid: () => xid,
@@ -3162,7 +3194,7 @@ var sha512_hex = /^[0-9a-fA-F]{128}$/;
3162
3194
  var sha512_base64 = /* @__PURE__ */ fixedBase64(86, "==");
3163
3195
  var sha512_base64url = /* @__PURE__ */ fixedBase64url(86);
3164
3196
 
3165
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/checks.js
3197
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/checks.js
3166
3198
  var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => {
3167
3199
  var _a;
3168
3200
  inst._zod ?? (inst._zod = {});
@@ -3709,7 +3741,7 @@ var $ZodCheckOverwrite = /* @__PURE__ */ $constructor("$ZodCheckOverwrite", (ins
3709
3741
  };
3710
3742
  });
3711
3743
 
3712
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/doc.js
3744
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/doc.js
3713
3745
  class Doc {
3714
3746
  constructor(args = []) {
3715
3747
  this.content = [];
@@ -3747,14 +3779,14 @@ class Doc {
3747
3779
  }
3748
3780
  }
3749
3781
 
3750
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/versions.js
3782
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/versions.js
3751
3783
  var version = {
3752
3784
  major: 4,
3753
3785
  minor: 3,
3754
- patch: 5
3786
+ patch: 6
3755
3787
  };
3756
3788
 
3757
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/schemas.js
3789
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/schemas.js
3758
3790
  var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
3759
3791
  var _a;
3760
3792
  inst ?? (inst = {});
@@ -5037,7 +5069,7 @@ var $ZodRecord = /* @__PURE__ */ $constructor("$ZodRecord", (inst, def) => {
5037
5069
  if (keyResult instanceof Promise) {
5038
5070
  throw new Error("Async schemas not supported in object keys currently");
5039
5071
  }
5040
- const checkNumericKey = typeof key === "string" && number.test(key) && keyResult.issues.length && keyResult.issues.some((iss) => iss.code === "invalid_type" && iss.expected === "number");
5072
+ const checkNumericKey = typeof key === "string" && number.test(key) && keyResult.issues.length;
5041
5073
  if (checkNumericKey) {
5042
5074
  const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);
5043
5075
  if (retryResult instanceof Promise) {
@@ -5716,7 +5748,7 @@ function handleRefineResult(result, payload, input, inst) {
5716
5748
  payload.issues.push(issue2(_iss));
5717
5749
  }
5718
5750
  }
5719
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/index.js
5751
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/index.js
5720
5752
  var exports_locales = {};
5721
5753
  __export(exports_locales, {
5722
5754
  zhTW: () => zh_TW_default,
@@ -5770,7 +5802,7 @@ __export(exports_locales, {
5770
5802
  ar: () => ar_default
5771
5803
  });
5772
5804
 
5773
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ar.js
5805
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ar.js
5774
5806
  var error = () => {
5775
5807
  const Sizable = {
5776
5808
  string: { unit: "حرف", verb: "أن يحوي" },
@@ -5876,7 +5908,7 @@ function ar_default() {
5876
5908
  localeError: error()
5877
5909
  };
5878
5910
  }
5879
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/az.js
5911
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/az.js
5880
5912
  var error2 = () => {
5881
5913
  const Sizable = {
5882
5914
  string: { unit: "simvol", verb: "olmalıdır" },
@@ -5981,7 +6013,7 @@ function az_default() {
5981
6013
  localeError: error2()
5982
6014
  };
5983
6015
  }
5984
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/be.js
6016
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/be.js
5985
6017
  function getBelarusianPlural(count, one, few, many) {
5986
6018
  const absCount = Math.abs(count);
5987
6019
  const lastDigit = absCount % 10;
@@ -6137,7 +6169,7 @@ function be_default() {
6137
6169
  localeError: error3()
6138
6170
  };
6139
6171
  }
6140
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/bg.js
6172
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/bg.js
6141
6173
  var error4 = () => {
6142
6174
  const Sizable = {
6143
6175
  string: { unit: "символа", verb: "да съдържа" },
@@ -6257,7 +6289,7 @@ function bg_default() {
6257
6289
  localeError: error4()
6258
6290
  };
6259
6291
  }
6260
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ca.js
6292
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ca.js
6261
6293
  var error5 = () => {
6262
6294
  const Sizable = {
6263
6295
  string: { unit: "caràcters", verb: "contenir" },
@@ -6364,7 +6396,7 @@ function ca_default() {
6364
6396
  localeError: error5()
6365
6397
  };
6366
6398
  }
6367
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/cs.js
6399
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/cs.js
6368
6400
  var error6 = () => {
6369
6401
  const Sizable = {
6370
6402
  string: { unit: "znaků", verb: "mít" },
@@ -6475,7 +6507,7 @@ function cs_default() {
6475
6507
  localeError: error6()
6476
6508
  };
6477
6509
  }
6478
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/da.js
6510
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/da.js
6479
6511
  var error7 = () => {
6480
6512
  const Sizable = {
6481
6513
  string: { unit: "tegn", verb: "havde" },
@@ -6590,7 +6622,7 @@ function da_default() {
6590
6622
  localeError: error7()
6591
6623
  };
6592
6624
  }
6593
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/de.js
6625
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/de.js
6594
6626
  var error8 = () => {
6595
6627
  const Sizable = {
6596
6628
  string: { unit: "Zeichen", verb: "zu haben" },
@@ -6698,7 +6730,7 @@ function de_default() {
6698
6730
  localeError: error8()
6699
6731
  };
6700
6732
  }
6701
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/en.js
6733
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/en.js
6702
6734
  var error9 = () => {
6703
6735
  const Sizable = {
6704
6736
  string: { unit: "characters", verb: "to have" },
@@ -6804,7 +6836,7 @@ function en_default() {
6804
6836
  localeError: error9()
6805
6837
  };
6806
6838
  }
6807
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/eo.js
6839
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/eo.js
6808
6840
  var error10 = () => {
6809
6841
  const Sizable = {
6810
6842
  string: { unit: "karaktrojn", verb: "havi" },
@@ -6913,7 +6945,7 @@ function eo_default() {
6913
6945
  localeError: error10()
6914
6946
  };
6915
6947
  }
6916
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/es.js
6948
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/es.js
6917
6949
  var error11 = () => {
6918
6950
  const Sizable = {
6919
6951
  string: { unit: "caracteres", verb: "tener" },
@@ -7045,7 +7077,7 @@ function es_default() {
7045
7077
  localeError: error11()
7046
7078
  };
7047
7079
  }
7048
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/fa.js
7080
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/fa.js
7049
7081
  var error12 = () => {
7050
7082
  const Sizable = {
7051
7083
  string: { unit: "کاراکتر", verb: "داشته باشد" },
@@ -7159,7 +7191,7 @@ function fa_default() {
7159
7191
  localeError: error12()
7160
7192
  };
7161
7193
  }
7162
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/fi.js
7194
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/fi.js
7163
7195
  var error13 = () => {
7164
7196
  const Sizable = {
7165
7197
  string: { unit: "merkkiä", subject: "merkkijonon" },
@@ -7271,7 +7303,7 @@ function fi_default() {
7271
7303
  localeError: error13()
7272
7304
  };
7273
7305
  }
7274
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/fr.js
7306
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/fr.js
7275
7307
  var error14 = () => {
7276
7308
  const Sizable = {
7277
7309
  string: { unit: "caractères", verb: "avoir" },
@@ -7379,7 +7411,7 @@ function fr_default() {
7379
7411
  localeError: error14()
7380
7412
  };
7381
7413
  }
7382
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/fr-CA.js
7414
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/fr-CA.js
7383
7415
  var error15 = () => {
7384
7416
  const Sizable = {
7385
7417
  string: { unit: "caractères", verb: "avoir" },
@@ -7486,7 +7518,7 @@ function fr_CA_default() {
7486
7518
  localeError: error15()
7487
7519
  };
7488
7520
  }
7489
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/he.js
7521
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/he.js
7490
7522
  var error16 = () => {
7491
7523
  const TypeNames = {
7492
7524
  string: { label: "מחרוזת", gender: "f" },
@@ -7679,7 +7711,7 @@ function he_default() {
7679
7711
  localeError: error16()
7680
7712
  };
7681
7713
  }
7682
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/hu.js
7714
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/hu.js
7683
7715
  var error17 = () => {
7684
7716
  const Sizable = {
7685
7717
  string: { unit: "karakter", verb: "legyen" },
@@ -7787,7 +7819,7 @@ function hu_default() {
7787
7819
  localeError: error17()
7788
7820
  };
7789
7821
  }
7790
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/hy.js
7822
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/hy.js
7791
7823
  function getArmenianPlural(count, one, many) {
7792
7824
  return Math.abs(count) === 1 ? one : many;
7793
7825
  }
@@ -7934,7 +7966,7 @@ function hy_default() {
7934
7966
  localeError: error18()
7935
7967
  };
7936
7968
  }
7937
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/id.js
7969
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/id.js
7938
7970
  var error19 = () => {
7939
7971
  const Sizable = {
7940
7972
  string: { unit: "karakter", verb: "memiliki" },
@@ -8040,7 +8072,7 @@ function id_default() {
8040
8072
  localeError: error19()
8041
8073
  };
8042
8074
  }
8043
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/is.js
8075
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/is.js
8044
8076
  var error20 = () => {
8045
8077
  const Sizable = {
8046
8078
  string: { unit: "stafi", verb: "að hafa" },
@@ -8149,7 +8181,7 @@ function is_default() {
8149
8181
  localeError: error20()
8150
8182
  };
8151
8183
  }
8152
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/it.js
8184
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/it.js
8153
8185
  var error21 = () => {
8154
8186
  const Sizable = {
8155
8187
  string: { unit: "caratteri", verb: "avere" },
@@ -8257,7 +8289,7 @@ function it_default() {
8257
8289
  localeError: error21()
8258
8290
  };
8259
8291
  }
8260
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ja.js
8292
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ja.js
8261
8293
  var error22 = () => {
8262
8294
  const Sizable = {
8263
8295
  string: { unit: "文字", verb: "である" },
@@ -8364,7 +8396,7 @@ function ja_default() {
8364
8396
  localeError: error22()
8365
8397
  };
8366
8398
  }
8367
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ka.js
8399
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ka.js
8368
8400
  var error23 = () => {
8369
8401
  const Sizable = {
8370
8402
  string: { unit: "სიმბოლო", verb: "უნდა შეიცავდეს" },
@@ -8476,7 +8508,7 @@ function ka_default() {
8476
8508
  localeError: error23()
8477
8509
  };
8478
8510
  }
8479
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/km.js
8511
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/km.js
8480
8512
  var error24 = () => {
8481
8513
  const Sizable = {
8482
8514
  string: { unit: "តួអក្សរ", verb: "គួរមាន" },
@@ -8587,11 +8619,11 @@ function km_default() {
8587
8619
  };
8588
8620
  }
8589
8621
 
8590
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/kh.js
8622
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/kh.js
8591
8623
  function kh_default() {
8592
8624
  return km_default();
8593
8625
  }
8594
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ko.js
8626
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ko.js
8595
8627
  var error25 = () => {
8596
8628
  const Sizable = {
8597
8629
  string: { unit: "문자", verb: "to have" },
@@ -8702,7 +8734,7 @@ function ko_default() {
8702
8734
  localeError: error25()
8703
8735
  };
8704
8736
  }
8705
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/lt.js
8737
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/lt.js
8706
8738
  var capitalizeFirstCharacter = (text) => {
8707
8739
  return text.charAt(0).toUpperCase() + text.slice(1);
8708
8740
  };
@@ -8905,7 +8937,7 @@ function lt_default() {
8905
8937
  localeError: error26()
8906
8938
  };
8907
8939
  }
8908
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/mk.js
8940
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/mk.js
8909
8941
  var error27 = () => {
8910
8942
  const Sizable = {
8911
8943
  string: { unit: "знаци", verb: "да имаат" },
@@ -9014,7 +9046,7 @@ function mk_default() {
9014
9046
  localeError: error27()
9015
9047
  };
9016
9048
  }
9017
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ms.js
9049
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ms.js
9018
9050
  var error28 = () => {
9019
9051
  const Sizable = {
9020
9052
  string: { unit: "aksara", verb: "mempunyai" },
@@ -9121,7 +9153,7 @@ function ms_default() {
9121
9153
  localeError: error28()
9122
9154
  };
9123
9155
  }
9124
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/nl.js
9156
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/nl.js
9125
9157
  var error29 = () => {
9126
9158
  const Sizable = {
9127
9159
  string: { unit: "tekens", verb: "heeft" },
@@ -9231,7 +9263,7 @@ function nl_default() {
9231
9263
  localeError: error29()
9232
9264
  };
9233
9265
  }
9234
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/no.js
9266
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/no.js
9235
9267
  var error30 = () => {
9236
9268
  const Sizable = {
9237
9269
  string: { unit: "tegn", verb: "å ha" },
@@ -9339,7 +9371,7 @@ function no_default() {
9339
9371
  localeError: error30()
9340
9372
  };
9341
9373
  }
9342
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ota.js
9374
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ota.js
9343
9375
  var error31 = () => {
9344
9376
  const Sizable = {
9345
9377
  string: { unit: "harf", verb: "olmalıdır" },
@@ -9448,7 +9480,7 @@ function ota_default() {
9448
9480
  localeError: error31()
9449
9481
  };
9450
9482
  }
9451
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ps.js
9483
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ps.js
9452
9484
  var error32 = () => {
9453
9485
  const Sizable = {
9454
9486
  string: { unit: "توکي", verb: "ولري" },
@@ -9562,7 +9594,7 @@ function ps_default() {
9562
9594
  localeError: error32()
9563
9595
  };
9564
9596
  }
9565
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/pl.js
9597
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/pl.js
9566
9598
  var error33 = () => {
9567
9599
  const Sizable = {
9568
9600
  string: { unit: "znaków", verb: "mieć" },
@@ -9671,7 +9703,7 @@ function pl_default() {
9671
9703
  localeError: error33()
9672
9704
  };
9673
9705
  }
9674
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/pt.js
9706
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/pt.js
9675
9707
  var error34 = () => {
9676
9708
  const Sizable = {
9677
9709
  string: { unit: "caracteres", verb: "ter" },
@@ -9779,7 +9811,7 @@ function pt_default() {
9779
9811
  localeError: error34()
9780
9812
  };
9781
9813
  }
9782
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ru.js
9814
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ru.js
9783
9815
  function getRussianPlural(count, one, few, many) {
9784
9816
  const absCount = Math.abs(count);
9785
9817
  const lastDigit = absCount % 10;
@@ -9935,7 +9967,7 @@ function ru_default() {
9935
9967
  localeError: error35()
9936
9968
  };
9937
9969
  }
9938
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/sl.js
9970
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/sl.js
9939
9971
  var error36 = () => {
9940
9972
  const Sizable = {
9941
9973
  string: { unit: "znakov", verb: "imeti" },
@@ -10044,7 +10076,7 @@ function sl_default() {
10044
10076
  localeError: error36()
10045
10077
  };
10046
10078
  }
10047
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/sv.js
10079
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/sv.js
10048
10080
  var error37 = () => {
10049
10081
  const Sizable = {
10050
10082
  string: { unit: "tecken", verb: "att ha" },
@@ -10154,7 +10186,7 @@ function sv_default() {
10154
10186
  localeError: error37()
10155
10187
  };
10156
10188
  }
10157
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ta.js
10189
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ta.js
10158
10190
  var error38 = () => {
10159
10191
  const Sizable = {
10160
10192
  string: { unit: "எழுத்துக்கள்", verb: "கொண்டிருக்க வேண்டும்" },
@@ -10264,7 +10296,7 @@ function ta_default() {
10264
10296
  localeError: error38()
10265
10297
  };
10266
10298
  }
10267
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/th.js
10299
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/th.js
10268
10300
  var error39 = () => {
10269
10301
  const Sizable = {
10270
10302
  string: { unit: "ตัวอักษร", verb: "ควรมี" },
@@ -10374,7 +10406,7 @@ function th_default() {
10374
10406
  localeError: error39()
10375
10407
  };
10376
10408
  }
10377
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/tr.js
10409
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/tr.js
10378
10410
  var error40 = () => {
10379
10411
  const Sizable = {
10380
10412
  string: { unit: "karakter", verb: "olmalı" },
@@ -10479,7 +10511,7 @@ function tr_default() {
10479
10511
  localeError: error40()
10480
10512
  };
10481
10513
  }
10482
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/uk.js
10514
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/uk.js
10483
10515
  var error41 = () => {
10484
10516
  const Sizable = {
10485
10517
  string: { unit: "символів", verb: "матиме" },
@@ -10588,11 +10620,11 @@ function uk_default() {
10588
10620
  };
10589
10621
  }
10590
10622
 
10591
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ua.js
10623
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ua.js
10592
10624
  function ua_default() {
10593
10625
  return uk_default();
10594
10626
  }
10595
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/ur.js
10627
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/ur.js
10596
10628
  var error42 = () => {
10597
10629
  const Sizable = {
10598
10630
  string: { unit: "حروف", verb: "ہونا" },
@@ -10702,7 +10734,7 @@ function ur_default() {
10702
10734
  localeError: error42()
10703
10735
  };
10704
10736
  }
10705
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/uz.js
10737
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/uz.js
10706
10738
  var error43 = () => {
10707
10739
  const Sizable = {
10708
10740
  string: { unit: "belgi", verb: "bo‘lishi kerak" },
@@ -10811,7 +10843,7 @@ function uz_default() {
10811
10843
  localeError: error43()
10812
10844
  };
10813
10845
  }
10814
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/vi.js
10846
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/vi.js
10815
10847
  var error44 = () => {
10816
10848
  const Sizable = {
10817
10849
  string: { unit: "ký tự", verb: "có" },
@@ -10919,7 +10951,7 @@ function vi_default() {
10919
10951
  localeError: error44()
10920
10952
  };
10921
10953
  }
10922
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/zh-CN.js
10954
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/zh-CN.js
10923
10955
  var error45 = () => {
10924
10956
  const Sizable = {
10925
10957
  string: { unit: "字符", verb: "包含" },
@@ -11028,7 +11060,7 @@ function zh_CN_default() {
11028
11060
  localeError: error45()
11029
11061
  };
11030
11062
  }
11031
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/zh-TW.js
11063
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/zh-TW.js
11032
11064
  var error46 = () => {
11033
11065
  const Sizable = {
11034
11066
  string: { unit: "字元", verb: "擁有" },
@@ -11135,7 +11167,7 @@ function zh_TW_default() {
11135
11167
  localeError: error46()
11136
11168
  };
11137
11169
  }
11138
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/locales/yo.js
11170
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/locales/yo.js
11139
11171
  var error47 = () => {
11140
11172
  const Sizable = {
11141
11173
  string: { unit: "àmi", verb: "ní" },
@@ -11242,7 +11274,7 @@ function yo_default() {
11242
11274
  localeError: error47()
11243
11275
  };
11244
11276
  }
11245
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/registries.js
11277
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/registries.js
11246
11278
  var _a;
11247
11279
  var $output = Symbol("ZodOutput");
11248
11280
  var $input = Symbol("ZodInput");
@@ -11292,7 +11324,7 @@ function registry() {
11292
11324
  }
11293
11325
  (_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());
11294
11326
  var globalRegistry = globalThis.__zod_globalRegistry;
11295
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/api.js
11327
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/api.js
11296
11328
  function _string(Class2, params) {
11297
11329
  return new Class2({
11298
11330
  type: "string",
@@ -12212,7 +12244,7 @@ function _stringFormat(Class2, format, fnOrRegex, _params = {}) {
12212
12244
  const inst = new Class2(def);
12213
12245
  return inst;
12214
12246
  }
12215
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/to-json-schema.js
12247
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/to-json-schema.js
12216
12248
  function initializeContext(params) {
12217
12249
  let target = params?.target ?? "draft-2020-12";
12218
12250
  if (target === "draft-4")
@@ -12408,7 +12440,7 @@ function finalize(ctx, schema) {
12408
12440
  }
12409
12441
  }
12410
12442
  }
12411
- if (refSchema.$ref) {
12443
+ if (refSchema.$ref && refSeen.def) {
12412
12444
  for (const key in schema2) {
12413
12445
  if (key === "$ref" || key === "allOf")
12414
12446
  continue;
@@ -12557,7 +12589,7 @@ var createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) =
12557
12589
  extractDefs(ctx, schema);
12558
12590
  return finalize(ctx, schema);
12559
12591
  };
12560
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/json-schema-processors.js
12592
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/json-schema-processors.js
12561
12593
  var formatMap = {
12562
12594
  guid: "uuid",
12563
12595
  url: "uri",
@@ -13102,7 +13134,7 @@ function toJSONSchema(input, params) {
13102
13134
  extractDefs(ctx, input);
13103
13135
  return finalize(ctx, input);
13104
13136
  }
13105
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/json-schema-generator.js
13137
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/json-schema-generator.js
13106
13138
  class JSONSchemaGenerator {
13107
13139
  get metadataRegistry() {
13108
13140
  return this.ctx.metadataRegistry;
@@ -13161,9 +13193,9 @@ class JSONSchemaGenerator {
13161
13193
  return plainResult;
13162
13194
  }
13163
13195
  }
13164
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/core/json-schema.js
13196
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/core/json-schema.js
13165
13197
  var exports_json_schema = {};
13166
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/schemas.js
13198
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/schemas.js
13167
13199
  var exports_schemas2 = {};
13168
13200
  __export(exports_schemas2, {
13169
13201
  xor: () => xor,
@@ -13332,7 +13364,7 @@ __export(exports_schemas2, {
13332
13364
  ZodAny: () => ZodAny
13333
13365
  });
13334
13366
 
13335
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/checks.js
13367
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/checks.js
13336
13368
  var exports_checks2 = {};
13337
13369
  __export(exports_checks2, {
13338
13370
  uppercase: () => _uppercase,
@@ -13366,7 +13398,7 @@ __export(exports_checks2, {
13366
13398
  endsWith: () => _endsWith
13367
13399
  });
13368
13400
 
13369
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/iso.js
13401
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/iso.js
13370
13402
  var exports_iso = {};
13371
13403
  __export(exports_iso, {
13372
13404
  time: () => time2,
@@ -13407,7 +13439,7 @@ function duration2(params) {
13407
13439
  return _isoDuration(ZodISODuration, params);
13408
13440
  }
13409
13441
 
13410
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/errors.js
13442
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/errors.js
13411
13443
  var initializer2 = (inst, issues) => {
13412
13444
  $ZodError.init(inst, issues);
13413
13445
  inst.name = "ZodError";
@@ -13442,7 +13474,7 @@ var ZodRealError = $constructor("ZodError", initializer2, {
13442
13474
  Parent: Error
13443
13475
  });
13444
13476
 
13445
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/parse.js
13477
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/parse.js
13446
13478
  var parse3 = /* @__PURE__ */ _parse(ZodRealError);
13447
13479
  var parseAsync2 = /* @__PURE__ */ _parseAsync(ZodRealError);
13448
13480
  var safeParse2 = /* @__PURE__ */ _safeParse(ZodRealError);
@@ -13456,7 +13488,7 @@ var safeDecode2 = /* @__PURE__ */ _safeDecode(ZodRealError);
13456
13488
  var safeEncodeAsync2 = /* @__PURE__ */ _safeEncodeAsync(ZodRealError);
13457
13489
  var safeDecodeAsync2 = /* @__PURE__ */ _safeDecodeAsync(ZodRealError);
13458
13490
 
13459
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/schemas.js
13491
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/schemas.js
13460
13492
  var ZodType = /* @__PURE__ */ $constructor("ZodType", (inst, def) => {
13461
13493
  $ZodType.init(inst, def);
13462
13494
  Object.assign(inst["~standard"], {
@@ -14532,7 +14564,7 @@ function json(params) {
14532
14564
  function preprocess(fn, schema) {
14533
14565
  return pipe(transform(fn), schema);
14534
14566
  }
14535
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/compat.js
14567
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/compat.js
14536
14568
  var ZodIssueCode = {
14537
14569
  invalid_type: "invalid_type",
14538
14570
  too_big: "too_big",
@@ -14556,7 +14588,7 @@ function getErrorMap() {
14556
14588
  }
14557
14589
  var ZodFirstPartyTypeKind;
14558
14590
  (function(ZodFirstPartyTypeKind2) {})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));
14559
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/from-json-schema.js
14591
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/from-json-schema.js
14560
14592
  var z = {
14561
14593
  ...exports_schemas2,
14562
14594
  ...exports_checks2,
@@ -15017,7 +15049,7 @@ function fromJSONSchema(schema, params) {
15017
15049
  };
15018
15050
  return convertSchema(schema, ctx);
15019
15051
  }
15020
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/coerce.js
15052
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/coerce.js
15021
15053
  var exports_coerce = {};
15022
15054
  __export(exports_coerce, {
15023
15055
  string: () => string3,
@@ -15042,7 +15074,7 @@ function date4(params) {
15042
15074
  return _coercedDate(ZodDate, params);
15043
15075
  }
15044
15076
 
15045
- // ../../../node_modules/.bun/zod@4.3.5/node_modules/zod/v4/classic/external.js
15077
+ // ../../../node_modules/.bun/zod@4.3.6/node_modules/zod/v4/classic/external.js
15046
15078
  config(en_default());
15047
15079
  // ../../types/src/zod/primitives.ts
15048
15080
  var IsoDateTimeRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/;
@@ -15059,7 +15091,7 @@ var TimebackSubject = exports_external.enum([
15059
15091
  "Math",
15060
15092
  "None",
15061
15093
  "Other"
15062
- ]);
15094
+ ]).meta({ id: "TimebackSubject", description: "Subject area" });
15063
15095
  var TimebackGrade = exports_external.union([
15064
15096
  exports_external.literal(-1),
15065
15097
  exports_external.literal(0),
@@ -15076,7 +15108,10 @@ var TimebackGrade = exports_external.union([
15076
15108
  exports_external.literal(11),
15077
15109
  exports_external.literal(12),
15078
15110
  exports_external.literal(13)
15079
- ]);
15111
+ ]).meta({
15112
+ id: "TimebackGrade",
15113
+ description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
15114
+ });
15080
15115
  var ScoreStatus = exports_external.enum([
15081
15116
  "exempt",
15082
15117
  "fully graded",
@@ -15103,6 +15138,47 @@ var OneRosterUserRole = exports_external.enum([
15103
15138
  "teacher"
15104
15139
  ]);
15105
15140
  var EnrollmentRole = exports_external.enum(["administrator", "proctor", "student", "teacher"]);
15141
+ var ResourceType = exports_external.enum([
15142
+ "qti",
15143
+ "text",
15144
+ "audio",
15145
+ "video",
15146
+ "interactive",
15147
+ "visual",
15148
+ "course-material",
15149
+ "assessment-bank"
15150
+ ]);
15151
+ var QtiSubType = exports_external.enum(["qti-test", "qti-question", "qti-stimulus", "qti-test-bank"]);
15152
+ var CourseMaterialSubType = exports_external.enum(["unit", "course", "resource-collection"]);
15153
+ var QuestionType = exports_external.enum([
15154
+ "choice",
15155
+ "order",
15156
+ "associate",
15157
+ "match",
15158
+ "hotspot",
15159
+ "hottext",
15160
+ "select-point",
15161
+ "graphic-order",
15162
+ "graphic-associate",
15163
+ "graphic-gap-match",
15164
+ "text-entry",
15165
+ "extended-text",
15166
+ "inline-choice",
15167
+ "upload",
15168
+ "slider",
15169
+ "drawing",
15170
+ "media",
15171
+ "custom"
15172
+ ]);
15173
+ var Difficulty = exports_external.enum(["easy", "medium", "hard"]);
15174
+ var LearningObjectiveSetSchema = exports_external.array(exports_external.object({
15175
+ source: exports_external.string(),
15176
+ learningObjectiveIds: exports_external.array(exports_external.string())
15177
+ }));
15178
+ var FastFailConfigSchema = exports_external.object({
15179
+ consecutive_failures: exports_external.number().int().min(1).optional(),
15180
+ stagnation_limit: exports_external.number().int().min(1).optional()
15181
+ }).optional();
15106
15182
  var LessonType = exports_external.enum(["powerpath-100", "quiz", "test-out", "placement", "unit-test", "alpha-read-article"]).nullable();
15107
15183
  var IMSErrorResponse = exports_external.object({
15108
15184
  imsx_codeMajor: exports_external.enum(["failure", "success"]),
@@ -15179,7 +15255,11 @@ var ActivityCompletedInput = exports_external.object({
15179
15255
  eventTime: IsoDateTimeString.optional(),
15180
15256
  metricsId: exports_external.string().optional(),
15181
15257
  id: exports_external.string().optional(),
15182
- extensions: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15258
+ extensions: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
15259
+ attempt: exports_external.number().int().min(1).optional(),
15260
+ generatedExtensions: exports_external.object({
15261
+ pctCompleteApp: exports_external.number().optional()
15262
+ }).loose().optional()
15183
15263
  }).strict();
15184
15264
  var TimeSpentInput = exports_external.object({
15185
15265
  actor: TimebackUser,
@@ -15263,51 +15343,122 @@ var CaliperListEventsParams = exports_external.object({
15263
15343
  }).strict();
15264
15344
  // ../../types/src/zod/config.ts
15265
15345
  var CourseIds = exports_external.object({
15266
- staging: exports_external.string().optional(),
15267
- production: exports_external.string().optional()
15268
- });
15269
- var CourseType = exports_external.enum(["base", "hole-filling", "optional"]);
15270
- var PublishStatus = exports_external.enum(["draft", "testing", "published", "deactivated"]);
15346
+ staging: exports_external.string().meta({ description: "Course ID in staging environment" }).optional(),
15347
+ production: exports_external.string().meta({ description: "Course ID in production environment" }).optional()
15348
+ }).meta({ id: "CourseIds", description: "Environment-specific course IDs (populated by sync)" });
15349
+ var CourseType = exports_external.enum(["base", "hole-filling", "optional"]).meta({ id: "CourseType", description: "Course classification type" });
15350
+ var PublishStatus = exports_external.enum(["draft", "testing", "published", "deactivated"]).meta({ id: "PublishStatus", description: "Course publication status" });
15271
15351
  var CourseGoals = exports_external.object({
15272
- dailyXp: exports_external.number().int().positive().optional(),
15273
- dailyLessons: exports_external.number().int().positive().optional(),
15274
- dailyActiveMinutes: exports_external.number().int().positive().optional(),
15275
- dailyAccuracy: exports_external.number().int().min(0).max(100).optional(),
15276
- dailyMasteredUnits: exports_external.number().int().positive().optional()
15277
- });
15352
+ dailyXp: exports_external.number().int().positive().meta({ description: "Target XP to earn per day" }).optional(),
15353
+ dailyLessons: exports_external.number().int().positive().meta({ description: "Target lessons to complete per day" }).optional(),
15354
+ dailyActiveMinutes: exports_external.number().int().positive().meta({ description: "Target active learning minutes per day" }).optional(),
15355
+ dailyAccuracy: exports_external.number().int().min(0).max(100).meta({ description: "Target accuracy percentage (0-100)" }).optional(),
15356
+ dailyMasteredUnits: exports_external.number().int().positive().meta({ description: "Target units to master per day" }).optional()
15357
+ }).meta({ id: "CourseGoals", description: "Daily learning goals for a course" });
15278
15358
  var CourseMetrics = exports_external.object({
15279
- totalXp: exports_external.number().int().positive().optional(),
15280
- totalLessons: exports_external.number().int().positive().optional(),
15281
- totalGrades: exports_external.number().int().positive().optional()
15282
- });
15359
+ totalXp: exports_external.number().int().positive().meta({ description: "Total XP available in the course" }).optional(),
15360
+ totalLessons: exports_external.number().int().positive().meta({ description: "Total number of lessons/activities" }).optional(),
15361
+ totalGrades: exports_external.number().int().positive().meta({ description: "Total grade levels covered" }).optional()
15362
+ }).meta({ id: "CourseMetrics", description: "Aggregate metrics for a course" });
15283
15363
  var CourseMetadata = exports_external.object({
15284
15364
  courseType: CourseType.optional(),
15285
- isSupplemental: exports_external.boolean().optional(),
15286
- isCustom: exports_external.boolean().optional(),
15365
+ isSupplemental: exports_external.boolean().meta({ description: "Whether this is supplemental to a base course" }).optional(),
15366
+ isCustom: exports_external.boolean().meta({ description: "Whether this is a custom course for an individual student" }).optional(),
15287
15367
  publishStatus: PublishStatus.optional(),
15288
- contactEmail: exports_external.email().optional(),
15289
- primaryApp: exports_external.string().optional(),
15368
+ contactEmail: exports_external.email().meta({ description: "Contact email for course issues" }).optional(),
15369
+ primaryApp: exports_external.string().meta({ description: "Primary application identifier" }).optional(),
15290
15370
  goals: CourseGoals.optional(),
15291
15371
  metrics: CourseMetrics.optional()
15292
- });
15372
+ }).meta({ id: "CourseMetadata", description: "Course metadata (matches API metadata object)" });
15293
15373
  var CourseDefaults = exports_external.object({
15294
- courseCode: exports_external.string().optional(),
15295
- level: exports_external.string().optional(),
15374
+ courseCode: exports_external.string().meta({ description: "Course code (e.g., 'MATH101')" }).optional(),
15375
+ level: exports_external.string().meta({ description: "Course level (e.g., 'AP', 'Honors')" }).optional(),
15376
+ metadata: CourseMetadata.optional()
15377
+ }).meta({
15378
+ id: "CourseDefaults",
15379
+ description: "Default properties that apply to all courses unless overridden"
15380
+ });
15381
+ var CourseEnvOverrides = exports_external.object({
15382
+ level: exports_external.string().meta({ description: "Course level for this environment" }).optional(),
15383
+ sensor: exports_external.url().meta({ description: "Caliper sensor endpoint URL for this environment" }).optional(),
15384
+ launchUrl: exports_external.url().meta({ description: "LTI launch URL for this environment" }).optional(),
15296
15385
  metadata: CourseMetadata.optional()
15386
+ }).meta({
15387
+ id: "CourseEnvOverrides",
15388
+ description: "Environment-specific course overrides (non-identity fields)"
15297
15389
  });
15390
+ var CourseOverrides = exports_external.object({
15391
+ staging: CourseEnvOverrides.meta({
15392
+ description: "Overrides for staging environment"
15393
+ }).optional(),
15394
+ production: CourseEnvOverrides.meta({
15395
+ description: "Overrides for production environment"
15396
+ }).optional()
15397
+ }).meta({ id: "CourseOverrides", description: "Per-environment course overrides" });
15298
15398
  var CourseConfig = CourseDefaults.extend({
15299
- subject: TimebackSubject,
15300
- grade: TimebackGrade,
15301
- ids: CourseIds.nullable().optional()
15399
+ subject: TimebackSubject.meta({ description: "Subject area for this course" }),
15400
+ grade: TimebackGrade.meta({
15401
+ description: "Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"
15402
+ }).optional(),
15403
+ ids: CourseIds.nullable().optional(),
15404
+ sensor: exports_external.url().meta({ description: "Caliper sensor endpoint URL for this course" }).optional(),
15405
+ launchUrl: exports_external.url().meta({ description: "LTI launch URL for this course" }).optional(),
15406
+ overrides: CourseOverrides.optional()
15407
+ }).meta({
15408
+ id: "CourseConfig",
15409
+ description: "Configuration for a single course. Must have either grade or courseCode (or both)."
15302
15410
  });
15303
15411
  var TimebackConfig = exports_external.object({
15304
- name: exports_external.string().min(1, "App name is required"),
15305
- defaults: CourseDefaults.optional(),
15306
- courses: exports_external.array(CourseConfig).min(1, "At least one course is required"),
15307
- sensors: exports_external.array(exports_external.string().url()).optional()
15412
+ $schema: exports_external.string().meta({ description: "JSON Schema reference for editor support" }).optional(),
15413
+ name: exports_external.string().min(1, "App name is required").meta({ description: "Display name for your app" }),
15414
+ defaults: CourseDefaults.meta({
15415
+ description: "Default properties applied to all courses"
15416
+ }).optional(),
15417
+ courses: exports_external.array(CourseConfig).min(1, "At least one course is required").meta({ description: "Courses available in this app" }),
15418
+ sensor: exports_external.url().meta({ description: "Default Caliper sensor endpoint URL for all courses" }).optional(),
15419
+ launchUrl: exports_external.url().meta({ description: "Default LTI launch URL for all courses" }).optional()
15420
+ }).meta({
15421
+ id: "TimebackConfig",
15422
+ title: "Timeback Config",
15423
+ description: "Configuration schema for timeback.config.json files"
15424
+ }).refine((config2) => {
15425
+ return config2.courses.every((c) => c.grade !== undefined || c.courseCode !== undefined);
15426
+ }, {
15427
+ message: "Each course must have either a grade or a courseCode",
15428
+ path: ["courses"]
15429
+ }).refine((config2) => {
15430
+ const withGrade = config2.courses.filter((c) => c.grade !== undefined);
15431
+ const keys = withGrade.map((c) => `${c.subject}:${c.grade}`);
15432
+ return new Set(keys).size === keys.length;
15433
+ }, {
15434
+ message: "Duplicate (subject, grade) pair found; each must be unique",
15435
+ path: ["courses"]
15436
+ }).refine((config2) => {
15437
+ const withCode = config2.courses.filter((c) => c.courseCode !== undefined);
15438
+ const codes = withCode.map((c) => c.courseCode);
15439
+ return new Set(codes).size === codes.length;
15440
+ }, {
15441
+ message: "Duplicate courseCode found; each must be unique",
15442
+ path: ["courses"]
15443
+ }).refine((config2) => {
15444
+ return config2.courses.every((c) => {
15445
+ if (c.sensor !== undefined || config2.sensor !== undefined) {
15446
+ return true;
15447
+ }
15448
+ const launchUrls = [
15449
+ c.launchUrl,
15450
+ config2.launchUrl,
15451
+ c.overrides?.staging?.launchUrl,
15452
+ c.overrides?.production?.launchUrl
15453
+ ].filter(Boolean);
15454
+ return launchUrls.length > 0;
15455
+ });
15456
+ }, {
15457
+ 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.",
15458
+ path: ["courses"]
15308
15459
  });
15309
15460
  // ../../types/src/zod/edubridge.ts
15310
- var EdubridgeDateString = exports_external.union([IsoDateString, IsoDateTimeString]);
15461
+ var EdubridgeDateString = IsoDateTimeString;
15311
15462
  var EduBridgeEnrollment = exports_external.object({
15312
15463
  id: exports_external.string(),
15313
15464
  role: exports_external.string(),
@@ -15371,12 +15522,9 @@ var EmailOrStudentId = exports_external.object({
15371
15522
  });
15372
15523
  var SubjectTrackInput = exports_external.object({
15373
15524
  subject: NonEmptyString,
15374
- gradeLevel: NonEmptyString,
15375
- targetCourseId: NonEmptyString,
15376
- metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15377
- });
15378
- var SubjectTrackUpsertInput = SubjectTrackInput.extend({
15379
- id: NonEmptyString
15525
+ grade: NonEmptyString,
15526
+ courseId: NonEmptyString,
15527
+ orgSourcedId: NonEmptyString.optional()
15380
15528
  });
15381
15529
  var EdubridgeListEnrollmentsParams = exports_external.object({
15382
15530
  userId: NonEmptyString
@@ -15555,20 +15703,45 @@ var OneRosterScoreScaleCreateInput = exports_external.object({
15555
15703
  }).strict();
15556
15704
  var OneRosterAssessmentLineItemCreateInput = exports_external.object({
15557
15705
  sourcedId: NonEmptyString2.optional(),
15706
+ status: Status.optional(),
15707
+ dateLastModified: IsoDateTimeString.optional(),
15558
15708
  title: NonEmptyString2.describe("title must be a non-empty string"),
15559
- class: Ref,
15560
- school: Ref,
15561
- category: Ref,
15562
- assignDate: OneRosterDateString,
15563
- dueDate: OneRosterDateString,
15564
- status: Status,
15709
+ description: exports_external.string().nullable().optional(),
15710
+ class: Ref.nullable().optional(),
15711
+ parentAssessmentLineItem: Ref.nullable().optional(),
15712
+ scoreScale: Ref.nullable().optional(),
15713
+ resultValueMin: exports_external.number().nullable().optional(),
15714
+ resultValueMax: exports_external.number().nullable().optional(),
15715
+ component: Ref.nullable().optional(),
15716
+ componentResource: Ref.nullable().optional(),
15717
+ learningObjectiveSet: exports_external.array(exports_external.object({
15718
+ source: exports_external.string(),
15719
+ learningObjectiveIds: exports_external.array(exports_external.string())
15720
+ })).optional().nullable(),
15721
+ course: Ref.nullable().optional(),
15565
15722
  metadata: Metadata
15566
15723
  }).strict();
15724
+ var LearningObjectiveResult = exports_external.object({
15725
+ learningObjectiveId: exports_external.string(),
15726
+ score: exports_external.number().optional(),
15727
+ textScore: exports_external.string().optional()
15728
+ });
15729
+ var LearningObjectiveScoreSetSchema = exports_external.array(exports_external.object({
15730
+ source: exports_external.string(),
15731
+ learningObjectiveResults: exports_external.array(LearningObjectiveResult)
15732
+ }));
15567
15733
  var OneRosterAssessmentResultCreateInput = exports_external.object({
15568
15734
  sourcedId: NonEmptyString2.optional(),
15569
- lineItem: Ref,
15735
+ status: Status.optional(),
15736
+ dateLastModified: IsoDateTimeString.optional(),
15737
+ metadata: Metadata,
15738
+ assessmentLineItem: Ref,
15570
15739
  student: Ref,
15571
- scoreDate: OneRosterDateString,
15740
+ score: exports_external.number().nullable().optional(),
15741
+ textScore: exports_external.string().nullable().optional(),
15742
+ scoreDate: exports_external.string().datetime(),
15743
+ scoreScale: Ref.nullable().optional(),
15744
+ scorePercentile: exports_external.number().nullable().optional(),
15572
15745
  scoreStatus: exports_external.enum([
15573
15746
  "exempt",
15574
15747
  "fully graded",
@@ -15576,9 +15749,12 @@ var OneRosterAssessmentResultCreateInput = exports_external.object({
15576
15749
  "partially graded",
15577
15750
  "submitted"
15578
15751
  ]),
15579
- score: exports_external.string().optional(),
15580
- status: Status,
15581
- metadata: Metadata
15752
+ comment: exports_external.string().nullable().optional(),
15753
+ learningObjectiveSet: LearningObjectiveScoreSetSchema.nullable().optional(),
15754
+ inProgress: exports_external.string().nullable().optional(),
15755
+ incomplete: exports_external.string().nullable().optional(),
15756
+ late: exports_external.string().nullable().optional(),
15757
+ missing: exports_external.string().nullable().optional()
15582
15758
  }).strict();
15583
15759
  var OneRosterOrgCreateInput = exports_external.object({
15584
15760
  sourcedId: NonEmptyString2.optional(),
@@ -15646,6 +15822,75 @@ var OneRosterCredentialInput = exports_external.object({
15646
15822
  var OneRosterDemographicsCreateInput = exports_external.object({
15647
15823
  sourcedId: NonEmptyString2.describe("sourcedId must be a non-empty string")
15648
15824
  }).loose();
15825
+ var CommonResourceMetadataSchema = exports_external.object({
15826
+ type: ResourceType,
15827
+ subject: TimebackSubject.nullish(),
15828
+ grades: exports_external.array(TimebackGrade).nullish(),
15829
+ language: exports_external.string().nullish(),
15830
+ xp: exports_external.number().nullish(),
15831
+ url: exports_external.url().nullish(),
15832
+ keywords: exports_external.array(exports_external.string()).nullish(),
15833
+ learningObjectiveSet: LearningObjectiveSetSchema.nullish(),
15834
+ lessonType: exports_external.string().nullish()
15835
+ }).passthrough();
15836
+ var QtiMetadataSchema = CommonResourceMetadataSchema.extend({
15837
+ type: exports_external.literal("qti"),
15838
+ subType: QtiSubType,
15839
+ questionType: QuestionType.optional(),
15840
+ difficulty: Difficulty.optional()
15841
+ });
15842
+ var TextMetadataSchema = CommonResourceMetadataSchema.extend({
15843
+ type: exports_external.literal("text"),
15844
+ format: exports_external.string(),
15845
+ author: exports_external.string().optional(),
15846
+ pageCount: exports_external.number().optional()
15847
+ });
15848
+ var AudioMetadataSchema = CommonResourceMetadataSchema.extend({
15849
+ type: exports_external.literal("audio"),
15850
+ duration: exports_external.string().regex(/^\d{2}:\d{2}:\d{2}(\.\d{2})?$/).optional(),
15851
+ format: exports_external.string(),
15852
+ speaker: exports_external.string().optional()
15853
+ });
15854
+ var VideoMetadataSchema = CommonResourceMetadataSchema.extend({
15855
+ type: exports_external.literal("video"),
15856
+ duration: exports_external.string().regex(/^\d{2}:\d{2}:\d{2}(\.\d{2})?$/).optional(),
15857
+ captionsAvailable: exports_external.boolean().optional(),
15858
+ format: exports_external.string()
15859
+ });
15860
+ var InteractiveMetadataSchema = CommonResourceMetadataSchema.extend({
15861
+ type: exports_external.literal("interactive"),
15862
+ launchUrl: exports_external.url().optional(),
15863
+ toolProvider: exports_external.string().optional(),
15864
+ instructionalMethod: exports_external.string().optional(),
15865
+ courseIdOnFail: exports_external.string().nullable().optional(),
15866
+ fail_fast: FastFailConfigSchema
15867
+ });
15868
+ var VisualMetadataSchema = CommonResourceMetadataSchema.extend({
15869
+ type: exports_external.literal("visual"),
15870
+ format: exports_external.string(),
15871
+ resolution: exports_external.string().optional()
15872
+ });
15873
+ var CourseMaterialMetadataSchema = CommonResourceMetadataSchema.extend({
15874
+ type: exports_external.literal("course-material"),
15875
+ subType: CourseMaterialSubType,
15876
+ author: exports_external.string().optional(),
15877
+ format: exports_external.string(),
15878
+ instructionalMethod: exports_external.string().optional()
15879
+ });
15880
+ var AssessmentBankMetadataSchema = CommonResourceMetadataSchema.extend({
15881
+ type: exports_external.literal("assessment-bank"),
15882
+ resources: exports_external.array(exports_external.string())
15883
+ });
15884
+ var ResourceMetadataSchema = exports_external.discriminatedUnion("type", [
15885
+ QtiMetadataSchema,
15886
+ TextMetadataSchema,
15887
+ AudioMetadataSchema,
15888
+ VideoMetadataSchema,
15889
+ InteractiveMetadataSchema,
15890
+ VisualMetadataSchema,
15891
+ CourseMaterialMetadataSchema,
15892
+ AssessmentBankMetadataSchema
15893
+ ]);
15649
15894
  var OneRosterResourceCreateInput = exports_external.object({
15650
15895
  sourcedId: NonEmptyString2.optional(),
15651
15896
  title: NonEmptyString2.describe("title must be a non-empty string"),
@@ -15655,7 +15900,7 @@ var OneRosterResourceCreateInput = exports_external.object({
15655
15900
  vendorId: exports_external.string().optional(),
15656
15901
  applicationId: exports_external.string().optional(),
15657
15902
  status: Status.optional(),
15658
- metadata: Metadata
15903
+ metadata: ResourceMetadataSchema.nullable().optional()
15659
15904
  }).strict();
15660
15905
  var CourseStructureItem = exports_external.object({
15661
15906
  url: NonEmptyString2.describe("courseStructure.url must be a non-empty string"),
@@ -15680,6 +15925,268 @@ var OneRosterBulkResultItem = exports_external.object({
15680
15925
  student: Ref
15681
15926
  }).loose();
15682
15927
  var OneRosterBulkResultsInput = exports_external.array(OneRosterBulkResultItem).min(1, "results must have at least one item");
15928
+ // ../../types/src/zod/powerpath.ts
15929
+ var NonEmptyString3 = exports_external.string().trim().min(1);
15930
+ var ToolProvider = exports_external.enum(["edulastic", "mastery-track"]);
15931
+ var LessonTypeRequired = exports_external.enum([
15932
+ "powerpath-100",
15933
+ "quiz",
15934
+ "test-out",
15935
+ "placement",
15936
+ "unit-test",
15937
+ "alpha-read-article"
15938
+ ]);
15939
+ var GradeArray = exports_external.array(TimebackGrade);
15940
+ var ResourceMetadata = exports_external.record(exports_external.string(), exports_external.unknown()).optional();
15941
+ var ExternalTestBase = exports_external.object({
15942
+ courseId: NonEmptyString3,
15943
+ lessonTitle: NonEmptyString3.optional(),
15944
+ launchUrl: exports_external.url().optional(),
15945
+ toolProvider: ToolProvider,
15946
+ unitTitle: NonEmptyString3.optional(),
15947
+ courseComponentSourcedId: NonEmptyString3.optional(),
15948
+ vendorId: NonEmptyString3.optional(),
15949
+ description: NonEmptyString3.optional(),
15950
+ resourceMetadata: ResourceMetadata.nullable().optional(),
15951
+ grades: GradeArray
15952
+ });
15953
+ var ExternalTestOut = ExternalTestBase.extend({
15954
+ lessonType: exports_external.literal("test-out"),
15955
+ xp: exports_external.number()
15956
+ });
15957
+ var ExternalPlacement = ExternalTestBase.extend({
15958
+ lessonType: exports_external.literal("placement"),
15959
+ courseIdOnFail: NonEmptyString3.optional(),
15960
+ xp: exports_external.number().optional()
15961
+ });
15962
+ var InternalTestBase = exports_external.object({
15963
+ courseId: NonEmptyString3,
15964
+ lessonType: LessonTypeRequired,
15965
+ lessonTitle: NonEmptyString3.optional(),
15966
+ unitTitle: NonEmptyString3.optional(),
15967
+ courseComponentSourcedId: NonEmptyString3.optional(),
15968
+ resourceMetadata: ResourceMetadata.nullable().optional(),
15969
+ xp: exports_external.number().optional(),
15970
+ grades: GradeArray.optional(),
15971
+ courseIdOnFail: NonEmptyString3.optional()
15972
+ });
15973
+ var PowerPathCreateInternalTestInput = exports_external.union([
15974
+ InternalTestBase.extend({
15975
+ testType: exports_external.literal("qti"),
15976
+ qti: exports_external.object({
15977
+ url: exports_external.url(),
15978
+ title: NonEmptyString3.optional(),
15979
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15980
+ })
15981
+ }),
15982
+ InternalTestBase.extend({
15983
+ testType: exports_external.literal("assessment-bank"),
15984
+ assessmentBank: exports_external.object({
15985
+ resources: exports_external.array(exports_external.object({
15986
+ url: exports_external.url(),
15987
+ title: NonEmptyString3.optional(),
15988
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15989
+ }))
15990
+ })
15991
+ })
15992
+ ]);
15993
+ var PowerPathCreateNewAttemptInput = exports_external.object({
15994
+ student: NonEmptyString3,
15995
+ lesson: NonEmptyString3
15996
+ });
15997
+ var PowerPathFinalStudentAssessmentResponseInput = exports_external.object({
15998
+ student: NonEmptyString3,
15999
+ lesson: NonEmptyString3
16000
+ });
16001
+ var PowerPathLessonPlansCreateInput = exports_external.object({
16002
+ courseId: NonEmptyString3,
16003
+ userId: NonEmptyString3,
16004
+ classId: NonEmptyString3.optional()
16005
+ });
16006
+ var LessonPlanTarget = exports_external.object({
16007
+ type: exports_external.enum(["component", "resource"]),
16008
+ id: NonEmptyString3
16009
+ });
16010
+ var PowerPathLessonPlanOperationInput = exports_external.union([
16011
+ exports_external.object({
16012
+ type: exports_external.literal("set-skipped"),
16013
+ payload: exports_external.object({
16014
+ target: LessonPlanTarget,
16015
+ value: exports_external.boolean()
16016
+ })
16017
+ }),
16018
+ exports_external.object({
16019
+ type: exports_external.literal("add-custom-resource"),
16020
+ payload: exports_external.object({
16021
+ resource_id: NonEmptyString3,
16022
+ parent_component_id: NonEmptyString3,
16023
+ skipped: exports_external.boolean().optional()
16024
+ })
16025
+ }),
16026
+ exports_external.object({
16027
+ type: exports_external.literal("move-item-before"),
16028
+ payload: exports_external.object({
16029
+ target: LessonPlanTarget,
16030
+ reference_id: NonEmptyString3
16031
+ })
16032
+ }),
16033
+ exports_external.object({
16034
+ type: exports_external.literal("move-item-after"),
16035
+ payload: exports_external.object({
16036
+ target: LessonPlanTarget,
16037
+ reference_id: NonEmptyString3
16038
+ })
16039
+ }),
16040
+ exports_external.object({
16041
+ type: exports_external.literal("move-item-to-start"),
16042
+ payload: exports_external.object({
16043
+ target: LessonPlanTarget
16044
+ })
16045
+ }),
16046
+ exports_external.object({
16047
+ type: exports_external.literal("move-item-to-end"),
16048
+ payload: exports_external.object({
16049
+ target: LessonPlanTarget
16050
+ })
16051
+ }),
16052
+ exports_external.object({
16053
+ type: exports_external.literal("change-item-parent"),
16054
+ payload: exports_external.object({
16055
+ target: LessonPlanTarget,
16056
+ new_parent_id: NonEmptyString3,
16057
+ position: exports_external.enum(["start", "end"]).optional()
16058
+ })
16059
+ })
16060
+ ]);
16061
+ var PowerPathLessonPlanOperationsInput = exports_external.object({
16062
+ operation: exports_external.array(PowerPathLessonPlanOperationInput),
16063
+ reason: NonEmptyString3.optional()
16064
+ });
16065
+ var PowerPathLessonPlanUpdateStudentItemResponseInput = exports_external.object({
16066
+ studentId: NonEmptyString3,
16067
+ componentResourceId: NonEmptyString3,
16068
+ result: exports_external.object({
16069
+ status: exports_external.enum(["active", "tobedeleted"]),
16070
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
16071
+ score: exports_external.number().optional(),
16072
+ textScore: NonEmptyString3.optional(),
16073
+ scoreDate: NonEmptyString3,
16074
+ scorePercentile: exports_external.number().optional(),
16075
+ scoreStatus: ScoreStatus,
16076
+ comment: NonEmptyString3.optional(),
16077
+ learningObjectiveSet: exports_external.array(exports_external.object({
16078
+ source: NonEmptyString3,
16079
+ learningObjectiveResults: exports_external.array(exports_external.object({
16080
+ learningObjectiveId: NonEmptyString3,
16081
+ score: exports_external.number().optional(),
16082
+ textScore: NonEmptyString3.optional()
16083
+ }))
16084
+ })).optional(),
16085
+ inProgress: NonEmptyString3.optional(),
16086
+ incomplete: NonEmptyString3.optional(),
16087
+ late: NonEmptyString3.optional(),
16088
+ missing: NonEmptyString3.optional()
16089
+ })
16090
+ });
16091
+ var PowerPathMakeExternalTestAssignmentInput = exports_external.object({
16092
+ student: NonEmptyString3,
16093
+ lesson: NonEmptyString3,
16094
+ applicationName: NonEmptyString3.optional(),
16095
+ testId: NonEmptyString3.optional(),
16096
+ skipCourseEnrollment: exports_external.boolean().optional()
16097
+ });
16098
+ var PowerPathPlacementResetUserPlacementInput = exports_external.object({
16099
+ student: NonEmptyString3,
16100
+ subject: TimebackSubject
16101
+ });
16102
+ var PowerPathResetAttemptInput = exports_external.object({
16103
+ student: NonEmptyString3,
16104
+ lesson: NonEmptyString3
16105
+ });
16106
+ var PowerPathScreeningResetSessionInput = exports_external.object({
16107
+ userId: NonEmptyString3
16108
+ });
16109
+ var PowerPathScreeningAssignTestInput = exports_external.object({
16110
+ userId: NonEmptyString3,
16111
+ subject: exports_external.enum(["Math", "Reading", "Language", "Science"])
16112
+ });
16113
+ var PowerPathTestAssignmentsCreateInput = exports_external.object({
16114
+ student: NonEmptyString3,
16115
+ subject: TimebackSubject,
16116
+ grade: TimebackGrade,
16117
+ testName: NonEmptyString3.optional()
16118
+ });
16119
+ var PowerPathTestAssignmentsUpdateInput = exports_external.object({
16120
+ testName: NonEmptyString3
16121
+ });
16122
+ var PowerPathTestAssignmentItemInput = exports_external.object({
16123
+ student: NonEmptyString3,
16124
+ subject: TimebackSubject,
16125
+ grade: TimebackGrade,
16126
+ testName: NonEmptyString3.optional()
16127
+ });
16128
+ var PowerPathTestAssignmentsBulkInput = exports_external.object({
16129
+ items: exports_external.array(PowerPathTestAssignmentItemInput)
16130
+ });
16131
+ var PowerPathTestAssignmentsImportInput = exports_external.object({
16132
+ spreadsheetUrl: exports_external.url(),
16133
+ sheet: NonEmptyString3
16134
+ });
16135
+ var PowerPathTestAssignmentsListParams = exports_external.object({
16136
+ student: NonEmptyString3,
16137
+ status: exports_external.enum(["assigned", "in_progress", "completed", "failed", "expired", "cancelled"]).optional(),
16138
+ subject: NonEmptyString3.optional(),
16139
+ grade: TimebackGrade.optional(),
16140
+ limit: exports_external.number().int().positive().max(3000).optional(),
16141
+ offset: exports_external.number().int().nonnegative().optional()
16142
+ });
16143
+ var PowerPathTestAssignmentsAdminParams = exports_external.object({
16144
+ student: NonEmptyString3.optional(),
16145
+ status: exports_external.enum(["assigned", "in_progress", "completed", "failed", "expired", "cancelled"]).optional(),
16146
+ subject: NonEmptyString3.optional(),
16147
+ grade: TimebackGrade.optional(),
16148
+ limit: exports_external.number().int().positive().max(3000).optional(),
16149
+ offset: exports_external.number().int().nonnegative().optional()
16150
+ });
16151
+ var PowerPathUpdateStudentQuestionResponseInput = exports_external.object({
16152
+ student: NonEmptyString3,
16153
+ question: NonEmptyString3,
16154
+ response: exports_external.union([NonEmptyString3, exports_external.array(NonEmptyString3)]).optional(),
16155
+ responses: exports_external.record(exports_external.string(), exports_external.union([NonEmptyString3, exports_external.array(NonEmptyString3)])).optional(),
16156
+ lesson: NonEmptyString3
16157
+ });
16158
+ var PowerPathGetAssessmentProgressParams = exports_external.object({
16159
+ student: NonEmptyString3,
16160
+ lesson: NonEmptyString3,
16161
+ attempt: exports_external.number().int().positive().optional()
16162
+ });
16163
+ var PowerPathGetNextQuestionParams = exports_external.object({
16164
+ student: NonEmptyString3,
16165
+ lesson: NonEmptyString3
16166
+ });
16167
+ var PowerPathGetAttemptsParams = exports_external.object({
16168
+ student: NonEmptyString3,
16169
+ lesson: NonEmptyString3
16170
+ });
16171
+ var PowerPathTestOutParams = exports_external.object({
16172
+ student: NonEmptyString3,
16173
+ lesson: NonEmptyString3.optional(),
16174
+ finalized: exports_external.boolean().optional(),
16175
+ toolProvider: NonEmptyString3.optional(),
16176
+ attempt: exports_external.number().int().positive().optional()
16177
+ });
16178
+ var PowerPathImportExternalTestAssignmentResultsParams = exports_external.object({
16179
+ student: NonEmptyString3,
16180
+ lesson: NonEmptyString3,
16181
+ applicationName: NonEmptyString3.optional()
16182
+ });
16183
+ var PowerPathPlacementQueryParams = exports_external.object({
16184
+ student: NonEmptyString3,
16185
+ subject: TimebackSubject
16186
+ });
16187
+ var PowerPathSyllabusQueryParams = exports_external.object({
16188
+ status: exports_external.enum(["active", "tobedeleted"]).optional()
16189
+ });
15683
16190
  // ../../types/src/zod/qti.ts
15684
16191
  var QtiAssessmentItemType = exports_external.enum([
15685
16192
  "choice",
@@ -15946,7 +16453,9 @@ function createActivityEvent(input) {
15946
16453
  generated: {
15947
16454
  id: metricsId,
15948
16455
  type: "TimebackActivityMetricsCollection",
15949
- items: input.metrics
16456
+ items: input.metrics,
16457
+ ...input.attempt === undefined ? {} : { attempt: input.attempt },
16458
+ ...input.generatedExtensions ? { extensions: input.generatedExtensions } : {}
15950
16459
  },
15951
16460
  extensions: input.extensions
15952
16461
  };