tutanus 0.13.3 → 0.13.4

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.
Files changed (169) hide show
  1. package/dist/analysts/plugins/detector-markdown.js +2 -2
  2. package/dist/analysts/plugins/detector-markdown.js.map +1 -1
  3. package/dist/bin/cli-bootstrap.js +7 -7
  4. package/dist/bin/cli-bootstrap.js.map +1 -1
  5. package/dist/bin/index.js +7 -7
  6. package/dist/bin/index.js.map +1 -1
  7. package/dist/cli/commands/command-github-actions.d.ts.map +1 -1
  8. package/dist/cli/commands/command-github-actions.js +1 -3
  9. package/dist/cli/commands/command-github-actions.js.map +1 -1
  10. package/dist/cli/commands/command-guardian.js +1 -1
  11. package/dist/cli/commands/command-guardian.js.map +1 -1
  12. package/dist/cli/commands/command-marketplace.js +22 -22
  13. package/dist/cli/commands/command-marketplace.js.map +1 -1
  14. package/dist/cli/commands/command-prune.js +1 -1
  15. package/dist/cli/commands/command-prune.js.map +1 -1
  16. package/dist/cli/commands/command-reverter.js +6 -6
  17. package/dist/cli/commands/command-reverter.js.map +1 -1
  18. package/dist/core/messages/en/cli/cli-bin-messages.d.ts +7 -0
  19. package/dist/core/messages/en/cli/cli-bin-messages.d.ts.map +1 -1
  20. package/dist/core/messages/en/cli/cli-bin-messages.js +7 -0
  21. package/dist/core/messages/en/cli/cli-bin-messages.js.map +1 -1
  22. package/dist/core/messages/en/cli/cli-command-github-actions-messages.d.ts +1 -0
  23. package/dist/core/messages/en/cli/cli-command-github-actions-messages.d.ts.map +1 -1
  24. package/dist/core/messages/en/cli/cli-command-github-actions-messages.js +1 -0
  25. package/dist/core/messages/en/cli/cli-command-github-actions-messages.js.map +1 -1
  26. package/dist/core/messages/en/cli/cli-command-guardian-messages.d.ts +2 -1
  27. package/dist/core/messages/en/cli/cli-command-guardian-messages.d.ts.map +1 -1
  28. package/dist/core/messages/en/cli/cli-command-guardian-messages.js +2 -1
  29. package/dist/core/messages/en/cli/cli-command-guardian-messages.js.map +1 -1
  30. package/dist/core/messages/en/cli/cli-command-marketplace-messages.d.ts +19 -0
  31. package/dist/core/messages/en/cli/cli-command-marketplace-messages.d.ts.map +1 -1
  32. package/dist/core/messages/en/cli/cli-command-marketplace-messages.js +19 -0
  33. package/dist/core/messages/en/cli/cli-command-marketplace-messages.js.map +1 -1
  34. package/dist/core/messages/en/cli/cli-command-prune-messages.d.ts +1 -0
  35. package/dist/core/messages/en/cli/cli-command-prune-messages.d.ts.map +1 -1
  36. package/dist/core/messages/en/cli/cli-command-prune-messages.js +1 -0
  37. package/dist/core/messages/en/cli/cli-command-prune-messages.js.map +1 -1
  38. package/dist/core/messages/en/cli/cli-command-reverter-messages.d.ts +6 -0
  39. package/dist/core/messages/en/cli/cli-command-reverter-messages.d.ts.map +1 -1
  40. package/dist/core/messages/en/cli/cli-command-reverter-messages.js +6 -0
  41. package/dist/core/messages/en/cli/cli-command-reverter-messages.js.map +1 -1
  42. package/dist/core/messages/en/guardian/guardian-messages.d.ts +3 -0
  43. package/dist/core/messages/en/guardian/guardian-messages.d.ts.map +1 -1
  44. package/dist/core/messages/en/guardian/guardian-messages.js +3 -0
  45. package/dist/core/messages/en/guardian/guardian-messages.js.map +1 -1
  46. package/dist/core/messages/en/guardian/watcher-hidden-messages.d.ts +1 -0
  47. package/dist/core/messages/en/guardian/watcher-hidden-messages.d.ts.map +1 -1
  48. package/dist/core/messages/en/guardian/watcher-hidden-messages.js +1 -0
  49. package/dist/core/messages/en/guardian/watcher-hidden-messages.js.map +1 -1
  50. package/dist/core/messages/en/licenses/licenses-messages.d.ts +1 -0
  51. package/dist/core/messages/en/licenses/licenses-messages.d.ts.map +1 -1
  52. package/dist/core/messages/en/licenses/licenses-messages.js +1 -0
  53. package/dist/core/messages/en/licenses/licenses-messages.js.map +1 -1
  54. package/dist/core/messages/ja/cli/cli-bin-messages.d.ts +7 -0
  55. package/dist/core/messages/ja/cli/cli-bin-messages.d.ts.map +1 -1
  56. package/dist/core/messages/ja/cli/cli-bin-messages.js +7 -0
  57. package/dist/core/messages/ja/cli/cli-bin-messages.js.map +1 -1
  58. package/dist/core/messages/ja/cli/cli-command-github-actions-messages.d.ts +1 -0
  59. package/dist/core/messages/ja/cli/cli-command-github-actions-messages.d.ts.map +1 -1
  60. package/dist/core/messages/ja/cli/cli-command-github-actions-messages.js +1 -0
  61. package/dist/core/messages/ja/cli/cli-command-github-actions-messages.js.map +1 -1
  62. package/dist/core/messages/ja/cli/cli-command-guardian-messages.d.ts +1 -0
  63. package/dist/core/messages/ja/cli/cli-command-guardian-messages.d.ts.map +1 -1
  64. package/dist/core/messages/ja/cli/cli-command-guardian-messages.js +2 -1
  65. package/dist/core/messages/ja/cli/cli-command-guardian-messages.js.map +1 -1
  66. package/dist/core/messages/ja/cli/cli-command-marketplace-messages.d.ts +19 -0
  67. package/dist/core/messages/ja/cli/cli-command-marketplace-messages.d.ts.map +1 -1
  68. package/dist/core/messages/ja/cli/cli-command-marketplace-messages.js +19 -0
  69. package/dist/core/messages/ja/cli/cli-command-marketplace-messages.js.map +1 -1
  70. package/dist/core/messages/ja/cli/cli-command-prune-messages.d.ts +1 -0
  71. package/dist/core/messages/ja/cli/cli-command-prune-messages.d.ts.map +1 -1
  72. package/dist/core/messages/ja/cli/cli-command-prune-messages.js +1 -0
  73. package/dist/core/messages/ja/cli/cli-command-prune-messages.js.map +1 -1
  74. package/dist/core/messages/ja/cli/cli-command-reverter-messages.d.ts +6 -0
  75. package/dist/core/messages/ja/cli/cli-command-reverter-messages.d.ts.map +1 -1
  76. package/dist/core/messages/ja/cli/cli-command-reverter-messages.js +6 -0
  77. package/dist/core/messages/ja/cli/cli-command-reverter-messages.js.map +1 -1
  78. package/dist/core/messages/ja/guardian/guardian-messages.d.ts +3 -0
  79. package/dist/core/messages/ja/guardian/guardian-messages.d.ts.map +1 -1
  80. package/dist/core/messages/ja/guardian/guardian-messages.js +3 -0
  81. package/dist/core/messages/ja/guardian/guardian-messages.js.map +1 -1
  82. package/dist/core/messages/ja/guardian/watcher-hidden-messages.d.ts +1 -0
  83. package/dist/core/messages/ja/guardian/watcher-hidden-messages.d.ts.map +1 -1
  84. package/dist/core/messages/ja/guardian/watcher-hidden-messages.js +1 -0
  85. package/dist/core/messages/ja/guardian/watcher-hidden-messages.js.map +1 -1
  86. package/dist/core/messages/ja/licenses/licenses-messages.d.ts +1 -0
  87. package/dist/core/messages/ja/licenses/licenses-messages.d.ts.map +1 -1
  88. package/dist/core/messages/ja/licenses/licenses-messages.js +1 -0
  89. package/dist/core/messages/ja/licenses/licenses-messages.js.map +1 -1
  90. package/dist/core/messages/pt/cli/cli-bin-messages.d.ts +7 -0
  91. package/dist/core/messages/pt/cli/cli-bin-messages.d.ts.map +1 -1
  92. package/dist/core/messages/pt/cli/cli-bin-messages.js +7 -0
  93. package/dist/core/messages/pt/cli/cli-bin-messages.js.map +1 -1
  94. package/dist/core/messages/pt/cli/cli-command-github-actions-messages.d.ts +1 -0
  95. package/dist/core/messages/pt/cli/cli-command-github-actions-messages.d.ts.map +1 -1
  96. package/dist/core/messages/pt/cli/cli-command-github-actions-messages.js +1 -0
  97. package/dist/core/messages/pt/cli/cli-command-github-actions-messages.js.map +1 -1
  98. package/dist/core/messages/pt/cli/cli-command-guardian-messages.d.ts +1 -0
  99. package/dist/core/messages/pt/cli/cli-command-guardian-messages.d.ts.map +1 -1
  100. package/dist/core/messages/pt/cli/cli-command-guardian-messages.js +2 -1
  101. package/dist/core/messages/pt/cli/cli-command-guardian-messages.js.map +1 -1
  102. package/dist/core/messages/pt/cli/cli-command-marketplace-messages.d.ts +19 -0
  103. package/dist/core/messages/pt/cli/cli-command-marketplace-messages.d.ts.map +1 -1
  104. package/dist/core/messages/pt/cli/cli-command-marketplace-messages.js +19 -0
  105. package/dist/core/messages/pt/cli/cli-command-marketplace-messages.js.map +1 -1
  106. package/dist/core/messages/pt/cli/cli-command-prune-messages.d.ts +1 -0
  107. package/dist/core/messages/pt/cli/cli-command-prune-messages.d.ts.map +1 -1
  108. package/dist/core/messages/pt/cli/cli-command-prune-messages.js +1 -0
  109. package/dist/core/messages/pt/cli/cli-command-prune-messages.js.map +1 -1
  110. package/dist/core/messages/pt/cli/cli-command-reverter-messages.d.ts +6 -0
  111. package/dist/core/messages/pt/cli/cli-command-reverter-messages.d.ts.map +1 -1
  112. package/dist/core/messages/pt/cli/cli-command-reverter-messages.js +6 -0
  113. package/dist/core/messages/pt/cli/cli-command-reverter-messages.js.map +1 -1
  114. package/dist/core/messages/pt/guardian/guardian-messages.d.ts +3 -0
  115. package/dist/core/messages/pt/guardian/guardian-messages.d.ts.map +1 -1
  116. package/dist/core/messages/pt/guardian/guardian-messages.js +3 -0
  117. package/dist/core/messages/pt/guardian/guardian-messages.js.map +1 -1
  118. package/dist/core/messages/pt/guardian/watcher-hidden-messages.d.ts +1 -0
  119. package/dist/core/messages/pt/guardian/watcher-hidden-messages.d.ts.map +1 -1
  120. package/dist/core/messages/pt/guardian/watcher-hidden-messages.js +1 -0
  121. package/dist/core/messages/pt/guardian/watcher-hidden-messages.js.map +1 -1
  122. package/dist/core/messages/pt/licenses/licenses-messages.d.ts +1 -0
  123. package/dist/core/messages/pt/licenses/licenses-messages.d.ts.map +1 -1
  124. package/dist/core/messages/pt/licenses/licenses-messages.js +1 -0
  125. package/dist/core/messages/pt/licenses/licenses-messages.js.map +1 -1
  126. package/dist/core/messages/zh/cli/cli-bin-messages.d.ts +7 -0
  127. package/dist/core/messages/zh/cli/cli-bin-messages.d.ts.map +1 -1
  128. package/dist/core/messages/zh/cli/cli-bin-messages.js +7 -0
  129. package/dist/core/messages/zh/cli/cli-bin-messages.js.map +1 -1
  130. package/dist/core/messages/zh/cli/cli-command-github-actions-messages.d.ts +1 -0
  131. package/dist/core/messages/zh/cli/cli-command-github-actions-messages.d.ts.map +1 -1
  132. package/dist/core/messages/zh/cli/cli-command-github-actions-messages.js +1 -0
  133. package/dist/core/messages/zh/cli/cli-command-github-actions-messages.js.map +1 -1
  134. package/dist/core/messages/zh/cli/cli-command-guardian-messages.d.ts +2 -1
  135. package/dist/core/messages/zh/cli/cli-command-guardian-messages.d.ts.map +1 -1
  136. package/dist/core/messages/zh/cli/cli-command-guardian-messages.js +2 -1
  137. package/dist/core/messages/zh/cli/cli-command-guardian-messages.js.map +1 -1
  138. package/dist/core/messages/zh/cli/cli-command-marketplace-messages.d.ts +19 -0
  139. package/dist/core/messages/zh/cli/cli-command-marketplace-messages.d.ts.map +1 -1
  140. package/dist/core/messages/zh/cli/cli-command-marketplace-messages.js +19 -0
  141. package/dist/core/messages/zh/cli/cli-command-marketplace-messages.js.map +1 -1
  142. package/dist/core/messages/zh/cli/cli-command-prune-messages.d.ts +1 -0
  143. package/dist/core/messages/zh/cli/cli-command-prune-messages.d.ts.map +1 -1
  144. package/dist/core/messages/zh/cli/cli-command-prune-messages.js +1 -0
  145. package/dist/core/messages/zh/cli/cli-command-prune-messages.js.map +1 -1
  146. package/dist/core/messages/zh/cli/cli-command-reverter-messages.d.ts +6 -0
  147. package/dist/core/messages/zh/cli/cli-command-reverter-messages.d.ts.map +1 -1
  148. package/dist/core/messages/zh/cli/cli-command-reverter-messages.js +6 -0
  149. package/dist/core/messages/zh/cli/cli-command-reverter-messages.js.map +1 -1
  150. package/dist/core/messages/zh/guardian/guardian-messages.d.ts +3 -0
  151. package/dist/core/messages/zh/guardian/guardian-messages.d.ts.map +1 -1
  152. package/dist/core/messages/zh/guardian/guardian-messages.js +3 -0
  153. package/dist/core/messages/zh/guardian/guardian-messages.js.map +1 -1
  154. package/dist/core/messages/zh/guardian/watcher-hidden-messages.d.ts +1 -0
  155. package/dist/core/messages/zh/guardian/watcher-hidden-messages.d.ts.map +1 -1
  156. package/dist/core/messages/zh/guardian/watcher-hidden-messages.js +1 -0
  157. package/dist/core/messages/zh/guardian/watcher-hidden-messages.js.map +1 -1
  158. package/dist/core/messages/zh/licenses/licenses-messages.d.ts +1 -0
  159. package/dist/core/messages/zh/licenses/licenses-messages.d.ts.map +1 -1
  160. package/dist/core/messages/zh/licenses/licenses-messages.js +1 -0
  161. package/dist/core/messages/zh/licenses/licenses-messages.js.map +1 -1
  162. package/dist/guardian/records.d.ts.map +1 -1
  163. package/dist/guardian/records.js +3 -3
  164. package/dist/guardian/records.js.map +1 -1
  165. package/dist/guardian/sentinel.js +2 -2
  166. package/dist/guardian/sentinel.js.map +1 -1
  167. package/dist/guardian/watcher-hidden.js +1 -1
  168. package/dist/guardian/watcher-hidden.js.map +1 -1
  169. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"command-github-actions.js","sourceRoot":"","sources":["../../../src/cli/commands/command-github-actions.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: MIT\n\nimport 'dotenv/config';\n\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nimport { analistaGithubActions, analistaGithubActionsGlobal, autofixEngine, gerarRelatorio, obterDetectoresGithubActions, pontuarWorkflow, prepararDadosRelatorio } from '@analysts/github-actions';\nimport { iniciarServidorApp } from '@app/github';\nimport { ExitCode, sair } from '@cli/helpers';\nimport { aplicarCorrecoes, salvarArquivoCorrigido } from '@core/execution';\nimport { CliComandoGithubActionsMensagens, messages } from '@core/messages';\nimport { Command } from 'commander';\nimport ora from 'ora';\n\nimport type { ContextoExecucao, FormatoRelatorio, Ocorrencia, TecnicaAplicarResultado } from '@';\n\nconst SCORE_MAX = 100;\nconst SCORE_MIN = 0;\nconst PENALTY_PER_OCCURRENCE = 5;\nconst DEFAULT_GATE_THRESHOLD = 70;\nconst log = messages.log;\n\nfunction normalizarOcorrencias(result: TecnicaAplicarResultado): Ocorrencia[] {\n if (!result) return [];\n return Array.isArray(result) ? result : [result];\n}\n\nfunction lerDiretorioWorkflows(workflowDir: string): string[] {\n try {\n return fs.readdirSync(workflowDir).filter(arquivo => arquivo.endsWith('.yml') || arquivo.endsWith('.yaml'));\n } catch {\n return [];\n }\n}\n\nfunction lerArquivoWorkflow(wfPath: string): string | null {\n try {\n return fs.readFileSync(wfPath, 'utf-8');\n } catch {\n return null;\n }\n}\n\nfunction montarContextoExecucao(workflowDir: string, workflowFiles: string[]): ContextoExecucao {\n return {\n baseDir: workflowDir,\n arquivos: workflowFiles.map(wf => ({\n relPath: `.github/workflows/${wf}`,\n content: fs.readFileSync(path.join(workflowDir, wf), 'utf-8'),\n ast: null,\n fullCaminho: `.github/workflows/${wf}`\n }))\n };\n}\n\nfunction criarContextArquivo(wf: string, conteudo: string, workflowDir: string): ContextoExecucao {\n const relPath = `.github/workflows/${wf}`;\n return {\n baseDir: workflowDir,\n arquivos: [{\n relPath,\n content: conteudo,\n ast: null,\n fullCaminho: relPath\n }]\n };\n}\n\nasync function processarWorkflows(\n workflowDir: string,\n workflowFiles: string[]\n): Promise<{\n todasOcorrencias: Ocorrencia[];\n workflowsInfo: Array<{ nome: string; score: number; ocorrencias: number }>;\n tempoAnalise: number;\n}> {\n const startTime = Date.now();\n const todasOcorrencias: Ocorrencia[] = [];\n const workflowsInfo: Array<{ nome: string; score: number; ocorrencias: number }> = [];\n\n for (const wf of workflowFiles) {\n const wfPath = path.join(workflowDir, wf);\n const conteudo = fs.readFileSync(wfPath, 'utf-8');\n const relPath = `.github/workflows/${wf}`;\n const context = criarContextArquivo(wf, conteudo, workflowDir);\n const result = await analistaGithubActions.aplicar(conteudo, relPath, null, undefined, context);\n const ocorrencias = normalizarOcorrencias(result);\n const scoreResult = pontuarWorkflow(conteudo, relPath);\n workflowsInfo.push({ nome: wf, score: scoreResult.percentage, ocorrencias: ocorrencias.length });\n todasOcorrencias.push(...ocorrencias);\n }\n\n const contextGlobal = montarContextoExecucao(workflowDir, workflowFiles);\n const resultGlobal = await analistaGithubActionsGlobal.aplicar('', '', null, undefined, contextGlobal);\n todasOcorrencias.push(...normalizarOcorrencias(resultGlobal));\n\n const tempoAnalise = Date.now() - startTime;\n return { todasOcorrencias, workflowsInfo, tempoAnalise };\n}\n\nfunction calcularScoreGeral(workflowsInfo: Array<{ score: number }>): number {\n return workflowsInfo.length > 0\n ? Math.round(workflowsInfo.reduce((sum, item) => sum + item.score, 0) / workflowsInfo.length)\n : 100;\n}\n\nexport function comandoGithubActions(): Command {\n const cmd = new Command('github-actions').alias('gha').description(CliComandoGithubActionsMensagens.descricaoCmd);\n\n cmd.command('scan').alias('s').description(CliComandoGithubActionsMensagens.descricaoScan)\n .option('-p, --path <caminho>', CliComandoGithubActionsMensagens.optPath, '.')\n .option('-w, --workflow <arquivo>', CliComandoGithubActionsMensagens.optWorkflow)\n .option('-j, --json', 'Saída em JSON')\n .option('--compact', 'Saída compacta')\n .option('--fix', CliComandoGithubActionsMensagens.optFix)\n .option('--dry-run', CliComandoGithubActionsMensagens.optDryRun)\n .action(async (opts: {\n path?: string;\n workflow?: string;\n json?: boolean;\n compact?: boolean;\n fix?: boolean;\n dryRun?: boolean;\n }) => {\n const repoPath = path.resolve(opts.path || '.');\n const workflowDir = path.join(repoPath, '.github', 'workflows');\n const workflowFilesContent = lerDiretorioWorkflows(workflowDir);\n\n if (workflowFilesContent.length === 0) {\n log.erro(CliComandoGithubActionsMensagens.workflowDirNaoEncontrado);\n sair(ExitCode.Failure);\n return;\n }\n\n let workflowFiles: string[];\n if (opts.workflow) {\n const wfPath = path.join(workflowDir, opts.workflow);\n if (lerArquivoWorkflow(wfPath) === null) {\n log.erro(CliComandoGithubActionsMensagens.workflowNaoEncontrado(opts.workflow));\n sair(ExitCode.Failure);\n return;\n }\n workflowFiles = [opts.workflow];\n } else {\n workflowFiles = workflowFilesContent;\n }\n\n if (workflowFiles.length === 0) {\n log.info(CliComandoGithubActionsMensagens.nenhumWorkflowEncontrado);\n return;\n }\n\n const spinner = opts.json ? {\n text: '',\n start: () => spinner,\n succeed: () => spinner,\n fail: () => spinner\n } : ora({ text: 'Analisando workflows...', spinner: 'dots' }).start();\n\n try {\n const startTime = Date.now();\n const todasOcorrencias: Ocorrencia[] = [];\n const workflowsInfo: Array<{ nome: string; score: number; ocorrencias: number }> = [];\n\n for (const wf of workflowFiles) {\n const wfPath = path.join(workflowDir, wf);\n const conteudo = fs.readFileSync(wfPath, 'utf-8');\n const relPath = `.github/workflows/${wf}`;\n const context = criarContextArquivo(wf, conteudo, workflowDir);\n const result = await analistaGithubActions.aplicar(conteudo, relPath, null, undefined, context);\n const ocorrencias = normalizarOcorrencias(result);\n\n if (opts.fix) {\n const ocorrenciasComFix = ocorrencias.filter(ocorrencia => !!ocorrencia.correcao);\n let conteudoAtualizado = conteudo;\n if (ocorrenciasComFix.length > 0) {\n conteudoAtualizado = aplicarCorrecoes(conteudo, ocorrenciasComFix);\n }\n const detectores = obterDetectoresGithubActions();\n const fixers = autofixEngine.extrairFixers(detectores);\n if (fixers.length > 0) {\n conteudoAtualizado = autofixEngine.aplicarFixes(conteudoAtualizado, fixers);\n }\n if (conteudoAtualizado !== conteudo) {\n if (opts.dryRun) {\n log.info(CliComandoGithubActionsMensagens.dryRunAlteracoes(wf));\n log.info(conteudoAtualizado);\n } else {\n salvarArquivoCorrigido(wfPath, conteudoAtualizado);\n log.sucesso(CliComandoGithubActionsMensagens.correcoesAplicadas(wf));\n }\n }\n }\n\n const score = Math.max(SCORE_MIN, SCORE_MAX - ocorrencias.length * PENALTY_PER_OCCURRENCE);\n workflowsInfo.push({ nome: wf, score, ocorrencias: ocorrencias.length });\n todasOcorrencias.push(...ocorrencias);\n }\n\n const contextGlobal = montarContextoExecucao(workflowDir, workflowFiles);\n const resultGlobal = await analistaGithubActionsGlobal.aplicar('', '', null, undefined, contextGlobal);\n todasOcorrencias.push(...normalizarOcorrencias(resultGlobal));\n\n const tempoAnalise = Date.now() - startTime;\n const scoreGeral = calcularScoreGeral(workflowsInfo);\n\n spinner.succeed(CliComandoGithubActionsMensagens.analiseConcluida(workflowFiles.length, todasOcorrencias.length));\n\n if (opts.json) {\n const dados = prepararDadosRelatorio(todasOcorrencias, path.basename(repoPath), tempoAnalise, workflowsInfo);\n console.log(JSON.stringify(dados, null, 2));\n return;\n }\n if (opts.compact) {\n log.info(CliComandoGithubActionsMensagens.scoreCompacto(scoreGeral, workflowFiles.length, todasOcorrencias.length));\n return;\n }\n\n log.info(CliComandoGithubActionsMensagens.scoreGeral(scoreGeral));\n log.info(CliComandoGithubActionsMensagens.workflowsAnalisados(workflowFiles.length));\n log.info(CliComandoGithubActionsMensagens.totalOcorrencias(todasOcorrencias.length));\n log.info(CliComandoGithubActionsMensagens.tempoAnalise(tempoAnalise));\n log.info(CliComandoGithubActionsMensagens.workflowsTitulo);\n for (const wf of workflowsInfo) {\n const icon = wf.score >= 80 ? '[OK]' : wf.score >= 50 ? '[AVISO]' : '[ERRO]';\n log.info(CliComandoGithubActionsMensagens.workflowItem(icon, wf.nome, wf.score, wf.ocorrencias));\n }\n if (todasOcorrencias.length > 0) {\n log.info(CliComandoGithubActionsMensagens.ocorrenciasTitulo);\n for (const ocorrencia of todasOcorrencias.slice(0, 20)) {\n const nivel = ocorrencia.nivel || 'info';\n const nivelIcon = nivel === 'erro' ? '[RED]' : nivel === 'aviso' ? '[YELLOW]' : '[BLUE]';\n log.info(CliComandoGithubActionsMensagens.ocorrenciaItem(nivelIcon, ocorrencia.relPath, ocorrencia.linha ?? 0, ocorrencia.mensagem));\n }\n if (todasOcorrencias.length > 20) {\n log.info(CliComandoGithubActionsMensagens.maisOcorrencias(todasOcorrencias.length - 20));\n }\n }\n } catch (err) {\n spinner.fail(CliComandoGithubActionsMensagens.erroAnalise);\n log.erro(err instanceof Error ? err.message : String(err));\n sair(ExitCode.Failure);\n }\n });\n\n cmd.command('report').alias('r').description(CliComandoGithubActionsMensagens.descricaoReport)\n .option('-p, --path <caminho>', CliComandoGithubActionsMensagens.optPath, '.')\n .option('-f, --format <formato>', 'Formato do relatório (json, markdown, html, csv)', 'markdown')\n .option('-o, --output <arquivo>', 'Arquivo de saída')\n .option('--titulo <titulo>', 'Título do relatório')\n .option('--no-detalhes', CliComandoGithubActionsMensagens.optNoDetalhes)\n .action(async (opts: {\n path?: string;\n format?: string;\n output?: string;\n titulo?: string;\n detalhes?: boolean;\n }) => {\n const repoPath = path.resolve(opts.path || '.');\n const workflowDir = path.join(repoPath, '.github', 'workflows');\n const workflowFiles = lerDiretorioWorkflows(workflowDir);\n\n if (workflowFiles.length === 0) {\n log.erro(CliComandoGithubActionsMensagens.workflowDirNaoEncontrado);\n sair(ExitCode.Failure);\n return;\n }\n\n const formato = opts.format as FormatoRelatorio;\n if (!['json', 'markdown', 'html', 'csv'].includes(formato)) {\n log.erro(CliComandoGithubActionsMensagens.formatoInvalido(formato));\n sair(ExitCode.Failure);\n return;\n }\n\n const spinner = ora({ text: 'Gerando relatório...', spinner: 'dots' }).start();\n\n try {\n const { todasOcorrencias, workflowsInfo, tempoAnalise } = await processarWorkflows(workflowDir, workflowFiles);\n const output = opts.output || `github-actions-report.${formato === 'markdown' ? 'md' : formato}`;\n const dados = prepararDadosRelatorio(todasOcorrencias, path.basename(repoPath), tempoAnalise, workflowsInfo);\n await gerarRelatorio(dados, {\n formato,\n output,\n titulo: opts.titulo,\n incluirDetalhes: opts.detalhes !== false\n });\n spinner.succeed(CliComandoGithubActionsMensagens.relatorioGerado(output));\n log.info(CliComandoGithubActionsMensagens.formatoRelatorio(formato));\n log.info(CliComandoGithubActionsMensagens.scoreReport(dados.scoreGeral));\n log.info(CliComandoGithubActionsMensagens.ocorrenciasReport(todasOcorrencias.length));\n } catch (err) {\n spinner.fail(CliComandoGithubActionsMensagens.erroGerarRelatorio);\n log.erro(err instanceof Error ? err.message : String(err));\n sair(ExitCode.Failure);\n }\n });\n\n cmd.command('gate').alias('g').description(CliComandoGithubActionsMensagens.descricaoGate)\n .option('-p, --path <caminho>', CliComandoGithubActionsMensagens.optPath, '.')\n .option('-t, --threshold <numero>', 'Score mínimo aceitável (0-100)', DEFAULT_GATE_THRESHOLD.toString())\n .option('-w, --workflow <arquivo>', 'Verificar workflow específico')\n .option('-j, --json', 'Saída em JSON para consumo externo')\n .option('--fail-on <nivel>', 'Nível mínimo para falhar (erro, aviso, info)', 'erro')\n .action(async (opts: {\n path?: string;\n threshold?: string;\n workflow?: string;\n json?: boolean;\n failOn?: string;\n }) => {\n const repoPath = path.resolve(opts.path || '.');\n const workflowDir = path.join(repoPath, '.github', 'workflows');\n const threshold = parseInt(opts.threshold || DEFAULT_GATE_THRESHOLD.toString(), 10);\n const workflowFilesContent = lerDiretorioWorkflows(workflowDir);\n\n if (workflowFilesContent.length === 0) {\n if (opts.json) {\n console.log(JSON.stringify({ success: false, error: CliComandoGithubActionsMensagens.workflowDirNaoEncontrado }));\n } else {\n log.erro(CliComandoGithubActionsMensagens.workflowDirNaoEncontrado);\n }\n sair(ExitCode.Failure);\n return;\n }\n\n let workflowFiles: string[];\n if (opts.workflow) {\n const wfPath = path.join(workflowDir, opts.workflow);\n if (lerArquivoWorkflow(wfPath) === null) {\n if (opts.json) {\n console.log(JSON.stringify({ success: false, error: CliComandoGithubActionsMensagens.workflowNaoEncontrado(opts.workflow) }));\n } else {\n log.erro(CliComandoGithubActionsMensagens.workflowNaoEncontrado(opts.workflow));\n }\n sair(ExitCode.Failure);\n return;\n }\n workflowFiles = [opts.workflow];\n } else {\n workflowFiles = workflowFilesContent;\n }\n\n if (workflowFiles.length === 0) {\n if (opts.json) {\n console.log(JSON.stringify({ success: true, score: SCORE_MAX, message: CliComandoGithubActionsMensagens.nenhumWorkflowEncontrado }));\n } else {\n log.info(CliComandoGithubActionsMensagens.nenhumWorkflowEncontrado);\n }\n return;\n }\n\n try {\n const { todasOcorrencias, workflowsInfo, tempoAnalise: _tempoAnalise } = await processarWorkflows(workflowDir, workflowFiles);\n const scoreGeral = calcularScoreGeral(workflowsInfo);\n const erros = todasOcorrencias.filter(ocorrencia => ocorrencia.nivel === 'erro').length;\n const avisos = todasOcorrencias.filter(ocorrencia => ocorrencia.nivel === 'aviso').length;\n\n let passou = true;\n const motivosFalha: string[] = [];\n\n if (scoreGeral < threshold) {\n passou = false;\n motivosFalha.push(`Score ${scoreGeral} abaixo do threshold ${threshold}`);\n }\n if (opts.failOn === 'erro' && erros > 0) {\n passou = false;\n motivosFalha.push(`${erros} erro(s) crítico(s) encontrado(s)`);\n }\n if (opts.failOn === 'aviso' && erros + avisos > 0) {\n passou = false;\n motivosFalha.push(`${erros + avisos} erro(s)/aviso(s) encontrado(s)`);\n }\n\n const resultado = {\n success: passou,\n score: scoreGeral,\n threshold,\n workflows: workflowsInfo,\n ocorrencias: {\n total: todasOcorrencias.length,\n erros,\n avisos,\n info: todasOcorrencias.filter(ocorrencia => ocorrencia.nivel === 'info').length\n },\n motivosFalha: passou ? [] : motivosFalha\n };\n\n if (opts.json) {\n console.log(JSON.stringify(resultado, null, 2));\n } else if (passou) {\n log.sucesso(CliComandoGithubActionsMensagens.gatePassou(scoreGeral, threshold));\n } else {\n log.erro(CliComandoGithubActionsMensagens.gateFalhou(scoreGeral, threshold));\n for (const motivo of motivosFalha) {\n log.erro(CliComandoGithubActionsMensagens.gateFalhaMotivo(motivo));\n }\n }\n\n if (!passou) sair(ExitCode.Failure);\n } catch (err) {\n log.erro(err instanceof Error ? err.message : String(err));\n sair(ExitCode.Failure);\n }\n });\n\n cmd.command('app').description(CliComandoGithubActionsMensagens.descricaoApp)\n .option('-p, --port <number>', 'Porta do servidor', process.env.TUTANUS_API_PORT || process.env.PORT || '3000')\n .action(async (opts: { port: string }) => {\n const appId = process.env.GITHUB_APP_ID;\n const privateKey = process.env.GITHUB_PRIVATE_KEY;\n const webhookSecret = process.env.GITHUB_WEBHOOK_SECRET;\n if (!appId || !privateKey || !webhookSecret) {\n log.erro(CliComandoGithubActionsMensagens.appSetupRequired);\n log.erro(' - GITHUB_APP_ID');\n log.erro(' - GITHUB_PRIVATE_KEY');\n log.erro(' - GITHUB_WEBHOOK_SECRET');\n log.info(CliComandoGithubActionsMensagens.appDicaEnv);\n sair(ExitCode.Failure);\n return;\n }\n try {\n await iniciarServidorApp({\n appId,\n privateKey: privateKey.replace(/\\\\n/g, '\\n'),\n webhookSecret,\n port: parseInt(opts.port, 10),\n });\n } catch (err) {\n log.erro(CliComandoGithubActionsMensagens.erroIniciarServidor(err instanceof Error ? err.message : String(err)));\n sair(ExitCode.Failure);\n }\n });\n\n return cmd;\n}\n"]}
