@semacode/cli 1.5.36 → 1.5.37

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 (481) hide show
  1. package/AGENT_CONTEXT_PACK.json +76 -8
  2. package/LICENSE +1 -2
  3. package/SEMA_BRIEF.curto.txt +8 -6
  4. package/SEMA_BRIEF.md +240 -204
  5. package/SEMA_BRIEF.micro.txt +9 -6
  6. package/SEMA_INDEX.json +2079 -1907
  7. package/dist/agentContext.d.ts +19 -0
  8. package/dist/agentContext.js +26 -0
  9. package/dist/agentContext.js.map +1 -0
  10. package/dist/agentContextPack.d.ts +3 -0
  11. package/dist/agentContextPack.js +403 -0
  12. package/dist/agentContextPack.js.map +1 -0
  13. package/dist/agentContextTipos.d.ts +96 -0
  14. package/dist/agentContextTipos.js +55 -0
  15. package/dist/agentContextTipos.js.map +1 -0
  16. package/dist/agentEntryPoints.d.ts +13 -0
  17. package/dist/agentEntryPoints.js +422 -0
  18. package/dist/agentEntryPoints.js.map +1 -0
  19. package/dist/authorAnalise.d.ts +15 -0
  20. package/dist/authorAnalise.js +210 -0
  21. package/dist/authorAnalise.js.map +1 -0
  22. package/dist/authorPoliticas.d.ts +37 -0
  23. package/dist/authorPoliticas.js +340 -0
  24. package/dist/authorPoliticas.js.map +1 -0
  25. package/dist/billing/index.d.ts +1 -1
  26. package/dist/billing/index.js +6 -2
  27. package/dist/billing/index.js.map +1 -1
  28. package/dist/bridge.js +2 -0
  29. package/dist/bridge.js.map +1 -1
  30. package/dist/carregarModulos.d.ts +2 -0
  31. package/dist/carregarModulos.js +9 -0
  32. package/dist/carregarModulos.js.map +1 -0
  33. package/dist/cliArgs.d.ts +6 -0
  34. package/dist/cliArgs.js +70 -0
  35. package/dist/cliArgs.js.map +1 -0
  36. package/dist/contexto.js +2 -0
  37. package/dist/contexto.js.map +1 -1
  38. package/dist/controleComercialSupabase.js.map +1 -1
  39. package/dist/controleComercialSupabaseAdmin.js.map +1 -1
  40. package/dist/controleComercialSupabaseCadastro.js.map +1 -1
  41. package/dist/controleComercialSupabaseConsumo.js.map +1 -1
  42. package/dist/controleComercialSupabaseConta.js.map +1 -1
  43. package/dist/controleComercialSupabaseProfiles.js.map +1 -1
  44. package/dist/dev/index.js +2 -0
  45. package/dist/dev/index.js.map +1 -1
  46. package/dist/dev/watcher.d.ts +1 -0
  47. package/dist/dev/watcher.js +4 -0
  48. package/dist/dev/watcher.js.map +1 -0
  49. package/dist/docs/resolver.d.ts +1 -0
  50. package/dist/docs/resolver.js +4 -0
  51. package/dist/docs/resolver.js.map +1 -0
  52. package/dist/docs.d.ts +2 -56
  53. package/dist/docs.js +5 -502
  54. package/dist/docs.js.map +1 -1
  55. package/dist/docs.part01.d.ts +78 -0
  56. package/dist/docs.part01.js +347 -0
  57. package/dist/docs.part01.js.map +1 -0
  58. package/dist/docs.part02.d.ts +20 -0
  59. package/dist/docs.part02.js +181 -0
  60. package/dist/docs.part02.js.map +1 -0
  61. package/dist/doctorCommand.d.ts +27 -0
  62. package/dist/doctorCommand.js +160 -0
  63. package/dist/doctorCommand.js.map +1 -0
  64. package/dist/drift.contrato.d.ts +23 -0
  65. package/dist/drift.contrato.js +33 -0
  66. package/dist/drift.contrato.js.map +1 -0
  67. package/dist/drift.d.ts +13 -227
  68. package/dist/drift.js +16 -3924
  69. package/dist/drift.js.map +1 -1
  70. package/dist/drift.part01.d.ts +252 -0
  71. package/dist/drift.part01.js +183 -0
  72. package/dist/drift.part01.js.map +1 -0
  73. package/dist/drift.part02.d.ts +30 -0
  74. package/dist/drift.part02.js +342 -0
  75. package/dist/drift.part02.js.map +1 -0
  76. package/dist/drift.part03.d.ts +26 -0
  77. package/dist/drift.part03.js +343 -0
  78. package/dist/drift.part03.js.map +1 -0
  79. package/dist/drift.part04.d.ts +46 -0
  80. package/dist/drift.part04.js +354 -0
  81. package/dist/drift.part04.js.map +1 -0
  82. package/dist/drift.part05.d.ts +47 -0
  83. package/dist/drift.part05.js +353 -0
  84. package/dist/drift.part05.js.map +1 -0
  85. package/dist/drift.part06.d.ts +17 -0
  86. package/dist/drift.part06.js +381 -0
  87. package/dist/drift.part06.js.map +1 -0
  88. package/dist/drift.part07.d.ts +48 -0
  89. package/dist/drift.part07.js +377 -0
  90. package/dist/drift.part07.js.map +1 -0
  91. package/dist/drift.part08.d.ts +26 -0
  92. package/dist/drift.part08.js +333 -0
  93. package/dist/drift.part08.js.map +1 -0
  94. package/dist/drift.part09.d.ts +22 -0
  95. package/dist/drift.part09.js +322 -0
  96. package/dist/drift.part09.js.map +1 -0
  97. package/dist/drift.part10.d.ts +11 -0
  98. package/dist/drift.part10.js +116 -0
  99. package/dist/drift.part10.js.map +1 -0
  100. package/dist/drift.part11.d.ts +3 -0
  101. package/dist/drift.part11.js +320 -0
  102. package/dist/drift.part11.js.map +1 -0
  103. package/dist/drift.part12.d.ts +17 -0
  104. package/dist/drift.part12.js +289 -0
  105. package/dist/drift.part12.js.map +1 -0
  106. package/dist/drift.part13.d.ts +17 -0
  107. package/dist/drift.part13.js +86 -0
  108. package/dist/drift.part13.js.map +1 -0
  109. package/dist/drift.part14.d.ts +44 -0
  110. package/dist/drift.part14.js +402 -0
  111. package/dist/drift.part14.js.map +1 -0
  112. package/dist/driftOrcamento.d.ts +69 -0
  113. package/dist/driftOrcamento.js +280 -0
  114. package/dist/driftOrcamento.js.map +1 -0
  115. package/dist/execucoesExternas.d.ts +10 -0
  116. package/dist/execucoesExternas.js +51 -0
  117. package/dist/execucoesExternas.js.map +1 -0
  118. package/dist/exemplosOficiais.d.ts +10 -0
  119. package/dist/exemplosOficiais.js +63 -0
  120. package/dist/exemplosOficiais.js.map +1 -0
  121. package/dist/fsGovernado.d.ts +10 -0
  122. package/dist/fsGovernado.js +50 -0
  123. package/dist/fsGovernado.js.map +1 -0
  124. package/dist/geracaoCore.d.ts +64 -0
  125. package/dist/geracaoCore.js +381 -0
  126. package/dist/geracaoCore.js.map +1 -0
  127. package/dist/iaPrompts.d.ts +6 -0
  128. package/dist/iaPrompts.js +318 -0
  129. package/dist/iaPrompts.js.map +1 -0
  130. package/dist/importador.d.ts +9 -31
  131. package/dist/importador.js +11 -2938
  132. package/dist/importador.js.map +1 -1
  133. package/dist/importador.part01.d.ts +150 -0
  134. package/dist/importador.part01.js +256 -0
  135. package/dist/importador.part01.js.map +1 -0
  136. package/dist/importador.part02.d.ts +25 -0
  137. package/dist/importador.part02.js +359 -0
  138. package/dist/importador.part02.js.map +1 -0
  139. package/dist/importador.part03.d.ts +53 -0
  140. package/dist/importador.part03.js +366 -0
  141. package/dist/importador.part03.js.map +1 -0
  142. package/dist/importador.part04.d.ts +26 -0
  143. package/dist/importador.part04.js +374 -0
  144. package/dist/importador.part04.js.map +1 -0
  145. package/dist/importador.part05.d.ts +28 -0
  146. package/dist/importador.part05.js +340 -0
  147. package/dist/importador.part05.js.map +1 -0
  148. package/dist/importador.part06.d.ts +8 -0
  149. package/dist/importador.part06.js +327 -0
  150. package/dist/importador.part06.js.map +1 -0
  151. package/dist/importador.part07.d.ts +23 -0
  152. package/dist/importador.part07.js +300 -0
  153. package/dist/importador.part07.js.map +1 -0
  154. package/dist/importador.part08.d.ts +12 -0
  155. package/dist/importador.part08.js +378 -0
  156. package/dist/importador.part08.js.map +1 -0
  157. package/dist/importador.part09.d.ts +16 -0
  158. package/dist/importador.part09.js +319 -0
  159. package/dist/importador.part09.js.map +1 -0
  160. package/dist/index.d.ts +12 -1
  161. package/dist/index.js +16 -7945
  162. package/dist/index.js.map +1 -1
  163. package/dist/index.part01.d.ts +148 -0
  164. package/dist/index.part01.js +252 -0
  165. package/dist/index.part01.js.map +1 -0
  166. package/dist/index.part02.d.ts +17 -0
  167. package/dist/index.part02.js +344 -0
  168. package/dist/index.part02.js.map +1 -0
  169. package/dist/index.part03.d.ts +59 -0
  170. package/dist/index.part03.js +352 -0
  171. package/dist/index.part03.js.map +1 -0
  172. package/dist/index.part04.d.ts +20 -0
  173. package/dist/index.part04.js +358 -0
  174. package/dist/index.part04.js.map +1 -0
  175. package/dist/index.part05.d.ts +10 -0
  176. package/dist/index.part05.js +370 -0
  177. package/dist/index.part05.js.map +1 -0
  178. package/dist/index.part06.d.ts +14 -0
  179. package/dist/index.part06.js +336 -0
  180. package/dist/index.part06.js.map +1 -0
  181. package/dist/index.part07.d.ts +9 -0
  182. package/dist/index.part07.js +287 -0
  183. package/dist/index.part07.js.map +1 -0
  184. package/dist/index.part08.d.ts +1 -0
  185. package/dist/index.part08.js +206 -0
  186. package/dist/index.part08.js.map +1 -0
  187. package/dist/init/index.js +2 -0
  188. package/dist/init/index.js.map +1 -1
  189. package/dist/init/templates.d.ts +2 -11
  190. package/dist/init/templates.js +4 -659
  191. package/dist/init/templates.js.map +1 -1
  192. package/dist/init/templates.part01.d.ts +11 -0
  193. package/dist/init/templates.part01.js +399 -0
  194. package/dist/init/templates.part01.js.map +1 -0
  195. package/dist/init/templates.part02.d.ts +8 -0
  196. package/dist/init/templates.part02.js +265 -0
  197. package/dist/init/templates.part02.js.map +1 -0
  198. package/dist/initCommand.d.ts +3 -0
  199. package/dist/initCommand.js +41 -0
  200. package/dist/initCommand.js.map +1 -0
  201. package/dist/initTemplatesBackend.d.ts +2 -0
  202. package/dist/initTemplatesBackend.js +127 -0
  203. package/dist/initTemplatesBackend.js.map +1 -0
  204. package/dist/initTemplatesBase.d.ts +9 -0
  205. package/dist/initTemplatesBase.js +79 -0
  206. package/dist/initTemplatesBase.js.map +1 -0
  207. package/dist/initTemplatesFlutter.d.ts +2 -0
  208. package/dist/initTemplatesFlutter.js +185 -0
  209. package/dist/initTemplatesFlutter.js.map +1 -0
  210. package/dist/initTemplatesRuntime.d.ts +2 -0
  211. package/dist/initTemplatesRuntime.js +494 -0
  212. package/dist/initTemplatesRuntime.js.map +1 -0
  213. package/dist/initTemplatesWeb.d.ts +2 -0
  214. package/dist/initTemplatesWeb.js +429 -0
  215. package/dist/initTemplatesWeb.js.map +1 -0
  216. package/dist/mcpInstalarChaveCommand.d.ts +1 -0
  217. package/dist/mcpInstalarChaveCommand.js +141 -0
  218. package/dist/mcpInstalarChaveCommand.js.map +1 -0
  219. package/dist/mcpRemoto.js.map +1 -1
  220. package/dist/mcp_chave.d.ts +1 -0
  221. package/dist/mcp_chave.js +4 -0
  222. package/dist/mcp_chave.js.map +1 -0
  223. package/dist/profileArtefatoBase.d.ts +30 -0
  224. package/dist/profileArtefatoBase.js +129 -0
  225. package/dist/profileArtefatoBase.js.map +1 -0
  226. package/dist/profileArtefatoValidadores.d.ts +9 -0
  227. package/dist/profileArtefatoValidadores.js +287 -0
  228. package/dist/profileArtefatoValidadores.js.map +1 -0
  229. package/dist/profileAuthorCommand.d.ts +6 -0
  230. package/dist/profileAuthorCommand.js +442 -0
  231. package/dist/profileAuthorCommand.js.map +1 -0
  232. package/dist/profileAuthorTipos.d.ts +225 -0
  233. package/dist/profileAuthorTipos.js +6 -0
  234. package/dist/profileAuthorTipos.js.map +1 -0
  235. package/dist/profileCatalogo.d.ts +8 -0
  236. package/dist/profileCatalogo.js +235 -0
  237. package/dist/profileCatalogo.js.map +1 -0
  238. package/dist/profileCommand.d.ts +33 -0
  239. package/dist/profileCommand.js +256 -0
  240. package/dist/profileCommand.js.map +1 -0
  241. package/dist/profileOrquestracao.d.ts +33 -0
  242. package/dist/profileOrquestracao.js +53 -0
  243. package/dist/profileOrquestracao.js.map +1 -0
  244. package/dist/profileRegras.d.ts +19 -0
  245. package/dist/profileRegras.js +219 -0
  246. package/dist/profileRegras.js.map +1 -0
  247. package/dist/profileRulePacks.d.ts +3 -0
  248. package/dist/profileRulePacks.js +334 -0
  249. package/dist/profileRulePacks.js.map +1 -0
  250. package/dist/profiles/validate.d.ts +1 -0
  251. package/dist/profiles/validate.js +4 -0
  252. package/dist/profiles/validate.js.map +1 -0
  253. package/dist/projeto.d.ts +4 -53
  254. package/dist/projeto.js +5 -649
  255. package/dist/projeto.js.map +1 -1
  256. package/dist/projetoBusca.d.ts +7 -0
  257. package/dist/projetoBusca.js +142 -0
  258. package/dist/projetoBusca.js.map +1 -0
  259. package/dist/projetoCarregar.d.ts +2 -0
  260. package/dist/projetoCarregar.js +50 -0
  261. package/dist/projetoCarregar.js.map +1 -0
  262. package/dist/projetoConfig.d.ts +10 -0
  263. package/dist/projetoConfig.js +89 -0
  264. package/dist/projetoConfig.js.map +1 -0
  265. package/dist/projetoLegado.d.ts +3 -0
  266. package/dist/projetoLegado.js +175 -0
  267. package/dist/projetoLegado.js.map +1 -0
  268. package/dist/projetoOrigens.d.ts +6 -0
  269. package/dist/projetoOrigens.js +185 -0
  270. package/dist/projetoOrigens.js.map +1 -0
  271. package/dist/projetoResolucao.d.ts +8 -0
  272. package/dist/projetoResolucao.js +43 -0
  273. package/dist/projetoResolucao.js.map +1 -0
  274. package/dist/projetoTipos.d.ts +43 -0
  275. package/dist/projetoTipos.js +4 -0
  276. package/dist/projetoTipos.js.map +1 -0
  277. package/dist/runnerValidacaoRemota.js.map +1 -1
  278. package/dist/runnerValidacaoRemotaBateria.js +2 -0
  279. package/dist/runnerValidacaoRemotaBateria.js.map +1 -1
  280. package/dist/runnerValidacaoRemotaExecucao.js +2 -0
  281. package/dist/runnerValidacaoRemotaExecucao.js.map +1 -1
  282. package/dist/runnerValidacaoRemotaRelatorio.js +2 -0
  283. package/dist/runnerValidacaoRemotaRelatorio.js.map +1 -1
  284. package/dist/runnerValidacaoRemotaSnapshot.js +2 -0
  285. package/dist/runnerValidacaoRemotaSnapshot.js.map +1 -1
  286. package/dist/runnerValidacaoRemotaWorkspace.js +2 -0
  287. package/dist/runnerValidacaoRemotaWorkspace.js.map +1 -1
  288. package/dist/sync/index.js +2 -0
  289. package/dist/sync/index.js.map +1 -1
  290. package/dist/textoListas.d.ts +4 -0
  291. package/dist/textoListas.js +22 -0
  292. package/dist/textoListas.js.map +1 -0
  293. package/dist/typescript-http-body.d.ts +12 -0
  294. package/dist/typescript-http-body.js +145 -0
  295. package/dist/typescript-http-body.js.map +1 -0
  296. package/dist/typescript-http-expressoes.d.ts +17 -0
  297. package/dist/typescript-http-expressoes.js +194 -0
  298. package/dist/typescript-http-expressoes.js.map +1 -0
  299. package/dist/typescript-http-modelos.d.ts +45 -0
  300. package/dist/typescript-http-modelos.js +82 -0
  301. package/dist/typescript-http-modelos.js.map +1 -0
  302. package/dist/typescript-http-rotas.d.ts +9 -0
  303. package/dist/typescript-http-rotas.js +129 -0
  304. package/dist/typescript-http-rotas.js.map +1 -0
  305. package/dist/typescript-http-semantica.d.ts +11 -0
  306. package/dist/typescript-http-semantica.js +329 -0
  307. package/dist/typescript-http-semantica.js.map +1 -0
  308. package/dist/typescript-http.d.ts +3 -35
  309. package/dist/typescript-http.js +4 -853
  310. package/dist/typescript-http.js.map +1 -1
  311. package/docs/AGENT_STARTER.md +1 -1
  312. package/docs/agentes-por-capacidade.md +46 -3
  313. package/docs/documentacao.md +1 -1
  314. package/docs/fluxo-pratico-ia-sema.md +1 -1
  315. package/docs/mcp.md +12 -0
  316. package/docs/pagamento-ponta-a-ponta.md +1 -1
  317. package/docs/persistencia-vendor-first.md +1 -1
  318. package/docs/prompt-base-ia-sema.md +1 -1
  319. package/docs/repositories.md +2 -2
  320. package/docs/seguranca.md +1 -1
  321. package/docs/sintaxe.md +1 -1
  322. package/exemplos/agendamento.sema +1 -1
  323. package/exemplos/assinatura.sema +1 -1
  324. package/exemplos/auditoria.sema +1 -1
  325. package/exemplos/autenticacao.sema +1 -1
  326. package/exemplos/author_obra_comum.sema +1 -1
  327. package/exemplos/author_tema_sensivel.sema +1 -1
  328. package/exemplos/automacao.sema +1 -1
  329. package/exemplos/cadastro_usuario.sema +1 -1
  330. package/exemplos/calculadora.sema +1 -1
  331. package/exemplos/crud_simples.sema +1 -1
  332. package/exemplos/estoque.sema +1 -1
  333. package/exemplos/exportacao.sema +1 -1
  334. package/exemplos/fila.sema +1 -1
  335. package/exemplos/integracao_externa.sema +1 -1
  336. package/exemplos/multi_tenant.sema +1 -1
  337. package/exemplos/notificacao.sema +1 -1
  338. package/exemplos/operacao_estrategia.sema +132 -633
  339. package/exemplos/operacao_estrategia_discovery.sema +220 -0
  340. package/exemplos/operacao_estrategia_fluxo.sema +114 -0
  341. package/exemplos/operacao_estrategia_gates.sema +106 -0
  342. package/exemplos/operacao_estrategia_quarentena.sema +133 -0
  343. package/exemplos/operacao_estrategia_rollout.sema +124 -0
  344. package/exemplos/pagamento.sema +1 -1
  345. package/exemplos/pagamento_dominio.sema +1 -1
  346. package/exemplos/pedido.sema +1 -1
  347. package/exemplos/permissao.sema +1 -1
  348. package/exemplos/persistencia_vendor_first.sema +1 -1
  349. package/exemplos/profile_game.sema +1 -1
  350. package/exemplos/profile_legal.sema +1 -1
  351. package/exemplos/profile_ops.sema +1 -1
  352. package/exemplos/profile_research.sema +1 -1
  353. package/exemplos/profile_software.sema +1 -1
  354. package/exemplos/profile_workflow_n8n.sema +1 -1
  355. package/exemplos/relatorio.sema +1 -1
  356. package/exemplos/replica_analitica_erp.sema +1 -1
  357. package/exemplos/testes_embutidos.sema +1 -1
  358. package/exemplos/tratamento_erro.sema +1 -1
  359. package/exemplos/upload_arquivo.sema +1 -1
  360. package/exemplos/webhook.sema +1 -1
  361. package/llms-full.txt +13 -8
  362. package/llms.txt +12 -7
  363. package/node_modules/@sema/gerador-css/dist/index.d.ts +2 -3
  364. package/node_modules/@sema/gerador-css/dist/index.js +4 -599
  365. package/node_modules/@sema/gerador-css/dist/index.js.map +1 -1
  366. package/node_modules/@sema/gerador-css/dist/index.part01.d.ts +6 -0
  367. package/node_modules/@sema/gerador-css/dist/index.part01.js +49 -0
  368. package/node_modules/@sema/gerador-css/dist/index.part01.js.map +1 -0
  369. package/node_modules/@sema/gerador-css/dist/index.part02.d.ts +3 -0
  370. package/node_modules/@sema/gerador-css/dist/index.part02.js +471 -0
  371. package/node_modules/@sema/gerador-css/dist/index.part02.js.map +1 -0
  372. package/node_modules/@sema/gerador-python/dist/index.d.ts +2 -6
  373. package/node_modules/@sema/gerador-python/dist/index.js +4 -771
  374. package/node_modules/@sema/gerador-python/dist/index.js.map +1 -1
  375. package/node_modules/@sema/gerador-python/dist/index.part01.d.ts +28 -0
  376. package/node_modules/@sema/gerador-python/dist/index.part01.js +383 -0
  377. package/node_modules/@sema/gerador-python/dist/index.part01.js.map +1 -0
  378. package/node_modules/@sema/gerador-python/dist/index.part02.d.ts +20 -0
  379. package/node_modules/@sema/gerador-python/dist/index.part02.js +396 -0
  380. package/node_modules/@sema/gerador-python/dist/index.part02.js.map +1 -0
  381. package/node_modules/@sema/gerador-typescript/dist/index.d.ts +3 -6
  382. package/node_modules/@sema/gerador-typescript/dist/index.js +5 -810
  383. package/node_modules/@sema/gerador-typescript/dist/index.js.map +1 -1
  384. package/node_modules/@sema/gerador-typescript/dist/index.part01.d.ts +25 -0
  385. package/node_modules/@sema/gerador-typescript/dist/index.part01.js +358 -0
  386. package/node_modules/@sema/gerador-typescript/dist/index.part01.js.map +1 -0
  387. package/node_modules/@sema/gerador-typescript/dist/index.part02.d.ts +14 -0
  388. package/node_modules/@sema/gerador-typescript/dist/index.part02.js +405 -0
  389. package/node_modules/@sema/gerador-typescript/dist/index.part02.js.map +1 -0
  390. package/node_modules/@sema/gerador-typescript/dist/index.part03.d.ts +5 -0
  391. package/node_modules/@sema/gerador-typescript/dist/index.part03.js +60 -0
  392. package/node_modules/@sema/gerador-typescript/dist/index.part03.js.map +1 -0
  393. package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js +2 -0
  394. package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js.map +1 -1
  395. package/node_modules/@sema/nucleo/dist/diagnosticos/snippets.d.ts +6 -0
  396. package/node_modules/@sema/nucleo/dist/diagnosticos/snippets.js +40 -0
  397. package/node_modules/@sema/nucleo/dist/diagnosticos/snippets.js.map +1 -0
  398. package/node_modules/@sema/nucleo/dist/formatador/index.d.ts +2 -9
  399. package/node_modules/@sema/nucleo/dist/formatador/index.js +4 -467
  400. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -1
  401. package/node_modules/@sema/nucleo/dist/formatador/index.part01.d.ts +38 -0
  402. package/node_modules/@sema/nucleo/dist/formatador/index.part01.js +382 -0
  403. package/node_modules/@sema/nucleo/dist/formatador/index.part01.js.map +1 -0
  404. package/node_modules/@sema/nucleo/dist/formatador/index.part02.d.ts +4 -0
  405. package/node_modules/@sema/nucleo/dist/formatador/index.part02.js +92 -0
  406. package/node_modules/@sema/nucleo/dist/formatador/index.part02.js.map +1 -0
  407. package/node_modules/@sema/nucleo/dist/index.d.ts +2 -0
  408. package/node_modules/@sema/nucleo/dist/index.js +6 -0
  409. package/node_modules/@sema/nucleo/dist/index.js.map +1 -1
  410. package/node_modules/@sema/nucleo/dist/ir/conversor.d.ts +3 -5
  411. package/node_modules/@sema/nucleo/dist/ir/conversor.js +5 -880
  412. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
  413. package/node_modules/@sema/nucleo/dist/ir/conversor.part01.d.ts +30 -0
  414. package/node_modules/@sema/nucleo/dist/ir/conversor.part01.js +398 -0
  415. package/node_modules/@sema/nucleo/dist/ir/conversor.part01.js.map +1 -0
  416. package/node_modules/@sema/nucleo/dist/ir/conversor.part02.d.ts +41 -0
  417. package/node_modules/@sema/nucleo/dist/ir/conversor.part02.js +184 -0
  418. package/node_modules/@sema/nucleo/dist/ir/conversor.part02.js.map +1 -0
  419. package/node_modules/@sema/nucleo/dist/ir/conversor.part03.d.ts +5 -0
  420. package/node_modules/@sema/nucleo/dist/ir/conversor.part03.js +310 -0
  421. package/node_modules/@sema/nucleo/dist/ir/conversor.part03.js.map +1 -0
  422. package/node_modules/@sema/nucleo/dist/parser/parser.d.ts +3 -9
  423. package/node_modules/@sema/nucleo/dist/parser/parser.declaracoes.d.ts +11 -0
  424. package/node_modules/@sema/nucleo/dist/parser/parser.declaracoes.js +150 -0
  425. package/node_modules/@sema/nucleo/dist/parser/parser.declaracoes.js.map +1 -0
  426. package/node_modules/@sema/nucleo/dist/parser/parser.js +5 -768
  427. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
  428. package/node_modules/@sema/nucleo/dist/parser/parser.modulo.d.ts +3 -0
  429. package/node_modules/@sema/nucleo/dist/parser/parser.modulo.js +222 -0
  430. package/node_modules/@sema/nucleo/dist/parser/parser.modulo.js.map +1 -0
  431. package/node_modules/@sema/nucleo/dist/parser/parser.part01.d.ts +9 -0
  432. package/node_modules/@sema/nucleo/dist/parser/parser.part01.js +61 -0
  433. package/node_modules/@sema/nucleo/dist/parser/parser.part01.js.map +1 -0
  434. package/node_modules/@sema/nucleo/dist/parser/parser.part02.d.ts +40 -0
  435. package/node_modules/@sema/nucleo/dist/parser/parser.part02.js +373 -0
  436. package/node_modules/@sema/nucleo/dist/parser/parser.part02.js.map +1 -0
  437. package/node_modules/@sema/nucleo/dist/parser/parser.part03.d.ts +4 -0
  438. package/node_modules/@sema/nucleo/dist/parser/parser.part03.js +9 -0
  439. package/node_modules/@sema/nucleo/dist/parser/parser.part03.js.map +1 -0
  440. package/node_modules/@sema/nucleo/dist/persistencia/contratos.js +2 -0
  441. package/node_modules/@sema/nucleo/dist/persistencia/contratos.js.map +1 -1
  442. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +3 -59
  443. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +2 -1682
  444. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
  445. package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.d.ts +89 -0
  446. package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.js +292 -0
  447. package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.js.map +1 -0
  448. package/node_modules/@sema/nucleo/dist/semantico/analisador.part02.d.ts +29 -0
  449. package/node_modules/@sema/nucleo/dist/semantico/analisador.part02.js +168 -0
  450. package/node_modules/@sema/nucleo/dist/semantico/analisador.part02.js.map +1 -0
  451. package/node_modules/@sema/nucleo/dist/semantico/analisador.part03.d.ts +11 -0
  452. package/node_modules/@sema/nucleo/dist/semantico/analisador.part03.js +185 -0
  453. package/node_modules/@sema/nucleo/dist/semantico/analisador.part03.js.map +1 -0
  454. package/node_modules/@sema/nucleo/dist/semantico/analisador.part04.d.ts +30 -0
  455. package/node_modules/@sema/nucleo/dist/semantico/analisador.part04.js +200 -0
  456. package/node_modules/@sema/nucleo/dist/semantico/analisador.part04.js.map +1 -0
  457. package/node_modules/@sema/nucleo/dist/semantico/analisador.part05.d.ts +6 -0
  458. package/node_modules/@sema/nucleo/dist/semantico/analisador.part05.js +193 -0
  459. package/node_modules/@sema/nucleo/dist/semantico/analisador.part05.js.map +1 -0
  460. package/node_modules/@sema/nucleo/dist/semantico/analisador.part06.d.ts +11 -0
  461. package/node_modules/@sema/nucleo/dist/semantico/analisador.part06.js +208 -0
  462. package/node_modules/@sema/nucleo/dist/semantico/analisador.part06.js.map +1 -0
  463. package/node_modules/@sema/nucleo/dist/semantico/analisador.part07.d.ts +11 -0
  464. package/node_modules/@sema/nucleo/dist/semantico/analisador.part07.js +247 -0
  465. package/node_modules/@sema/nucleo/dist/semantico/analisador.part07.js.map +1 -0
  466. package/node_modules/@sema/nucleo/dist/semantico/analisador.part08.d.ts +3 -0
  467. package/node_modules/@sema/nucleo/dist/semantico/analisador.part08.js +249 -0
  468. package/node_modules/@sema/nucleo/dist/semantico/analisador.part08.js.map +1 -0
  469. package/node_modules/@sema/nucleo/dist/semantico/estruturas.d.ts +2 -106
  470. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js +4 -474
  471. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +1 -1
  472. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part01.d.ts +109 -0
  473. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part01.js +259 -0
  474. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part01.js.map +1 -0
  475. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part02.d.ts +9 -0
  476. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part02.js +223 -0
  477. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part02.js.map +1 -0
  478. package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.d.ts +21 -0
  479. package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.js +40 -0
  480. package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.js.map +1 -0
  481. package/package.json +10 -10
