@tostudy-ai/cli 0.18.1 → 0.18.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/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,10 @@ 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",
1024
+ setupCommandDescription: "Atalho antigo. A pasta de estudo \xE9 workspace setup; o MCP \xE9 setup mcp",
1025
+ setupRetiredNotice: "\n \u26A0\uFE0F `tostudy setup` n\xE3o cria a pasta de estudo.",
1026
+ setupRetiredNext: " Pasta de estudo: `tostudy workspace setup`. MCP: `tostudy setup mcp`. Para entrar: `tostudy login`, depois `tostudy courses` e `tostudy select <n>`.\n",
1023
1027
  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
1028
  creator: {
1025
1029
  loginBrowserOnly: "`--creator` s\xF3 funciona no login pelo browser. Rode `tostudy login --creator` sem --code, --magic-link ou --manual.",
@@ -1113,6 +1117,10 @@ var init_errors_en_us = __esm({
1113
1117
  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
1118
  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
1119
  noActiveCourse: "No active course in this folder.\nList your courses with `tostudy courses` and activate one with `tostudy select <n>`.\n",
1120
+ 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",
1121
+ setupCommandDescription: "Old shortcut. The study folder is workspace setup; MCP is setup mcp",
1122
+ setupRetiredNotice: "\n \u26A0\uFE0F `tostudy setup` does not create the study folder.",
1123
+ setupRetiredNext: " Study folder: `tostudy workspace setup`. MCP: `tostudy setup mcp`. To sign in: `tostudy login`, then `tostudy courses` and `tostudy select <n>`.\n",
1116
1124
  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
1125
  creator: {
1118
1126
  loginBrowserOnly: "`--creator` only works with the browser login. Run `tostudy login --creator` without --code, --magic-link or --manual.",
@@ -1468,17 +1476,17 @@ var init_session_store = __esm({
1468
1476
  }
1469
1477
  });
1470
1478
 
1471
- // ../../packages/tostudy-core/src/slug.ts
1479
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/slug.ts
1472
1480
  function slugify(text2, maxLength = 60) {
1473
1481
  return text2.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, maxLength).replace(/-+$/, "");
1474
1482
  }
1475
1483
  var init_slug = __esm({
1476
- "../../packages/tostudy-core/src/slug.ts"() {
1484
+ "../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/slug.ts"() {
1477
1485
  "use strict";
1478
1486
  }
1479
1487
  });
1480
1488
 
1481
- // ../../packages/tostudy-core/src/lessons/workspace-tokens.ts
1489
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/lessons/workspace-tokens.ts
1482
1490
  function resolveWorkspaceTokensInText(text2, paths) {
1483
1491
  return text2.replace(WORKSPACE_TOKEN, () => paths.workspace).replace(VAULT_TOKEN, () => paths.vault);
1484
1492
  }
@@ -1505,7 +1513,7 @@ function resolveWorkspaceTokens(value, paths) {
1505
1513
  }
1506
1514
  var WORKSPACE_TOKEN, VAULT_TOKEN;
1507
1515
  var init_workspace_tokens = __esm({
1508
- "../../packages/tostudy-core/src/lessons/workspace-tokens.ts"() {
1516
+ "../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/lessons/workspace-tokens.ts"() {
1509
1517
  "use strict";
1510
1518
  init_slug();
1511
1519
  WORKSPACE_TOKEN = /\$WORKSPACE(?![A-Za-z0-9_])/g;
@@ -3140,25 +3148,25 @@ import { Command } from "commander";
3140
3148
  import { execFile as execFile2 } from "node:child_process";
3141
3149
  import { randomBytes } from "node:crypto";
3142
3150
 
3143
- // ../../packages/tostudy-core/src/courses/list-courses.ts
3151
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/courses/list-courses.ts
3144
3152
  async function listCourses(input2, deps) {
3145
3153
  deps.logger.info("tostudy-core: listCourses", { userId: input2.userId });
3146
3154
  return deps.data.courses.list(input2.userId);
3147
3155
  }
3148
3156
 
3149
- // ../../packages/tostudy-core/src/courses/select-course.ts
3157
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/courses/select-course.ts
3150
3158
  async function selectCourse(input2, deps) {
3151
3159
  deps.logger.info("tostudy-core: selectCourse", input2);
3152
3160
  return deps.data.courses.select(input2.userId, input2.courseId);
3153
3161
  }
3154
3162
 
3155
- // ../../packages/tostudy-core/src/courses/get-progress.ts
3163
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/courses/get-progress.ts
3156
3164
  async function getProgress(input2, deps) {
3157
3165
  deps.logger.info("tostudy-core: getProgress", input2);
3158
3166
  return deps.data.courses.getProgress(input2.enrollmentId);
3159
3167
  }
3160
3168
 
3161
- // ../../packages/tostudy-core/src/adapters/http.ts
3169
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/adapters/http.ts
3162
3170
  var CliApiError = class extends Error {
3163
3171
  constructor(message, status, code) {
3164
3172
  super(message);
@@ -3667,6 +3675,7 @@ var logoutCommand = new Command2("logout").description("Remove token local").act
3667
3675
 
3668
3676
  // src/commands/setup.ts
3669
3677
  init_guards();
3678
+ init_errors();
3670
3679
  import { Command as Command3 } from "commander";
3671
3680
 
3672
3681
  // src/installer/mcp-setup.ts
@@ -3712,10 +3721,9 @@ var defaultDeps = {
3712
3721
  }
3713
3722
  };
3714
3723
  async function runSetup(_opts, deps = defaultDeps) {
3715
- deps.log("\n \u26A0\uFE0F `tostudy setup` foi incorporado ao `tostudy login`.");
3716
- deps.log(
3717
- " Rode `tostudy login`, depois `tostudy courses` e `tostudy select <n>` para estudar no terminal.\n"
3718
- );
3724
+ const errors = getErrors();
3725
+ deps.log(errors.setupRetiredNotice);
3726
+ deps.log(errors.setupRetiredNext);
3719
3727
  }
3720
3728
  async function runSetupMcpSubcommand() {
3721
3729
  console.log("\n ToStudy MCP Setup\n \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n");
@@ -3728,7 +3736,7 @@ async function runSetupMcpSubcommand() {
3728
3736
  console.log(" \u2192 Reinicie o IDE para ativar o servidor MCP");
3729
3737
  console.log(" \u2192 tostudy doctor (verificar conex\xE3o)\n");
3730
3738
  }
3731
- var setupCommand = new Command3("setup").description("Configura ambiente para estudar").option("--quick", "Setup r\xE1pido (sem wizard)").option("--ide <ide>", "Configura IDE espec\xEDfica").option("--mcp", "Configura o MCP nas IDEs detectadas usando a sess\xE3o atual do CLI").action(async (opts) => {
3739
+ var setupCommand = new Command3("setup").description(getErrors().setupCommandDescription).option("--quick", "Setup r\xE1pido (sem wizard)").option("--ide <ide>", "Configura IDE espec\xEDfica").option("--mcp", "Configura o MCP nas IDEs detectadas usando a sess\xE3o atual do CLI").action(async (opts) => {
3732
3740
  await runSetup(opts);
3733
3741
  });
3734
3742
  setupCommand.command("mcp").description("Configura MCP server no seu IDE automaticamente").action(async () => {
@@ -3778,7 +3786,7 @@ init_workspace_state();
3778
3786
  init_formatter();
3779
3787
 
3780
3788
  // src/version.ts
3781
- var CLI_VERSION = true ? "0.18.1" : "0.7.1";
3789
+ var CLI_VERSION = true ? "0.18.3" : "0.7.1";
3782
3790
 
3783
3791
  // src/update-checker.ts
3784
3792
  init_config_dir();
@@ -4882,37 +4890,37 @@ var progressCommand = new Command7("progress").description("Show your progress i
4882
4890
  init_dist();
4883
4891
  import { Command as Command8 } from "commander";
4884
4892
 
4885
- // ../../packages/tostudy-core/src/lessons/next-lesson.ts
4893
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/lessons/next-lesson.ts
4886
4894
  async function nextLesson(input2, deps) {
4887
4895
  deps.logger.info("tostudy-core: nextLesson", { enrollmentId: input2.enrollmentId });
4888
4896
  return deps.data.lessons.next(input2.enrollmentId, input2.userConfirmation);
4889
4897
  }
4890
4898
 
4891
- // ../../packages/tostudy-core/src/lessons/get-content.ts
4899
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/lessons/get-content.ts
4892
4900
  async function getContent(input2, deps) {
4893
4901
  deps.logger.info("tostudy-core: getContent", { lessonId: input2.lessonId });
4894
4902
  return deps.data.lessons.getContent(input2.lessonId, input2.enrollmentId);
4895
4903
  }
4896
4904
 
4897
- // ../../packages/tostudy-core/src/lessons/get-hint.ts
4905
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/lessons/get-hint.ts
4898
4906
  async function getHint(input2, deps) {
4899
4907
  deps.logger.info("tostudy-core: getHint", { userId: input2.userId });
4900
4908
  return deps.data.lessons.getHint(input2.userId, input2.enrollmentId);
4901
4909
  }
4902
4910
 
4903
- // ../../packages/tostudy-core/src/lessons/start-module.ts
4911
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/lessons/start-module.ts
4904
4912
  async function startModule(input2, deps) {
4905
4913
  deps.logger.info("tostudy-core: startModule", { enrollmentId: input2.enrollmentId });
4906
4914
  return deps.data.lessons.startModule(input2.enrollmentId);
4907
4915
  }
4908
4916
 
4909
- // ../../packages/tostudy-core/src/lessons/start-next-module.ts
4917
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/lessons/start-next-module.ts
4910
4918
  async function startNextModule(input2, deps) {
4911
4919
  deps.logger.info("tostudy-core: startNextModule", { enrollmentId: input2.enrollmentId });
4912
4920
  return deps.data.lessons.startNextModule(input2.enrollmentId);
4913
4921
  }
4914
4922
 
4915
- // ../../packages/tostudy-core/src/lessons/index.ts
4923
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/lessons/index.ts
4916
4924
  init_workspace_tokens();
4917
4925
 
4918
4926
  // src/commands/start.ts
@@ -4922,6 +4930,9 @@ init_workspace_state();
4922
4930
  init_formatter();
4923
4931
  init_errors();
4924
4932
  var logger10 = createLogger("cli:start");
4933
+ function isPracticalLesson(type) {
4934
+ return type === "exercise" || type === "checkpoint" || type === "realworld" || type === "project";
4935
+ }
4925
4936
  var defaultDeps3 = {
4926
4937
  requireSession,
4927
4938
  requireActiveCourse,
@@ -4965,6 +4976,9 @@ async function runStart(opts, deps = defaultDeps3) {
4965
4976
  deps.stderrWrite(`Dica: rode \`tostudy init\` para personalizar o tutor ao seu contexto.
4966
4977
  `);
4967
4978
  }
4979
+ if (!onboarding.workspaceReady && isPracticalLesson(moduleData.firstLesson.type)) {
4980
+ deps.stderrWrite(getErrors().studyWorkspaceHint);
4981
+ }
4968
4982
  } catch (err) {
4969
4983
  if (err instanceof CliApiError && err.status === 403 && (err.code ?? err.message) === "CHANNEL_MISMATCH") {
4970
4984
  process.stderr.write("Este curso n\xE3o est\xE1 dispon\xEDvel via CLI.\n");
@@ -5363,7 +5377,7 @@ import fs11 from "node:fs";
5363
5377
  import path14 from "node:path";
5364
5378
  import { Command as Command14 } from "commander";
5365
5379
 
5366
- // ../../packages/tostudy-core/src/exercises/validate-solution.ts
5380
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/exercises/validate-solution.ts
5367
5381
  async function validateSolution(input2, deps) {
5368
5382
  deps.logger.info("tostudy-core: validateSolution", { lessonId: input2.lessonId });
5369
5383
  if (input2.metadata !== void 0) {
@@ -5383,7 +5397,7 @@ async function validateSolution(input2, deps) {
5383
5397
  );
5384
5398
  }
5385
5399
 
5386
- // ../../node_modules/zod/v4/classic/external.js
5400
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/external.js
5387
5401
  var external_exports = {};
5388
5402
  __export(external_exports, {
5389
5403
  $brand: () => $brand,
@@ -5624,7 +5638,7 @@ __export(external_exports, {
5624
5638
  xor: () => xor
5625
5639
  });
5626
5640
 
5627
- // ../../node_modules/zod/v4/core/index.js
5641
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/index.js
5628
5642
  var core_exports2 = {};
5629
5643
  __export(core_exports2, {
5630
5644
  $ZodAny: () => $ZodAny,
@@ -5902,7 +5916,7 @@ __export(core_exports2, {
5902
5916
  version: () => version
5903
5917
  });
5904
5918
 
5905
- // ../../node_modules/zod/v4/core/core.js
5919
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/core.js
5906
5920
  var NEVER = Object.freeze({
5907
5921
  status: "aborted"
5908
5922
  });
@@ -5977,7 +5991,7 @@ function config(newConfig) {
5977
5991
  return globalConfig;
5978
5992
  }
5979
5993
 
5980
- // ../../node_modules/zod/v4/core/util.js
5994
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/util.js
5981
5995
  var util_exports = {};
5982
5996
  __export(util_exports, {
5983
5997
  BIGINT_FORMAT_RANGES: () => BIGINT_FORMAT_RANGES,
@@ -6656,7 +6670,7 @@ var Class = class {
6656
6670
  }
6657
6671
  };
6658
6672
 
6659
- // ../../node_modules/zod/v4/core/errors.js
6673
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/errors.js
6660
6674
  var initializer = (inst, def) => {
6661
6675
  inst.name = "$ZodError";
6662
6676
  Object.defineProperty(inst, "_zod", {
@@ -6792,7 +6806,7 @@ function prettifyError(error49) {
6792
6806
  return lines.join("\n");
6793
6807
  }
6794
6808
 
6795
- // ../../node_modules/zod/v4/core/parse.js
6809
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/parse.js
6796
6810
  var _parse = (_Err) => (schema, value, _ctx, _params) => {
6797
6811
  const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };
6798
6812
  const result = schema._zod.run({ value, issues: [] }, ctx);
@@ -6880,7 +6894,7 @@ var _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {
6880
6894
  };
6881
6895
  var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync($ZodRealError);
6882
6896
 
6883
- // ../../node_modules/zod/v4/core/regexes.js
6897
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/regexes.js
6884
6898
  var regexes_exports = {};
6885
6899
  __export(regexes_exports, {
6886
6900
  base64: () => base64,
@@ -7037,7 +7051,7 @@ var sha512_hex = /^[0-9a-fA-F]{128}$/;
7037
7051
  var sha512_base64 = /* @__PURE__ */ fixedBase64(86, "==");
7038
7052
  var sha512_base64url = /* @__PURE__ */ fixedBase64url(86);
7039
7053
 
7040
- // ../../node_modules/zod/v4/core/checks.js
7054
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/checks.js
7041
7055
  var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => {
7042
7056
  var _a2;
7043
7057
  inst._zod ?? (inst._zod = {});
@@ -7585,7 +7599,7 @@ var $ZodCheckOverwrite = /* @__PURE__ */ $constructor("$ZodCheckOverwrite", (ins
7585
7599
  };
7586
7600
  });
7587
7601
 
7588
- // ../../node_modules/zod/v4/core/doc.js
7602
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/doc.js
7589
7603
  var Doc = class {
7590
7604
  constructor(args = []) {
7591
7605
  this.content = [];
@@ -7621,14 +7635,14 @@ var Doc = class {
7621
7635
  }
7622
7636
  };
7623
7637
 
7624
- // ../../node_modules/zod/v4/core/versions.js
7638
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/versions.js
7625
7639
  var version = {
7626
7640
  major: 4,
7627
7641
  minor: 3,
7628
7642
  patch: 6
7629
7643
  };
7630
7644
 
7631
- // ../../node_modules/zod/v4/core/schemas.js
7645
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/schemas.js
7632
7646
  var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
7633
7647
  var _a2;
7634
7648
  inst ?? (inst = {});
@@ -9599,7 +9613,7 @@ function handleRefineResult(result, payload, input2, inst) {
9599
9613
  }
9600
9614
  }
9601
9615
 
9602
- // ../../node_modules/zod/v4/locales/index.js
9616
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/index.js
9603
9617
  var locales_exports = {};
9604
9618
  __export(locales_exports, {
9605
9619
  ar: () => ar_default,
@@ -9653,7 +9667,7 @@ __export(locales_exports, {
9653
9667
  zhTW: () => zh_TW_default
9654
9668
  });
9655
9669
 
9656
- // ../../node_modules/zod/v4/locales/ar.js
9670
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ar.js
9657
9671
  var error2 = () => {
9658
9672
  const Sizable = {
9659
9673
  string: { unit: "\u062D\u0631\u0641", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" },
@@ -9760,7 +9774,7 @@ function ar_default() {
9760
9774
  };
9761
9775
  }
9762
9776
 
9763
- // ../../node_modules/zod/v4/locales/az.js
9777
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/az.js
9764
9778
  var error3 = () => {
9765
9779
  const Sizable = {
9766
9780
  string: { unit: "simvol", verb: "olmal\u0131d\u0131r" },
@@ -9866,7 +9880,7 @@ function az_default() {
9866
9880
  };
9867
9881
  }
9868
9882
 
9869
- // ../../node_modules/zod/v4/locales/be.js
9883
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/be.js
9870
9884
  function getBelarusianPlural(count, one, few, many) {
9871
9885
  const absCount = Math.abs(count);
9872
9886
  const lastDigit = absCount % 10;
@@ -10023,7 +10037,7 @@ function be_default() {
10023
10037
  };
10024
10038
  }
10025
10039
 
10026
- // ../../node_modules/zod/v4/locales/bg.js
10040
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/bg.js
10027
10041
  var error5 = () => {
10028
10042
  const Sizable = {
10029
10043
  string: { unit: "\u0441\u0438\u043C\u0432\u043E\u043B\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" },
@@ -10144,7 +10158,7 @@ function bg_default() {
10144
10158
  };
10145
10159
  }
10146
10160
 
10147
- // ../../node_modules/zod/v4/locales/ca.js
10161
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ca.js
10148
10162
  var error6 = () => {
10149
10163
  const Sizable = {
10150
10164
  string: { unit: "car\xE0cters", verb: "contenir" },
@@ -10253,7 +10267,7 @@ function ca_default() {
10253
10267
  };
10254
10268
  }
10255
10269
 
10256
- // ../../node_modules/zod/v4/locales/cs.js
10270
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/cs.js
10257
10271
  var error7 = () => {
10258
10272
  const Sizable = {
10259
10273
  string: { unit: "znak\u016F", verb: "m\xEDt" },
@@ -10365,7 +10379,7 @@ function cs_default() {
10365
10379
  };
10366
10380
  }
10367
10381
 
10368
- // ../../node_modules/zod/v4/locales/da.js
10382
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/da.js
10369
10383
  var error8 = () => {
10370
10384
  const Sizable = {
10371
10385
  string: { unit: "tegn", verb: "havde" },
@@ -10481,7 +10495,7 @@ function da_default() {
10481
10495
  };
10482
10496
  }
10483
10497
 
10484
- // ../../node_modules/zod/v4/locales/de.js
10498
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/de.js
10485
10499
  var error9 = () => {
10486
10500
  const Sizable = {
10487
10501
  string: { unit: "Zeichen", verb: "zu haben" },
@@ -10590,7 +10604,7 @@ function de_default() {
10590
10604
  };
10591
10605
  }
10592
10606
 
10593
- // ../../node_modules/zod/v4/locales/en.js
10607
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/en.js
10594
10608
  var error10 = () => {
10595
10609
  const Sizable = {
10596
10610
  string: { unit: "characters", verb: "to have" },
@@ -10699,7 +10713,7 @@ function en_default() {
10699
10713
  };
10700
10714
  }
10701
10715
 
10702
- // ../../node_modules/zod/v4/locales/eo.js
10716
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/eo.js
10703
10717
  var error11 = () => {
10704
10718
  const Sizable = {
10705
10719
  string: { unit: "karaktrojn", verb: "havi" },
@@ -10809,7 +10823,7 @@ function eo_default() {
10809
10823
  };
10810
10824
  }
10811
10825
 
10812
- // ../../node_modules/zod/v4/locales/es.js
10826
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/es.js
10813
10827
  var error12 = () => {
10814
10828
  const Sizable = {
10815
10829
  string: { unit: "caracteres", verb: "tener" },
@@ -10942,7 +10956,7 @@ function es_default() {
10942
10956
  };
10943
10957
  }
10944
10958
 
10945
- // ../../node_modules/zod/v4/locales/fa.js
10959
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/fa.js
10946
10960
  var error13 = () => {
10947
10961
  const Sizable = {
10948
10962
  string: { unit: "\u06A9\u0627\u0631\u0627\u06A9\u062A\u0631", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" },
@@ -11057,7 +11071,7 @@ function fa_default() {
11057
11071
  };
11058
11072
  }
11059
11073
 
11060
- // ../../node_modules/zod/v4/locales/fi.js
11074
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/fi.js
11061
11075
  var error14 = () => {
11062
11076
  const Sizable = {
11063
11077
  string: { unit: "merkki\xE4", subject: "merkkijonon" },
@@ -11170,7 +11184,7 @@ function fi_default() {
11170
11184
  };
11171
11185
  }
11172
11186
 
11173
- // ../../node_modules/zod/v4/locales/fr.js
11187
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/fr.js
11174
11188
  var error15 = () => {
11175
11189
  const Sizable = {
11176
11190
  string: { unit: "caract\xE8res", verb: "avoir" },
@@ -11279,7 +11293,7 @@ function fr_default() {
11279
11293
  };
11280
11294
  }
11281
11295
 
11282
- // ../../node_modules/zod/v4/locales/fr-CA.js
11296
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/fr-CA.js
11283
11297
  var error16 = () => {
11284
11298
  const Sizable = {
11285
11299
  string: { unit: "caract\xE8res", verb: "avoir" },
@@ -11387,7 +11401,7 @@ function fr_CA_default() {
11387
11401
  };
11388
11402
  }
11389
11403
 
11390
- // ../../node_modules/zod/v4/locales/he.js
11404
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/he.js
11391
11405
  var error17 = () => {
11392
11406
  const TypeNames = {
11393
11407
  string: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA", gender: "f" },
@@ -11582,7 +11596,7 @@ function he_default() {
11582
11596
  };
11583
11597
  }
11584
11598
 
11585
- // ../../node_modules/zod/v4/locales/hu.js
11599
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/hu.js
11586
11600
  var error18 = () => {
11587
11601
  const Sizable = {
11588
11602
  string: { unit: "karakter", verb: "legyen" },
@@ -11691,7 +11705,7 @@ function hu_default() {
11691
11705
  };
11692
11706
  }
11693
11707
 
11694
- // ../../node_modules/zod/v4/locales/hy.js
11708
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/hy.js
11695
11709
  function getArmenianPlural(count, one, many) {
11696
11710
  return Math.abs(count) === 1 ? one : many;
11697
11711
  }
@@ -11839,7 +11853,7 @@ function hy_default() {
11839
11853
  };
11840
11854
  }
11841
11855
 
11842
- // ../../node_modules/zod/v4/locales/id.js
11856
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/id.js
11843
11857
  var error20 = () => {
11844
11858
  const Sizable = {
11845
11859
  string: { unit: "karakter", verb: "memiliki" },
@@ -11946,7 +11960,7 @@ function id_default() {
11946
11960
  };
11947
11961
  }
11948
11962
 
11949
- // ../../node_modules/zod/v4/locales/is.js
11963
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/is.js
11950
11964
  var error21 = () => {
11951
11965
  const Sizable = {
11952
11966
  string: { unit: "stafi", verb: "a\xF0 hafa" },
@@ -12056,7 +12070,7 @@ function is_default() {
12056
12070
  };
12057
12071
  }
12058
12072
 
12059
- // ../../node_modules/zod/v4/locales/it.js
12073
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/it.js
12060
12074
  var error22 = () => {
12061
12075
  const Sizable = {
12062
12076
  string: { unit: "caratteri", verb: "avere" },
@@ -12165,7 +12179,7 @@ function it_default() {
12165
12179
  };
12166
12180
  }
12167
12181
 
12168
- // ../../node_modules/zod/v4/locales/ja.js
12182
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ja.js
12169
12183
  var error23 = () => {
12170
12184
  const Sizable = {
12171
12185
  string: { unit: "\u6587\u5B57", verb: "\u3067\u3042\u308B" },
@@ -12273,7 +12287,7 @@ function ja_default() {
12273
12287
  };
12274
12288
  }
12275
12289
 
12276
- // ../../node_modules/zod/v4/locales/ka.js
12290
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ka.js
12277
12291
  var error24 = () => {
12278
12292
  const Sizable = {
12279
12293
  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 +12400,7 @@ function ka_default() {
12386
12400
  };
12387
12401
  }
12388
12402
 
12389
- // ../../node_modules/zod/v4/locales/km.js
12403
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/km.js
12390
12404
  var error25 = () => {
12391
12405
  const Sizable = {
12392
12406
  string: { unit: "\u178F\u17BD\u17A2\u1780\u17D2\u179F\u179A", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" },
@@ -12497,12 +12511,12 @@ function km_default() {
12497
12511
  };
12498
12512
  }
12499
12513
 
12500
- // ../../node_modules/zod/v4/locales/kh.js
12514
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/kh.js
12501
12515
  function kh_default() {
12502
12516
  return km_default();
12503
12517
  }
12504
12518
 
12505
- // ../../node_modules/zod/v4/locales/ko.js
12519
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ko.js
12506
12520
  var error26 = () => {
12507
12521
  const Sizable = {
12508
12522
  string: { unit: "\uBB38\uC790", verb: "to have" },
@@ -12614,7 +12628,7 @@ function ko_default() {
12614
12628
  };
12615
12629
  }
12616
12630
 
12617
- // ../../node_modules/zod/v4/locales/lt.js
12631
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/lt.js
12618
12632
  var capitalizeFirstCharacter = (text2) => {
12619
12633
  return text2.charAt(0).toUpperCase() + text2.slice(1);
12620
12634
  };
@@ -12818,7 +12832,7 @@ function lt_default() {
12818
12832
  };
12819
12833
  }
12820
12834
 
12821
- // ../../node_modules/zod/v4/locales/mk.js
12835
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/mk.js
12822
12836
  var error28 = () => {
12823
12837
  const Sizable = {
12824
12838
  string: { unit: "\u0437\u043D\u0430\u0446\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" },
@@ -12928,7 +12942,7 @@ function mk_default() {
12928
12942
  };
12929
12943
  }
12930
12944
 
12931
- // ../../node_modules/zod/v4/locales/ms.js
12945
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ms.js
12932
12946
  var error29 = () => {
12933
12947
  const Sizable = {
12934
12948
  string: { unit: "aksara", verb: "mempunyai" },
@@ -13036,7 +13050,7 @@ function ms_default() {
13036
13050
  };
13037
13051
  }
13038
13052
 
13039
- // ../../node_modules/zod/v4/locales/nl.js
13053
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/nl.js
13040
13054
  var error30 = () => {
13041
13055
  const Sizable = {
13042
13056
  string: { unit: "tekens", verb: "heeft" },
@@ -13147,7 +13161,7 @@ function nl_default() {
13147
13161
  };
13148
13162
  }
13149
13163
 
13150
- // ../../node_modules/zod/v4/locales/no.js
13164
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/no.js
13151
13165
  var error31 = () => {
13152
13166
  const Sizable = {
13153
13167
  string: { unit: "tegn", verb: "\xE5 ha" },
@@ -13256,7 +13270,7 @@ function no_default() {
13256
13270
  };
13257
13271
  }
13258
13272
 
13259
- // ../../node_modules/zod/v4/locales/ota.js
13273
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ota.js
13260
13274
  var error32 = () => {
13261
13275
  const Sizable = {
13262
13276
  string: { unit: "harf", verb: "olmal\u0131d\u0131r" },
@@ -13366,7 +13380,7 @@ function ota_default() {
13366
13380
  };
13367
13381
  }
13368
13382
 
13369
- // ../../node_modules/zod/v4/locales/ps.js
13383
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ps.js
13370
13384
  var error33 = () => {
13371
13385
  const Sizable = {
13372
13386
  string: { unit: "\u062A\u0648\u06A9\u064A", verb: "\u0648\u0644\u0631\u064A" },
@@ -13481,7 +13495,7 @@ function ps_default() {
13481
13495
  };
13482
13496
  }
13483
13497
 
13484
- // ../../node_modules/zod/v4/locales/pl.js
13498
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/pl.js
13485
13499
  var error34 = () => {
13486
13500
  const Sizable = {
13487
13501
  string: { unit: "znak\xF3w", verb: "mie\u0107" },
@@ -13591,7 +13605,7 @@ function pl_default() {
13591
13605
  };
13592
13606
  }
13593
13607
 
13594
- // ../../node_modules/zod/v4/locales/pt.js
13608
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/pt.js
13595
13609
  var error35 = () => {
13596
13610
  const Sizable = {
13597
13611
  string: { unit: "caracteres", verb: "ter" },
@@ -13700,7 +13714,7 @@ function pt_default() {
13700
13714
  };
13701
13715
  }
13702
13716
 
13703
- // ../../node_modules/zod/v4/locales/ru.js
13717
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ru.js
13704
13718
  function getRussianPlural(count, one, few, many) {
13705
13719
  const absCount = Math.abs(count);
13706
13720
  const lastDigit = absCount % 10;
@@ -13857,7 +13871,7 @@ function ru_default() {
13857
13871
  };
13858
13872
  }
13859
13873
 
13860
- // ../../node_modules/zod/v4/locales/sl.js
13874
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/sl.js
13861
13875
  var error37 = () => {
13862
13876
  const Sizable = {
13863
13877
  string: { unit: "znakov", verb: "imeti" },
@@ -13967,7 +13981,7 @@ function sl_default() {
13967
13981
  };
13968
13982
  }
13969
13983
 
13970
- // ../../node_modules/zod/v4/locales/sv.js
13984
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/sv.js
13971
13985
  var error38 = () => {
13972
13986
  const Sizable = {
13973
13987
  string: { unit: "tecken", verb: "att ha" },
@@ -14078,7 +14092,7 @@ function sv_default() {
14078
14092
  };
14079
14093
  }
14080
14094
 
14081
- // ../../node_modules/zod/v4/locales/ta.js
14095
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ta.js
14082
14096
  var error39 = () => {
14083
14097
  const Sizable = {
14084
14098
  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 +14203,7 @@ function ta_default() {
14189
14203
  };
14190
14204
  }
14191
14205
 
14192
- // ../../node_modules/zod/v4/locales/th.js
14206
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/th.js
14193
14207
  var error40 = () => {
14194
14208
  const Sizable = {
14195
14209
  string: { unit: "\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" },
@@ -14300,7 +14314,7 @@ function th_default() {
14300
14314
  };
14301
14315
  }
14302
14316
 
14303
- // ../../node_modules/zod/v4/locales/tr.js
14317
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/tr.js
14304
14318
  var error41 = () => {
14305
14319
  const Sizable = {
14306
14320
  string: { unit: "karakter", verb: "olmal\u0131" },
@@ -14406,7 +14420,7 @@ function tr_default() {
14406
14420
  };
14407
14421
  }
14408
14422
 
14409
- // ../../node_modules/zod/v4/locales/uk.js
14423
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/uk.js
14410
14424
  var error42 = () => {
14411
14425
  const Sizable = {
14412
14426
  string: { unit: "\u0441\u0438\u043C\u0432\u043E\u043B\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" },
@@ -14515,12 +14529,12 @@ function uk_default() {
14515
14529
  };
14516
14530
  }
14517
14531
 
14518
- // ../../node_modules/zod/v4/locales/ua.js
14532
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ua.js
14519
14533
  function ua_default() {
14520
14534
  return uk_default();
14521
14535
  }
14522
14536
 
14523
- // ../../node_modules/zod/v4/locales/ur.js
14537
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/ur.js
14524
14538
  var error43 = () => {
14525
14539
  const Sizable = {
14526
14540
  string: { unit: "\u062D\u0631\u0648\u0641", verb: "\u06C1\u0648\u0646\u0627" },
@@ -14631,7 +14645,7 @@ function ur_default() {
14631
14645
  };
14632
14646
  }
14633
14647
 
14634
- // ../../node_modules/zod/v4/locales/uz.js
14648
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/uz.js
14635
14649
  var error44 = () => {
14636
14650
  const Sizable = {
14637
14651
  string: { unit: "belgi", verb: "bo\u2018lishi kerak" },
@@ -14741,7 +14755,7 @@ function uz_default() {
14741
14755
  };
14742
14756
  }
14743
14757
 
14744
- // ../../node_modules/zod/v4/locales/vi.js
14758
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/vi.js
14745
14759
  var error45 = () => {
14746
14760
  const Sizable = {
14747
14761
  string: { unit: "k\xFD t\u1EF1", verb: "c\xF3" },
@@ -14850,7 +14864,7 @@ function vi_default() {
14850
14864
  };
14851
14865
  }
14852
14866
 
14853
- // ../../node_modules/zod/v4/locales/zh-CN.js
14867
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/zh-CN.js
14854
14868
  var error46 = () => {
14855
14869
  const Sizable = {
14856
14870
  string: { unit: "\u5B57\u7B26", verb: "\u5305\u542B" },
@@ -14960,7 +14974,7 @@ function zh_CN_default() {
14960
14974
  };
14961
14975
  }
14962
14976
 
14963
- // ../../node_modules/zod/v4/locales/zh-TW.js
14977
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/zh-TW.js
14964
14978
  var error47 = () => {
14965
14979
  const Sizable = {
14966
14980
  string: { unit: "\u5B57\u5143", verb: "\u64C1\u6709" },
@@ -15068,7 +15082,7 @@ function zh_TW_default() {
15068
15082
  };
15069
15083
  }
15070
15084
 
15071
- // ../../node_modules/zod/v4/locales/yo.js
15085
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/locales/yo.js
15072
15086
  var error48 = () => {
15073
15087
  const Sizable = {
15074
15088
  string: { unit: "\xE0mi", verb: "n\xED" },
@@ -15176,7 +15190,7 @@ function yo_default() {
15176
15190
  };
15177
15191
  }
15178
15192
 
15179
- // ../../node_modules/zod/v4/core/registries.js
15193
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/registries.js
15180
15194
  var _a;
15181
15195
  var $output = /* @__PURE__ */ Symbol("ZodOutput");
15182
15196
  var $input = /* @__PURE__ */ Symbol("ZodInput");
@@ -15226,7 +15240,7 @@ function registry() {
15226
15240
  (_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());
15227
15241
  var globalRegistry = globalThis.__zod_globalRegistry;
15228
15242
 
15229
- // ../../node_modules/zod/v4/core/api.js
15243
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/api.js
15230
15244
  // @__NO_SIDE_EFFECTS__
15231
15245
  function _string(Class2, params) {
15232
15246
  return new Class2({
@@ -16265,7 +16279,7 @@ function _stringFormat(Class2, format, fnOrRegex, _params = {}) {
16265
16279
  return inst;
16266
16280
  }
16267
16281
 
16268
- // ../../node_modules/zod/v4/core/to-json-schema.js
16282
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/to-json-schema.js
16269
16283
  function initializeContext(params) {
16270
16284
  let target = params?.target ?? "draft-2020-12";
16271
16285
  if (target === "draft-4")
@@ -16617,7 +16631,7 @@ var createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) =
16617
16631
  return finalize(ctx, schema);
16618
16632
  };
16619
16633
 
16620
- // ../../node_modules/zod/v4/core/json-schema-processors.js
16634
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/json-schema-processors.js
16621
16635
  var formatMap = {
16622
16636
  guid: "uuid",
16623
16637
  url: "uri",
@@ -17168,7 +17182,7 @@ function toJSONSchema(input2, params) {
17168
17182
  return finalize(ctx, input2);
17169
17183
  }
17170
17184
 
17171
- // ../../node_modules/zod/v4/core/json-schema-generator.js
17185
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/json-schema-generator.js
17172
17186
  var JSONSchemaGenerator = class {
17173
17187
  /** @deprecated Access via ctx instead */
17174
17188
  get metadataRegistry() {
@@ -17243,10 +17257,10 @@ var JSONSchemaGenerator = class {
17243
17257
  }
17244
17258
  };
17245
17259
 
17246
- // ../../node_modules/zod/v4/core/json-schema.js
17260
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/core/json-schema.js
17247
17261
  var json_schema_exports = {};
17248
17262
 
17249
- // ../../node_modules/zod/v4/classic/schemas.js
17263
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/schemas.js
17250
17264
  var schemas_exports2 = {};
17251
17265
  __export(schemas_exports2, {
17252
17266
  ZodAny: () => ZodAny,
@@ -17415,7 +17429,7 @@ __export(schemas_exports2, {
17415
17429
  xor: () => xor
17416
17430
  });
17417
17431
 
17418
- // ../../node_modules/zod/v4/classic/checks.js
17432
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/checks.js
17419
17433
  var checks_exports2 = {};
17420
17434
  __export(checks_exports2, {
17421
17435
  endsWith: () => _endsWith,
@@ -17449,7 +17463,7 @@ __export(checks_exports2, {
17449
17463
  uppercase: () => _uppercase
17450
17464
  });
17451
17465
 
17452
- // ../../node_modules/zod/v4/classic/iso.js
17466
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/iso.js
17453
17467
  var iso_exports = {};
17454
17468
  __export(iso_exports, {
17455
17469
  ZodISODate: () => ZodISODate,
@@ -17490,7 +17504,7 @@ function duration2(params) {
17490
17504
  return _isoDuration(ZodISODuration, params);
17491
17505
  }
17492
17506
 
17493
- // ../../node_modules/zod/v4/classic/errors.js
17507
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/errors.js
17494
17508
  var initializer2 = (inst, issues) => {
17495
17509
  $ZodError.init(inst, issues);
17496
17510
  inst.name = "ZodError";
@@ -17530,7 +17544,7 @@ var ZodRealError = $constructor("ZodError", initializer2, {
17530
17544
  Parent: Error
17531
17545
  });
17532
17546
 
17533
- // ../../node_modules/zod/v4/classic/parse.js
17547
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/parse.js
17534
17548
  var parse2 = /* @__PURE__ */ _parse(ZodRealError);
17535
17549
  var parseAsync2 = /* @__PURE__ */ _parseAsync(ZodRealError);
17536
17550
  var safeParse2 = /* @__PURE__ */ _safeParse(ZodRealError);
@@ -17544,7 +17558,7 @@ var safeDecode2 = /* @__PURE__ */ _safeDecode(ZodRealError);
17544
17558
  var safeEncodeAsync2 = /* @__PURE__ */ _safeEncodeAsync(ZodRealError);
17545
17559
  var safeDecodeAsync2 = /* @__PURE__ */ _safeDecodeAsync(ZodRealError);
17546
17560
 
17547
- // ../../node_modules/zod/v4/classic/schemas.js
17561
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/schemas.js
17548
17562
  var ZodType = /* @__PURE__ */ $constructor("ZodType", (inst, def) => {
17549
17563
  $ZodType.init(inst, def);
17550
17564
  Object.assign(inst["~standard"], {
@@ -18623,7 +18637,7 @@ function preprocess(fn, schema) {
18623
18637
  return pipe(transform(fn), schema);
18624
18638
  }
18625
18639
 
18626
- // ../../node_modules/zod/v4/classic/compat.js
18640
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/compat.js
18627
18641
  var ZodIssueCode = {
18628
18642
  invalid_type: "invalid_type",
18629
18643
  too_big: "too_big",
@@ -18649,7 +18663,7 @@ var ZodFirstPartyTypeKind;
18649
18663
  /* @__PURE__ */ (function(ZodFirstPartyTypeKind2) {
18650
18664
  })(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));
18651
18665
 
18652
- // ../../node_modules/zod/v4/classic/from-json-schema.js
18666
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/from-json-schema.js
18653
18667
  var z = {
18654
18668
  ...schemas_exports2,
18655
18669
  ...checks_exports2,
@@ -19123,7 +19137,7 @@ function fromJSONSchema(schema, params) {
19123
19137
  return convertSchema(schema, ctx);
19124
19138
  }
19125
19139
 
19126
- // ../../node_modules/zod/v4/classic/coerce.js
19140
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/coerce.js
19127
19141
  var coerce_exports = {};
19128
19142
  __export(coerce_exports, {
19129
19143
  bigint: () => bigint3,
@@ -19148,10 +19162,10 @@ function date4(params) {
19148
19162
  return _coercedDate(ZodDate, params);
19149
19163
  }
19150
19164
 
19151
- // ../../node_modules/zod/v4/classic/external.js
19165
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/node_modules/zod/v4/classic/external.js
19152
19166
  config(en_default());
19153
19167
 
19154
- // ../../packages/validators/src/business-constants.ts
19168
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/validators/src/business-constants.ts
19155
19169
  var MONETARY_BOUNDS = {
19156
19170
  /** Maximum price in cents (999,999.99 in currency units) */
19157
19171
  maxPriceCents: 99999999,
@@ -19182,8 +19196,9 @@ var SESSION_POLICY = {
19182
19196
  studentMinHoursBeforeReschedule: 48
19183
19197
  };
19184
19198
  var MAX_RESCHEDULES = SESSION_POLICY.maxReschedules;
19199
+ var PLATFORM_CURRENCIES = ["USD", "BRL", "EUR", "GBP", "ARS", "MXN", "CAD"];
19185
19200
 
19186
- // ../../packages/validators/src/mentorship.ts
19201
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/validators/src/mentorship.ts
19187
19202
  var serviceTypeValues = ["one_on_one", "group", "workshop"];
19188
19203
  var sessionStatusValues = [
19189
19204
  "scheduled",
@@ -19193,14 +19208,6 @@ var sessionStatusValues = [
19193
19208
  "cancelled",
19194
19209
  "no_show"
19195
19210
  ];
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
19211
  var MAX_PARTICIPANTS = {
19205
19212
  one_on_one: { min: 1, max: 1 },
19206
19213
  group: { min: 2, max: 10 },
@@ -19213,18 +19220,14 @@ var createServiceSchema = external_exports.object({
19213
19220
  description: external_exports.string().max(2e3, "Description must be at most 2000 characters").optional().nullable(),
19214
19221
  type: external_exports.enum(serviceTypeValues),
19215
19222
  durationMinutes: external_exports.enum(["30", "45", "60", "90"]).transform((val) => parseInt(val, 10)),
19223
+ // FEAT-1309: minor units of `currency` (the mentor's currency). The credit
19224
+ // floor (PRICE_MINIMUMS_CREDITS) is enforced server-side after conversion.
19216
19225
  priceCents: external_exports.number().int().positive("Price must be positive").max(MONETARY_BOUNDS.maxPriceCents, "Price exceeds maximum allowed"),
19226
+ // Set once at create (BUG-1477); omitted = BRL, the pre-FEAT-1309 default.
19227
+ currency: external_exports.enum(PLATFORM_CURRENCIES).optional(),
19217
19228
  maxParticipants: external_exports.number().int().positive("Max participants must be positive").optional(),
19218
19229
  isActive: external_exports.boolean().default(true)
19219
19230
  }).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
19231
  const limits = MAX_PARTICIPANTS[data.type];
19229
19232
  const maxParticipants = data.maxParticipants ?? limits.min;
19230
19233
  if (maxParticipants < limits.min || maxParticipants > limits.max) {
@@ -19295,7 +19298,7 @@ var updateSessionStatusSchema = external_exports.object({
19295
19298
  notes: external_exports.string().max(5e3, "Notes must be at most 5000 characters").optional().nullable()
19296
19299
  });
19297
19300
 
19298
- // ../../packages/tostudy-core/src/exercises/enrollment-levels.ts
19301
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/exercises/enrollment-levels.ts
19299
19302
  async function getEnrollmentLevels(input2, deps) {
19300
19303
  deps.logger.info("tostudy-core: getEnrollmentLevels", { enrollmentId: input2.enrollmentId });
19301
19304
  return deps.data.exercises.getEnrollmentLevels(input2.enrollmentId);
@@ -20148,7 +20151,7 @@ var initCommand = new Command17("init").description("Generate tutor instructions
20148
20151
  init_dist();
20149
20152
  import { Command as Command18 } from "commander";
20150
20153
 
20151
- // ../../packages/tostudy-core/src/workspace/setup-workspace.ts
20154
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/workspace/setup-workspace.ts
20152
20155
  import fs12 from "node:fs/promises";
20153
20156
  import path15 from "node:path";
20154
20157
  var WORKSPACE_DIRS = ["exercises", "generated", "notes", "diagrams", "vault"];
@@ -20196,11 +20199,11 @@ async function setupWorkspace(input2) {
20196
20199
  return { workspacePath, directories: WORKSPACE_DIRS, configPath };
20197
20200
  }
20198
20201
 
20199
- // ../../packages/tostudy-core/src/workspace/extract-exercise.ts
20202
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/workspace/extract-exercise.ts
20200
20203
  import fs13 from "node:fs/promises";
20201
20204
  import path16 from "node:path";
20202
20205
 
20203
- // ../../packages/tostudy-core/src/workspace/templates.ts
20206
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/workspace/templates.ts
20204
20207
  var VITE_VERSION = "^6.0.0";
20205
20208
  var REACT_VERSION = "^19.0.0";
20206
20209
  var TEMPLATES = {
@@ -20283,7 +20286,7 @@ function getScaffoldTemplate(template) {
20283
20286
  return TEMPLATES[template] ?? null;
20284
20287
  }
20285
20288
 
20286
- // ../../packages/tostudy-core/src/workspace/extract-exercise.ts
20289
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/workspace/extract-exercise.ts
20287
20290
  init_workspace_tokens();
20288
20291
  function padOrder(n) {
20289
20292
  return String(n).padStart(2, "0");
@@ -20422,10 +20425,10 @@ function generateReadme(lessonData, tier) {
20422
20425
  return sections.join("\n");
20423
20426
  }
20424
20427
 
20425
- // ../../packages/tostudy-core/src/workspace/export-artifact.ts
20428
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/workspace/export-artifact.ts
20426
20429
  init_slug();
20427
20430
 
20428
- // ../../packages/tostudy-core/src/workspace/lesson-exercise-data.ts
20431
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/workspace/lesson-exercise-data.ts
20429
20432
  init_slug();
20430
20433
 
20431
20434
  // src/commands/workspace.ts
@@ -20761,18 +20764,18 @@ var openCommand = new Command20("open").description("Abrir workspace do curso na
20761
20764
  init_dist();
20762
20765
  import { Command as Command21 } from "commander";
20763
20766
 
20764
- // ../../packages/tostudy-core/src/vault/generate-vault-files.ts
20767
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/vault/generate-vault-files.ts
20765
20768
  init_slug();
20766
20769
 
20767
- // ../../packages/tostudy-core/src/vault/write-vault.ts
20770
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/vault/write-vault.ts
20768
20771
  import fs16 from "node:fs/promises";
20769
20772
  import path20 from "node:path";
20770
20773
 
20771
- // ../../packages/tostudy-core/src/vault/types.ts
20774
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/vault/types.ts
20772
20775
  var VAULT_MARKER_FILENAME = ".ana-vault.json";
20773
20776
  var VAULT_MARKER_VERSION = 1;
20774
20777
 
20775
- // ../../packages/tostudy-core/src/vault/write-vault.ts
20778
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/tostudy-core/src/vault/write-vault.ts
20776
20779
  async function writeVaultFiles(files, outputPath, courseId, courseSlug2) {
20777
20780
  for (const file2 of files) {
20778
20781
  const fullPath = path20.join(outputPath, file2.relativePath);
@@ -20980,7 +20983,7 @@ import os13 from "node:os";
20980
20983
  import path25 from "node:path";
20981
20984
  import { Command as Command23 } from "commander";
20982
20985
 
20983
- // ../../packages/validators/src/authored-course.ts
20986
+ // ../../../../../Users/cleitonparis/www/pg/apps/cursos/packages/validators/src/authored-course.ts
20984
20987
  import { createHash } from "node:crypto";
20985
20988
  var AUTHORED_LIMITS = {
20986
20989
  maxModules: 15,