1
+ {"version":3,"file":"command-github-actions.js","sourceRoot":"","sources":["../../../src/cli/commands/command-github-actions.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: MIT\n\nimport 'dotenv/config';\n\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nimport { analistaGithubActions, analistaGithubActionsGlobal, autofixEngine, gerarRelatorio, obterDetectoresGithubActions, pontuarWorkflow, prepararDadosRelatorio } from '@analysts/github-actions';\nimport { iniciarServidorApp } from '@app/github';\nimport { ExitCode, sair } from '@cli/helpers';\nimport { aplicarCorrecoes, salvarArquivoCorrigido } from '@core/execution';\nimport { CliComandoGithubActionsMensagens, messages } from '@core/messages';\nimport { Command } from 'commander';\nimport ora from 'ora';\n\nimport type { ContextoExecucao, FormatoRelatorio, Ocorrencia, TecnicaAplicarResultado } from '@';\n\nconst SCORE_MAX = 100;\nconst SCORE_MIN = 0;\nconst PENALTY_PER_OCCURRENCE = 5;\nconst DEFAULT_GATE_THRESHOLD = 70;\nconst log = messages.log;\n\nfunction normalizarOcorrencias(result: TecnicaAplicarResultado): Ocorrencia[] {\n if (!result) return [];\n return Array.isArray(result) ? result : [result];\n}\n\nfunction lerDiretorioWorkflows(workflowDir: string): string[] {\n try {\n return fs.readdirSync(workflowDir).filter(arquivo => arquivo.endsWith('.yml') || arquivo.endsWith('.yaml'));\n } catch {\n return [];\n }\n}\n\nfunction lerArquivoWorkflow(wfPath: string): string | null {\n try {\n return fs.readFileSync(wfPath, 'utf-8');\n } catch {\n return null;\n }\n}\n\nfunction montarContextoExecucao(workflowDir: string, workflowFiles: string[]): ContextoExecucao {\n return {\n baseDir: workflowDir,\n arquivos: workflowFiles.map(wf => ({\n relPath: `.github/workflows/${wf}`,\n content: fs.readFileSync(path.join(workflowDir, wf), 'utf-8'),\n ast: null,\n fullCaminho: `.github/workflows/${wf}`\n }))\n };\n}\n\nfunction criarContextArquivo(wf: string, conteudo: string, workflowDir: string): ContextoExecucao {\n const relPath = `.github/workflows/${wf}`;\n return {\n baseDir: workflowDir,\n arquivos: [{\n relPath,\n content: conteudo,\n ast: null,\n fullCaminho: relPath\n }]\n };\n}\n\nasync function processarWorkflows(\n workflowDir: string,\n workflowFiles: string[]\n): Promise<{\n todasOcorrencias: Ocorrencia[];\n workflowsInfo: Array<{ nome: string; score: number; ocorrencias: number }>;\n tempoAnalise: number;\n}> {\n const startTime = Date.now();\n const todasOcorrencias: Ocorrencia[] = [];\n const workflowsInfo: Array<{ nome: string; score: number; ocorrencias: number }> = [];\n\n for (const wf of workflowFiles) {\n const wfPath = path.join(workflowDir, wf);\n const conteudo = fs.readFileSync(wfPath, 'utf-8');\n const relPath = `.github/workflows/${wf}`;\n const context = criarContextArquivo(wf, conteudo, workflowDir);\n const result = await analistaGithubActions.aplicar(conteudo, relPath, null, undefined, context);\n const ocorrencias = normalizarOcorrencias(result);\n const scoreResult = pontuarWorkflow(conteudo, relPath);\n workflowsInfo.push({ nome: wf, score: scoreResult.percentage, ocorrencias: ocorrencias.length });\n todasOcorrencias.push(...ocorrencias);\n }\n\n const contextGlobal = montarContextoExecucao(workflowDir, workflowFiles);\n const resultGlobal = await analistaGithubActionsGlobal.aplicar('', '', null, undefined, contextGlobal);\n todasOcorrencias.push(...normalizarOcorrencias(resultGlobal));\n\n const tempoAnalise = Date.now() - startTime;\n return { todasOcorrencias, workflowsInfo, tempoAnalise };\n}\n\nfunction calcularScoreGeral(workflowsInfo: Array<{ score: number }>): number {\n return workflowsInfo.length > 0\n ? Math.round(workflowsInfo.reduce((sum, item) => sum + item.score, 0) / workflowsInfo.length)\n : 100;\n}\n\nexport function comandoGithubActions(): Command {\n const cmd = new Command('github-actions').alias('gha').description(CliComandoGithubActionsMensagens.descricaoCmd);\n\n cmd.command('scan').alias('s').description(CliComandoGithubActionsMensagens.descricaoScan)\n .option('-p, --path <caminho>', CliComandoGithubActionsMensagens.optPath, '.')\n .option('-w, --workflow <arquivo>', CliComandoGithubActionsMensagens.optWorkflow)\n .option('-j, --json', 'Saída em JSON')\n .option('--compact', 'Saída compacta')\n .option('--fix', CliComandoGithubActionsMensagens.optFix)\n .option('--dry-run', CliComandoGithubActionsMensagens.optDryRun)\n .action(async (opts: {\n path?: string;\n workflow?: string;\n json?: boolean;\n compact?: boolean;\n fix?: boolean;\n dryRun?: boolean;\n }) => {\n const repoPath = path.resolve(opts.path || '.');\n const workflowDir = path.join(repoPath, '.github', 'workflows');\n const workflowFilesContent = lerDiretorioWorkflows(workflowDir);\n\n if (workflowFilesContent.length === 0) {\n log.erro(CliComandoGithubActionsMensagens.workflowDirNaoEncontrado);\n sair(ExitCode.Failure);\n return;\n }\n\n let workflowFiles: string[];\n if (opts.workflow) {\n const wfPath = path.join(workflowDir, opts.workflow);\n if (lerArquivoWorkflow(wfPath) === null) {\n log.erro(CliComandoGithubActionsMensagens.workflowNaoEncontrado(opts.workflow));\n sair(ExitCode.Failure);\n return;\n }\n workflowFiles = [opts.workflow];\n } else {\n workflowFiles = workflowFilesContent;\n }\n\n if (workflowFiles.length === 0) {\n log.info(CliComandoGithubActionsMensagens.nenhumWorkflowEncontrado);\n return;\n }\n\n const spinner = opts.json ? {\n text: '',\n start: () => spinner,\n succeed: () => spinner,\n fail: () => spinner\n } : ora({ text: 'Analisando workflows...', spinner: 'dots' }).start();\n\n try {\n const startTime = Date.now();\n const todasOcorrencias: Ocorrencia[] = [];\n const workflowsInfo: Array<{ nome: string; score: number; ocorrencias: number }> = [];\n\n for (const wf of workflowFiles) {\n const wfPath = path.join(workflowDir, wf);\n const conteudo = fs.readFileSync(wfPath, 'utf-8');\n const relPath = `.github/workflows/${wf}`;\n const context = criarContextArquivo(wf, conteudo, workflowDir);\n const result = await analistaGithubActions.aplicar(conteudo, relPath, null, undefined, context);\n const ocorrencias = normalizarOcorrencias(result);\n\n if (opts.fix) {\n const ocorrenciasComFix = ocorrencias.filter(ocorrencia => !!ocorrencia.correcao);\n let conteudoAtualizado = conteudo;\n if (ocorrenciasComFix.length > 0) {\n conteudoAtualizado = aplicarCorrecoes(conteudo, ocorrenciasComFix);\n }\n const detectores = obterDetectoresGithubActions();\n const fixers = autofixEngine.extrairFixers(detectores);\n if (fixers.length > 0) {\n conteudoAtualizado = autofixEngine.aplicarFixes(conteudoAtualizado, fixers);\n }\n if (conteudoAtualizado !== conteudo) {\n if (opts.dryRun) {\n log.info(CliComandoGithubActionsMensagens.dryRunAlteracoes(wf));\n log.info(conteudoAtualizado);\n } else {\n salvarArquivoCorrigido(wfPath, conteudoAtualizado);\n log.sucesso(CliComandoGithubActionsMensagens.correcoesAplicadas(wf));\n }\n }\n }\n\n const score = Math.max(SCORE_MIN, SCORE_MAX - ocorrencias.length * PENALTY_PER_OCCURRENCE);\n workflowsInfo.push({ nome: wf, score, ocorrencias: ocorrencias.length });\n todasOcorrencias.push(...ocorrencias);\n }\n\n const contextGlobal = montarContextoExecucao(workflowDir, workflowFiles);\n const resultGlobal = await analistaGithubActionsGlobal.aplicar('', '', null, undefined, contextGlobal);\n todasOcorrencias.push(...normalizarOcorrencias(resultGlobal));\n\n const tempoAnalise = Date.now() - startTime;\n const scoreGeral = calcularScoreGeral(workflowsInfo);\n\n spinner.succeed(CliComandoGithubActionsMensagens.analiseConcluida(workflowFiles.length, todasOcorrencias.length));\n\n if (opts.json) {\n const dados = prepararDadosRelatorio(todasOcorrencias, path.basename(repoPath), tempoAnalise, workflowsInfo);\n console.log(JSON.stringify(dados, null, 2));\n return;\n }\n if (opts.compact) {\n log.info(CliComandoGithubActionsMensagens.scoreCompacto(scoreGeral, workflowFiles.length, todasOcorrencias.length));\n return;\n }\n\n log.info(CliComandoGithubActionsMensagens.scoreGeral(scoreGeral));\n log.info(CliComandoGithubActionsMensagens.workflowsAnalisados(workflowFiles.length));\n log.info(CliComandoGithubActionsMensagens.totalOcorrencias(todasOcorrencias.length));\n log.info(CliComandoGithubActionsMensagens.tempoAnalise(tempoAnalise));\n log.info(CliComandoGithubActionsMensagens.workflowsTitulo);\n for (const wf of workflowsInfo) {\n const icon = wf.score >= 80 ? '[OK]' : wf.score >= 50 ? '[AVISO]' : '[ERRO]';\n log.info(CliComandoGithubActionsMensagens.workflowItem(icon, wf.nome, wf.score, wf.ocorrencias));\n }\n if (todasOcorrencias.length > 0) {\n log.info(CliComandoGithubActionsMensagens.ocorrenciasTitulo);\n for (const ocorrencia of todasOcorrencias.slice(0, 20)) {\n const nivel = ocorrencia.nivel || 'info';\n const nivelIcon = nivel === 'erro' ? '[RED]' : nivel === 'aviso' ? '[YELLOW]' : '[BLUE]';\n log.info(CliComandoGithubActionsMensagens.ocorrenciaItem(nivelIcon, ocorrencia.relPath, ocorrencia.linha ?? 0, ocorrencia.mensagem));\n }\n if (todasOcorrencias.length > 20) {\n log.info(CliComandoGithubActionsMensagens.maisOcorrencias(todasOcorrencias.length - 20));\n }\n }\n } catch (err) {\n spinner.fail(CliComandoGithubActionsMensagens.erroAnalise);\n log.erro(err instanceof Error ? err.message : String(err));\n sair(ExitCode.Failure);\n }\n });\n\n cmd.command('report').alias('r').description(CliComandoGithubActionsMensagens.descricaoReport)\n .option('-p, --path <caminho>', CliComandoGithubActionsMensagens.optPath, '.')\n .option('-f, --format <formato>', 'Formato do relatório (json, markdown, html, csv)', 'markdown')\n .option('-o, --output <arquivo>', 'Arquivo de saída')\n .option('--titulo <titulo>', 'Título do relatório')\n .option('--no-detalhes', CliComandoGithubActionsMensagens.optNoDetalhes)\n .action(async (opts: {\n path?: string;\n format?: string;\n output?: string;\n titulo?: string;\n detalhes?: boolean;\n }) => {\n const repoPath = path.resolve(opts.path || '.');\n const workflowDir = path.join(repoPath, '.github', 'workflows');\n const workflowFiles = lerDiretorioWorkflows(workflowDir);\n\n if (workflowFiles.length === 0) {\n log.erro(CliComandoGithubActionsMensagens.workflowDirNaoEncontrado);\n sair(ExitCode.Failure);\n return;\n }\n\n const formato = opts.format as FormatoRelatorio;\n if (!['json', 'markdown', 'html', 'csv'].includes(formato)) {\n log.erro(CliComandoGithubActionsMensagens.formatoInvalido(formato));\n sair(ExitCode.Failure);\n return;\n }\n\n const spinner = ora({ text: 'Gerando relatório...', spinner: 'dots' }).start();\n\n try {\n const { todasOcorrencias, workflowsInfo, tempoAnalise } = await processarWorkflows(workflowDir, workflowFiles);\n const output = opts.output || `github-actions-report.${formato === 'markdown' ? 'md' : formato}`;\n const dados = prepararDadosRelatorio(todasOcorrencias, path.basename(repoPath), tempoAnalise, workflowsInfo);\n await gerarRelatorio(dados, {\n formato,\n output,\n titulo: opts.titulo,\n incluirDetalhes: opts.detalhes !== false\n });\n spinner.succeed(CliComandoGithubActionsMensagens.relatorioGerado(output));\n log.info(CliComandoGithubActionsMensagens.formatoRelatorio(formato));\n log.info(CliComandoGithubActionsMensagens.scoreReport(dados.scoreGeral));\n log.info(CliComandoGithubActionsMensagens.ocorrenciasReport(todasOcorrencias.length));\n } catch (err) {\n spinner.fail(CliComandoGithubActionsMensagens.erroGerarRelatorio);\n log.erro(err instanceof Error ? err.message : String(err));\n sair(ExitCode.Failure);\n }\n });\n\n cmd.command('gate').alias('g').description(CliComandoGithubActionsMensagens.descricaoGate)\n .option('-p, --path <caminho>', CliComandoGithubActionsMensagens.optPath, '.')\n .option('-t, --threshold <numero>', 'Score mínimo aceitável (0-100)', DEFAULT_GATE_THRESHOLD.toString())\n .option('-w, --workflow <arquivo>', 'Verificar workflow específico')\n .option('-j, --json', 'Saída em JSON para consumo externo')\n .option('--fail-on <nivel>', 'Nível mínimo para falhar (erro, aviso, info)', 'erro')\n .action(async (opts: {\n path?: string;\n threshold?: string;\n workflow?: string;\n json?: boolean;\n failOn?: string;\n }) => {\n const repoPath = path.resolve(opts.path || '.');\n const workflowDir = path.join(repoPath, '.github', 'workflows');\n const threshold = parseInt(opts.threshold || DEFAULT_GATE_THRESHOLD.toString(), 10);\n const workflowFilesContent = lerDiretorioWorkflows(workflowDir);\n\n if (workflowFilesContent.length === 0) {\n if (opts.json) {\n console.log(JSON.stringify({ success: false, error: CliComandoGithubActionsMensagens.workflowDirNaoEncontrado }));\n } else {\n log.erro(CliComandoGithubActionsMensagens.workflowDirNaoEncontrado);\n }\n sair(ExitCode.Failure);\n return;\n }\n\n let workflowFiles: string[];\n if (opts.workflow) {\n const wfPath = path.join(workflowDir, opts.workflow);\n if (lerArquivoWorkflow(wfPath) === null) {\n if (opts.json) {\n console.log(JSON.stringify({ success: false, error: CliComandoGithubActionsMensagens.workflowNaoEncontrado(opts.workflow) }));\n } else {\n log.erro(CliComandoGithubActionsMensagens.workflowNaoEncontrado(opts.workflow));\n }\n sair(ExitCode.Failure);\n return;\n }\n workflowFiles = [opts.workflow];\n } else {\n workflowFiles = workflowFilesContent;\n }\n\n if (workflowFiles.length === 0) {\n if (opts.json) {\n console.log(JSON.stringify({ success: true, score: SCORE_MAX, message: CliComandoGithubActionsMensagens.nenhumWorkflowEncontrado }));\n } else {\n log.info(CliComandoGithubActionsMensagens.nenhumWorkflowEncontrado);\n }\n return;\n }\n\n try {\n const { todasOcorrencias, workflowsInfo, tempoAnalise: _tempoAnalise } = await processarWorkflows(workflowDir, workflowFiles);\n const scoreGeral = calcularScoreGeral(workflowsInfo);\n const erros = todasOcorrencias.filter(ocorrencia => ocorrencia.nivel === 'erro').length;\n const avisos = todasOcorrencias.filter(ocorrencia => ocorrencia.nivel === 'aviso').length;\n\n let passou = true;\n const motivosFalha: string[] = [];\n\n if (scoreGeral < threshold) {\n passou = false;\n motivosFalha.push(`Score ${scoreGeral} abaixo do threshold ${threshold}`);\n }\n if (opts.failOn === 'erro' && erros > 0) {\n passou = false;\n motivosFalha.push(`${erros} erro(s) crítico(s) encontrado(s)`);\n }\n if (opts.failOn === 'aviso' && erros + avisos > 0) {\n passou = false;\n motivosFalha.push(`${erros + avisos} erro(s)/aviso(s) encontrado(s)`);\n }\n\n const resultado = {\n success: passou,\n score: scoreGeral,\n threshold,\n workflows: workflowsInfo,\n ocorrencias: {\n total: todasOcorrencias.length,\n erros,\n avisos,\n info: todasOcorrencias.filter(ocorrencia => ocorrencia.nivel === 'info').length\n },\n motivosFalha: passou ? [] : motivosFalha\n };\n\n if (opts.json) {\n console.log(JSON.stringify(resultado, null, 2));\n } else if (passou) {\n log.sucesso(CliComandoGithubActionsMensagens.gatePassou(scoreGeral, threshold));\n } else {\n log.erro(CliComandoGithubActionsMensagens.gateFalhou(scoreGeral, threshold));\n for (const motivo of motivosFalha) {\n log.erro(CliComandoGithubActionsMensagens.gateFalhaMotivo(motivo));\n }\n }\n\n if (!passou) sair(ExitCode.Failure);\n } catch (err) {\n log.erro(err instanceof Error ? err.message : String(err));\n sair(ExitCode.Failure);\n }\n });\n\n cmd.command('app').description(CliComandoGithubActionsMensagens.descricaoApp)\n .option('-p, --port <number>', 'Porta do servidor', process.env.TUTANUS_API_PORT || process.env.PORT || '3000')\n .action(async (opts: { port: string }) => {\n const appId = process.env.GITHUB_APP_ID;\n const privateKey = process.env.GITHUB_PRIVATE_KEY;\n const webhookSecret = process.env.GITHUB_WEBHOOK_SECRET;\n if (!appId || !privateKey || !webhookSecret) {\n log.erro(CliComandoGithubActionsMensagens.appSetupRequired);\n log.erro(CliComandoGithubActionsMensagens.appSetupEnvList);\n log.info(CliComandoGithubActionsMensagens.appDicaEnv);\n sair(ExitCode.Failure);\n return;\n }\n try {\n await iniciarServidorApp({\n appId,\n privateKey: privateKey.replace(/\\\\n/g, '\\n'),\n webhookSecret,\n port: parseInt(opts.port, 10),\n });\n } catch (err) {\n log.erro(CliComandoGithubActionsMensagens.erroIniciarServidor(err instanceof Error ? err.message : String(err)));\n sair(ExitCode.Failure);\n }\n });\n\n return cmd;\n}\n"]}
@@ -109,7 +109,7 @@ export function comandoGuardian(aplicarFlagsGlobais) {
109
109
  await aplicarFlagsGlobais(this.parent && typeof this.parent.opts === 'function' ? this.parent.opts() : {});
110
110
  }
