@tostudy-ai/cli 0.18.1 → 0.18.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -40,7 +40,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
40
40
  mod
41
41
  ));
42
42
 
43
- // ../../node_modules/@parisgroup-ai/logger/dist/sanitize-Cu_Xsxno.mjs
43
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/@parisgroup-ai/logger/dist/sanitize-Cu_Xsxno.mjs
44
44
  function isSensitiveKey(key) {
45
45
  if (matchesSensitiveField(key)) return true;
46
46
  return matchesPluralOfSensitiveField(key);
@@ -149,7 +149,7 @@ function sanitizeEntryData(obj, additionalSensitiveKeys, includeStack, redactMas
149
149
  }
150
150
  var SENSITIVE_FIELDS;
151
151
  var init_sanitize_Cu_Xsxno = __esm({
152
- "../../node_modules/@parisgroup-ai/logger/dist/sanitize-Cu_Xsxno.mjs"() {
152
+ "../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/@parisgroup-ai/logger/dist/sanitize-Cu_Xsxno.mjs"() {
153
153
  SENSITIVE_FIELDS = [
154
154
  "password",
155
155
  "senha",
@@ -208,9 +208,9 @@ var init_sanitize_Cu_Xsxno = __esm({
208
208
  }
209
209
  });
210
210
 
211
- // ../../node_modules/picocolors/picocolors.js
211
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/picocolors/picocolors.js
212
212
  var require_picocolors = __commonJS({
213
- "../../node_modules/picocolors/picocolors.js"(exports, module) {
213
+ "../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/picocolors/picocolors.js"(exports, module) {
214
214
  var p = process || {};
215
215
  var argv = p.argv || [];
216
216
  var env = p.env || {};
@@ -280,7 +280,7 @@ var require_picocolors = __commonJS({
280
280
  }
281
281
  });
282
282
 
283
- // ../../node_modules/@parisgroup-ai/logger/dist/logger.base-DkCKo9Cu.mjs
283
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/@parisgroup-ai/logger/dist/logger.base-DkCKo9Cu.mjs
284
284
  function formatJson(entry) {
285
285
  const { timestamp, level, message, service, environment, context, data, error: error49 } = entry;
286
286
  const output3 = {
@@ -385,7 +385,7 @@ function extractErrorInfo(error49, includeStack, visited = /* @__PURE__ */ new W
385
385
  }
386
386
  var import_picocolors, LOG_LEVELS, LEVEL_COLORS, LEVEL_WIDTH, BaseLogger;
387
387
  var init_logger_base_DkCKo9Cu = __esm({
388
- "../../node_modules/@parisgroup-ai/logger/dist/logger.base-DkCKo9Cu.mjs"() {
388
+ "../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/@parisgroup-ai/logger/dist/logger.base-DkCKo9Cu.mjs"() {
389
389
  init_sanitize_Cu_Xsxno();
390
390
  import_picocolors = __toESM(require_picocolors(), 1);
391
391
  LOG_LEVELS = {
@@ -593,7 +593,7 @@ var init_logger_base_DkCKo9Cu = __esm({
593
593
  }
594
594
  });
595
595
 
596
- // ../../node_modules/@parisgroup-ai/logger/dist/index.mjs
596
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/@parisgroup-ai/logger/dist/index.mjs
597
597
  import { AsyncLocalStorage } from "node:async_hooks";
598
598
  import { appendFileSync, existsSync, mkdirSync, writeFileSync } from "node:fs";
599
599
  import { join } from "node:path";
@@ -706,7 +706,7 @@ function createLogger(module, options) {
706
706
  }
707
707
  var asyncLocalStorage, ConsoleTransport, FileTransport, HttpTransport, SINGLETON_KEY$1, SEVERITY, OtlpLogsTransport, SINGLETON_KEY, Logger, logger;
708
708
  var init_dist = __esm({
709
- "../../node_modules/@parisgroup-ai/logger/dist/index.mjs"() {
709
+ "../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/@parisgroup-ai/logger/dist/index.mjs"() {
710
710
  init_logger_base_DkCKo9Cu();
711
711
  init_sanitize_Cu_Xsxno();
712
712
  asyncLocalStorage = new AsyncLocalStorage();
@@ -1020,6 +1020,7 @@ var init_errors_pt_br = __esm({
1020
1020
  workspaceRefusedAtHome: "N\xE3o d\xE1 para configurar o estudo direto na sua pasta pessoal.\nCrie uma pasta para o curso e entre nela antes de continuar:\n\n mkdir ~/meus-cursos && cd ~/meus-cursos\n",
1021
1021
  courseArchived: "Este curso foi arquivado e est\xE1 dispon\xEDvel somente para leitura.\nUse `tostudy lesson` para revisar o conte\xFAdo j\xE1 estudado.\n",
1022
1022
  noActiveCourse: "Nenhum curso ativo nesta pasta.\nVeja seus cursos com `tostudy courses` e ative um com `tostudy select <n>`.\n",
1023
+ studyWorkspaceHint: "Dica: rode `tostudy select` desta pasta para us\xE1-la como workspace, ou `tostudy workspace setup` para criar em ~/study/. Depois rode `tostudy export` para gravar o exerc\xEDcio e os crit\xE9rios de valida\xE7\xE3o.\n",
1023
1024
  enrollmentNotEntitled: "\u{1F6AB} Sua matr\xEDcula neste curso n\xE3o est\xE1 mais ativa (reembolso, cancelamento ou preview expirado).\nPara voltar a estudar, adquira o curso novamente em https://tostudy.ai.\n",
1024
1025
  creator: {
1025
1026
  loginBrowserOnly: "`--creator` s\xF3 funciona no login pelo browser. Rode `tostudy login --creator` sem --code, --magic-link ou --manual.",
@@ -1113,6 +1114,7 @@ var init_errors_en_us = __esm({
1113
1114
  workspaceRefusedAtHome: "Study can't be set up directly in your home folder.\nCreate a folder for the course and switch into it first:\n\n mkdir ~/my-courses && cd ~/my-courses\n",
1114
1115
  courseArchived: "This course has been archived and is available for reading only.\nUse `tostudy lesson` to review the content you've already studied.\n",
1115
1116
  noActiveCourse: "No active course in this folder.\nList your courses with `tostudy courses` and activate one with `tostudy select <n>`.\n",
1117
+ studyWorkspaceHint: "Tip: run `tostudy select` in this folder to use it as the workspace, or `tostudy workspace setup` to create one in ~/study/. Then run `tostudy export` to save the exercise and the validation criteria on this computer.\n",
1116
1118
  enrollmentNotEntitled: "\u{1F6AB} Your enrollment in this course is no longer active (refund, cancellation, or expired preview).\nTo study again, purchase the course at https://tostudy.ai.\n",
1117
1119
  creator: {
1118
1120
  loginBrowserOnly: "`--creator` only works with the browser login. Run `tostudy login --creator` without --code, --magic-link or --manual.",
@@ -1468,17 +1470,17 @@ var init_session_store = __esm({
1468
1470
  }
1469
1471
  });
1470
1472
 
1471
- // ../../packages/tostudy-core/src/slug.ts
1473
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/slug.ts
1472
1474
  function slugify(text2, maxLength = 60) {
1473
1475
  return text2.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, maxLength).replace(/-+$/, "");
1474
1476
  }
1475
1477
  var init_slug = __esm({
1476
- "../../packages/tostudy-core/src/slug.ts"() {
1478
+ "../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/slug.ts"() {
1477
1479
  "use strict";
1478
1480
  }
1479
1481
  });
1480
1482
 
1481
- // ../../packages/tostudy-core/src/lessons/workspace-tokens.ts
1483
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/lessons/workspace-tokens.ts
1482
1484
  function resolveWorkspaceTokensInText(text2, paths) {
1483
1485
  return text2.replace(WORKSPACE_TOKEN, () => paths.workspace).replace(VAULT_TOKEN, () => paths.vault);
1484
1486
  }
@@ -1505,7 +1507,7 @@ function resolveWorkspaceTokens(value, paths) {
1505
1507
  }
1506
1508
  var WORKSPACE_TOKEN, VAULT_TOKEN;
1507
1509
  var init_workspace_tokens = __esm({
1508
- "../../packages/tostudy-core/src/lessons/workspace-tokens.ts"() {
1510
+ "../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/lessons/workspace-tokens.ts"() {
1509
1511
  "use strict";
1510
1512
  init_slug();
1511
1513
  WORKSPACE_TOKEN = /\$WORKSPACE(?![A-Za-z0-9_])/g;
@@ -3140,25 +3142,25 @@ import { Command } from "commander";
3140
3142
  import { execFile as execFile2 } from "node:child_process";
3141
3143
  import { randomBytes } from "node:crypto";
3142
3144
 
3143
- // ../../packages/tostudy-core/src/courses/list-courses.ts
3145
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/courses/list-courses.ts
3144
3146
  async function listCourses(input2, deps) {
3145
3147
  deps.logger.info("tostudy-core: listCourses", { userId: input2.userId });
3146
3148
  return deps.data.courses.list(input2.userId);
3147
3149
  }
3148
3150
 
3149
- // ../../packages/tostudy-core/src/courses/select-course.ts
3151
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/courses/select-course.ts
3150
3152
  async function selectCourse(input2, deps) {
3151
3153
  deps.logger.info("tostudy-core: selectCourse", input2);
3152
3154
  return deps.data.courses.select(input2.userId, input2.courseId);
3153
3155
  }
3154
3156
 
3155
- // ../../packages/tostudy-core/src/courses/get-progress.ts
3157
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/courses/get-progress.ts
3156
3158
  async function getProgress(input2, deps) {
3157
3159
  deps.logger.info("tostudy-core: getProgress", input2);
3158
3160
  return deps.data.courses.getProgress(input2.enrollmentId);
3159
3161
  }
3160
3162
 
3161
- // ../../packages/tostudy-core/src/adapters/http.ts
3163
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/adapters/http.ts
3162
3164
  var CliApiError = class extends Error {
3163
3165
  constructor(message, status, code) {
3164
3166
  super(message);
@@ -3778,7 +3780,7 @@ init_workspace_state();
3778
3780
  init_formatter();
3779
3781
 
3780
3782
  // src/version.ts
3781
- var CLI_VERSION = true ? "0.18.1" : "0.7.1";
3783
+ var CLI_VERSION = true ? "0.18.2" : "0.7.1";
3782
3784
 
3783
3785
  // src/update-checker.ts
3784
3786
  init_config_dir();
@@ -4882,37 +4884,37 @@ var progressCommand = new Command7("progress").description("Show your progress i
4882
4884
  init_dist();
4883
4885
  import { Command as Command8 } from "commander";
4884
4886
 
4885
- // ../../packages/tostudy-core/src/lessons/next-lesson.ts
4887
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/lessons/next-lesson.ts
4886
4888
  async function nextLesson(input2, deps) {
4887
4889
  deps.logger.info("tostudy-core: nextLesson", { enrollmentId: input2.enrollmentId });
4888
4890
  return deps.data.lessons.next(input2.enrollmentId, input2.userConfirmation);
4889
4891
  }
4890
4892
 
4891
- // ../../packages/tostudy-core/src/lessons/get-content.ts
4893
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/lessons/get-content.ts
4892
4894
  async function getContent(input2, deps) {
4893
4895
  deps.logger.info("tostudy-core: getContent", { lessonId: input2.lessonId });
4894
4896
  return deps.data.lessons.getContent(input2.lessonId, input2.enrollmentId);
4895
4897
  }
4896
4898
 
4897
- // ../../packages/tostudy-core/src/lessons/get-hint.ts
4899
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/lessons/get-hint.ts
4898
4900
  async function getHint(input2, deps) {
4899
4901
  deps.logger.info("tostudy-core: getHint", { userId: input2.userId });
4900
4902
  return deps.data.lessons.getHint(input2.userId, input2.enrollmentId);
4901
4903
  }
4902
4904
 
4903
- // ../../packages/tostudy-core/src/lessons/start-module.ts
4905
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/lessons/start-module.ts
4904
4906
  async function startModule(input2, deps) {
4905
4907
  deps.logger.info("tostudy-core: startModule", { enrollmentId: input2.enrollmentId });
4906
4908
  return deps.data.lessons.startModule(input2.enrollmentId);
4907
4909
  }
4908
4910
 
4909
- // ../../packages/tostudy-core/src/lessons/start-next-module.ts
4911
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/lessons/start-next-module.ts
4910
4912
  async function startNextModule(input2, deps) {
4911
4913
  deps.logger.info("tostudy-core: startNextModule", { enrollmentId: input2.enrollmentId });
4912
4914
  return deps.data.lessons.startNextModule(input2.enrollmentId);
4913
4915
  }
4914
4916
 
4915
- // ../../packages/tostudy-core/src/lessons/index.ts
4917
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/lessons/index.ts
4916
4918
  init_workspace_tokens();
4917
4919
 
4918
4920
  // src/commands/start.ts
@@ -4922,6 +4924,9 @@ init_workspace_state();
4922
4924
  init_formatter();
4923
4925
  init_errors();
4924
4926
  var logger10 = createLogger("cli:start");
4927
+ function isPracticalLesson(type) {
4928
+ return type === "exercise" || type === "checkpoint" || type === "realworld" || type === "project";
4929
+ }
4925
4930
  var defaultDeps3 = {
4926
4931
  requireSession,
4927
4932
  requireActiveCourse,
@@ -4965,6 +4970,9 @@ async function runStart(opts, deps = defaultDeps3) {
4965
4970
  deps.stderrWrite(`Dica: rode \`tostudy init\` para personalizar o tutor ao seu contexto.
4966
4971
  `);
4967
4972
  }
4973
+ if (!onboarding.workspaceReady && isPracticalLesson(moduleData.firstLesson.type)) {
4974
+ deps.stderrWrite(getErrors().studyWorkspaceHint);
4975
+ }
4968
4976
  } catch (err) {
4969
4977
  if (err instanceof CliApiError && err.status === 403 && (err.code ?? err.message) === "CHANNEL_MISMATCH") {
4970
4978
  process.stderr.write("Este curso n\xE3o est\xE1 dispon\xEDvel via CLI.\n");
@@ -5363,7 +5371,7 @@ import fs11 from "node:fs";
5363
5371
  import path14 from "node:path";
5364
5372
  import { Command as Command14 } from "commander";
5365
5373
 
5366
- // ../../packages/tostudy-core/src/exercises/validate-solution.ts
5374
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/exercises/validate-solution.ts
5367
5375
  async function validateSolution(input2, deps) {
5368
5376
  deps.logger.info("tostudy-core: validateSolution", { lessonId: input2.lessonId });
5369
5377
  if (input2.metadata !== void 0) {
@@ -5383,7 +5391,7 @@ async function validateSolution(input2, deps) {
5383
5391
  );
5384
5392
  }
5385
5393
 
5386
- // ../../node_modules/zod/v4/classic/external.js
5394
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/external.js
5387
5395
  var external_exports = {};
5388
5396
  __export(external_exports, {
5389
5397
  $brand: () => $brand,
@@ -5624,7 +5632,7 @@ __export(external_exports, {
5624
5632
  xor: () => xor
5625
5633
  });
5626
5634
 
5627
- // ../../node_modules/zod/v4/core/index.js
5635
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/index.js
5628
5636
  var core_exports2 = {};
5629
5637
  __export(core_exports2, {
5630
5638
  $ZodAny: () => $ZodAny,
@@ -5902,7 +5910,7 @@ __export(core_exports2, {
5902
5910
  version: () => version
5903
5911
  });
5904
5912
 
5905
- // ../../node_modules/zod/v4/core/core.js
5913
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/core.js
5906
5914
  var NEVER = Object.freeze({
5907
5915
  status: "aborted"
5908
5916
  });
@@ -5977,7 +5985,7 @@ function config(newConfig) {
5977
5985
  return globalConfig;
5978
5986
  }
5979
5987
 
5980
- // ../../node_modules/zod/v4/core/util.js
5988
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/util.js
5981
5989
  var util_exports = {};
5982
5990
  __export(util_exports, {
5983
5991
  BIGINT_FORMAT_RANGES: () => BIGINT_FORMAT_RANGES,
@@ -6656,7 +6664,7 @@ var Class = class {
6656
6664
  }
6657
6665
  };
6658
6666
 
6659
- // ../../node_modules/zod/v4/core/errors.js
6667
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/errors.js
6660
6668
  var initializer = (inst, def) => {
6661
6669
  inst.name = "$ZodError";
6662
6670
  Object.defineProperty(inst, "_zod", {
@@ -6792,7 +6800,7 @@ function prettifyError(error49) {
6792
6800
  return lines.join("\n");
6793
6801
  }
6794
6802
 
6795
- // ../../node_modules/zod/v4/core/parse.js
6803
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/parse.js
6796
6804
  var _parse = (_Err) => (schema, value, _ctx, _params) => {
6797
6805
  const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };
6798
6806
  const result = schema._zod.run({ value, issues: [] }, ctx);
@@ -6880,7 +6888,7 @@ var _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {
6880
6888
  };
6881
6889
  var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync($ZodRealError);
6882
6890
 
6883
- // ../../node_modules/zod/v4/core/regexes.js
6891
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/regexes.js
6884
6892
  var regexes_exports = {};
6885
6893
  __export(regexes_exports, {
6886
6894
  base64: () => base64,
@@ -7037,7 +7045,7 @@ var sha512_hex = /^[0-9a-fA-F]{128}$/;
7037
7045
  var sha512_base64 = /* @__PURE__ */ fixedBase64(86, "==");
7038
7046
  var sha512_base64url = /* @__PURE__ */ fixedBase64url(86);
7039
7047
 
7040
- // ../../node_modules/zod/v4/core/checks.js
7048
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/checks.js
7041
7049
  var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => {
7042
7050
  var _a2;
7043
7051
  inst._zod ?? (inst._zod = {});
@@ -7585,7 +7593,7 @@ var $ZodCheckOverwrite = /* @__PURE__ */ $constructor("$ZodCheckOverwrite", (ins
7585
7593
  };
7586
7594
  });
7587
7595
 
7588
- // ../../node_modules/zod/v4/core/doc.js
7596
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/doc.js
7589
7597
  var Doc = class {
7590
7598
  constructor(args = []) {
7591
7599
  this.content = [];
@@ -7621,14 +7629,14 @@ var Doc = class {
7621
7629
  }
7622
7630
  };
7623
7631
 
7624
- // ../../node_modules/zod/v4/core/versions.js
7632
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/versions.js
7625
7633
  var version = {
7626
7634
  major: 4,
7627
7635
  minor: 3,
7628
7636
  patch: 6
7629
7637
  };
7630
7638
 
7631
- // ../../node_modules/zod/v4/core/schemas.js
7639
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/schemas.js
7632
7640
  var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
7633
7641
  var _a2;
7634
7642
  inst ?? (inst = {});
@@ -9599,7 +9607,7 @@ function handleRefineResult(result, payload, input2, inst) {
9599
9607
  }
9600
9608
  }
9601
9609
 
9602
- // ../../node_modules/zod/v4/locales/index.js
9610
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/index.js
9603
9611
  var locales_exports = {};
9604
9612
  __export(locales_exports, {
9605
9613
  ar: () => ar_default,
@@ -9653,7 +9661,7 @@ __export(locales_exports, {
9653
9661
  zhTW: () => zh_TW_default
9654
9662
  });
9655
9663
 
9656
- // ../../node_modules/zod/v4/locales/ar.js
9664
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ar.js
9657
9665
  var error2 = () => {
9658
9666
  const Sizable = {
9659
9667
  string: { unit: "\u062D\u0631\u0641", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" },
@@ -9760,7 +9768,7 @@ function ar_default() {
9760
9768
  };
9761
9769
  }
9762
9770
 
9763
- // ../../node_modules/zod/v4/locales/az.js
9771
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/az.js
9764
9772
  var error3 = () => {
9765
9773
  const Sizable = {
9766
9774
  string: { unit: "simvol", verb: "olmal\u0131d\u0131r" },
@@ -9866,7 +9874,7 @@ function az_default() {
9866
9874
  };
9867
9875
  }
9868
9876
 
9869
- // ../../node_modules/zod/v4/locales/be.js
9877
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/be.js
9870
9878
  function getBelarusianPlural(count, one, few, many) {
9871
9879
  const absCount = Math.abs(count);
9872
9880
  const lastDigit = absCount % 10;
@@ -10023,7 +10031,7 @@ function be_default() {
10023
10031
  };
10024
10032
  }
10025
10033
 
10026
- // ../../node_modules/zod/v4/locales/bg.js
10034
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/bg.js
10027
10035
  var error5 = () => {
10028
10036
  const Sizable = {
10029
10037
  string: { unit: "\u0441\u0438\u043C\u0432\u043E\u043B\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" },
@@ -10144,7 +10152,7 @@ function bg_default() {
10144
10152
  };
10145
10153
  }
10146
10154
 
10147
- // ../../node_modules/zod/v4/locales/ca.js
10155
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ca.js
10148
10156
  var error6 = () => {
10149
10157
  const Sizable = {
10150
10158
  string: { unit: "car\xE0cters", verb: "contenir" },
@@ -10253,7 +10261,7 @@ function ca_default() {
10253
10261
  };
10254
10262
  }
10255
10263
 
10256
- // ../../node_modules/zod/v4/locales/cs.js
10264
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/cs.js
10257
10265
  var error7 = () => {
10258
10266
  const Sizable = {
10259
10267
  string: { unit: "znak\u016F", verb: "m\xEDt" },
@@ -10365,7 +10373,7 @@ function cs_default() {
10365
10373
  };
10366
10374
  }
10367
10375
 
10368
- // ../../node_modules/zod/v4/locales/da.js
10376
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/da.js
10369
10377
  var error8 = () => {
10370
10378
  const Sizable = {
10371
10379
  string: { unit: "tegn", verb: "havde" },
@@ -10481,7 +10489,7 @@ function da_default() {
10481
10489
  };
10482
10490
  }
10483
10491
 
10484
- // ../../node_modules/zod/v4/locales/de.js
10492
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/de.js
10485
10493
  var error9 = () => {
10486
10494
  const Sizable = {
10487
10495
  string: { unit: "Zeichen", verb: "zu haben" },
@@ -10590,7 +10598,7 @@ function de_default() {
10590
10598
  };
10591
10599
  }
10592
10600
 
10593
- // ../../node_modules/zod/v4/locales/en.js
10601
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/en.js
10594
10602
  var error10 = () => {
10595
10603
  const Sizable = {
10596
10604
  string: { unit: "characters", verb: "to have" },
@@ -10699,7 +10707,7 @@ function en_default() {
10699
10707
  };
10700
10708
  }
10701
10709
 
10702
- // ../../node_modules/zod/v4/locales/eo.js
10710
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/eo.js
10703
10711
  var error11 = () => {
10704
10712
  const Sizable = {
10705
10713
  string: { unit: "karaktrojn", verb: "havi" },
@@ -10809,7 +10817,7 @@ function eo_default() {
10809
10817
  };
10810
10818
  }
10811
10819
 
10812
- // ../../node_modules/zod/v4/locales/es.js
10820
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/es.js
10813
10821
  var error12 = () => {
10814
10822
  const Sizable = {
10815
10823
  string: { unit: "caracteres", verb: "tener" },
@@ -10942,7 +10950,7 @@ function es_default() {
10942
10950
  };
10943
10951
  }
10944
10952
 
10945
- // ../../node_modules/zod/v4/locales/fa.js
10953
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/fa.js
10946
10954
  var error13 = () => {
10947
10955
  const Sizable = {
10948
10956
  string: { unit: "\u06A9\u0627\u0631\u0627\u06A9\u062A\u0631", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" },
@@ -11057,7 +11065,7 @@ function fa_default() {
11057
11065
  };
11058
11066
  }
11059
11067
 
11060
- // ../../node_modules/zod/v4/locales/fi.js
11068
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/fi.js
11061
11069
  var error14 = () => {
11062
11070
  const Sizable = {
11063
11071
  string: { unit: "merkki\xE4", subject: "merkkijonon" },
@@ -11170,7 +11178,7 @@ function fi_default() {
11170
11178
  };
11171
11179
  }
11172
11180
 
11173
- // ../../node_modules/zod/v4/locales/fr.js
11181
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/fr.js
11174
11182
  var error15 = () => {
11175
11183
  const Sizable = {
11176
11184
  string: { unit: "caract\xE8res", verb: "avoir" },
@@ -11279,7 +11287,7 @@ function fr_default() {
11279
11287
  };
11280
11288
  }
11281
11289
 
11282
- // ../../node_modules/zod/v4/locales/fr-CA.js
11290
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/fr-CA.js
11283
11291
  var error16 = () => {
11284
11292
  const Sizable = {
11285
11293
  string: { unit: "caract\xE8res", verb: "avoir" },
@@ -11387,7 +11395,7 @@ function fr_CA_default() {
11387
11395
  };
11388
11396
  }
11389
11397
 
11390
- // ../../node_modules/zod/v4/locales/he.js
11398
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/he.js
11391
11399
  var error17 = () => {
11392
11400
  const TypeNames = {
11393
11401
  string: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA", gender: "f" },
@@ -11582,7 +11590,7 @@ function he_default() {
11582
11590
  };
11583
11591
  }
11584
11592
 
11585
- // ../../node_modules/zod/v4/locales/hu.js
11593
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/hu.js
11586
11594
  var error18 = () => {
11587
11595
  const Sizable = {
11588
11596
  string: { unit: "karakter", verb: "legyen" },
@@ -11691,7 +11699,7 @@ function hu_default() {
11691
11699
  };
11692
11700
  }
11693
11701
 
11694
- // ../../node_modules/zod/v4/locales/hy.js
11702
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/hy.js
11695
11703
  function getArmenianPlural(count, one, many) {
11696
11704
  return Math.abs(count) === 1 ? one : many;
11697
11705
  }
@@ -11839,7 +11847,7 @@ function hy_default() {
11839
11847
  };
11840
11848
  }
11841
11849
 
11842
- // ../../node_modules/zod/v4/locales/id.js
11850
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/id.js
11843
11851
  var error20 = () => {
11844
11852
  const Sizable = {
11845
11853
  string: { unit: "karakter", verb: "memiliki" },
@@ -11946,7 +11954,7 @@ function id_default() {
11946
11954
  };
11947
11955
  }
11948
11956
 
11949
- // ../../node_modules/zod/v4/locales/is.js
11957
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/is.js
11950
11958
  var error21 = () => {
11951
11959
  const Sizable = {
11952
11960
  string: { unit: "stafi", verb: "a\xF0 hafa" },
@@ -12056,7 +12064,7 @@ function is_default() {
12056
12064
  };
12057
12065
  }
12058
12066
 
12059
- // ../../node_modules/zod/v4/locales/it.js
12067
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/it.js
12060
12068
  var error22 = () => {
12061
12069
  const Sizable = {
12062
12070
  string: { unit: "caratteri", verb: "avere" },
@@ -12165,7 +12173,7 @@ function it_default() {
12165
12173
  };
12166
12174
  }
12167
12175
 
12168
- // ../../node_modules/zod/v4/locales/ja.js
12176
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ja.js
12169
12177
  var error23 = () => {
12170
12178
  const Sizable = {
12171
12179
  string: { unit: "\u6587\u5B57", verb: "\u3067\u3042\u308B" },
@@ -12273,7 +12281,7 @@ function ja_default() {
12273
12281
  };
12274
12282
  }
12275
12283
 
12276
- // ../../node_modules/zod/v4/locales/ka.js
12284
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ka.js
12277
12285
  var error24 = () => {
12278
12286
  const Sizable = {
12279
12287
  string: { unit: "\u10E1\u10D8\u10DB\u10D1\u10DD\u10DA\u10DD", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" },
@@ -12386,7 +12394,7 @@ function ka_default() {
12386
12394
  };
12387
12395
  }
12388
12396
 
12389
- // ../../node_modules/zod/v4/locales/km.js
12397
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/km.js
12390
12398
  var error25 = () => {
12391
12399
  const Sizable = {
12392
12400
  string: { unit: "\u178F\u17BD\u17A2\u1780\u17D2\u179F\u179A", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" },
@@ -12497,12 +12505,12 @@ function km_default() {
12497
12505
  };
12498
12506
  }
12499
12507
 
12500
- // ../../node_modules/zod/v4/locales/kh.js
12508
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/kh.js
12501
12509
  function kh_default() {
12502
12510
  return km_default();
12503
12511
  }
12504
12512
 
12505
- // ../../node_modules/zod/v4/locales/ko.js
12513
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ko.js
12506
12514
  var error26 = () => {
12507
12515
  const Sizable = {
12508
12516
  string: { unit: "\uBB38\uC790", verb: "to have" },
@@ -12614,7 +12622,7 @@ function ko_default() {
12614
12622
  };
12615
12623
  }
12616
12624
 
12617
- // ../../node_modules/zod/v4/locales/lt.js
12625
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/lt.js
12618
12626
  var capitalizeFirstCharacter = (text2) => {
12619
12627
  return text2.charAt(0).toUpperCase() + text2.slice(1);
12620
12628
  };
@@ -12818,7 +12826,7 @@ function lt_default() {
12818
12826
  };
12819
12827
  }
12820
12828
 
12821
- // ../../node_modules/zod/v4/locales/mk.js
12829
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/mk.js
12822
12830
  var error28 = () => {
12823
12831
  const Sizable = {
12824
12832
  string: { unit: "\u0437\u043D\u0430\u0446\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" },
@@ -12928,7 +12936,7 @@ function mk_default() {
12928
12936
  };
12929
12937
  }
12930
12938
 
12931
- // ../../node_modules/zod/v4/locales/ms.js
12939
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ms.js
12932
12940
  var error29 = () => {
12933
12941
  const Sizable = {
12934
12942
  string: { unit: "aksara", verb: "mempunyai" },
@@ -13036,7 +13044,7 @@ function ms_default() {
13036
13044
  };
13037
13045
  }
13038
13046
 
13039
- // ../../node_modules/zod/v4/locales/nl.js
13047
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/nl.js
13040
13048
  var error30 = () => {
13041
13049
  const Sizable = {
13042
13050
  string: { unit: "tekens", verb: "heeft" },
@@ -13147,7 +13155,7 @@ function nl_default() {
13147
13155
  };
13148
13156
  }
13149
13157
 
13150
- // ../../node_modules/zod/v4/locales/no.js
13158
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/no.js
13151
13159
  var error31 = () => {
13152
13160
  const Sizable = {
13153
13161
  string: { unit: "tegn", verb: "\xE5 ha" },
@@ -13256,7 +13264,7 @@ function no_default() {
13256
13264
  };
13257
13265
  }
13258
13266
 
13259
- // ../../node_modules/zod/v4/locales/ota.js
13267
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ota.js
13260
13268
  var error32 = () => {
13261
13269
  const Sizable = {
13262
13270
  string: { unit: "harf", verb: "olmal\u0131d\u0131r" },
@@ -13366,7 +13374,7 @@ function ota_default() {
13366
13374
  };
13367
13375
  }
13368
13376
 
13369
- // ../../node_modules/zod/v4/locales/ps.js
13377
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ps.js
13370
13378
  var error33 = () => {
13371
13379
  const Sizable = {
13372
13380
  string: { unit: "\u062A\u0648\u06A9\u064A", verb: "\u0648\u0644\u0631\u064A" },
@@ -13481,7 +13489,7 @@ function ps_default() {
13481
13489
  };
13482
13490
  }
13483
13491
 
13484
- // ../../node_modules/zod/v4/locales/pl.js
13492
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/pl.js
13485
13493
  var error34 = () => {
13486
13494
  const Sizable = {
13487
13495
  string: { unit: "znak\xF3w", verb: "mie\u0107" },
@@ -13591,7 +13599,7 @@ function pl_default() {
13591
13599
  };
13592
13600
  }
13593
13601
 
13594
- // ../../node_modules/zod/v4/locales/pt.js
13602
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/pt.js
13595
13603
  var error35 = () => {
13596
13604
  const Sizable = {
13597
13605
  string: { unit: "caracteres", verb: "ter" },
@@ -13700,7 +13708,7 @@ function pt_default() {
13700
13708
  };
13701
13709
  }
13702
13710
 
13703
- // ../../node_modules/zod/v4/locales/ru.js
13711
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ru.js
13704
13712
  function getRussianPlural(count, one, few, many) {
13705
13713
  const absCount = Math.abs(count);
13706
13714
  const lastDigit = absCount % 10;
@@ -13857,7 +13865,7 @@ function ru_default() {
13857
13865
  };
13858
13866
  }
13859
13867
 
13860
- // ../../node_modules/zod/v4/locales/sl.js
13868
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/sl.js
13861
13869
  var error37 = () => {
13862
13870
  const Sizable = {
13863
13871
  string: { unit: "znakov", verb: "imeti" },
@@ -13967,7 +13975,7 @@ function sl_default() {
13967
13975
  };
13968
13976
  }
13969
13977
 
13970
- // ../../node_modules/zod/v4/locales/sv.js
13978
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/sv.js
13971
13979
  var error38 = () => {
13972
13980
  const Sizable = {
13973
13981
  string: { unit: "tecken", verb: "att ha" },
@@ -14078,7 +14086,7 @@ function sv_default() {
14078
14086
  };
14079
14087
  }
14080
14088
 
14081
- // ../../node_modules/zod/v4/locales/ta.js
14089
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ta.js
14082
14090
  var error39 = () => {
14083
14091
  const Sizable = {
14084
14092
  string: { unit: "\u0B8E\u0BB4\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BCD\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" },
@@ -14189,7 +14197,7 @@ function ta_default() {
14189
14197
  };
14190
14198
  }
14191
14199
 
14192
- // ../../node_modules/zod/v4/locales/th.js
14200
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/th.js
14193
14201
  var error40 = () => {
14194
14202
  const Sizable = {
14195
14203
  string: { unit: "\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" },
@@ -14300,7 +14308,7 @@ function th_default() {
14300
14308
  };
14301
14309
  }
14302
14310
 
14303
- // ../../node_modules/zod/v4/locales/tr.js
14311
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/tr.js
14304
14312
  var error41 = () => {
14305
14313
  const Sizable = {
14306
14314
  string: { unit: "karakter", verb: "olmal\u0131" },
@@ -14406,7 +14414,7 @@ function tr_default() {
14406
14414
  };
14407
14415
  }
14408
14416
 
14409
- // ../../node_modules/zod/v4/locales/uk.js
14417
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/uk.js
14410
14418
  var error42 = () => {
14411
14419
  const Sizable = {
14412
14420
  string: { unit: "\u0441\u0438\u043C\u0432\u043E\u043B\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" },
@@ -14515,12 +14523,12 @@ function uk_default() {
14515
14523
  };
14516
14524
  }
14517
14525
 
14518
- // ../../node_modules/zod/v4/locales/ua.js
14526
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ua.js
14519
14527
  function ua_default() {
14520
14528
  return uk_default();
14521
14529
  }
14522
14530
 
14523
- // ../../node_modules/zod/v4/locales/ur.js
14531
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ur.js
14524
14532
  var error43 = () => {
14525
14533
  const Sizable = {
14526
14534
  string: { unit: "\u062D\u0631\u0648\u0641", verb: "\u06C1\u0648\u0646\u0627" },
@@ -14631,7 +14639,7 @@ function ur_default() {
14631
14639
  };
14632
14640
  }
14633
14641
 
14634
- // ../../node_modules/zod/v4/locales/uz.js
14642
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/uz.js
14635
14643
  var error44 = () => {
14636
14644
  const Sizable = {
14637
14645
  string: { unit: "belgi", verb: "bo\u2018lishi kerak" },
@@ -14741,7 +14749,7 @@ function uz_default() {
14741
14749
  };
14742
14750
  }
14743
14751
 
14744
- // ../../node_modules/zod/v4/locales/vi.js
14752
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/vi.js
14745
14753
  var error45 = () => {
14746
14754
  const Sizable = {
14747
14755
  string: { unit: "k\xFD t\u1EF1", verb: "c\xF3" },
@@ -14850,7 +14858,7 @@ function vi_default() {
14850
14858
  };
14851
14859
  }
14852
14860
 
14853
- // ../../node_modules/zod/v4/locales/zh-CN.js
14861
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/zh-CN.js
14854
14862
  var error46 = () => {
14855
14863
  const Sizable = {
14856
14864
  string: { unit: "\u5B57\u7B26", verb: "\u5305\u542B" },
@@ -14960,7 +14968,7 @@ function zh_CN_default() {
14960
14968
  };
14961
14969
  }
14962
14970
 
14963
- // ../../node_modules/zod/v4/locales/zh-TW.js
14971
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/zh-TW.js
14964
14972
  var error47 = () => {
14965
14973
  const Sizable = {
14966
14974
  string: { unit: "\u5B57\u5143", verb: "\u64C1\u6709" },
@@ -15068,7 +15076,7 @@ function zh_TW_default() {
15068
15076
  };
15069
15077
  }
15070
15078
 
15071
- // ../../node_modules/zod/v4/locales/yo.js
15079
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/yo.js
15072
15080
  var error48 = () => {
15073
15081
  const Sizable = {
15074
15082
  string: { unit: "\xE0mi", verb: "n\xED" },
@@ -15176,7 +15184,7 @@ function yo_default() {
15176
15184
  };
15177
15185
  }
15178
15186
 
15179
- // ../../node_modules/zod/v4/core/registries.js
15187
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/registries.js
15180
15188
  var _a;
15181
15189
  var $output = /* @__PURE__ */ Symbol("ZodOutput");
15182
15190
  var $input = /* @__PURE__ */ Symbol("ZodInput");
@@ -15226,7 +15234,7 @@ function registry() {
15226
15234
  (_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());
15227
15235
  var globalRegistry = globalThis.__zod_globalRegistry;
15228
15236
 
15229
- // ../../node_modules/zod/v4/core/api.js
15237
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/api.js
15230
15238
  // @__NO_SIDE_EFFECTS__
15231
15239
  function _string(Class2, params) {
15232
15240
  return new Class2({
@@ -16265,7 +16273,7 @@ function _stringFormat(Class2, format, fnOrRegex, _params = {}) {
16265
16273
  return inst;
16266
16274
  }
16267
16275
 
16268
- // ../../node_modules/zod/v4/core/to-json-schema.js
16276
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/to-json-schema.js
16269
16277
  function initializeContext(params) {
16270
16278
  let target = params?.target ?? "draft-2020-12";
16271
16279
  if (target === "draft-4")
@@ -16617,7 +16625,7 @@ var createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) =
16617
16625
  return finalize(ctx, schema);
16618
16626
  };
16619
16627
 
16620
- // ../../node_modules/zod/v4/core/json-schema-processors.js
16628
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/json-schema-processors.js
16621
16629
  var formatMap = {
16622
16630
  guid: "uuid",
16623
16631
  url: "uri",
@@ -17168,7 +17176,7 @@ function toJSONSchema(input2, params) {
17168
17176
  return finalize(ctx, input2);
17169
17177
  }
17170
17178
 
17171
- // ../../node_modules/zod/v4/core/json-schema-generator.js
17179
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/json-schema-generator.js
17172
17180
  var JSONSchemaGenerator = class {
17173
17181
  /** @deprecated Access via ctx instead */
17174
17182
  get metadataRegistry() {
@@ -17243,10 +17251,10 @@ var JSONSchemaGenerator = class {
17243
17251
  }
17244
17252
  };
17245
17253
 
17246
- // ../../node_modules/zod/v4/core/json-schema.js
17254
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/json-schema.js
17247
17255
  var json_schema_exports = {};
17248
17256
 
17249
- // ../../node_modules/zod/v4/classic/schemas.js
17257
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/schemas.js
17250
17258
  var schemas_exports2 = {};
17251
17259
  __export(schemas_exports2, {
17252
17260
  ZodAny: () => ZodAny,
@@ -17415,7 +17423,7 @@ __export(schemas_exports2, {
17415
17423
  xor: () => xor
17416
17424
  });
17417
17425
 
17418
- // ../../node_modules/zod/v4/classic/checks.js
17426
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/checks.js
17419
17427
  var checks_exports2 = {};
17420
17428
  __export(checks_exports2, {
17421
17429
  endsWith: () => _endsWith,
@@ -17449,7 +17457,7 @@ __export(checks_exports2, {
17449
17457
  uppercase: () => _uppercase
17450
17458
  });
17451
17459
 
17452
- // ../../node_modules/zod/v4/classic/iso.js
17460
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/iso.js
17453
17461
  var iso_exports = {};
17454
17462
  __export(iso_exports, {
17455
17463
  ZodISODate: () => ZodISODate,
@@ -17490,7 +17498,7 @@ function duration2(params) {
17490
17498
  return _isoDuration(ZodISODuration, params);
17491
17499
  }
17492
17500
 
17493
- // ../../node_modules/zod/v4/classic/errors.js
17501
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/errors.js
17494
17502
  var initializer2 = (inst, issues) => {
17495
17503
  $ZodError.init(inst, issues);
17496
17504
  inst.name = "ZodError";
@@ -17530,7 +17538,7 @@ var ZodRealError = $constructor("ZodError", initializer2, {
17530
17538
  Parent: Error
17531
17539
  });
17532
17540
 
17533
- // ../../node_modules/zod/v4/classic/parse.js
17541
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/parse.js
17534
17542
  var parse2 = /* @__PURE__ */ _parse(ZodRealError);
17535
17543
  var parseAsync2 = /* @__PURE__ */ _parseAsync(ZodRealError);
17536
17544
  var safeParse2 = /* @__PURE__ */ _safeParse(ZodRealError);
@@ -17544,7 +17552,7 @@ var safeDecode2 = /* @__PURE__ */ _safeDecode(ZodRealError);
17544
17552
  var safeEncodeAsync2 = /* @__PURE__ */ _safeEncodeAsync(ZodRealError);
17545
17553
  var safeDecodeAsync2 = /* @__PURE__ */ _safeDecodeAsync(ZodRealError);
17546
17554
 
17547
- // ../../node_modules/zod/v4/classic/schemas.js
17555
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/schemas.js
17548
17556
  var ZodType = /* @__PURE__ */ $constructor("ZodType", (inst, def) => {
17549
17557
  $ZodType.init(inst, def);
17550
17558
  Object.assign(inst["~standard"], {
@@ -18623,7 +18631,7 @@ function preprocess(fn, schema) {
18623
18631
  return pipe(transform(fn), schema);
18624
18632
  }
18625
18633
 
18626
- // ../../node_modules/zod/v4/classic/compat.js
18634
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/compat.js
18627
18635
  var ZodIssueCode = {
18628
18636
  invalid_type: "invalid_type",
18629
18637
  too_big: "too_big",
@@ -18649,7 +18657,7 @@ var ZodFirstPartyTypeKind;
18649
18657
  /* @__PURE__ */ (function(ZodFirstPartyTypeKind2) {
18650
18658
  })(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));
18651
18659
 
18652
- // ../../node_modules/zod/v4/classic/from-json-schema.js
18660
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/from-json-schema.js
18653
18661
  var z = {
18654
18662
  ...schemas_exports2,
18655
18663
  ...checks_exports2,
@@ -19123,7 +19131,7 @@ function fromJSONSchema(schema, params) {
19123
19131
  return convertSchema(schema, ctx);
19124
19132
  }
19125
19133
 
19126
- // ../../node_modules/zod/v4/classic/coerce.js
19134
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/coerce.js
19127
19135
  var coerce_exports = {};
19128
19136
  __export(coerce_exports, {
19129
19137
  bigint: () => bigint3,
@@ -19148,10 +19156,10 @@ function date4(params) {
19148
19156
  return _coercedDate(ZodDate, params);
19149
19157
  }
19150
19158
 
19151
- // ../../node_modules/zod/v4/classic/external.js
19159
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/external.js
19152
19160
  config(en_default());
19153
19161
 
19154
- // ../../packages/validators/src/business-constants.ts
19162
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/validators/src/business-constants.ts
19155
19163
  var MONETARY_BOUNDS = {
19156
19164
  /** Maximum price in cents (999,999.99 in currency units) */
19157
19165
  maxPriceCents: 99999999,
@@ -19182,8 +19190,9 @@ var SESSION_POLICY = {
19182
19190
  studentMinHoursBeforeReschedule: 48
19183
19191
  };
19184
19192
  var MAX_RESCHEDULES = SESSION_POLICY.maxReschedules;
19193
+ var PLATFORM_CURRENCIES = ["USD", "BRL", "EUR", "GBP", "ARS", "MXN", "CAD"];
19185
19194
 
19186
- // ../../packages/validators/src/mentorship.ts
19195
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/validators/src/mentorship.ts
19187
19196
  var serviceTypeValues = ["one_on_one", "group", "workshop"];
19188
19197
  var sessionStatusValues = [
19189
19198
  "scheduled",
@@ -19193,14 +19202,6 @@ var sessionStatusValues = [
19193
19202
  "cancelled",
19194
19203
  "no_show"
19195
19204
  ];
19196
- var PRICE_MINIMUMS = {
19197
- one_on_one: 5e3,
19198
- // R$50
19199
- group: 3e3,
19200
- // R$30
19201
- workshop: 3e3
19202
- // R$30
19203
- };
19204
19205
  var MAX_PARTICIPANTS = {
19205
19206
  one_on_one: { min: 1, max: 1 },
19206
19207
  group: { min: 2, max: 10 },
@@ -19213,18 +19214,14 @@ var createServiceSchema = external_exports.object({
19213
19214
  description: external_exports.string().max(2e3, "Description must be at most 2000 characters").optional().nullable(),
19214
19215
  type: external_exports.enum(serviceTypeValues),
19215
19216
  durationMinutes: external_exports.enum(["30", "45", "60", "90"]).transform((val) => parseInt(val, 10)),
19217
+ // FEAT-1309: minor units of `currency` (the mentor's currency). The credit
19218
+ // floor (PRICE_MINIMUMS_CREDITS) is enforced server-side after conversion.
19216
19219
  priceCents: external_exports.number().int().positive("Price must be positive").max(MONETARY_BOUNDS.maxPriceCents, "Price exceeds maximum allowed"),
19220
+ // Set once at create (BUG-1477); omitted = BRL, the pre-FEAT-1309 default.
19221
+ currency: external_exports.enum(PLATFORM_CURRENCIES).optional(),
19217
19222
  maxParticipants: external_exports.number().int().positive("Max participants must be positive").optional(),
19218
19223
  isActive: external_exports.boolean().default(true)
19219
19224
  }).superRefine((data, ctx) => {
19220
- const minPrice = PRICE_MINIMUMS[data.type];
19221
- if (data.priceCents < minPrice) {
19222
- ctx.addIssue({
19223
- code: external_exports.ZodIssueCode.custom,
19224
- message: `Minimum price for ${data.type} is ${minPrice / 100} BRL (${minPrice} cents)`,
19225
- path: ["priceCents"]
19226
- });
19227
- }
19228
19225
  const limits = MAX_PARTICIPANTS[data.type];
19229
19226
  const maxParticipants = data.maxParticipants ?? limits.min;
19230
19227
  if (maxParticipants < limits.min || maxParticipants > limits.max) {
@@ -19295,7 +19292,7 @@ var updateSessionStatusSchema = external_exports.object({
19295
19292
  notes: external_exports.string().max(5e3, "Notes must be at most 5000 characters").optional().nullable()
19296
19293
  });
19297
19294
 
19298
- // ../../packages/tostudy-core/src/exercises/enrollment-levels.ts
19295
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/exercises/enrollment-levels.ts
19299
19296
  async function getEnrollmentLevels(input2, deps) {
19300
19297
  deps.logger.info("tostudy-core: getEnrollmentLevels", { enrollmentId: input2.enrollmentId });
19301
19298
  return deps.data.exercises.getEnrollmentLevels(input2.enrollmentId);
@@ -20148,7 +20145,7 @@ var initCommand = new Command17("init").description("Generate tutor instructions
20148
20145
  init_dist();
20149
20146
  import { Command as Command18 } from "commander";
20150
20147
 
20151
- // ../../packages/tostudy-core/src/workspace/setup-workspace.ts
20148
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/workspace/setup-workspace.ts
20152
20149
  import fs12 from "node:fs/promises";
20153
20150
  import path15 from "node:path";
20154
20151
  var WORKSPACE_DIRS = ["exercises", "generated", "notes", "diagrams", "vault"];
@@ -20196,11 +20193,11 @@ async function setupWorkspace(input2) {
20196
20193
  return { workspacePath, directories: WORKSPACE_DIRS, configPath };
20197
20194
  }
20198
20195
 
20199
- // ../../packages/tostudy-core/src/workspace/extract-exercise.ts
20196
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/workspace/extract-exercise.ts
20200
20197
  import fs13 from "node:fs/promises";
20201
20198
  import path16 from "node:path";
20202
20199
 
20203
- // ../../packages/tostudy-core/src/workspace/templates.ts
20200
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/workspace/templates.ts
20204
20201
  var VITE_VERSION = "^6.0.0";
20205
20202
  var REACT_VERSION = "^19.0.0";
20206
20203
  var TEMPLATES = {
@@ -20283,7 +20280,7 @@ function getScaffoldTemplate(template) {
20283
20280
  return TEMPLATES[template] ?? null;
20284
20281
  }
20285
20282
 
20286
- // ../../packages/tostudy-core/src/workspace/extract-exercise.ts
20283
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/workspace/extract-exercise.ts
20287
20284
  init_workspace_tokens();
20288
20285
  function padOrder(n) {
20289
20286
  return String(n).padStart(2, "0");
@@ -20422,10 +20419,10 @@ function generateReadme(lessonData, tier) {
20422
20419
  return sections.join("\n");
20423
20420
  }
20424
20421
 
20425
- // ../../packages/tostudy-core/src/workspace/export-artifact.ts
20422
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/workspace/export-artifact.ts
20426
20423
  init_slug();
20427
20424
 
20428
- // ../../packages/tostudy-core/src/workspace/lesson-exercise-data.ts
20425
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/workspace/lesson-exercise-data.ts
20429
20426
  init_slug();
20430
20427
 
20431
20428
  // src/commands/workspace.ts
@@ -20761,18 +20758,18 @@ var openCommand = new Command20("open").description("Abrir workspace do curso na
20761
20758
  init_dist();
20762
20759
  import { Command as Command21 } from "commander";
20763
20760
 
20764
- // ../../packages/tostudy-core/src/vault/generate-vault-files.ts
20761
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/vault/generate-vault-files.ts
20765
20762
  init_slug();
20766
20763
 
20767
- // ../../packages/tostudy-core/src/vault/write-vault.ts
20764
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/vault/write-vault.ts
20768
20765
  import fs16 from "node:fs/promises";
20769
20766
  import path20 from "node:path";
20770
20767
 
20771
- // ../../packages/tostudy-core/src/vault/types.ts
20768
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/vault/types.ts
20772
20769
  var VAULT_MARKER_FILENAME = ".ana-vault.json";
20773
20770
  var VAULT_MARKER_VERSION = 1;
20774
20771
 
20775
- // ../../packages/tostudy-core/src/vault/write-vault.ts
20772
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/vault/write-vault.ts
20776
20773
  async function writeVaultFiles(files, outputPath, courseId, courseSlug2) {
20777
20774
  for (const file2 of files) {
20778
20775
  const fullPath = path20.join(outputPath, file2.relativePath);
@@ -20980,7 +20977,7 @@ import os13 from "node:os";
20980
20977
  import path25 from "node:path";
20981
20978
  import { Command as Command23 } from "commander";
20982
20979
 
20983
- // ../../packages/validators/src/authored-course.ts
20980
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/validators/src/authored-course.ts
20984
20981
  import { createHash } from "node:crypto";
20985
20982
  var AUTHORED_LIMITS = {
20986
20983
  maxModules: 15,