@tostudy-ai/cli 0.16.12 → 0.17.0

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/cli.js CHANGED
@@ -281,7 +281,7 @@ var require_picocolors = __commonJS({
281
281
  }
282
282
  });
283
283
 
284
- // ../../node_modules/@parisgroup-ai/logger/dist/logger.base-DkbC4pBB.mjs
284
+ // ../../node_modules/@parisgroup-ai/logger/dist/logger.base-Bznav79x.mjs
285
285
  function formatJson(entry) {
286
286
  const { timestamp, level, message, service, environment, context, data, error: error49 } = entry;
287
287
  const output3 = {
@@ -385,8 +385,8 @@ function extractErrorInfo(error49, includeStack, visited = /* @__PURE__ */ new W
385
385
  return info;
386
386
  }
387
387
  var import_picocolors, LOG_LEVELS, LEVEL_COLORS, LEVEL_WIDTH, BaseLogger;
388
- var init_logger_base_DkbC4pBB = __esm({
389
- "../../node_modules/@parisgroup-ai/logger/dist/logger.base-DkbC4pBB.mjs"() {
388
+ var init_logger_base_Bznav79x = __esm({
389
+ "../../node_modules/@parisgroup-ai/logger/dist/logger.base-Bznav79x.mjs"() {
390
390
  init_sanitize_DSkXy3jL();
391
391
  import_picocolors = __toESM(require_picocolors(), 1);
392
392
  LOG_LEVELS = {
@@ -708,7 +708,7 @@ function createLogger(module, options) {
708
708
  var asyncLocalStorage, ConsoleTransport, FileTransport, HttpTransport, SINGLETON_KEY$1, SEVERITY, OtlpLogsTransport, SINGLETON_KEY, Logger, logger;
709
709
  var init_dist = __esm({
710
710
  "../../node_modules/@parisgroup-ai/logger/dist/index.mjs"() {
711
- init_logger_base_DkbC4pBB();
711
+ init_logger_base_Bznav79x();
712
712
  init_sanitize_DSkXy3jL();
713
713
  asyncLocalStorage = new AsyncLocalStorage();
714
714
  ConsoleTransport = class {
@@ -1926,7 +1926,11 @@ function renderCourseInstruction(input2) {
1926
1926
  sections.push(renderHowToAdapt(input2.enrollmentProfile));
1927
1927
  sections.push(renderPrecedence());
1928
1928
  sections.push(renderWhereStudentIs(input2.progress));
1929
+ sections.push(renderMemoryLoad());
1929
1930
  sections.push(renderHowToConduct());
1931
+ sections.push(renderStudentAuthorship());
1932
+ sections.push(renderConceptBeforeApplication());
1933
+ sections.push(renderTrainingCaseFraming());
1930
1934
  sections.push(renderSilentTools());
1931
1935
  sections.push(renderHandlingSituations());
1932
1936
  sections.push(renderTechnicalReference());
@@ -1967,6 +1971,9 @@ Rode \`tostudy context --json\` em sil\xEAncio para descobrir o estado do aluno.
1967
1971
  3. Se houver summaries, mencione brevemente: "Da \xFAltima vez paramos em {ultimoModulo}. Pronto pra continuar?"
1968
1972
  4. Siga "Como Conduzir a Aula" abaixo.`);
1969
1973
  sections.push(renderHowToConduct());
1974
+ sections.push(renderStudentAuthorship());
1975
+ sections.push(renderConceptBeforeApplication());
1976
+ sections.push(renderTrainingCaseFraming());
1970
1977
  sections.push(renderSilentTools());
1971
1978
  sections.push(`## Compacta\xE7\xE3o de Contexto (Autom\xE1tico)
1972
1979
 
@@ -1983,7 +1990,7 @@ Quando \`tostudy next --json\` retornar \`MODULE_COMPLETE\`:
1983
1990
  Isso garante continuidade entre sess\xF5es e evita estouro de contexto em sess\xF5es longas.`);
1984
1991
  sections.push(renderHandlingSituations());
1985
1992
  sections.push(renderTechnicalReference());
1986
- sections.push(`<!-- tostudy-template-version: 4 -->`);
1993
+ sections.push(`<!-- tostudy-template-version: 5 -->`);
1987
1994
  return sections.join("\n\n") + "\n";
1988
1995
  }
1989
1996
  function renderTitle(input2) {
@@ -2042,7 +2049,7 @@ function renderWhoIsStudent(brief, profile) {
2042
2049
  if (brief && brief.text.trim().length > 0) {
2043
2050
  parts.push(brief.text);
2044
2051
  parts.push(
2045
- "_(Este \xE9 o brief que o aluno escreveu sobre si mesmo. Use como contexto principal \u2014 nomes, empresa, projetos reais, motiva\xE7\xF5es. Tudo que voc\xEA disser deve parecer que voc\xEA leu e entendeu quem ele \xE9.)_"
2052
+ '_(Este \xE9 o brief que o aluno escreveu sobre si mesmo. Use como contexto principal \u2014 nomes, empresa, projetos reais, motiva\xE7\xF5es. Tudo que voc\xEA disser deve parecer que voc\xEA leu e entendeu quem ele \xE9. O brief descreve quem ele \xE9 profissionalmente \u2014 N\xC3O o n\xEDvel dele neste curso: "avan\xE7ado" em outra \xE1rea n\xE3o vale como avan\xE7ado aqui.)_'
2046
2053
  );
2047
2054
  } else {
2048
2055
  parts.push(
@@ -2075,7 +2082,7 @@ function renderHowToAdapt(profile) {
2075
2082
  if (!profile) {
2076
2083
  return `### Como Adaptar
2077
2084
 
2078
- Sem informa\xE7\xE3o de n\xEDvel espec\xEDfico deste curso \u2014 comece explicativo mas breve; calibre pelas primeiras respostas do aluno. Na d\xFAvida, prefira "porqu\xEA antes do como".`;
2085
+ Sem informa\xE7\xE3o de n\xEDvel espec\xEDfico deste curso \u2014 o brief base N\xC3O vale como n\xEDvel neste assunto. Comece explicativo mas breve; calibre pelo que o aluno demonstrar aqui. Na d\xFAvida, prefira "porqu\xEA antes do como".`;
2079
2086
  }
2080
2087
  if (profile.learnerLevel === "beginner") {
2081
2088
  return `### Como Adaptar
@@ -2115,6 +2122,9 @@ Voc\xEA tem DUAS fontes que te orientam, e elas resolvem conflitos assim:
2115
2122
  | ----------------------------- | ----------------------------- | ---------------------------------------------- |
2116
2123
  | Sua **persona** (acima) | voz, tom, nome, express\xF5es | usar catchphrase do creator ao cumprimentar |
2117
2124
  | **Contexto do aluno** (acima) | profundidade, ritmo, exemplos | "vou come\xE7ar pelo porqu\xEA" (iniciante) |
2125
+ | **Brief base (T1)** | quem ele \xE9 (nomes, projetos) | exemplos com o contexto real dele |
2126
+
2127
+ O brief base NUNCA define o n\xEDvel neste curso \u2014 o n\xEDvel vem do campo "Neste Curso" e do que o aluno demonstra nas respostas aqui.
2118
2128
 
2119
2129
  **Se conflitam, ambos valem ao mesmo tempo.** Voc\xEA mant\xE9m sua voz E adapta a profundidade. Exemplo: persona \`technical\` + aluno \`beginner\` \u2014 voc\xEA explica conceitos t\xE9cnicos de forma precisa MAS sempre come\xE7a pelo "porqu\xEA" antes do "como", e traduz jarg\xE3o na primeira vez que usa.`;
2120
2130
  }
@@ -2153,6 +2163,33 @@ Quando o aluno passou na li\xE7\xE3o:
2153
2163
  - Pergunte se ele quer seguir ou pausar.
2154
2164
  - Ao seguir \u2014 \`tostudy next\` (sil\xEAncio) \u2014 apresente a pr\xF3xima.`;
2155
2165
  }
2166
+ function renderMemoryLoad() {
2167
+ return `## Mem\xF3ria do Aluno
2168
+
2169
+ No in\xEDcio de cada sess\xE3o, rode \`tostudy memory --json\` em sil\xEAncio. Use as dificuldades conhecidas e os pontos fortes para calibrar ritmo e exemplos \u2014 reforce onde ele travou, n\xE3o repita o que ele j\xE1 domina. NUNCA mostre esse bloco cru ao aluno.`;
2170
+ }
2171
+ function renderStudentAuthorship() {
2172
+ return `## Autoria do Aluno (OBRIGAT\xD3RIO)
2173
+
2174
+ Em li\xE7\xF5es de **exerc\xEDcio, quiz ou checkpoint**, a resposta \xE9 do ALUNO \u2014 nunca sua.
2175
+
2176
+ 1. **Nunca redija a resposta sozinho.** Antes de escrever qualquer arquivo de resposta, pergunte ao aluno as decis\xF5es que o exerc\xEDcio pede (par\xE2metros, valores, escolhas \u2014 "qual dura\xE7\xE3o voc\xEA quer no gancho?", "qual curva voc\xEA escolhe para a aterrissagem?"). Rascunhe A PARTIR das respostas dele, com ele.
2177
+ 2. **S\xF3 rode \`tostudy validate\` depois que o aluno revisar e confirmar a resposta como dele.** "Sim", "pr\xF3xima" ou "monte o arquivo" N\xC3O \xE9 resposta \u2014 \xE9 a deixa para voc\xEA perguntar a primeira decis\xE3o.
2178
+ 3. **S\xF3 rode \`tostudy next\` quando o aluno pedir para avan\xE7ar com as pr\xF3prias palavras.** Nunca encadeie validate \u2192 next sem uma fala do aluno entre os dois.
2179
+ 4. Isso vale em QUALQUER abordagem de ensino, incluindo explora\xE7\xE3o com IA: voc\xEA demonstra ferramentas e executa passos JUNTO com o aluno, mas exerc\xEDcios e checkpoints medem o que ELE decide. Sem as decis\xF5es dele, n\xE3o h\xE1 o que validar.`;
2180
+ }
2181
+ function renderConceptBeforeApplication() {
2182
+ return `## Conceito Antes da Aplica\xE7\xE3o (OBRIGAT\xD3RIO)
2183
+
2184
+ 1. **N\xE3o cobre a aplica\xE7\xE3o de um termo que o aluno ainda n\xE3o explicou.** Antes de pedir uma decis\xE3o t\xE9cnica sobre um conceito novo, pe\xE7a que ele o descreva com as pr\xF3prias palavras. Se ele n\xE3o souber, ensine \u2014 analogia + exemplo \u2014 e s\xF3 ent\xE3o volte ao exerc\xEDcio.
2185
+ 2. **"N\xE3o entendi" trava a aplica\xE7\xE3o.** Se o aluno pedir mais did\xE1tica ou disser que n\xE3o entendeu, explique por outro \xE2ngulo ou rode \`tostudy theory\` (em sil\xEAncio) e traduza. NUNCA repita a mesma pergunta de aplica\xE7\xE3o sem ensinar algo novo antes.
2186
+ 3. **Dificuldade registrada = ritmo did\xE1tico.** Se a mem\xF3ria (\`tostudy memory\`) mostra dificuldades ou o aluno pediu ritmo mais did\xE1tico, priorize cheques de conceito antes de cada exerc\xEDcio \u2014 mesmo que o brief base diga "avan\xE7ado". O n\xEDvel dele NESTE curso \xE9 o que ele demonstra aqui.`;
2187
+ }
2188
+ function renderTrainingCaseFraming() {
2189
+ return `## Enquadramento de Caso de Treino (OBRIGAT\xD3RIO)
2190
+
2191
+ 1. **SEMPRE identifique personas ou datasets fict\xEDcios de aulas realworld como cen\xE1rios de treino.** Fa\xE7a isso ANTES de apresentar a persona, os dados ou qualquer resultado derivado deles. **NUNCA apresente a sa\xEDda de um caso de treino como resultado do pr\xF3prio neg\xF3cio do aluno.** Esta regra se aplica a TODOS os tipos de aula \u2014 incluindo realworld, checkpoint, intro, conceito e exerc\xEDcio.`;
2192
+ }
2156
2193
  function renderSilentTools() {
2157
2194
  return `## Ferramentas Silenciosas
2158
2195
 
@@ -2164,6 +2201,8 @@ Estes comandos s\xE3o suas ferramentas. Rode em sil\xEAncio (sem anunciar), use
2164
2201
  - \`tostudy next --json\` \u2014 avan\xE7a para a pr\xF3xima li\xE7\xE3o.
2165
2202
  - \`tostudy hint --json\` \u2014 dica progressiva (3 n\xEDveis).
2166
2203
  - \`tostudy validate <arquivo>\` \u2014 valida exerc\xEDcio (exit 0 = passou, 1 = falhou).
2204
+ - \`tostudy theory --json\` \u2014 micro-aula extra na li\xE7\xE3o atual (aceita \`--focus "<tema>"\`). Use quando o aluno disser "n\xE3o entendi" ou pedir mais did\xE1tica.
2205
+ - \`tostudy level --json\` \u2014 v\xEA/ajusta o n\xEDvel de scaffolding dos exerc\xEDcios (os n\xEDveis DISPON\xCDVEIS v\xEAm no \`--json\`; ofere\xE7a s\xF3 esses). Use quando o exerc\xEDcio est\xE1 acima ou abaixo do ponto do aluno.
2167
2206
 
2168
2207
  - \`tostudy insight <tipo> "<descri\xE7\xE3o>" --json\` \u2014 registra na mem\xF3ria do curso um sinal cognitivo do aluno. Tipos: \`difficulty\` (travou ou confundiu um conceito), \`breakthrough\` (teve um clique, dominou algo), \`question\` (d\xFAvida recorrente).
2169
2208
 
@@ -2177,6 +2216,7 @@ function renderHandlingSituations() {
2177
2216
  | Situa\xE7\xE3o | O que fazer |
2178
2217
  | ------------------------------------- | ---------------------------------------------------------- |
2179
2218
  | \`tostudy validate\` falhou | Mostrar feedback, sugerir \`tostudy hint\`, tentar de novo |
2219
+ | Aluno diz "n\xE3o entendi" / quer did\xE1tica | Explicar por outro \xE2ngulo, \`tostudy theory\` (em sil\xEAncio); n\xE3o repetir a pergunta de aplica\xE7\xE3o |
2180
2220
  | "Nenhuma li\xE7\xE3o ativa" | Rodar \`tostudy start\` para carregar m\xF3dulo |
2181
2221
  | Comando retorna erro | Verificar \`tostudy doctor\` para diagn\xF3stico |
2182
2222
  | Aluno perdido / sem saber o que fazer | Rodar \`tostudy progress\` e resumir estado atual |
@@ -2195,7 +2235,7 @@ function renderTechnicalReference() {
2195
2235
  }
2196
2236
  function renderFooter(course) {
2197
2237
  return `<!-- tostudy-course-id: ${course.courseId} -->
2198
- <!-- tostudy-template-version: 3 -->`;
2238
+ <!-- tostudy-template-version: 4 -->`;
2199
2239
  }
2200
2240
  var TONE_LABELS, LEVEL_LABELS;
2201
2241
  var init_instruction_template_v3 = __esm({
@@ -3439,7 +3479,7 @@ var CLI_VERSION;
3439
3479
  var init_version = __esm({
3440
3480
  "src/version.ts"() {
3441
3481
  "use strict";
3442
- CLI_VERSION = true ? "0.16.12" : "0.7.1";
3482
+ CLI_VERSION = true ? "0.17.0" : "0.7.1";
3443
3483
  }
3444
3484
  });
3445
3485
 
@@ -19663,6 +19703,13 @@ var init_credit_payment_enums = __esm({
19663
19703
  }
19664
19704
  });
19665
19705
 
19706
+ // ../../packages/types/src/meeting-integrations.ts
19707
+ var init_meeting_integrations = __esm({
19708
+ "../../packages/types/src/meeting-integrations.ts"() {
19709
+ "use strict";
19710
+ }
19711
+ });
19712
+
19666
19713
  // ../../packages/types/src/referral.ts
19667
19714
  var init_referral = __esm({
19668
19715
  "../../packages/types/src/referral.ts"() {
@@ -19686,6 +19733,7 @@ var init_src = __esm({
19686
19733
  init_lesson_review();
19687
19734
  init_errors4();
19688
19735
  init_credit_payment_enums();
19736
+ init_meeting_integrations();
19689
19737
  init_referral();
19690
19738
  }
19691
19739
  });