111
111
  catch (err) {
112
- log.erro(`Falha ao aplicar flags: ${err instanceof Error ? err.message : String(err)}`);
112
+ log.erro(messages.CliComandoGuardianMensagens.falhaAplicarFlags(err instanceof Error ? err.message : String(err)));
113
113
  sair(ExitCode.Failure);
114
114
  return;
115
115
  }
@@ -1 +1 @@
1
- {"version":3,"file":"command-guardian.js","sourceRoot":"","sources":["../../../src/cli/commands/command-guardian.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,gBAAgB,IAAI,uBAAuB,EAAwB,MAAM,0BAA0B,CAAC;AAC7G,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,GAAG,CAAC;AAEvE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;AAEtC,SAAS,yBAAyB;IAChC,MAAM,GAAG,GAAI,MAAkD,CAAC,wBAAwB,CAAC;IACzF,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,yBAAyB,CAAC,QAAkB;IAClD,MAA4D,CAAC,wBAAwB,GAAG,QAAQ,CAAC;AACpG,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,WAAW,GAAG,UAAsD,CAAC;IAC3E,OAAO,WAAW,CAAC,2BAA2B,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,cAAc,CAAC,GAAY;IAClC,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,OAAO;IAC7B,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC;QACrD,OAAO,CAAC,KAAK,CAAE,GAA0B,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,OAA2B;IACzD,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,iBAAqC,EAAE,IAAwB;IAC7F,IAAI,iBAAiB,CAAC,KAAK,IAAI,iBAAiB,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QAC3D,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,uBAAuB,EAAE,KAAK,EAAE,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACnG,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,oBAAoB,EAAE,CAAC;YACnC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,2BAA2B,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;YAChG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,2BAA2B,CAAC,uBAAuB,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO;IACT,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,WAAW,CAAC,qBAAqB,EAAE,CAAC;IACtC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,iBAAyF,EAAE,IAAwB;IACnJ,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,IAAI,iBAAiB,CAAC,EAAE,CAAC;IACpE,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,iBAAiB,CAAC,EAAE;YACvB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC;YACnF,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,aAAa,EAAE,CAAC;YAC9B,CAAC;YACD,MAAM;QACR,KAAK,iBAAiB,CAAC,MAAM;YAC3B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC;YAChG,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,qBAAqB,EAAE,CAAC;YACtC,CAAC;YACD,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,2BAA2B,CAAC,yBAAyB,CAAC,CAAC;YAC1E,MAAM;QACR,KAAK,iBAAiB,CAAC,MAAM;YAC3B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC;YAChG,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,kBAAkB,EAAE,CAAC;YACnC,CAAC;YACD,MAAM;QACR,KAAK,iBAAiB,CAAC,oBAAoB;YACzC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;oBACzB,MAAM,EAAE,uBAAuB;oBAC/B,YAAY,EAAE,iBAAiB,CAAC,YAAY;oBAC5C,KAAK,EAAE,iBAAiB,CAAC,KAAK;iBAC/B,CAAC,CAAC,CAAC;YACN,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,mBAAmB,EAAE,CAAC;YACpC,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvB,MAAM;IACV,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,mBAA4D;IAC1F,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,2BAA2B,CAAC,SAAS,CAAC;SACvF,kBAAkB,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC;SACnD,MAAM,CAAC,uBAAuB,EAAE,6DAA6D,CAAC;SAC9F,MAAM,CAAC,YAAY,EAAE,wDAAwD,CAAC;SAC9E,MAAM,CAAC,aAAa,EAAE,mFAAmF,CAAC;SAC1G,MAAM,CAAC,QAAQ,EAAE,iDAAiD,CAAC;SACnE,MAAM,CAAC,KAAK,WAA0B,IAKtC;QACC,IAAI,CAAC;YACH,MAAM,mBAAmB,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC9B,IAAI,WAAW,GAAuB,EAAE,CAAC;QAEzC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,UAAU,CAAC,iBAA8B,CAAC,CAAC;YAC5D,MAAM,mBAAmB,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;YACpG,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC;YAC9C,MAAM,kBAAkB,GAAG,yBAAyB,EAAE,CAAC;YAEvD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,yBAAyB,CAAC,EAAE,CAAC,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;oBACzB,WAAW,CAAC,aAAa,EAAE,CAAC;gBAC9B,CAAC;YACH,CAAC;YAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,2BAA2B,CAAC,4BAA4B,CAAC,CAAC;oBAC7E,yBAAyB,CAAC,kBAAkB,CAAC,CAAC;oBAC9C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBACvB,OAAO;gBACT,CAAC;gBACD,WAAW,CAAC,iBAAiB,EAAE,CAAC;gBAChC,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;gBACrC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBACpF,CAAC;qBAAM,CAAC;oBACN,WAAW,CAAC,qBAAqB,EAAE,CAAC;gBACtC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,YAAY,GAAoB;oBACpC,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAChC,YAAY,EAAE,KAAK;oBACnB,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;iBAC3B,CAAC;gBACF,MAAM,iBAAiB,GAAG,MAAM,uBAAuB,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC,CAAC;gBAE3G,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,MAAM,gBAAgB,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;gBAClD,CAAC;qBAAM,CAAC;oBACN,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,yBAAyB,CAAC,kBAAkB,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,YAAY,CAAE,GAAa,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAChE,cAAc,CAAC,GAAG,CAAC,CAAC;YACpB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACtF,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["// SPDX-License-Identifier: MIT\n// @tutanus-disable tipo-literal-inline-complexo tipo-inseguro-unknown\n// Justificativa: tipos inline para opções de comando CLI são locais e não precisam de extração. err em catch handlers é unknown propositalmente.\n// Importar handler modular do Guardian (Sprint 2)\nimport { registroAnalistas } from '@analysts/registry';\nimport { executarGuardian as executarGuardianModular, type GuardianOptions } from '@cli/diagnostic/handlers';\nimport { ExitCode, sair } from '@cli/helpers';\nimport { config } from '@core/config';\nimport { iniciarInquisicao } from '@core/execution';\nimport { messages } from '@core/messages';\nimport { acceptNewBaseline } from '@guardian';\nimport { Command } from 'commander';\n\nimport type { FileEntry, FileEntryWithAst, Tecnica } from '@';\nimport { asTecnicas, extrairMensagemErro, IntegridadeStatus } from '@';\n\nconst { log, logGuardian } = messages;\n\nfunction getGuardianIgnorePatterns(): string[] {\n const raw = (config as { GUARDIAN_IGNORE_PATTERNS?: string[] }).GUARDIAN_IGNORE_PATTERNS;\n return Array.isArray(raw) ? [...raw] : [];\n}\n\nfunction setGuardianIgnorePatterns(patterns: string[]): void {\n (config as unknown as { GUARDIAN_IGNORE_PATTERNS: string[] }).GUARDIAN_IGNORE_PATTERNS = patterns;\n}\n\nfunction getCacheDiffHits(): number {\n const globalCache = globalThis as { __TUTANUS_DIFF_CACHE_HITS__?: number };\n return globalCache.__TUTANUS_DIFF_CACHE_HITS__ || 0;\n}\n\nfunction mostrarErroDev(err: unknown): void {\n if (!config.DEV_MODE) return;\n console.error(extrairMensagemErro(err));\n if (err && typeof err === 'object' && 'stack' in err) {\n console.error((err as { stack?: string }).stack);\n }\n}\n\nfunction converterParaFileEntry(entries: FileEntryWithAst[]): FileEntry[] {\n return entries.map(entry => ({\n relPath: entry.relPath,\n fullCaminho: entry.fullCaminho,\n content: entry.content\n }));\n}\n\nasync function executarModoDiff(guardianResultado: { drift?: number }, opts: { json?: boolean }): Promise<void> {\n if (guardianResultado.drift && guardianResultado.drift > 0) {\n if (opts.json) {\n console.log(JSON.stringify({ status: 'alteracoes-detectadas', drift: guardianResultado.drift }));\n } else {\n logGuardian.diferencasDetectadas();\n log.aviso(messages.CliComandoGuardianMensagens.diffMudancasDetectadas(guardianResultado.drift));\n log.aviso(messages.CliComandoGuardianMensagens.diffComoAceitarMudancas);\n }\n sair(ExitCode.Failure);\n return;\n }\n if (opts.json) {\n console.log(JSON.stringify({ status: 'ok', drift: 0 }));\n } else {\n logGuardian.integridadePreservada();\n }\n}\n\nasync function executarModoNormal(guardianResultado: { status?: IntegridadeStatus; drift?: number; temProblemas?: boolean }, opts: { json?: boolean }): Promise<void> {\n const statusNorm = guardianResultado.status || IntegridadeStatus.Ok;\n switch (statusNorm) {\n case IntegridadeStatus.Ok:\n if (opts.json) {\n console.log(JSON.stringify({ status: 'ok', cacheDiffHits: getCacheDiffHits() }));\n } else {\n logGuardian.integridadeOk();\n }\n break;\n case IntegridadeStatus.Criado:\n if (opts.json) {\n console.log(JSON.stringify({ status: 'baseline-criado', cacheDiffHits: getCacheDiffHits() }));\n } else {\n logGuardian.baselineCriadoConsole();\n }\n log.aviso(messages.CliComandoGuardianMensagens.baselineCriadoComoAceitar);\n break;\n case IntegridadeStatus.Aceito:\n if (opts.json) {\n console.log(JSON.stringify({ status: 'baseline-aceito', cacheDiffHits: getCacheDiffHits() }));\n } else {\n logGuardian.baselineAtualizado();\n }\n break;\n case IntegridadeStatus.AlteracoesDetectadas:\n if (opts.json) {\n console.log(JSON.stringify({\n status: 'alteracoes-detectadas',\n temProblemas: guardianResultado.temProblemas,\n drift: guardianResultado.drift\n }));\n } else {\n logGuardian.alteracoesSuspeitas();\n }\n sair(ExitCode.Failure);\n break;\n }\n}\n\nexport function comandoGuardian(aplicarFlagsGlobais: (opts: Record<string, unknown>) => void): Command {\n return new Command('guardian').description(messages.CliComandoGuardianMensagens.descricao)\n .allowUnknownOption(true).allowExcessArguments(true)\n .option('-a, --accept-baseline', 'Aceita o baseline atual como o novo baseline de integridade')\n .option('-d, --diff', 'Mostra as diferenças entre o estado atual e o baseline')\n .option('--full-scan', 'Executa verificação sem aplicar GUARDIAN_IGNORE_PATTERNS (não persistir baseline)')\n .option('--json', 'Saída em JSON estruturado (para CI/integracoes)')\n .action(async function (this: Command, opts: {\n acceptBaseline?: boolean;\n diff?: boolean;\n fullScan?: boolean;\n json?: boolean;\n }) {\n try {\n await aplicarFlagsGlobais(this.parent && typeof this.parent.opts === 'function' ? this.parent.opts() : {});\n } catch (err) {\n log.erro(`Falha ao aplicar flags: ${err instanceof Error ? err.message : String(err)}`);\n sair(ExitCode.Failure);\n return;\n }\n\n const baseDir = process.cwd();\n let fileEntries: FileEntryWithAst[] = [];\n\n try {\n const tecnicas = asTecnicas(registroAnalistas as Tecnica[]);\n const resultadoInquisicao = await iniciarInquisicao(baseDir, { incluirMetadados: false }, tecnicas);\n fileEntries = resultadoInquisicao.fileEntries;\n const ignoradosOriginais = getGuardianIgnorePatterns();\n\n if (opts.fullScan) {\n setGuardianIgnorePatterns([]);\n if (!opts.acceptBaseline) {\n logGuardian.fullScanAviso();\n }\n }\n\n if (opts.acceptBaseline) {\n if (opts.fullScan) {\n log.aviso(messages.CliComandoGuardianMensagens.baselineNaoPermitidoFullScan);\n setGuardianIgnorePatterns(ignoradosOriginais);\n sair(ExitCode.Failure);\n return;\n }\n logGuardian.aceitandoBaseline();\n await acceptNewBaseline(fileEntries);\n if (opts.json) {\n console.log(JSON.stringify({ status: IntegridadeStatus.Aceito, baseline: true }));\n } else {\n logGuardian.baselineAceitoSucesso();\n }\n } else {\n const guardianOpts: GuardianOptions = {\n enabled: true,\n fullScan: Boolean(opts.fullScan),\n saveBaseline: false,\n silent: Boolean(opts.json)\n };\n const guardianResultado = await executarGuardianModular(converterParaFileEntry(fileEntries), guardianOpts);\n\n if (opts.diff) {\n await executarModoDiff(guardianResultado, opts);\n } else {\n await executarModoNormal(guardianResultado, opts);\n }\n }\n\n if (opts.fullScan) {\n setGuardianIgnorePatterns(ignoradosOriginais);\n }\n } catch (err) {\n logGuardian.erroGuardian((err as Error).message ?? String(err));\n mostrarErroDev(err);\n if (opts.json) {\n console.log(JSON.stringify({ status: 'erro', mensagem: extrairMensagemErro(err) }));\n }\n sair(ExitCode.Failure);\n }\n });\n}\n"]}
1
+ {"version":3,"file":"command-guardian.js","sourceRoot":"","sources":["../../../src/cli/commands/command-guardian.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: MIT\n// @tutanus-disable tipo-literal-inline-complexo tipo-inseguro-unknown\n// Justificativa: tipos inline para opções de comando CLI são locais e não precisam de extração. err em catch handlers é unknown propositalmente.\n// Importar handler modular do Guardian (Sprint 2)\nimport { registroAnalistas } from '@analysts/registry';\nimport { executarGuardian as executarGuardianModular, type GuardianOptions } from '@cli/diagnostic/handlers';\nimport { ExitCode, sair } from '@cli/helpers';\nimport { config } from '@core/config';\nimport { iniciarInquisicao } from '@core/execution';\nimport { messages } from '@core/messages';\nimport { acceptNewBaseline } from '@guardian';\nimport { Command } from 'commander';\n\nimport type { FileEntry, FileEntryWithAst, Tecnica } from '@';\nimport { asTecnicas, extrairMensagemErro, IntegridadeStatus } from '@';\n\nconst { log, logGuardian } = messages;\n\nfunction getGuardianIgnorePatterns(): string[] {\n const raw = (config as { GUARDIAN_IGNORE_PATTERNS?: string[] }).GUARDIAN_IGNORE_PATTERNS;\n return Array.isArray(raw) ? [...raw] : [];\n}\n\nfunction setGuardianIgnorePatterns(patterns: string[]): void {\n (config as unknown as { GUARDIAN_IGNORE_PATTERNS: string[] }).GUARDIAN_IGNORE_PATTERNS = patterns;\n}\n\nfunction getCacheDiffHits(): number {\n const globalCache = globalThis as { __TUTANUS_DIFF_CACHE_HITS__?: number };\n return globalCache.__TUTANUS_DIFF_CACHE_HITS__ || 0;\n}\n\nfunction mostrarErroDev(err: unknown): void {\n if (!config.DEV_MODE) return;\n console.error(extrairMensagemErro(err));\n if (err && typeof err === 'object' && 'stack' in err) {\n console.error((err as { stack?: string }).stack);\n }\n}\n\nfunction converterParaFileEntry(entries: FileEntryWithAst[]): FileEntry[] {\n return entries.map(entry => ({\n relPath: entry.relPath,\n fullCaminho: entry.fullCaminho,\n content: entry.content\n }));\n}\n\nasync function executarModoDiff(guardianResultado: { drift?: number }, opts: { json?: boolean }): Promise<void> {\n if (guardianResultado.drift && guardianResultado.drift > 0) {\n if (opts.json) {\n console.log(JSON.stringify({ status: 'alteracoes-detectadas', drift: guardianResultado.drift }));\n } else {\n logGuardian.diferencasDetectadas();\n log.aviso(messages.CliComandoGuardianMensagens.diffMudancasDetectadas(guardianResultado.drift));\n log.aviso(messages.CliComandoGuardianMensagens.diffComoAceitarMudancas);\n }\n sair(ExitCode.Failure);\n return;\n }\n if (opts.json) {\n console.log(JSON.stringify({ status: 'ok', drift: 0 }));\n } else {\n logGuardian.integridadePreservada();\n }\n}\n\nasync function executarModoNormal(guardianResultado: { status?: IntegridadeStatus; drift?: number; temProblemas?: boolean }, opts: { json?: boolean }): Promise<void> {\n const statusNorm = guardianResultado.status || IntegridadeStatus.Ok;\n switch (statusNorm) {\n case IntegridadeStatus.Ok:\n if (opts.json) {\n console.log(JSON.stringify({ status: 'ok', cacheDiffHits: getCacheDiffHits() }));\n } else {\n logGuardian.integridadeOk();\n }\n break;\n case IntegridadeStatus.Criado:\n if (opts.json) {\n console.log(JSON.stringify({ status: 'baseline-criado', cacheDiffHits: getCacheDiffHits() }));\n } else {\n logGuardian.baselineCriadoConsole();\n }\n log.aviso(messages.CliComandoGuardianMensagens.baselineCriadoComoAceitar);\n break;\n case IntegridadeStatus.Aceito:\n if (opts.json) {\n console.log(JSON.stringify({ status: 'baseline-aceito', cacheDiffHits: getCacheDiffHits() }));\n } else {\n logGuardian.baselineAtualizado();\n }\n break;\n case IntegridadeStatus.AlteracoesDetectadas:\n if (opts.json) {\n console.log(JSON.stringify({\n status: 'alteracoes-detectadas',\n temProblemas: guardianResultado.temProblemas,\n drift: guardianResultado.drift\n }));\n } else {\n logGuardian.alteracoesSuspeitas();\n }\n sair(ExitCode.Failure);\n break;\n }\n}\n\nexport function comandoGuardian(aplicarFlagsGlobais: (opts: Record<string, unknown>) => void): Command {\n return new Command('guardian').description(messages.CliComandoGuardianMensagens.descricao)\n .allowUnknownOption(true).allowExcessArguments(true)\n .option('-a, --accept-baseline', 'Aceita o baseline atual como o novo baseline de integridade')\n .option('-d, --diff', 'Mostra as diferenças entre o estado atual e o baseline')\n .option('--full-scan', 'Executa verificação sem aplicar GUARDIAN_IGNORE_PATTERNS (não persistir baseline)')\n .option('--json', 'Saída em JSON estruturado (para CI/integracoes)')\n .action(async function (this: Command, opts: {\n acceptBaseline?: boolean;\n diff?: boolean;\n fullScan?: boolean;\n json?: boolean;\n }) {\n try {\n await aplicarFlagsGlobais(this.parent && typeof this.parent.opts === 'function' ? this.parent.opts() : {});\n } catch (err) {\n log.erro(messages.CliComandoGuardianMensagens.falhaAplicarFlags(err instanceof Error ? err.message : String(err)));\n sair(ExitCode.Failure);\n return;\n }\n\n const baseDir = process.cwd();\n let fileEntries: FileEntryWithAst[] = [];\n\n try {\n const tecnicas = asTecnicas(registroAnalistas as Tecnica[]);\n const resultadoInquisicao = await iniciarInquisicao(baseDir, { incluirMetadados: false }, tecnicas);\n fileEntries = resultadoInquisicao.fileEntries;\n const ignoradosOriginais = getGuardianIgnorePatterns();\n\n if (opts.fullScan) {\n setGuardianIgnorePatterns([]);\n if (!opts.acceptBaseline) {\n logGuardian.fullScanAviso();\n }\n }\n\n if (opts.acceptBaseline) {\n if (opts.fullScan) {\n log.aviso(messages.CliComandoGuardianMensagens.baselineNaoPermitidoFullScan);\n setGuardianIgnorePatterns(ignoradosOriginais);\n sair(ExitCode.Failure);\n return;\n }\n logGuardian.aceitandoBaseline();\n await acceptNewBaseline(fileEntries);\n if (opts.json) {\n console.log(JSON.stringify({ status: IntegridadeStatus.Aceito, baseline: true }));\n } else {\n logGuardian.baselineAceitoSucesso();\n }\n } else {\n const guardianOpts: GuardianOptions = {\n enabled: true,\n fullScan: Boolean(opts.fullScan),\n saveBaseline: false,\n silent: Boolean(opts.json)\n };\n const guardianResultado = await executarGuardianModular(converterParaFileEntry(fileEntries), guardianOpts);\n\n if (opts.diff) {\n await executarModoDiff(guardianResultado, opts);\n } else {\n await executarModoNormal(guardianResultado, opts);\n }\n }\n\n if (opts.fullScan) {\n setGuardianIgnorePatterns(ignoradosOriginais);\n }\n } catch (err) {\n logGuardian.erroGuardian((err as Error).message ?? String(err));\n mostrarErroDev(err);\n if (opts.json) {\n console.log(JSON.stringify({ status: 'erro', mensagem: extrairMensagemErro(err) }));\n }\n sair(ExitCode.Failure);\n }\n });\n}\n"]}
@@ -25,7 +25,7 @@ export function comandoMarketplace() {
25
25
  }
26
26
  log.info(msgs.tituloBusca);
27
27
  for (const r of resultados) {
28
- const desc = r.descricao || '(sem descrição)';
28
+ const desc = r.descricao || msgs.semDescricao;
29
29
  const tags = r.tags || [];
30
30
  log.info(msgs.itemBusca(r.nome, desc, tags));
31
31
  }
@@ -56,7 +56,7 @@ export function comandoMarketplace() {
56
56
  const versaoReq = opts.version || 'latest';
57
57
  const melhorVersao = resolverMelhorVersao(analista.versoes, versaoReq);
58
58
  if (!melhorVersao) {
59
- log.erro(`Versão "${versaoReq}" não disponível para "${nome}".`);
59
+ log.erro(msgs.erroVersaoNaoDisponivel(versaoReq, nome));
60
60
  sair(ExitCode.Failure);
61
61
  return;
62
62
  }
@@ -86,7 +86,7 @@ export function comandoMarketplace() {
86
86
  marketplace.command('list')
87
87
  .description(msgs.listDescricao)
88
88
  .option('--json', msgs.jsonDescricao)
89
- .option('--filter <termo>', 'Filtra por termo')
89
+ .option('--filter <termo>', msgs.filterDescricao)
90
90
  .action(async (opts) => {
91
91
  try {
92
92
  const pacotes = opts.filter
@@ -103,9 +103,9 @@ export function comandoMarketplace() {
103
103
  }
104
104
  log.info(msgs.tituloLista);
105
105
  for (const p of pacotes) {
106
- const nome = p?.nome || '(sem nome)';
107
- const versao = p?.versao || '(sem versão)';
108
- const descricao = p?.descricao || '(sem descrição)';
106
+ const nome = p?.nome || msgs.semNome;
107
+ const versao = p?.versao || msgs.semVersao;
108
+ const descricao = p?.descricao || msgs.semDescricao;
109
109
  log.info(msgs.itemLista(nome, versao, descricao));
110
110
  }
111
111
  log.info(msgs.totalResultados(pacotes.length));
@@ -133,12 +133,12 @@ export function comandoMarketplace() {
133
133
  }
134
134
  if (local) {
135
135
  log.info(msgs.infoTitulo(nome));
136
- log.info(` Versão instalada: ${local.versao}`);
137
- log.info(` Descrição: ${local.descricao}`);
138
- log.info(` Autor: ${local.autor}`);
139
- log.info(` Licença: ${local.licenca}`);
140
- log.info(` Categoria: ${local.categoria}`);
141
- log.info(` Instalado em: ${new Date(local.dataInstalacao).toLocaleString()}`);
136
+ log.info(msgs.infoVersaoInstalada(local.versao));
137
+ log.info(msgs.infoDescricaoDetalhada(local.descricao));
138
+ log.info(msgs.infoAutor(local.autor));
139
+ log.info(msgs.infoLicenca(local.licenca));
140
+ log.info(msgs.infoCategoria(local.categoria));
141
+ log.info(msgs.infoInstaladoEm(new Date(local.dataInstalacao).toLocaleString()));
142
142
  if (local.tags.length > 0)
143
143
  log.info(msgs.infoTags(local.tags));
144
144
  return;
@@ -147,8 +147,8 @@ export function comandoMarketplace() {
147
147
  const versoes = analista.versoes.map((v) => v.version).join(', ');
148
148
  const tags = analista.tags || [];
149
149
  log.info(msgs.infoTitulo(nome));
150
- log.info(` Descrição: ${analista.descricao}`);
151
- log.info(` Categoria: ${analista.categoria}`);
150
+ log.info(msgs.infoDescricaoDetalhada(analista.descricao));
151
+ log.info(msgs.infoCategoria(analista.categoria));
152
152
  log.info(msgs.infoVersoes(versoes));
153
153
  if (tags.length > 0)
154
154
  log.info(msgs.infoTags(tags));
@@ -164,21 +164,21 @@ export function comandoMarketplace() {
164
164
  .description(msgs.publishDescricao)
165
165
  .action(async (caminho) => {
166
166
  try {
167
- log.info(`Validando analista em "${caminho}"...`);
167
+ log.info(msgs.validandoAnalista(caminho));
168
168
  const stats = await import('node:fs').then(fs => fs.promises.stat(caminho));
169
169
  if (!stats.isFile()) {
170
- log.erro('O caminho deve ser um arquivo de definição de analista.');
170
+ log.erro(msgs.erroCaminhoArquivo);
171
171
  sair(ExitCode.Failure);
172
172
  return;
173
173
  }
174
- log.sucesso('Arquivo de analista validado.');
174
+ log.sucesso(msgs.arquivoValidado);
175
175
  log.info('');
176
- log.info('Para publicar no marketplace comunitário:');
177
- log.info(' 1. Crie um fork do repositório tutanus-marketplace');
178
- log.info(' 2. Adicione seu analista ao diretório "analistas/"');
179
- log.info(' 3. Envie um Pull Request');
176
+ log.info(msgs.publicarTitulo);
177
+ log.info(msgs.publicarPasso1);
178
+ log.info(msgs.publicarPasso2);
179
+ log.info(msgs.publicarPasso3);
180
180
  log.info('');
181
- log.info('Documentação: https://github.com/mocoto-geleia/tutanus/wiki/Marketplace');
181
+ log.info(msgs.publicacaoDocumentacao);
182
182
  }
183
183
  catch (err) {
184
184
  log.erro(msgs.erroPublicar(err instanceof Error ? err.message : String(err)));
@@ -1 +1 @@
1
- {"version":3,"file":"command-marketplace.js","sourceRoot":"","sources":["../../../src/cli/commands/command-marketplace.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EACL,uBAAuB,EACvB,IAAI,IAAI,UAAU,EAClB,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,MAAM,IAAI,YAAY,EACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;AACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,8BAA8B,CAAC;AAErD,MAAM,UAAU,kBAAkB;IAChC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;SAC3C,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAE/B,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC;SAClC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC;SACjC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC;SACpC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,IAA2C,EAAE,EAAE;QAC3E,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/B,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;YAExD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5D,OAAO;YACT,CAAC;YAED,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC/B,OAAO;YACT,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC3B,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,IAAI,iBAAiB,CAAC;gBAC9C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC1B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAC/C,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5E,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC;SAClC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC;SAClC,MAAM,CAAC,qBAAqB,EAAE,IAAI,CAAC,gBAAgB,CAAC;SACpD,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAA6C,EAAE,EAAE;QAC5E,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,SAAS,EAAE,CAAC;gBACd,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBACnD,OAAO;YACT,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC3C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC;YAC3C,MAAM,YAAY,GAAG,oBAAoB,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACvE,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,GAAG,CAAC,IAAI,CAAC,WAAW,SAAS,0BAA0B,IAAI,IAAI,CAAC,CAAC;gBACjE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;YAEtD,MAAM,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAEzD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9E,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC;SACjC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC;SACjC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/B,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,EAAE;gBAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7E,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACxB,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;SAC/B,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC;SACpC,MAAM,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;SAC9C,MAAM,CAAC,KAAK,EAAE,IAAyC,EAAE,EAAE;QAC1D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM;gBACzB,CAAC,CAAC,MAAM,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC5C,CAAC,CAAC,MAAM,uBAAuB,EAAE,CAAC;YAEpC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC9C,OAAO;YACT,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC5B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC3B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,YAAY,CAAC;gBACrC,MAAM,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,cAAc,CAAC;gBAC3C,MAAM,SAAS,GAAG,CAAC,EAAE,SAAS,IAAI,iBAAiB,CAAC;gBACpD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;YACpD,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5E,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC;SAC/B,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;SAC/B,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC;SACpC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAAwB,EAAE,EAAE;QACvD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;YAE1C,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;gBACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC3C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAClE,OAAO;YACT,CAAC;YAED,IAAI,KAAK,EAAE,CAAC;gBACV,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChC,GAAG,CAAC,IAAI,CAAC,uBAAuB,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBAChD,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC5C,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBACpC,GAAG,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACxC,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC5C,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;gBAC/E,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;oBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAsB,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;gBACjC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChC,GAAG,CAAC,IAAI,CAAC,gBAAgB,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC/C,GAAG,CAAC,IAAI,CAAC,gBAAgB,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC/C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;gBACpC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;oBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBACnD,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACtF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC;SACrC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,EAAE;QAChC,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,0BAA0B,OAAO,MAAM,CAAC,CAAC;YAElD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5E,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACpB,GAAG,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;gBACpE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,GAAG,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;YACtD,GAAG,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;YACjE,GAAG,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;YACjE,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YACvC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;QACtF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9E,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,WAAW,CAAC;AACrB,CAAC","sourcesContent":["// SPDX-License-Identifier: MIT\n\nimport { ExitCode, sair } from '@cli/helpers';\nimport { messages } from '@core/messages';\nimport {\n buscarPacotesInstalados,\n info as remoteInfo,\n instalarPacote,\n listarPacotesInstalados,\n obterInfoPacote,\n removerPacote,\n resolverMelhorVersao,\n search as remoteSearch\n} from '@shared/marketplace';\nimport { Command } from 'commander';\n\nconst log = messages.log;\nconst msgs = messages.CliComandoMarketplaceMensagens;\n\nexport function comandoMarketplace(): Command {\n const marketplace = new Command('marketplace')\n .description(msgs.descricao);\n\n marketplace.command('search <termo>')\n .description(msgs.searchDescricao)\n .option('--json', msgs.jsonDescricao)\n .option('--registry <url>', msgs.registryDescricao)\n .action(async (termo: string, opts: { json?: boolean; registry?: string }) => {\n try {\n log.info(msgs.buscando(termo));\n const { total, resultados } = await remoteSearch(termo);\n\n if (opts.json) {\n console.log(JSON.stringify({ total, resultados }, null, 2));\n return;\n }\n\n if (total === 0) {\n log.info(msgs.nenhumResultado);\n return;\n }\n\n log.info(msgs.tituloBusca);\n for (const r of resultados) {\n const desc = r.descricao || '(sem descrição)';\n const tags = r.tags || [];\n log.info(msgs.itemBusca(r.nome, desc, tags));\n }\n log.info(msgs.totalResultados(total));\n } catch (err) {\n log.erro(msgs.erroBuscar(err instanceof Error ? err.message : String(err)));\n sair(ExitCode.Failure);\n }\n });\n\n marketplace.command('install <nome>')\n .description(msgs.installDescricao)\n .option('--version <version>', msgs.versionDescricao)\n .option('--registry <url>', msgs.registryDescricao)\n .action(async (nome: string, opts: { version?: string; registry?: string }) => {\n try {\n const instalado = await obterInfoPacote(nome);\n if (instalado) {\n log.info(msgs.jaInstalado(nome, instalado.versao));\n return;\n }\n\n const analista = await remoteInfo(nome);\n if (!analista) {\n log.erro(msgs.analistaNaoEncontrado(nome));\n sair(ExitCode.Failure);\n return;\n }\n\n const versaoReq = opts.version || 'latest';\n const melhorVersao = resolverMelhorVersao(analista.versoes, versaoReq);\n if (!melhorVersao) {\n log.erro(`Versão \"${versaoReq}\" não disponível para \"${nome}\".`);\n sair(ExitCode.Failure);\n return;\n }\n\n log.info(msgs.instalando(nome, melhorVersao.version));\n\n await instalarPacote(analista, melhorVersao.version, '');\n\n log.sucesso(msgs.instaladoComSucesso(nome, melhorVersao.version));\n } catch (err) {\n log.erro(msgs.erroInstalar(err instanceof Error ? err.message : String(err)));\n sair(ExitCode.Failure);\n }\n });\n\n marketplace.command('remove <nome>')\n .description(msgs.removeDescricao)\n .action(async (nome: string) => {\n try {\n log.info(msgs.removendo(nome));\n const ok = await removerPacote(nome);\n if (ok) log.sucesso(msgs.removidoComSucesso(nome));\n } catch (err) {\n log.erro(msgs.erroRemover(err instanceof Error ? err.message : String(err)));\n sair(ExitCode.Failure);\n }\n });\n\n marketplace.command('list')\n .description(msgs.listDescricao)\n .option('--json', msgs.jsonDescricao)\n .option('--filter <termo>', 'Filtra por termo')\n .action(async (opts: { json?: boolean; filter?: string }) => {\n try {\n const pacotes = opts.filter\n ? await buscarPacotesInstalados(opts.filter)\n : await listarPacotesInstalados();\n\n if (opts.json) {\n console.log(JSON.stringify(pacotes, null, 2));\n return;\n }\n\n if (pacotes.length === 0) {\n log.info(msgs.semAnalistas);\n log.info(msgs.dicaBusca);\n return;\n }\n\n log.info(msgs.tituloLista);\n for (const p of pacotes) {\n const nome = p?.nome || '(sem nome)';\n const versao = p?.versao || '(sem versão)';\n const descricao = p?.descricao || '(sem descrição)';\n log.info(msgs.itemLista(nome, versao, descricao));\n }\n log.info(msgs.totalResultados(pacotes.length));\n } catch (err) {\n log.erro(msgs.erroListar(err instanceof Error ? err.message : String(err)));\n sair(ExitCode.Failure);\n }\n });\n\n marketplace.command('info <nome>')\n .description(msgs.infoDescricao)\n .option('--json', msgs.jsonDescricao)\n .action(async (nome: string, opts: { json?: boolean }) => {\n try {\n const analista = await remoteInfo(nome);\n const local = await obterInfoPacote(nome);\n\n if (!analista && !local) {\n log.erro(msgs.analistaNaoEncontrado(nome));\n sair(ExitCode.Failure);\n return;\n }\n\n if (opts.json) {\n console.log(JSON.stringify({ remoto: analista, local }, null, 2));\n return;\n }\n\n if (local) {\n log.info(msgs.infoTitulo(nome));\n log.info(` Versão instalada: ${local.versao}`);\n log.info(` Descrição: ${local.descricao}`);\n log.info(` Autor: ${local.autor}`);\n log.info(` Licença: ${local.licenca}`);\n log.info(` Categoria: ${local.categoria}`);\n log.info(` Instalado em: ${new Date(local.dataInstalacao).toLocaleString()}`);\n if (local.tags.length > 0) log.info(msgs.infoTags(local.tags));\n return;\n }\n\n if (analista) {\n const versoes = analista.versoes.map((v: { version: string }) => v.version).join(', ');\n const tags = analista.tags || [];\n log.info(msgs.infoTitulo(nome));\n log.info(` Descrição: ${analista.descricao}`);\n log.info(` Categoria: ${analista.categoria}`);\n log.info(msgs.infoVersoes(versoes));\n if (tags.length > 0) log.info(msgs.infoTags(tags));\n log.info(` ${msgs.infoDicaInstalar}`);\n }\n } catch (err) {\n log.erro(msgs.erroObterInformacoes(err instanceof Error ? err.message : String(err)));\n sair(ExitCode.Failure);\n }\n });\n\n marketplace.command('publish <caminho>')\n .description(msgs.publishDescricao)\n .action(async (caminho: string) => {\n try {\n log.info(`Validando analista em \"${caminho}\"...`);\n\n const stats = await import('node:fs').then(fs => fs.promises.stat(caminho));\n if (!stats.isFile()) {\n log.erro('O caminho deve ser um arquivo de definição de analista.');\n sair(ExitCode.Failure);\n return;\n }\n\n log.sucesso('Arquivo de analista validado.');\n log.info('');\n log.info('Para publicar no marketplace comunitário:');\n log.info(' 1. Crie um fork do repositório tutanus-marketplace');\n log.info(' 2. Adicione seu analista ao diretório \"analistas/\"');\n log.info(' 3. Envie um Pull Request');\n log.info('');\n log.info('Documentação: https://github.com/mocoto-geleia/tutanus/wiki/Marketplace');\n } catch (err) {\n log.erro(msgs.erroPublicar(err instanceof Error ? err.message : String(err)));\n sair(ExitCode.Failure);\n }\n });\n\n return marketplace;\n}\n"]}
1
+ {"version":3,"file":"command-marketplace.js","sourceRoot":"","sources":["../../../src/cli/commands/command-marketplace.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: MIT\n\nimport { ExitCode, sair } from '@cli/helpers';\nimport { messages } from '@core/messages';\nimport {\n buscarPacotesInstalados,\n info as remoteInfo,\n instalarPacote,\n listarPacotesInstalados,\n obterInfoPacote,\n removerPacote,\n resolverMelhorVersao,\n search as remoteSearch\n} from '@shared/marketplace';\nimport { Command } from 'commander';\n\nconst log = messages.log;\nconst msgs = messages.CliComandoMarketplaceMensagens;\n\nexport function comandoMarketplace(): Command {\n const marketplace = new Command('marketplace')\n .description(msgs.descricao);\n\n marketplace.command('search <termo>')\n .description(msgs.searchDescricao)\n .option('--json', msgs.jsonDescricao)\n .option('--registry <url>', msgs.registryDescricao)\n .action(async (termo: string, opts: { json?: boolean; registry?: string }) => {\n try {\n log.info(msgs.buscando(termo));\n const { total, resultados } = await remoteSearch(termo);\n\n if (opts.json) {\n console.log(JSON.stringify({ total, resultados }, null, 2));\n return;\n }\n\n if (total === 0) {\n log.info(msgs.nenhumResultado);\n return;\n }\n\n log.info(msgs.tituloBusca);\n for (const r of resultados) {\n const desc = r.descricao || msgs.semDescricao;\n const tags = r.tags || [];\n log.info(msgs.itemBusca(r.nome, desc, tags));\n }\n log.info(msgs.totalResultados(total));\n } catch (err) {\n log.erro(msgs.erroBuscar(err instanceof Error ? err.message : String(err)));\n sair(ExitCode.Failure);\n }\n });\n\n marketplace.command('install <nome>')\n .description(msgs.installDescricao)\n .option('--version <version>', msgs.versionDescricao)\n .option('--registry <url>', msgs.registryDescricao)\n .action(async (nome: string, opts: { version?: string; registry?: string }) => {\n try {\n const instalado = await obterInfoPacote(nome);\n if (instalado) {\n log.info(msgs.jaInstalado(nome, instalado.versao));\n return;\n }\n\n const analista = await remoteInfo(nome);\n if (!analista) {\n log.erro(msgs.analistaNaoEncontrado(nome));\n sair(ExitCode.Failure);\n return;\n }\n\n const versaoReq = opts.version || 'latest';\n const melhorVersao = resolverMelhorVersao(analista.versoes, versaoReq);\n if (!melhorVersao) {\n log.erro(msgs.erroVersaoNaoDisponivel(versaoReq, nome));\n sair(ExitCode.Failure);\n return;\n }\n\n log.info(msgs.instalando(nome, melhorVersao.version));\n\n await instalarPacote(analista, melhorVersao.version, '');\n\n log.sucesso(msgs.instaladoComSucesso(nome, melhorVersao.version));\n } catch (err) {\n log.erro(msgs.erroInstalar(err instanceof Error ? err.message : String(err)));\n sair(ExitCode.Failure);\n }\n });\n\n marketplace.command('remove <nome>')\n .description(msgs.removeDescricao)\n .action(async (nome: string) => {\n try {\n log.info(msgs.removendo(nome));\n const ok = await removerPacote(nome);\n if (ok) log.sucesso(msgs.removidoComSucesso(nome));\n } catch (err) {\n log.erro(msgs.erroRemover(err instanceof Error ? err.message : String(err)));\n sair(ExitCode.Failure);\n }\n });\n\n marketplace.command('list')\n .description(msgs.listDescricao)\n .option('--json', msgs.jsonDescricao)\n .option('--filter <termo>', msgs.filterDescricao)\n .action(async (opts: { json?: boolean; filter?: string }) => {\n try {\n const pacotes = opts.filter\n ? await buscarPacotesInstalados(opts.filter)\n : await listarPacotesInstalados();\n\n if (opts.json) {\n console.log(JSON.stringify(pacotes, null, 2));\n return;\n }\n\n if (pacotes.length === 0) {\n log.info(msgs.semAnalistas);\n log.info(msgs.dicaBusca);\n return;\n }\n\n log.info(msgs.tituloLista);\n for (const p of pacotes) {\n const nome = p?.nome || msgs.semNome;\n const versao = p?.versao || msgs.semVersao;\n const descricao = p?.descricao || msgs.semDescricao;\n log.info(msgs.itemLista(nome, versao, descricao));\n }\n log.info(msgs.totalResultados(pacotes.length));\n } catch (err) {\n log.erro(msgs.erroListar(err instanceof Error ? err.message : String(err)));\n sair(ExitCode.Failure);\n }\n });\n\n marketplace.command('info <nome>')\n .description(msgs.infoDescricao)\n .option('--json', msgs.jsonDescricao)\n .action(async (nome: string, opts: { json?: boolean }) => {\n try {\n const analista = await remoteInfo(nome);\n const local = await obterInfoPacote(nome);\n\n if (!analista && !local) {\n log.erro(msgs.analistaNaoEncontrado(nome));\n sair(ExitCode.Failure);\n return;\n }\n\n if (opts.json) {\n console.log(JSON.stringify({ remoto: analista, local }, null, 2));\n return;\n }\n\n if (local) {\n log.info(msgs.infoTitulo(nome));\n log.info(msgs.infoVersaoInstalada(local.versao));\n log.info(msgs.infoDescricaoDetalhada(local.descricao));\n log.info(msgs.infoAutor(local.autor));\n log.info(msgs.infoLicenca(local.licenca));\n log.info(msgs.infoCategoria(local.categoria));\n log.info(msgs.infoInstaladoEm(new Date(local.dataInstalacao).toLocaleString()));\n if (local.tags.length > 0) log.info(msgs.infoTags(local.tags));\n return;\n }\n\n if (analista) {\n const versoes = analista.versoes.map((v: { version: string }) => v.version).join(', ');\n const tags = analista.tags || [];\n log.info(msgs.infoTitulo(nome));\n log.info(msgs.infoDescricaoDetalhada(analista.descricao));\n log.info(msgs.infoCategoria(analista.categoria));\n log.info(msgs.infoVersoes(versoes));\n if (tags.length > 0) log.info(msgs.infoTags(tags));\n log.info(` ${msgs.infoDicaInstalar}`);\n }\n } catch (err) {\n log.erro(msgs.erroObterInformacoes(err instanceof Error ? err.message : String(err)));\n sair(ExitCode.Failure);\n }\n });\n\n marketplace.command('publish <caminho>')\n .description(msgs.publishDescricao)\n .action(async (caminho: string) => {\n try {\n log.info(msgs.validandoAnalista(caminho));\n\n const stats = await import('node:fs').then(fs => fs.promises.stat(caminho));\n if (!stats.isFile()) {\n log.erro(msgs.erroCaminhoArquivo);\n sair(ExitCode.Failure);\n return;\n }\n\n log.sucesso(msgs.arquivoValidado);\n log.info('');\n log.info(msgs.publicarTitulo);\n log.info(msgs.publicarPasso1);\n log.info(msgs.publicarPasso2);\n log.info(msgs.publicarPasso3);\n log.info('');\n log.info(msgs.publicacaoDocumentacao);\n } catch (err) {\n log.erro(msgs.erroPublicar(err instanceof Error ? err.message : String(err)));\n sair(ExitCode.Failure);\n }\n });\n\n return marketplace;\n}\n"]}
@@ -20,7 +20,7 @@ export function comandoPodar(aplicarFlagsGlobais) {
20
20
  await aplicarFlagsGlobais(this.parent && typeof this.parent.opts === 'function' ? this.parent.opts() : {});
21
21
  }
22
22
  catch (err) {
23
- log.erro(`Falha ao aplicar flags: ${err instanceof Error ? err.message : String(err)}`);
23
+ log.erro(messages.CliComandoPodarMensagens.erroAplicarFlags(err instanceof Error ? err.message : String(err)));
24
24
  sair(ExitCode.Failure);
25
25
  return;
26
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"command-prune.js","sourceRoot":"","sources":["../../../src/cli/commands/command-prune.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: MIT\n\nimport { removerArquivosOrfaos } from '@analysts/corrections';\nimport { registroAnalistas } from '@analysts/registry';\nimport { exportarRelatoriosPoda } from '@cli/handlers';\nimport { ExitCode, expandIncludePatterns, processPatternList, sair } from '@cli/helpers';\nimport { chalk, config } from '@core/config';\nimport { iniciarInquisicao } from '@core/execution';\nimport { messages } from '@core/messages';\nimport { Command } from 'commander';\n\nimport type { ArquivoFantasma, ResultadoPoda, Tecnica } from '@';\nimport { asTecnicas } from '@';\n\nconst {\n log,\n logSistema\n} = messages;\nexport function comandoPodar(aplicarFlagsGlobais: (opts: Record<string, unknown>) => void): Command {\n return new Command('podar').description(messages.CliComandoPodarMensagens.descricao).option('-f, --force', 'Remove arquivos sem confirmação (CUIDADO!)', false).option('--include <padrao>', 'Glob pattern a INCLUIR (pode repetir a flag ou usar vírgulas / espaços para múltiplos)', (val: string, prev: string[]) => {\n prev.push(val);\n return prev;\n }, [] as string[]).option('--exclude <padrao>', 'Glob pattern a EXCLUIR adicionalmente (pode repetir a flag ou usar vírgulas / espaços)', (val: string, prev: string[]) => {\n prev.push(val);\n return prev;\n }, [] as string[]).action(async function (this: Command, opts: {\n force?: boolean;\n include?: string[];\n exclude?: string[];\n }) {\n try {\n await aplicarFlagsGlobais(this.parent && typeof this.parent.opts === 'function' ? this.parent.opts() : {});\n } catch (err) {\n log.erro(`Falha ao aplicar flags: ${err instanceof Error ? err.message : String(err)}`);\n sair(ExitCode.Failure);\n return;\n }\n log.info(chalk.bold(messages.CliComandoPodarMensagens.inicio));\n const baseDir = process.cwd();\n try {\n // Normaliza padrões de include/exclude para sincronizar filtros com o scanner\n const includeListRaw = processPatternList(opts.include);\n const includeList = includeListRaw.length ? expandIncludePatterns(includeListRaw) : [];\n const excludeList = processPatternList(opts.exclude);\n if (includeList.length) config.CLI_INCLUDE_PATTERNS = includeList;\n if (excludeList.length) config.CLI_EXCLUDE_PATTERNS = excludeList;\n\n // [FOGO] SIMPLIFICADO: sem sync de padrões obsoletos\n // CLI flags dominam globalExcludeGlob automaticamente\n\n const tecnicas = asTecnicas(registroAnalistas as Tecnica[]);\n const {\n fileEntries\n } = await iniciarInquisicao(baseDir, {\n incluirMetadados: false\n }, tecnicas);\n const resultadoPoda: ResultadoPoda = await removerArquivosOrfaos(fileEntries);\n if (resultadoPoda.arquivosOrfaos.length === 0) {\n log.sucesso(messages.CliComandoPodarMensagens.nenhumaSujeira(messages.ICONES_DIAGNOSTICO.sucesso));\n await exportarRelatoriosPoda({\n baseDir,\n podados: [],\n pendentes: [],\n simulado: !opts.force\n });\n return;\n }\n log.aviso(messages.CliComandoPodarMensagens.orfaosDetectados(resultadoPoda.arquivosOrfaos.length));\n resultadoPoda.arquivosOrfaos.forEach((file: ArquivoFantasma) => {\n log.info(messages.CliComandoPodarMensagens.linhaArquivoOrfao(file.arquivo));\n });\n if (!opts.force) {\n const readline = await import('node:readline/promises');\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout\n });\n const answer = await rl.question(chalk.yellow(messages.CliComandoPodarMensagens.confirmarRemocao));\n rl.close();\n\n // debug removido (usava console.log) - manter somente se modo debug ativo futuramente\n if (answer.toLowerCase() !== 's') {\n logSistema.podaCancelada();\n return;\n }\n }\n\n // Só remove se confirmado\n // --force: remove direto\n if (opts.force) {\n await removerArquivosOrfaos(fileEntries);\n logSistema.podaConcluida();\n const podados = resultadoPoda.arquivosOrfaos.map(arquivo => ({\n arquivo: arquivo.arquivo,\n motivo: arquivo.referenciado ? 'inativo' : 'órfão',\n detectedAt: Date.now(),\n scheduleAt: Date.now()\n }));\n await exportarRelatoriosPoda({\n baseDir,\n podados,\n pendentes: [],\n simulado: false\n });\n }\n } catch (error) {\n const errMsg = typeof error === 'object' && error && 'message' in error ? (error as {\n message: string;\n }).message : String(error);\n log.erro(messages.CliComandoPodarMensagens.erroDurantePoda(errMsg));\n if (config.DEV_MODE) console.error(error);\n sair(ExitCode.Failure);\n return;\n }\n });\n}"]}
1
+ {"version":3,"file":"command-prune.js","sourceRoot":"","sources":["../../../src/cli/commands/command-prune.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: MIT\n\nimport { removerArquivosOrfaos } from '@analysts/corrections';\nimport { registroAnalistas } from '@analysts/registry';\nimport { exportarRelatoriosPoda } from '@cli/handlers';\nimport { ExitCode, expandIncludePatterns, processPatternList, sair } from '@cli/helpers';\nimport { chalk, config } from '@core/config';\nimport { iniciarInquisicao } from '@core/execution';\nimport { messages } from '@core/messages';\nimport { Command } from 'commander';\n\nimport type { ArquivoFantasma, ResultadoPoda, Tecnica } from '@';\nimport { asTecnicas } from '@';\n\nconst {\n log,\n logSistema\n} = messages;\nexport function comandoPodar(aplicarFlagsGlobais: (opts: Record<string, unknown>) => void): Command {\n return new Command('podar').description(messages.CliComandoPodarMensagens.descricao).option('-f, --force', 'Remove arquivos sem confirmação (CUIDADO!)', false).option('--include <padrao>', 'Glob pattern a INCLUIR (pode repetir a flag ou usar vírgulas / espaços para múltiplos)', (val: string, prev: string[]) => {\n prev.push(val);\n return prev;\n }, [] as string[]).option('--exclude <padrao>', 'Glob pattern a EXCLUIR adicionalmente (pode repetir a flag ou usar vírgulas / espaços)', (val: string, prev: string[]) => {\n prev.push(val);\n return prev;\n }, [] as string[]).action(async function (this: Command, opts: {\n force?: boolean;\n include?: string[];\n exclude?: string[];\n }) {\n try {\n await aplicarFlagsGlobais(this.parent && typeof this.parent.opts === 'function' ? this.parent.opts() : {});\n } catch (err) {\n log.erro(messages.CliComandoPodarMensagens.erroAplicarFlags(err instanceof Error ? err.message : String(err)));\n sair(ExitCode.Failure);\n return;\n }\n log.info(chalk.bold(messages.CliComandoPodarMensagens.inicio));\n const baseDir = process.cwd();\n try {\n // Normaliza padrões de include/exclude para sincronizar filtros com o scanner\n const includeListRaw = processPatternList(opts.include);\n const includeList = includeListRaw.length ? expandIncludePatterns(includeListRaw) : [];\n const excludeList = processPatternList(opts.exclude);\n if (includeList.length) config.CLI_INCLUDE_PATTERNS = includeList;\n if (excludeList.length) config.CLI_EXCLUDE_PATTERNS = excludeList;\n\n // [FOGO] SIMPLIFICADO: sem sync de padrões obsoletos\n // CLI flags dominam globalExcludeGlob automaticamente\n\n const tecnicas = asTecnicas(registroAnalistas as Tecnica[]);\n const {\n fileEntries\n } = await iniciarInquisicao(baseDir, {\n incluirMetadados: false\n }, tecnicas);\n const resultadoPoda: ResultadoPoda = await removerArquivosOrfaos(fileEntries);\n if (resultadoPoda.arquivosOrfaos.length === 0) {\n log.sucesso(messages.CliComandoPodarMensagens.nenhumaSujeira(messages.ICONES_DIAGNOSTICO.sucesso));\n await exportarRelatoriosPoda({\n baseDir,\n podados: [],\n pendentes: [],\n simulado: !opts.force\n });\n return;\n }\n log.aviso(messages.CliComandoPodarMensagens.orfaosDetectados(resultadoPoda.arquivosOrfaos.length));\n resultadoPoda.arquivosOrfaos.forEach((file: ArquivoFantasma) => {\n log.info(messages.CliComandoPodarMensagens.linhaArquivoOrfao(file.arquivo));\n });\n if (!opts.force) {\n const readline = await import('node:readline/promises');\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout\n });\n const answer = await rl.question(chalk.yellow(messages.CliComandoPodarMensagens.confirmarRemocao));\n rl.close();\n\n // debug removido (usava console.log) - manter somente se modo debug ativo futuramente\n if (answer.toLowerCase() !== 's') {\n logSistema.podaCancelada();\n return;\n }\n }\n\n // Só remove se confirmado\n // --force: remove direto\n if (opts.force) {\n await removerArquivosOrfaos(fileEntries);\n logSistema.podaConcluida();\n const podados = resultadoPoda.arquivosOrfaos.map(arquivo => ({\n arquivo: arquivo.arquivo,\n motivo: arquivo.referenciado ? 'inativo' : 'órfão',\n detectedAt: Date.now(),\n scheduleAt: Date.now()\n }));\n await exportarRelatoriosPoda({\n baseDir,\n podados,\n pendentes: [],\n simulado: false\n });\n }\n } catch (error) {\n const errMsg = typeof error === 'object' && error && 'message' in error ? (error as {\n message: string;\n }).message : String(error);\n log.erro(messages.CliComandoPodarMensagens.erroDurantePoda(errMsg));\n if (config.DEV_MODE) console.error(error);\n sair(ExitCode.Failure);\n return;\n }\n });\n}"]}
@@ -12,7 +12,7 @@ export function registrarComandoReverter(program) {
12
12
  catch (err) {
13
13
  if (process.env.VITEST === '1')
14
14
  return;
15
- log.aviso(`Falha ao carregar mapa de reversão (fast-mode): ${err instanceof Error ? err.message : String(err)}`);
15
+ log.aviso(messages.CliComandoReverterMensagens.avisoFalhaCarregarMapaFastMode(err instanceof Error ? err.message : String(err)));
16
16
  }
17
17
  }
18
18
  }).addCommand(new Command('listar').description(messages.CliComandoReverterMensagens.descricaoListar).action(async () => {
@@ -21,7 +21,7 @@ export function registrarComandoReverter(program) {
21
21
  const _lista = mapaReversao.listarMoves();
22
22
  }
23
23
  catch (err) {
24
- log.erro(`Falha ao listar moves: ${err instanceof Error ? err.message : String(err)}`);
24
+ log.erro(messages.CliComandoReverterMensagens.erroListarMoves(err instanceof Error ? err.message : String(err)));
25
25
  sair(ExitCode.Failure);
26
26
  }
27
27
  })).addCommand(new Command('arquivo').description(messages.CliComandoReverterMensagens.descricaoArquivo).argument('<arquivo>', 'Caminho do arquivo para reverter').action(async (arquivo) => {
@@ -44,7 +44,7 @@ export function registrarComandoReverter(program) {
44
44
  }
45
45
  }
46
46
  catch (err) {
47
- log.erro(`Falha ao reverter arquivo: ${err instanceof Error ? err.message : String(err)}`);
47
+ log.erro(messages.CliComandoReverterMensagens.erroReverterArquivo(err instanceof Error ? err.message : String(err)));
48
48
  sair(ExitCode.Failure);
49
49
  }
50
50
  })).addCommand(new Command('move').description(messages.CliComandoReverterMensagens.descricaoMove).argument('<id>', 'ID do move para reverter').action(async (id) => {
@@ -62,7 +62,7 @@ export function registrarComandoReverter(program) {
62
62
  }
63
63
  }
64
64
  catch (err) {
65
- log.erro(`Falha ao reverter move: ${err instanceof Error ? err.message : String(err)}`);
65
+ log.erro(messages.CliComandoReverterMensagens.erroReverterMove(err instanceof Error ? err.message : String(err)));
66
66
  sair(ExitCode.Failure);
67
67
  }
68
68
  })).addCommand(new Command('limpar').description(messages.CliComandoReverterMensagens.descricaoLimpar).option('-f, --force', 'Não pede confirmação').action(async (options) => {
@@ -76,7 +76,7 @@ export function registrarComandoReverter(program) {
76
76
  log.sucesso(messages.CliComandoReverterMensagens.mapaLimpoComSucesso(messages.ICONES_DIAGNOSTICO.sucesso));
77
77
  }
78
78
  catch (err) {
79
- log.erro(`Falha ao limpar mapa: ${err instanceof Error ? err.message : String(err)}`);
79
+ log.erro(messages.CliComandoReverterMensagens.erroLimparMapa(err instanceof Error ? err.message : String(err)));
80
80
  sair(ExitCode.Failure);
81
81
  }
82
82
  })).addCommand(new Command('status').description(messages.CliComandoReverterMensagens.descricaoStatus).action(async () => {
@@ -90,7 +90,7 @@ export function registrarComandoReverter(program) {
90
90
  }
91
91
  }
92
92
  catch (err) {
93
- log.erro(`Falha ao obter status: ${err instanceof Error ? err.message : String(err)}`);
93
+ log.erro(messages.CliComandoReverterMensagens.erroObterStatus(err instanceof Error ? err.message : String(err)));
94
94
  sair(ExitCode.Failure);
95
95
  }
96
96
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"command-reverter.js","sourceRoot":"","sources":["../../../src/cli/commands/command-reverter.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: MIT\nimport { mapaReversao } from '@analysts/corrections';\nimport { ExitCode, sair } from '@cli/helpers';\nimport { messages } from '@core/messages';\nimport { Command } from 'commander';\n\nconst {\n log,\n logAuto,\n logSistema\n} = messages;\nexport function registrarComandoReverter(program: Command): void {\n program.command('reverter').description(messages.CliComandoReverterMensagens.descricao).hook('preAction', async () => {\n if (process.env.TUTANUS_TEST_FAST === '1') {\n try {\n await mapaReversao.carregar();\n } catch (err) {\n // Em modo de teste rápido, falhas ao carregar o mapa são ignoradas para evitar timeout.\n // Porém, em outros ambientes, registramos um aviso para reduzir casos de promises 'swallowed'.\n if (process.env.VITEST === '1') return;\n log.aviso(`Falha ao carregar mapa de reversão (fast-mode): ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n }).addCommand(new Command('listar').description(messages.CliComandoReverterMensagens.descricaoListar).action(async () => {\n try {\n await mapaReversao.carregar();\n const _lista = mapaReversao.listarMoves();\n } catch (err) {\n log.erro(`Falha ao listar moves: ${err instanceof Error ? err.message : String(err)}`);\n sair(ExitCode.Failure);\n }\n })).addCommand(new Command('arquivo').description(messages.CliComandoReverterMensagens.descricaoArquivo).argument('<arquivo>', 'Caminho do arquivo para reverter').action(async (arquivo: string) => {\n try {\n await mapaReversao.carregar();\n if (!mapaReversao.podeReverterArquivo(arquivo)) {\n logSistema.reversaoNenhumMove(arquivo);\n sair(ExitCode.Failure);\n return;\n }\n logSistema.reversaoRevertendo(arquivo);\n const sucesso = await mapaReversao.reverterArquivo(arquivo);\n if (sucesso) {\n logSistema.reversaoSucesso(arquivo);\n } else {\n logSistema.reversaoFalha(arquivo);\n sair(ExitCode.Failure);\n return;\n }\n } catch (err) {\n log.erro(`Falha ao reverter arquivo: ${err instanceof Error ? err.message : String(err)}`);\n sair(ExitCode.Failure);\n }\n })).addCommand(new Command('move').description(messages.CliComandoReverterMensagens.descricaoMove).argument('<id>', 'ID do move para reverter').action(async (id: string) => {\n try {\n await mapaReversao.carregar();\n logAuto.mapaReversaoRevertendoMove(id);\n const sucesso = await mapaReversao.reverterMove(id);\n if (sucesso) {\n logAuto.mapaReversaoMoveRevertido(id);\n } else {\n logAuto.mapaReversaoFalhaReverterMove(id);\n sair(ExitCode.Failure);\n return;\n }\n } catch (err) {\n log.erro(`Falha ao reverter move: ${err instanceof Error ? err.message : String(err)}`);\n sair(ExitCode.Failure);\n }\n })).addCommand(new Command('limpar').description(messages.CliComandoReverterMensagens.descricaoLimpar).option('-f, --force', 'Não pede confirmação').action(async (options: {\n force?: boolean;\n }) => {\n try {\n await mapaReversao.carregar();\n if (!options.force) {\n sair(ExitCode.Failure);\n return;\n }\n await mapaReversao.limpar();\n log.sucesso(messages.CliComandoReverterMensagens.mapaLimpoComSucesso(messages.ICONES_DIAGNOSTICO.sucesso));\n } catch (err) {\n log.erro(`Falha ao limpar mapa: ${err instanceof Error ? err.message : String(err)}`);\n sair(ExitCode.Failure);\n }\n })).addCommand(new Command('status').description(messages.CliComandoReverterMensagens.descricaoStatus).action(async () => {\n try {\n await mapaReversao.carregar();\n const moves = mapaReversao.obterMoves();\n if (moves.length > 0) {\n const ultimoMove = moves.sort((a: { timestamp: string }, b: { timestamp: string }) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime())[0];\n const dataPtBr = new Date(ultimoMove.timestamp).toLocaleString('pt-BR');\n log.info(messages.CliComandoReverterMensagens.ultimoMove(dataPtBr));\n }\n } catch (err) {\n log.erro(`Falha ao obter status: ${err instanceof Error ? err.message : String(err)}`);\n sair(ExitCode.Failure);\n }\n }));\n}"]}
1
+ {"version":3,"file":"command-reverter.js","sourceRoot":"","sources":["../../../src/cli/commands/command-reverter.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: MIT\nimport { mapaReversao } from '@analysts/corrections';\nimport { ExitCode, sair } from '@cli/helpers';\nimport { messages } from '@core/messages';\nimport { Command } from 'commander';\n\nconst {\n log,\n logAuto,\n logSistema\n} = messages;\nexport function registrarComandoReverter(program: Command): void {\n program.command('reverter').description(messages.CliComandoReverterMensagens.descricao).hook('preAction', async () => {\n if (process.env.TUTANUS_TEST_FAST === '1') {\n try {\n await mapaReversao.carregar();\n } catch (err) {\n // Em modo de teste rápido, falhas ao carregar o mapa são ignoradas para evitar timeout.\n // Porém, em outros ambientes, registramos um aviso para reduzir casos de promises 'swallowed'.\n if (process.env.VITEST === '1') return;\n log.aviso(messages.CliComandoReverterMensagens.avisoFalhaCarregarMapaFastMode(err instanceof Error ? err.message : String(err)));\n }\n }\n }).addCommand(new Command('listar').description(messages.CliComandoReverterMensagens.descricaoListar).action(async () => {\n try {\n await mapaReversao.carregar();\n const _lista = mapaReversao.listarMoves();\n } catch (err) {\n log.erro(messages.CliComandoReverterMensagens.erroListarMoves(err instanceof Error ? err.message : String(err)));\n sair(ExitCode.Failure);\n }\n })).addCommand(new Command('arquivo').description(messages.CliComandoReverterMensagens.descricaoArquivo).argument('<arquivo>', 'Caminho do arquivo para reverter').action(async (arquivo: string) => {\n try {\n await mapaReversao.carregar();\n if (!mapaReversao.podeReverterArquivo(arquivo)) {\n logSistema.reversaoNenhumMove(arquivo);\n sair(ExitCode.Failure);\n return;\n }\n logSistema.reversaoRevertendo(arquivo);\n const sucesso = await mapaReversao.reverterArquivo(arquivo);\n if (sucesso) {\n logSistema.reversaoSucesso(arquivo);\n } else {\n logSistema.reversaoFalha(arquivo);\n sair(ExitCode.Failure);\n return;\n }\n } catch (err) {\n log.erro(messages.CliComandoReverterMensagens.erroReverterArquivo(err instanceof Error ? err.message : String(err)));\n sair(ExitCode.Failure);\n }\n })).addCommand(new Command('move').description(messages.CliComandoReverterMensagens.descricaoMove).argument('<id>', 'ID do move para reverter').action(async (id: string) => {\n try {\n await mapaReversao.carregar();\n logAuto.mapaReversaoRevertendoMove(id);\n const sucesso = await mapaReversao.reverterMove(id);\n if (sucesso) {\n logAuto.mapaReversaoMoveRevertido(id);\n } else {\n logAuto.mapaReversaoFalhaReverterMove(id);\n sair(ExitCode.Failure);\n return;\n }\n } catch (err) {\n log.erro(messages.CliComandoReverterMensagens.erroReverterMove(err instanceof Error ? err.message : String(err)));\n sair(ExitCode.Failure);\n }\n })).addCommand(new Command('limpar').description(messages.CliComandoReverterMensagens.descricaoLimpar).option('-f, --force', 'Não pede confirmação').action(async (options: {\n force?: boolean;\n }) => {\n try {\n await mapaReversao.carregar();\n if (!options.force) {\n sair(ExitCode.Failure);\n return;\n }\n await mapaReversao.limpar();\n log.sucesso(messages.CliComandoReverterMensagens.mapaLimpoComSucesso(messages.ICONES_DIAGNOSTICO.sucesso));\n } catch (err) {\n log.erro(messages.CliComandoReverterMensagens.erroLimparMapa(err instanceof Error ? err.message : String(err)));\n sair(ExitCode.Failure);\n }\n })).addCommand(new Command('status').description(messages.CliComandoReverterMensagens.descricaoStatus).action(async () => {\n try {\n await mapaReversao.carregar();\n const moves = mapaReversao.obterMoves();\n if (moves.length > 0) {\n const ultimoMove = moves.sort((a: { timestamp: string }, b: { timestamp: string }) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime())[0];\n const dataPtBr = new Date(ultimoMove.timestamp).toLocaleString('pt-BR');\n log.info(messages.CliComandoReverterMensagens.ultimoMove(dataPtBr));\n }\n } catch (err) {\n log.erro(messages.CliComandoReverterMensagens.erroObterStatus(err instanceof Error ? err.message : String(err)));\n sair(ExitCode.Failure);\n }\n }));\n}"]}
@@ -1,5 +1,12 @@
1
1
  export declare const CliBinMensagens: {
2
2
  readonly flagsInvalidas: "Invalid flags: {erro}";
3
+ readonly avisoLoaderAliases: "Warning: Could not register aliases loader: {erro}";
4
+ readonly erroObterVersao: "Error getting version in getVersion: {erro}";
5
+ readonly avisoConfigProducaoNaoCarregada: "Warning: Production configuration not loaded: {erro}";
6
+ readonly erroCarregarMemoria: "Error loading memory: {erro}";
7
+ readonly erroInicializacaoDinamica: "Error on dynamic initialization: {erro}";
8
+ readonly erroInicializarFormatadores: "Error initializing formatters: {erro}";
9
+ readonly erroRegistrarHistorico: "Error recording history: {erro}";
3
10
  readonly unhandledRejection: "Tutanus: unhandled rejection";
4
11
  readonly excecaoNaoCapturada: "Uncaught exception: {mensagem}";
5
12
  readonly erroInicializacao: "Error initializing tutanus:";