@@ -0,0 +1,129 @@
1
+ // SEMA-GOVERNED
2
+ // M?dulo: sema.produto.orcamento_semantico
3
+ // Contrato: contratos/sema/orcamento_semantico.sema
4
+ // Descri??o: detec??o localizada de presen?a positiva em artefatos avaliados por profile.
5
+ import { criarAchadoArtefatoProfile } from "./profileRegras.js";
6
+ export function regexGlobalProfile(regex) {
7
+ const flags = regex.flags.includes("g") ? regex.flags : `${regex.flags}g`;
8
+ return new RegExp(regex.source, flags);
9
+ }
10
+ export function trechoDoMatchProfile(texto, indice, tamanho) {
11
+ const inicio = Math.max(0, indice - 60);
12
+ const fim = Math.min(texto.length, indice + tamanho + 60);
13
+ return texto.slice(inicio, fim).replace(/\s+/g, " ").trim();
14
+ }
15
+ export function localizacaoDoMatchProfile(texto, indice, tamanho) {
16
+ const antes = texto.slice(0, indice);
17
+ const linhas = antes.split(/\r?\n/);
18
+ return {
19
+ trecho: trechoDoMatchProfile(texto, indice, tamanho),
20
+ linha: linhas.length,
21
+ coluna: (linhas.at(-1) ?? "").length + 1,
22
+ inicio: indice,
23
+ fim: indice + tamanho,
24
+ };
25
+ }
26
+ export function localizarRegexProfile(texto, regex) {
27
+ const flags = regex.flags.replace(/g/g, "");
28
+ const busca = new RegExp(regex.source, flags);
29
+ const match = busca.exec(texto);
30
+ if (!match)
31
+ return undefined;
32
+ return localizacaoDoMatchProfile(texto, match.index, match[0].length);
33
+ }
34
+ export function termoNegadoNoArtefato(texto, indice, tamanho) {
35
+ const antes = texto.slice(Math.max(0, indice - 90), indice);
36
+ const depois = texto.slice(indice + tamanho, Math.min(texto.length, indice + tamanho + 90));
37
+ const negacaoAntes = /\b(?:sem|ausente|ausencia|ausência|faltando|falta|faltam|inexistente|indefinid[ao]s?|pendente|nao\s+(?:ha|há|define|declara|especifica|possui|tem|existe|inclui|contem|contém|configura|implementa|mapeia|separa|informa|descreve|testa|valida)|não\s+(?:ha|há|define|declara|especifica|possui|tem|existe|inclui|contem|contém|configura|implementa|mapeia|separa|informa|descreve|testa|valida))\b[\s\S]{0,80}$/i;
38
+ const negacaoDepois = /^[\s\S]{0,80}\b(?:ausente|ausentes|ausencia|ausência|inexistente|indefinid[ao]s?|faltando|pendente|nao\s+(?:definid[ao]|declarad[ao]|especificad[ao]|testad[ao]|valid[ao]|implementad[ao]|configurad[ao]|mapead[ao])|não\s+(?:definid[ao]|declarad[ao]|especificad[ao]|testad[ao]|valid[ao]|implementad[ao]|configurad[ao]|mapead[ao]))\b/i;
39
+ return negacaoAntes.test(antes) || negacaoDepois.test(depois);
40
+ }
41
+ export function avaliarPresencaPositivaArtefato(texto, regex) {
42
+ const busca = regexGlobalProfile(regex);
43
+ let primeiroNegado = null;
44
+ let match;
45
+ let iteracoes = 0;
46
+ while ((match = busca.exec(texto)) && iteracoes < 80) {
47
+ iteracoes += 1;
48
+ if (match[0].length === 0)
49
+ busca.lastIndex += 1;
50
+ if (!termoNegadoNoArtefato(texto, match.index, match[0].length)) {
51
+ return { atendido: true };
52
+ }
53
+ primeiroNegado ??= { indice: match.index, tamanho: match[0].length };
54
+ }
55
+ if (primeiroNegado) {
56
+ return {
57
+ atendido: false,
58
+ ...localizacaoDoMatchProfile(texto, primeiroNegado.indice, primeiroNegado.tamanho),
59
+ motivo: "termo encontrado em contexto de negacao/ausencia; mencao negativa nao satisfaz requisito.",
60
+ };
61
+ }
62
+ return { atendido: false };
63
+ }
64
+ export function validarTermosObrigatoriosArtefato(texto, checks) {
65
+ return checks.map((check) => {
66
+ const presenca = avaliarPresencaPositivaArtefato(texto, check.regex);
67
+ return criarAchadoArtefatoProfile(check.id, check.descricao, presenca.atendido, check.severidade ?? "blocking", presenca.trecho, check.sugestao, presenca.motivo, {
68
+ linha: presenca.linha,
69
+ coluna: presenca.coluna,
70
+ inicio: presenca.inicio,
71
+ fim: presenca.fim,
72
+ regra: check.id,
73
+ });
74
+ });
75
+ }
76
+ export function artefatoPareceWebhookProfile(artefato, preset) {
77
+ return preset === "webhook" || /webhook|externalEventId|invoiceId|paidAt|paymentEvent|pagamento/i.test(artefato);
78
+ }
79
+ export function artefatoParecePagamentoWebhookProfile(artefato) {
80
+ return /invoiceId|fatura|cobranc|paymentEvent|paidAt|pagamento/i.test(artefato) &&
81
+ /webhook|externalEventId|evento externo|evento de pagamento/i.test(artefato);
82
+ }
83
+ export function artefatoPareceMultiTenantProfile(contrato, artefato) {
84
+ return /workspace|tenant|multi[- ]?tenant|multi[- ]?workspace|organiz/i.test(`${contrato}\n${artefato}`);
85
+ }
86
+ export function presencaAutenticacaoWebhookProfile(artefato) {
87
+ return avaliarPresencaPositivaArtefato(artefato, /authorization|bearer|webhookSecret|webhook_secret|secret|assinatura|signature|hmac|x-webhook-secret|api[-_ ]?key|token/i);
88
+ }
89
+ export function presencaWorkspaceWebhookProfile(artefato) {
90
+ return avaliarPresencaPositivaArtefato(artefato, /workspace(?:Id|Slug)?|workspace_id|workspace_slug|tenant(?:Id)?|tenant_id|organizationId|orgId|accountId|x-workspace(?:-slug|-id)?|isolamento por workspace/i);
91
+ }
92
+ export function presencaIdempotenciaWorkspaceScopedProfile(artefato) {
93
+ const workspace = presencaWorkspaceWebhookProfile(artefato);
94
+ if (!workspace.atendido) {
95
+ return {
96
+ atendido: false,
97
+ trecho: workspace.trecho,
98
+ linha: workspace.linha,
99
+ coluna: workspace.coluna,
100
+ inicio: workspace.inicio,
101
+ fim: workspace.fim,
102
+ motivo: workspace.motivo ?? "idempotencia com externalEventId precisa de workspace/tenant positivo no mesmo artefato.",
103
+ };
104
+ }
105
+ const regexes = [
106
+ /@@unique\s*\(\s*\[[^\]]*(?:workspaceId|workspace_id|workspace|tenantId|tenant_id|tenant|organizationId|orgId|accountId)[^\]]*externalEventId[^\]]*\]\s*\)/i,
107
+ /@@unique\s*\(\s*\[[^\]]*externalEventId[^\]]*(?:workspaceId|workspace_id|workspace|tenantId|tenant_id|tenant|organizationId|orgId|accountId)[^\]]*\]\s*\)/i,
108
+ /(?:workspace|tenant|organization|orgId|accountId|x-workspace)[\s\S]{0,180}externalEventId/i,
109
+ /externalEventId[\s\S]{0,180}(?:workspace|tenant|organization|orgId|accountId|x-workspace)/i,
110
+ ];
111
+ for (const regex of regexes) {
112
+ const presenca = avaliarPresencaPositivaArtefato(artefato, regex);
113
+ if (presenca.atendido)
114
+ return presenca;
115
+ }
116
+ const negada = regexes
117
+ .map((regex) => avaliarPresencaPositivaArtefato(artefato, regex))
118
+ .find((presenca) => presenca.trecho);
119
+ return negada ?? { atendido: false };
120
+ }
121
+ export function localizarIdempotenciaGlobalExternalEventProfile(artefato) {
122
+ return localizarRegexProfile(artefato, /\bexternalEventId\b[^\n\r;{}]*@unique/i) ??
123
+ localizarRegexProfile(artefato, /@@unique\s*\(\s*\[\s*externalEventId\s*\]\s*\)/i) ??
124
+ localizarRegexProfile(artefato, /externalEventId[\s\S]{0,120}global/i) ??
125
+ localizarRegexProfile(artefato, /global[\s\S]{0,120}externalEventId/i) ??
126
+ localizarRegexProfile(artefato, /externalEventId[\s\S]{0,120}(?:unico global|globalmente|global unique|unique global)/i) ??
127
+ localizarRegexProfile(artefato, /(?:unico global|globalmente|global unique|unique global)[\s\S]{0,120}externalEventId/i);
128
+ }
129
+ //# sourceMappingURL=profileArtefatoBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profileArtefatoBase.js","sourceRoot":"","sources":["../src/profileArtefatoBase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { AchadoProfile, MaturidadeProfile, PerfilSemantico, PresetProfile } from "./profileAuthorTipos.js";
2
+ export declare function avaliarArtefatoSoftwareProfile(contrato: string, artefato: string, maturidade: MaturidadeProfile, preset: PresetProfile | null): AchadoProfile[];
3
+ export declare function avaliarArtefatoWorkflowProfile(contrato: string, artefato: string, preset: PresetProfile | null): AchadoProfile[];
4
+ export declare function avaliarArtefatoOpsProfile(artefato: string, preset: PresetProfile | null): AchadoProfile[];
5
+ export declare function avaliarArtefatoLegalProfile(artefato: string, preset: PresetProfile | null): AchadoProfile[];
6
+ export declare function avaliarArtefatoResearchProfile(artefato: string, preset: PresetProfile | null): AchadoProfile[];
7
+ export declare function avaliarArtefatoGameProfile(artefato: string, preset: PresetProfile | null): AchadoProfile[];
8
+ export declare function avaliarArtefatoConversasProfile(artefato: string, preset: PresetProfile | null): AchadoProfile[];
9
+ export declare function avaliarArtefatoProfile(profile: PerfilSemantico, contrato: string, artefato: string | null | undefined, maturidade: MaturidadeProfile, preset: PresetProfile | null): AchadoProfile[];
@@ -0,0 +1,287 @@
1
+ // SEMA-GOVERNED
2
+ // M?dulo: sema.produto.orcamento_semantico
3
+ // Contrato: contratos/sema/orcamento_semantico.sema
4
+ // Descri??o: validadores de artefato por profile sem?ntico.
5
+ import { contemArtefatoProfile, contratoProibeTermoProfile, criarAchadoArtefatoProfile, trechoRegexProfile } from "./profileRegras.js";
6
+ import { artefatoParecePagamentoWebhookProfile, artefatoPareceWebhookProfile, artefatoPareceMultiTenantProfile, avaliarPresencaPositivaArtefato, localizarIdempotenciaGlobalExternalEventProfile, presencaAutenticacaoWebhookProfile, presencaIdempotenciaWorkspaceScopedProfile, presencaWorkspaceWebhookProfile, validarTermosObrigatoriosArtefato, } from "./profileArtefatoBase.js";
7
+ export function avaliarArtefatoSoftwareProfile(contrato, artefato, maturidade, preset) {
8
+ const regras = [
9
+ { id: "software_eval_proibido", termo: "eval", regex: /\beval\s*\(/i, descricao: "codigo usa eval, risco basico de execucao dinamica", sugestao: "troque por parser explicito, tabela de operacoes ou validacao estruturada." },
10
+ { id: "software_function_proibido", termo: "Function", regex: /\bnew\s+Function\b|\bFunction\s*\(/i, descricao: "codigo usa Function dinamico, risco basico de execucao dinamica", sugestao: "remova geracao dinamica de codigo e modele comandos permitidos." },
11
+ { id: "software_innerhtml_inseguro", termo: "innerHTML", regex: /\.innerHTML\s*=|\bdangerouslySetInnerHTML\b/i, descricao: "codigo escreve HTML diretamente em superficie insegura", sugestao: "use textContent, template seguro ou sanitizacao comprovada." },
12
+ { id: "software_sql_concatenado", termo: "SQL", regex: /\b(SELECT|INSERT|UPDATE|DELETE)\b[\s\S]{0,220}(\+|\$\{)/i, descricao: "codigo aparenta concatenar SQL dinamico", sugestao: "use query parametrizada ou builder seguro." },
13
+ { id: "software_segredo_hardcoded", termo: "secret", regex: /\b(api[_-]?key|secret|token|password|senha|credential)\b\s*[:=]\s*["'`][^"'`\s]{8,}["'`]/i, descricao: "codigo aparenta carregar segredo fixo no artefato", sugestao: "mova segredo para variavel de ambiente/cofre e use redacao em exemplos." },
14
+ { id: "software_tls_desativado", termo: "TLS", regex: /rejectUnauthorized\s*:\s*false|NODE_TLS_REJECT_UNAUTHORIZED\s*=\s*["']?0/i, descricao: "codigo aparenta desativar validacao TLS/certificado", sugestao: "corrija cadeia de certificado ou use ambiente de teste isolado sem desligar TLS em producao." },
15
+ { id: "software_shell_input_dinamico", termo: "shell", regex: /\b(exec|execSync|spawn|spawnSync)\s*\([\s\S]{0,160}(req\.|request\.|params|query|body|input|usuario|userInput)/i, descricao: "codigo aparenta executar shell com entrada dinamica", sugestao: "modele allowlist de comandos/argumentos e evite interpolar entrada do usuario." },
16
+ ];
17
+ const achados = regras.flatMap((regra) => {
18
+ const achou = contemArtefatoProfile(artefato, regra.regex);
19
+ if (!achou)
20
+ return [];
21
+ const politicaEstrita = contratoProibeTermoProfile(contrato, regra.termo) || maturidade === "critical" || preset === "security";
22
+ const severidade = maturidade === "critical"
23
+ ? "critical"
24
+ : politicaEstrita
25
+ ? "blocking"
26
+ : "warning";
27
+ return [criarAchadoArtefatoProfile(regra.id, regra.descricao, false, severidade, trechoRegexProfile(artefato, regra.regex), regra.sugestao)];
28
+ });
29
+ const pareceWebhook = artefatoPareceWebhookProfile(artefato, preset);
30
+ const pareceWebhookPagamento = artefatoParecePagamentoWebhookProfile(artefato);
31
+ const pareceMultiTenant = artefatoPareceMultiTenantProfile(contrato, artefato);
32
+ if (pareceWebhook && (pareceMultiTenant || pareceWebhookPagamento)) {
33
+ const auth = presencaAutenticacaoWebhookProfile(artefato);
34
+ if (!auth.atendido) {
35
+ achados.push(criarAchadoArtefatoProfile("software_webhook_sem_autenticacao", "webhook sensivel nao demonstra autenticacao, assinatura ou segredo", false, maturidade === "critical" ? "critical" : "blocking", auth.trecho ?? trechoRegexProfile(artefato, /webhook|externalEventId|invoiceId|paymentEvent|pagamento/i), "exija Authorization, assinatura HMAC ou segredo de webhook antes de aplicar efeito sensivel.", auth.motivo, {
36
+ linha: auth.linha,
37
+ coluna: auth.coluna,
38
+ inicio: auth.inicio,
39
+ fim: auth.fim,
40
+ risco: "webhook_sensivel_sem_auth",
41
+ }));
42
+ }
43
+ const workspace = presencaWorkspaceWebhookProfile(artefato);
44
+ if (!workspace.atendido) {
45
+ achados.push(criarAchadoArtefatoProfile("software_webhook_sem_workspace", "webhook multi-workspace nao demonstra fronteira de workspace/tenant", false, maturidade === "critical" ? "critical" : "blocking", workspace.trecho ?? trechoRegexProfile(artefato, /invoiceId|externalEventId|webhook|paymentEvent/i), "resolva workspace por header/slug/tenant autenticado e valide a invoice dentro desse escopo.", workspace.motivo, {
46
+ linha: workspace.linha,
47
+ coluna: workspace.coluna,
48
+ inicio: workspace.inicio,
49
+ fim: workspace.fim,
50
+ risco: "isolamento_multi_workspace_ausente",
51
+ }));
52
+ }
53
+ }
54
+ const externalEventGlobal = localizarIdempotenciaGlobalExternalEventProfile(artefato);
55
+ const externalEventPresente = /\bexternalEventId\b/i.test(artefato);
56
+ const idempotenciaScoped = presencaIdempotenciaWorkspaceScopedProfile(artefato);
57
+ if (externalEventGlobal || (pareceMultiTenant && pareceWebhook && externalEventPresente && !idempotenciaScoped.atendido)) {
58
+ achados.push(criarAchadoArtefatoProfile("software_external_event_idempotencia_global", "externalEventId parece unico globalmente em contexto multi-workspace", false, maturidade === "critical" ? "critical" : "blocking", externalEventGlobal?.trecho ?? idempotenciaScoped.trecho ?? trechoRegexProfile(artefato, /\bexternalEventId\b/i), "use chave composta por workspaceId/tenantId + externalEventId para idempotencia por workspace.", idempotenciaScoped.motivo, {
59
+ linha: externalEventGlobal?.linha ?? idempotenciaScoped.linha,
60
+ coluna: externalEventGlobal?.coluna ?? idempotenciaScoped.coluna,
61
+ inicio: externalEventGlobal?.inicio ?? idempotenciaScoped.inicio,
62
+ fim: externalEventGlobal?.fim ?? idempotenciaScoped.fim,
63
+ risco: "idempotencia_global_multi_tenant",
64
+ }));
65
+ }
66
+ const prismaManualSql = /schema\.prisma|\bPrisma\b|model\s+\w+\s*\{/i.test(artefato) &&
67
+ /CREATE\s+TABLE|setup-db\.ts|schema SQL manual|sql manual|duplica(?:r|do)? manualmente/i.test(artefato);
68
+ if (prismaManualSql) {
69
+ const severidade = maturidade === "draft" || maturidade === "prototype" ? "warning" : "blocking";
70
+ achados.push(criarAchadoArtefatoProfile("software_schema_prisma_duplicado", "artefato aparenta duplicar schema Prisma em SQL manual", false, maturidade === "critical" ? "critical" : severidade, trechoRegexProfile(artefato, /CREATE\s+TABLE|setup-db\.ts|schema SQL manual|sql manual|duplica(?:r|do)? manualmente/i), "derive o banco de migrations Prisma ou gere o bootstrap a partir do schema, evitando duas fontes de verdade.", undefined, { risco: "drift_schema_persistencia" }));
71
+ }
72
+ const eslintNextSemIgnore = /eslint\.config|npm run lint|lint/i.test(artefato) &&
73
+ /\.next/i.test(artefato) &&
74
+ !/ignores?\s*[:=][\s\S]{0,180}\.next|\.next\/\*\*|ignora\s+\.next/i.test(artefato);
75
+ if (eslintNextSemIgnore) {
76
+ achados.push(criarAchadoArtefatoProfile("software_lint_next_sem_ignore", "lint de Next.js parece varrer .next sem ignore explicito", false, "warning", trechoRegexProfile(artefato, /\.next/i), "adicione ignore para .next no flat config ou ajuste o script de lint.", undefined, { risco: "ruido_operacional_de_build" }));
77
+ }
78
+ return achados;
79
+ }
80
+ export function avaliarArtefatoWorkflowProfile(contrato, artefato, preset) {
81
+ const achados = validarTermosObrigatoriosArtefato(artefato, [
82
+ { id: "workflow_idempotencia_artefato", descricao: "workflow real declara idempotencia", regex: /idempot/i, sugestao: "adicione chave idempotente por evento/webhook ou etapa." },
83
+ { id: "workflow_retry_artefato", descricao: "workflow real declara retry/retentativa", regex: /retry|retent/i, sugestao: "declare politica de retentativa, limites e erro final." },
84
+ { id: "workflow_compensacao_artefato", descricao: "workflow real declara compensacao/fallback", regex: /compens|fallback|revers/i, sugestao: "declare compensacao para efeitos ja aplicados." },
85
+ ]);
86
+ const contratoExigePagamentoAntes = /validar pagamento[\s\S]{0,120}antes[\s\S]{0,120}criar pedido/i.test(contrato);
87
+ const criaPedido = artefato.search(/criar pedido/i);
88
+ const validaPagamento = artefato.search(/validar pagamento/i);
89
+ if (contratoExigePagamentoAntes && criaPedido >= 0 && validaPagamento >= 0 && criaPedido < validaPagamento) {
90
+ achados.push(criarAchadoArtefatoProfile("workflow_ordem_pagamento_invertida", "workflow cria pedido antes de validar pagamento, contrariando ordem contratada", false, "critical", trechoRegexProfile(artefato, /criar pedido[\s\S]{0,160}validar pagamento/i), "reordene a etapa de validacao antes da criacao persistente ou declare reserva reversivel."));
91
+ }
92
+ if (preset === "webhook" && !avaliarPresencaPositivaArtefato(artefato, /webhook/i).atendido) {
93
+ achados.push(criarAchadoArtefatoProfile("workflow_preset_webhook_sem_superficie", "preset webhook exige superficie webhook no artefato", false, "blocking", undefined, "nomeie endpoint/evento, payload e idempotencia."));
94
+ }
95
+ const pareceWebhook = artefatoPareceWebhookProfile(artefato, preset);
96
+ if (pareceWebhook) {
97
+ const auth = presencaAutenticacaoWebhookProfile(artefato);
98
+ if (!auth.atendido) {
99
+ achados.push(criarAchadoArtefatoProfile("workflow_webhook_sem_autenticacao", "webhook real nao declara autenticacao, assinatura ou segredo", false, "blocking", auth.trecho ?? trechoRegexProfile(artefato, /webhook|externalEventId|invoiceId|pagamento/i), "declare secret, assinatura, token ou Authorization para o endpoint.", auth.motivo, {
100
+ linha: auth.linha,
101
+ coluna: auth.coluna,
102
+ inicio: auth.inicio,
103
+ fim: auth.fim,
104
+ risco: "webhook_sem_auth",
105
+ }));
106
+ }
107
+ const exigeWorkspace = artefatoPareceMultiTenantProfile(contrato, artefato) || artefatoParecePagamentoWebhookProfile(artefato);
108
+ if (exigeWorkspace) {
109
+ const workspace = presencaWorkspaceWebhookProfile(artefato);
110
+ if (!workspace.atendido) {
111
+ achados.push(criarAchadoArtefatoProfile("workflow_webhook_sem_workspace", "webhook multi-tenant nao declara workspace/tenant de fronteira", false, "blocking", workspace.trecho ?? trechoRegexProfile(artefato, /webhook|invoiceId|externalEventId|pagamento/i), "inclua workspaceSlug/workspaceId/tenant autenticado e valide efeitos dentro desse escopo.", workspace.motivo, {
112
+ linha: workspace.linha,
113
+ coluna: workspace.coluna,
114
+ inicio: workspace.inicio,
115
+ fim: workspace.fim,
116
+ risco: "isolamento_multi_workspace_ausente",
117
+ }));
118
+ }
119
+ }
120
+ const externalEventGlobal = localizarIdempotenciaGlobalExternalEventProfile(artefato);
121
+ const externalEventPresente = /\bexternalEventId\b/i.test(artefato);
122
+ const idempotenciaScoped = presencaIdempotenciaWorkspaceScopedProfile(artefato);
123
+ if (externalEventGlobal || (externalEventPresente && !idempotenciaScoped.atendido && (artefatoPareceMultiTenantProfile(contrato, artefato) || artefatoParecePagamentoWebhookProfile(artefato)))) {
124
+ achados.push(criarAchadoArtefatoProfile("workflow_webhook_idempotencia_global", "webhook usa externalEventId sem escopo de workspace/tenant", false, "blocking", externalEventGlobal?.trecho ?? idempotenciaScoped.trecho ?? trechoRegexProfile(artefato, /\bexternalEventId\b/i), "modele idempotencia por workspaceId/tenantId + externalEventId.", idempotenciaScoped.motivo, {
125
+ linha: externalEventGlobal?.linha ?? idempotenciaScoped.linha,
126
+ coluna: externalEventGlobal?.coluna ?? idempotenciaScoped.coluna,
127
+ inicio: externalEventGlobal?.inicio ?? idempotenciaScoped.inicio,
128
+ fim: externalEventGlobal?.fim ?? idempotenciaScoped.fim,
129
+ risco: "idempotencia_global_multi_tenant",
130
+ }));
131
+ }
132
+ if (/invoiceId/i.test(artefato) && (!auth.atendido || !presencaWorkspaceWebhookProfile(artefato).atendido)) {
133
+ achados.push(criarAchadoArtefatoProfile("workflow_webhook_apenas_invoice_id", "webhook de pagamento parece aplicar efeito sensivel a partir de invoiceId sem fronteira suficiente", false, "critical", trechoRegexProfile(artefato, /invoiceId[\s\S]{0,160}(?:paidAt|amount|pago|pagamento|paid)|(?:paidAt|amount|pago|pagamento|paid)[\s\S]{0,160}invoiceId/i), "resolva workspace/autenticacao antes de buscar a invoice e rejeite invoice fora do escopo.", undefined, { risco: "efeito_sensivel_cross_tenant" }));
134
+ }
135
+ }
136
+ return achados;
137
+ }
138
+ export function avaliarArtefatoOpsProfile(artefato, preset) {
139
+ const checks = [
140
+ { id: "ops_runbook_artefato", descricao: "plano operacional contem runbook", regex: /runbook|passo a passo|procedimento/i, sugestao: "adicione runbook executavel com passos, dono e criterio de parada." },
141
+ { id: "ops_rollback_artefato", descricao: "plano operacional contem rollback", regex: /rollback|reverter|revers/i, sugestao: "adicione comando/criterio de rollback." },
142
+ { id: "ops_healthcheck_artefato", descricao: "plano operacional contem healthcheck", regex: /healthcheck|healthz|smoke|verificacao live|verificação live/i, sugestao: "declare endpoint, comando ou metrica que prova recuperacao." },
143
+ { id: "ops_responsavel_artefato", descricao: "plano operacional declara responsavel/oncall", regex: /responsavel|responsável|owner|oncall|dono/i, sugestao: "declare responsavel operacional, oncall ou dono da mudanca." },
144
+ { id: "ops_comunicacao_artefato", descricao: "plano operacional contem comunicacao", regex: /comunic|avisar|status page|cliente/i, severidade: "warning", sugestao: "adicione quando e quem comunicar." },
145
+ ];
146
+ const achados = validarTermosObrigatoriosArtefato(artefato, checks);
147
+ if ((preset === "migration" || preset === "critical") && !avaliarPresencaPositivaArtefato(artefato, /backup|snapshot|revers/i).atendido) {
148
+ achados.push(criarAchadoArtefatoProfile("ops_migration_sem_reversibilidade", "migration/critical exige reversibilidade comprovada", false, "critical", undefined, "declare backup, snapshot, down migration ou estrategia manual testada."));
149
+ }
150
+ if (preset === "rollback" && !avaliarPresencaPositivaArtefato(artefato, /criterio|critério|gatilho|recuper/i).atendido) {
151
+ achados.push(criarAchadoArtefatoProfile("ops_rollback_sem_criterio_recuperacao", "rollback exige criterio objetivo de recuperacao", false, "blocking", undefined, "declare gatilho de rollback e criterio verificavel de recuperacao."));
152
+ }
153
+ return achados;
154
+ }
155
+ export function avaliarArtefatoLegalProfile(artefato, preset) {
156
+ const achados = [];
157
+ const pareceFinal = /parecer final|opiniao definitiva|opinião definitiva|conclusao juridica definitiva|conclusão jurídica definitiva/i.test(artefato);
158
+ const temRevisaoHumana = avaliarPresencaPositivaArtefato(artefato, /revisao humana|revisão humana|advogado|minuta|rascunho|preliminar/i).atendido;
159
+ const temAvisoNaoParecer = /nao e parecer|não é parecer/i.test(artefato);
160
+ const temFreioHumano = temRevisaoHumana || temAvisoNaoParecer;
161
+ if (pareceFinal && !temFreioHumano) {
162
+ achados.push(criarAchadoArtefatoProfile("legal_parecer_final_sem_revisao", "documento legal parece parecer final sem revisao humana obrigatoria", false, "critical", trechoRegexProfile(artefato, /parecer final|opiniao definitiva|opinião definitiva/i), "marque como minuta/preliminar e exija revisao humana por profissional habilitado."));
163
+ }
164
+ if (preset === "lgpd") {
165
+ achados.push(...validarTermosObrigatoriosArtefato(artefato, [
166
+ { id: "legal_lgpd_base_finalidade", descricao: "artefato LGPD declara base legal e finalidade", regex: /base legal[\s\S]{0,160}finalidade|finalidade[\s\S]{0,160}base legal/i, severidade: "critical", sugestao: "inclua matriz dado -> finalidade -> base legal." },
167
+ { id: "legal_lgpd_retencao_direitos", descricao: "artefato LGPD declara retencao e direitos do titular", regex: /retencao|retenção/i, severidade: "blocking", sugestao: "inclua retencao, descarte e direitos do titular." },
168
+ ]));
169
+ }
170
+ if (preset === "privacidade") {
171
+ achados.push(...validarTermosObrigatoriosArtefato(artefato, [
172
+ { id: "legal_privacidade_dados_finalidade", descricao: "politica de privacidade declara dados tratados e finalidade", regex: /dados?[\s\S]{0,120}finalidade|finalidade[\s\S]{0,120}dados?/i, severidade: "critical", sugestao: "inclua dados coletados/tratados e finalidade de cada uso." },
173
+ { id: "legal_privacidade_base_legal", descricao: "politica de privacidade declara base legal", regex: /base legal|consentimento|legitimo interesse|legítimo interesse|execucao de contrato|execução de contrato/i, severidade: "critical", sugestao: "declare base legal por finalidade." },
174
+ { id: "legal_privacidade_retencao", descricao: "politica de privacidade declara retencao/descarte", regex: /retencao|retenção|descarte|prazo de guarda/i, severidade: "blocking", sugestao: "declare prazo de retencao e descarte." },
175
+ { id: "legal_privacidade_direitos_contato", descricao: "politica de privacidade declara direitos do titular e contato/DPO", regex: /direitos? do titular[\s\S]{0,160}(contato|dpo|encarregado)|(?:contato|dpo|encarregado)[\s\S]{0,160}direitos? do titular/i, severidade: "blocking", sugestao: "declare direitos do titular e canal de contato/encarregado." },
176
+ ]));
177
+ }
178
+ return achados;
179
+ }
180
+ export function avaliarArtefatoResearchProfile(artefato, preset) {
181
+ const achados = validarTermosObrigatoriosArtefato(artefato, [
182
+ { id: "research_fontes_artefato", descricao: "resposta final cita fontes ou referencias", regex: /https?:\/\/|\[[0-9]+\]|fonte|referencia|referência/i, sugestao: "inclua fontes citaveis e separe evidencia de opiniao." },
183
+ { id: "research_incerteza_artefato", descricao: "resposta final declara incerteza ou limite", regex: /incerteza|limite|baixa confianca|baixa confiança|lacuna/i, sugestao: "declare limites, incertezas e o que nao foi verificado." },
184
+ { id: "research_fato_inferencia_artefato", descricao: "resposta separa fato de inferencia", regex: /fato|inferencia|inferência/i, sugestao: "rotule conclusoes como fato, inferencia ou recomendacao." },
185
+ ]);
186
+ if (preset === "critica" && !avaliarPresencaPositivaArtefato(artefato, /contra.?evidencia|contra.?evidência|evidencia contra|evidência contra|refut/i).atendido) {
187
+ achados.push(criarAchadoArtefatoProfile("research_sem_contraditorio", "pesquisa critica nao tentou derrubar a conclusao", false, "blocking", undefined, "adicione secao de evidencias contra a recomendacao principal."));
188
+ }
189
+ return achados;
190
+ }
191
+ export function avaliarArtefatoGameProfile(artefato, preset) {
192
+ const achados = validarTermosObrigatoriosArtefato(artefato, [
193
+ { id: "game_loop_artefato", descricao: "artefato de jogo declara core loop", regex: /core loop|loop|ciclo/i, sugestao: "declare acao principal, feedback, recompensa e reinicio." },
194
+ { id: "game_estado_artefato", descricao: "artefato de jogo declara estado e transicoes", regex: /estado|state|playing|game_over|transic|transiç/i, sugestao: "declare estados e transicoes permitidas." },
195
+ { id: "game_pacing_artefato", descricao: "artefato de jogo declara pacing/curva", regex: /pacing|curva|dificuldade|sessao|sessão/i, severidade: "warning", sugestao: "adicione ritmo esperado e variacao de dificuldade." },
196
+ ]);
197
+ if (preset === "playtest" && !avaliarPresencaPositivaArtefato(artefato, /10 segundos|1 minuto|um minuto|primeiro minuto/i).atendido) {
198
+ achados.push(criarAchadoArtefatoProfile("game_playtest_sem_tempo", "playtest nao descreve primeiros segundos e primeiro minuto", false, "blocking", undefined, "adicione simulacao dos primeiros 10s e do primeiro minuto."));
199
+ }
200
+ return achados;
201
+ }
202
+ export function avaliarArtefatoConversasProfile(artefato, preset) {
203
+ const achados = validarTermosObrigatoriosArtefato(artefato, [
204
+ { id: "conversas_tom_artefato", descricao: "artefato declara tom/persona da conversa", regex: /tom|persona|voz|formalidade|comercial|persuasiv|serio|consultiv/i, sugestao: "declare o tom, persona e nivel de formalidade usados na resposta." },
205
+ { id: "conversas_estado_cliente_artefato", descricao: "artefato declara estado, intencao ou objecao do cliente", regex: /estado|etapa|intencao|sentimento|objec|lead|cliente/i, sugestao: "registre etapa, intencao detectada, sentimento e objecoes antes da resposta." },
206
+ { id: "conversas_proxima_acao_artefato", descricao: "artefato declara proxima acao ou CTA honesto", regex: /proxima_acao|proxima acao|cta|agendar|encaminhar|diagnostico|abrir chamado|escalar/i, sugestao: "adicione proxima acao clara sem promessa indevida." },
207
+ { id: "conversas_estado_visivel_artefato", descricao: "artefato declara ultima mensagem e ultima resposta visivel", regex: /ultima mensagem|ultima resposta visivel|mensagem_cliente_visivel|resposta_anterior_visivel|historico visivel|conversa visivel/i, sugestao: "baseie o turno na conversa visivel ao cliente, nao em pensamento interno ou resposta bruta." },
208
+ { id: "conversas_saida_cliente_artefato", descricao: "artefato separa saida interna da resposta enviada", regex: /customer_reply|resposta final ao cliente|unica saida visivel|apenas resposta_cliente|somente resposta_cliente/i, sugestao: "declare que apenas customer_reply/resposta_cliente pode sair para o canal." },
209
+ { id: "conversas_dedupe_artefato", descricao: "artefato declara deduplicacao por evento", regex: /dedupe|deduplic|evento_id|message_id|inbound|uma entrada[\s\S]{0,40}uma saida|uma mensagem[\s\S]{0,40}uma resposta/i, sugestao: "declare chave de deduplicacao por evento/mensagem recebida." },
210
+ ]);
211
+ const promessaSemBase = /garanto|garantia total|100%|sem risco|resultado garantido|vender mais em \d+\s*dias|prometo/i.test(artefato);
212
+ if (promessaSemBase) {
213
+ achados.push(criarAchadoArtefatoProfile("conversas_promessa_sem_base", "resposta de bot parece prometer resultado, prazo ou garantia sem base", false, "critical", trechoRegexProfile(artefato, /garanto|garantia total|100%|sem risco|resultado garantido|vender mais em \d+\s*dias|prometo/i), "troque promessa absoluta por condicao verificavel, limite claro ou proposta de diagnostico.", undefined, { risco: "promessa_comercial_indevida" }));
214
+ }
215
+ const temContextoAnterior = /ultima resposta visivel|resposta_anterior_visivel|pergunta anterior|escopo faz sentido|proposta faz sentido|etapa atual|etapa escopo/i.test(artefato);
216
+ const confirmacaoCurta = /\b(sim claro|sim|fechado|pode ser|beleza|ok|certo|manda|bora|ta bom|isso mesmo|gostei)\b/i.test(artefato);
217
+ const reiniciouAtendimento = /sou [A-Za-z]|me chamo|como posso ajudar|em que posso ajudar|quer organizar|apresentacao|apresenta[cç][aã]o|inicio de conversa/i.test(artefato);
218
+ if (temContextoAnterior && confirmacaoCurta && reiniciouAtendimento) {
219
+ achados.push(criarAchadoArtefatoProfile("conversas_confirmacao_reiniciada", "confirmacao curta foi tratada como novo inicio em vez de avancar a etapa anterior", false, "critical", trechoRegexProfile(artefato, /(?:sim claro|sim|fechado|pode ser|beleza|ok|certo|manda|bora)[\s\S]{0,220}(?:sou [A-Za-z]|me chamo|como posso ajudar|quer organizar|apresenta[cç][aã]o)|(?:escopo faz sentido|proposta faz sentido|pergunta anterior)[\s\S]{0,220}(?:sou [A-Za-z]|me chamo|como posso ajudar|quer organizar|apresenta[cç][aã]o)/i), "interprete confirmacoes contra a ultima pergunta visivel e avance a conversa sem repetir saudacao.", undefined, { risco: "estado_conversa_perdido" }));
220
+ }
221
+ const vazouInterno = /(?:enviar|mandar|resposta visivel|customer_reply|resposta ao cliente)[\s\S]{0,120}(?:intent|stage|facts|missing_critical_info|internal_trace|raciocinio|pensamento interno|analise interna|JSON interno)|(?:raciocinio|pensamento interno|analise interna|JSON interno)[\s\S]{0,120}(?:cliente|canal|enviado|visivel)/i.test(artefato);
222
+ if (vazouInterno) {
223
+ achados.push(criarAchadoArtefatoProfile("conversas_vazamento_interno", "resposta parece expor raciocinio, JSON ou campos internos ao cliente", false, "critical", trechoRegexProfile(artefato, /(?:intent|stage|facts|missing_critical_info|internal_trace|raciocinio|pensamento interno|analise interna|JSON interno)[\s\S]{0,160}(?:cliente|canal|enviado|visivel)|(?:enviar|mandar|resposta visivel)[\s\S]{0,160}(?:intent|stage|facts|missing_critical_info|internal_trace|JSON interno)/i), "mande ao canal apenas customer_reply/resposta_cliente, mantendo interpretacao e auditoria fora da mensagem visivel.", undefined, { risco: "vazamento_de_estado_interno" }));
224
+ }
225
+ const whatsapp = /canal\s*:?\s*whatsapp|\bWHATSAPP\b/i.test(artefato);
226
+ const canalAlternativo = /\b(email|e-mail|inbox|caixa de entrada)\b/i.test(artefato);
227
+ const clientePediuCanal = /cliente pediu|cliente solicitou|pedido do cliente|solicitou email|pediu email/i.test(artefato);
228
+ if (whatsapp && canalAlternativo && !clientePediuCanal) {
229
+ achados.push(criarAchadoArtefatoProfile("conversas_canal_inventado", "conversa em WhatsApp tenta deslocar para email ou inbox sem pedido do cliente", false, "blocking", trechoRegexProfile(artefato, /WHATSAPP[\s\S]{0,180}(?:email|e-mail|inbox|caixa de entrada)|(?:email|e-mail|inbox|caixa de entrada)[\s\S]{0,180}WHATSAPP/i), "resolva no canal atual, a menos que o cliente tenha pedido outro canal.", undefined, { risco: "friccao_de_canal" }));
230
+ }
231
+ const respostaDuplicada = /duas respostas|duas mensagens visiveis|respondeu duas vezes|duplicou resposta|mesmo inbound|mesmo evento/i.test(artefato);
232
+ const temDedupe = /dedupe|deduplic|evento_id|message_id|inbound_id|uma entrada[\s\S]{0,40}uma saida/i.test(artefato);
233
+ if (respostaDuplicada && !temDedupe) {
234
+ achados.push(criarAchadoArtefatoProfile("conversas_sem_dedupe_evento", "artefato indica risco de resposta duplicada sem deduplicacao por evento", false, "blocking", trechoRegexProfile(artefato, /duas respostas|duas mensagens visiveis|respondeu duas vezes|duplicou resposta|mesmo inbound|mesmo evento/i), "registre evento_id/message_id e envie no maximo uma resposta visivel por inbound.", undefined, { risco: "resposta_duplicada" }));
235
+ }
236
+ const precisaEscalar = /irritad|reclamac|juridic|cancelamento|processo|procon|advogado|ameaca/i.test(artefato);
237
+ const escalou = avaliarPresencaPositivaArtefato(artefato, /escalar|humano|atendente|supervisor|ticket|chamado/i);
238
+ if (precisaEscalar && !escalou.atendido) {
239
+ achados.push(criarAchadoArtefatoProfile("conversas_sem_escalacao_humana", "conversa sensivel exige escalacao humana explicita", false, "critical", escalou.trecho ?? trechoRegexProfile(artefato, /irritad|reclamac|juridic|cancelamento|processo|procon|advogado/i), "declare handoff para humano com motivo e prioridade antes de continuar no bot.", escalou.motivo, {
240
+ linha: escalou.linha,
241
+ coluna: escalou.coluna,
242
+ inicio: escalou.inicio,
243
+ fim: escalou.fim,
244
+ risco: "handoff_humano_ausente",
245
+ }));
246
+ }
247
+ if (preset === "vendas") {
248
+ achados.push(...validarTermosObrigatoriosArtefato(artefato, [
249
+ { id: "conversas_vendas_objecao_artefato", descricao: "conversa de vendas trata objecao ou dor do cliente", regex: /objec|duvida|dor|interesse|comparando|orcamento/i, sugestao: "trate a objecao antes do CTA." },
250
+ { id: "conversas_vendas_cta_artefato", descricao: "conversa de vendas contem CTA honesto", regex: /agendar|diagnostico|proposta|proxima acao|cta|posso te enviar/i, sugestao: "inclua convite claro e nao agressivo para a proxima etapa." },
251
+ ]));
252
+ }
253
+ if (preset === "suporte") {
254
+ achados.push(...validarTermosObrigatoriosArtefato(artefato, [
255
+ { id: "conversas_suporte_problema_artefato", descricao: "suporte identifica problema ou chamado", regex: /problema|erro|chamado|ticket|suporte/i, sugestao: "identifique problema, contexto e o que sera feito." },
256
+ { id: "conversas_suporte_handoff_artefato", descricao: "suporte declara escalacao quando necessario", regex: /escalar|humano|atendente|ticket|chamado/i, sugestao: "declare quando o atendimento sai do bot." },
257
+ ]));
258
+ }
259
+ if (preset === "cobranca") {
260
+ achados.push(...validarTermosObrigatoriosArtefato(artefato, [
261
+ { id: "conversas_cobranca_tom_artefato", descricao: "cobranca usa tom respeitoso e objetivo", regex: /respeitoso|cordial|tom|sem constrangimento|regularizar/i, severidade: "critical", sugestao: "declare tom respeitoso e evite constrangimento ou ameaca." },
262
+ { id: "conversas_cobranca_dado_artefato", descricao: "cobranca menciona valor, vencimento ou referencia autorizada", regex: /valor|vencimento|fatura|boleto|referencia autorizada/i, severidade: "blocking", sugestao: "referencie apenas dados autorizados da cobranca." },
263
+ ]));
264
+ }
265
+ return achados;
266
+ }
267
+ export function avaliarArtefatoProfile(profile, contrato, artefato, maturidade, preset) {
268
+ if (!artefato || !artefato.trim())
269
+ return [];
270
+ switch (profile) {
271
+ case "software":
272
+ return avaliarArtefatoSoftwareProfile(contrato, artefato, maturidade, preset);
273
+ case "workflow":
274
+ return avaliarArtefatoWorkflowProfile(contrato, artefato, preset);
275
+ case "ops":
276
+ return avaliarArtefatoOpsProfile(artefato, preset);
277
+ case "legal":
278
+ return avaliarArtefatoLegalProfile(artefato, preset);
279
+ case "research":
280
+ return avaliarArtefatoResearchProfile(artefato, preset);
281
+ case "game":
282
+ return avaliarArtefatoGameProfile(artefato, preset);
283
+ case "conversas":
284
+ return avaliarArtefatoConversasProfile(artefato, preset);
285
+ }
286
+ }
287
+ //# sourceMappingURL=profileArtefatoValidadores.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profileArtefatoValidadores.js","sourceRoot":"","sources":["../src/profileArtefatoValidadores.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { AcaoAuthorTexto, PresetAuthor, ResultadoAuthorBriefing, ResultadoAuthorCliches, ResultadoAuthorIniciar } from "./profileAuthorTipos.js";
2
+ export { comandoProfile, criarPayloadRulePacks, normalizarProfileGovernanca, renderizarRulePacksTexto } from "./profileCommand.js";
3
+ export declare function iniciarProfileAuthor(destinoOpcional: string | undefined, temaSensivel: boolean, cwd?: string): Promise<ResultadoAuthorIniciar>;
4
+ export declare function criarAuthorBriefing(entrada: string | undefined, preset?: PresetAuthor | null): Promise<ResultadoAuthorBriefing>;
5
+ export declare function revisarClichesAuthor(entrada: string | undefined, textoOpcional: string | undefined, textoArquivoOpcional: string | undefined, textoAnteriorOpcional: string | undefined, textoAnteriorArquivoOpcional: string | undefined, acao?: AcaoAuthorTexto, preset?: PresetAuthor | null): Promise<ResultadoAuthorCliches>;
6
+ export declare function comandoAuthor(posicionais: string[], args: string[], emJson: boolean): Promise<number>;