@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
@@ -1,881 +1,6 @@
1
- import { localizarCampoPersistencia, matrizCompatibilidadePersistencia, nomeTipoRecursoPersistencia, normalizarConsistenciaPersistencia, normalizarDurabilidadePersistencia, normalizarEngineBanco, normalizarModeloConsultaPersistencia, normalizarModeloTransacaoPersistencia, parsearBooleanoPersistencia, TIPOS_RECURSO_PERSISTENCIA, } from "../persistencia/contratos.js";
2
- import { contratoDadosTemSensivel, extrairContratoAudit, extrairContratoAuth, extrairContratoAuthz, extrairContratoDados, extrairContratoForbidden, extrairContratoSegredos, efeitoEhPrivilegiado, } from "../semantico/seguranca.js";
3
- import { parsearEfeitoSemantico, parsearEtapaFlow, parsearExpressaoSemantica, parsearTransicaoEstado } from "../semantico/estruturas.js";
4
- const TIPOS_PRIMITIVOS = new Set([
5
- "Texto",
6
- "Numero",
7
- "Inteiro",
8
- "Decimal",
9
- "Booleano",
10
- "Data",
11
- "DataHora",
12
- "Timestamp",
13
- "Id",
14
- "Email",
15
- "Url",
16
- "Json",
17
- "Objeto",
18
- "Vazio",
19
- ]);
20
- function encontrarSubBloco(bloco, palavraChave) {
21
- return bloco.blocos.find((subbloco) => subbloco.tipo === "bloco_generico" && subbloco.palavraChave === palavraChave);
22
- }
23
- function localizarCampo(bloco, ...nomes) {
24
- return bloco?.campos.find((campo) => nomes.includes(campo.nome));
25
- }
26
- function valorCampoCompleto(campo) {
27
- if (!campo) {
28
- return undefined;
29
- }
30
- return [campo.valor, ...campo.modificadores].join(" ").trim() || undefined;
31
- }
32
- function normalizarTipoDeclarado(tipo) {
33
- return tipo
34
- .replace(/\s*([<>\[\](),|?])\s*/g, "$1")
35
- .replace(/\s+/g, "")
36
- .trim();
37
- }
38
- function dividirNoNivelRaiz(texto, separador) {
39
- const partes = [];
40
- let profundidadeAngular = 0;
41
- let profundidadeColchete = 0;
42
- let inicio = 0;
43
- for (let indice = 0; indice < texto.length; indice += 1) {
44
- const caractere = texto[indice];
45
- if (caractere === "<") {
46
- profundidadeAngular += 1;
47
- continue;
48
- }
49
- if (caractere === ">") {
50
- profundidadeAngular = Math.max(0, profundidadeAngular - 1);
51
- continue;
52
- }
53
- if (caractere === "[") {
54
- profundidadeColchete += 1;
55
- continue;
56
- }
57
- if (caractere === "]") {
58
- profundidadeColchete = Math.max(0, profundidadeColchete - 1);
59
- continue;
60
- }
61
- if (profundidadeAngular === 0 && profundidadeColchete === 0 && texto.startsWith(separador, indice)) {
62
- partes.push(texto.slice(inicio, indice));
63
- inicio = indice + separador.length;
64
- indice += separador.length - 1;
65
- }
66
- }
67
- partes.push(texto.slice(inicio));
68
- return partes.map((parte) => parte.trim()).filter(Boolean);
69
- }
70
- function analisarCampoTipo(tipo, modificadores) {
71
- const tipoOriginal = normalizarTipoDeclarado(tipo);
72
- const modificadoresNormalizados = modificadores.map((item) => item.trim()).filter(Boolean);
73
- const refinamentos = modificadoresNormalizados.filter((item) => !["required", "optional", "opcional"].includes(item));
74
- const opcionalPorModificador = modificadoresNormalizados.includes("optional") || modificadoresNormalizados.includes("opcional");
75
- let tipoBase = tipoOriginal;
76
- let cardinalidade = "unitario";
77
- let tiposAlternativos = [];
78
- let tipoItem;
79
- let chaveMapa;
80
- let valorMapa;
81
- let opcional = opcionalPorModificador;
82
- if (tipoBase.endsWith("?")) {
83
- opcional = true;
84
- tipoBase = tipoBase.slice(0, -1);
85
- }
86
- if (/^Opcional<.+>$/.test(tipoBase)) {
87
- opcional = true;
88
- tipoBase = tipoBase.slice("Opcional<".length, -1);
89
- }
90
- const uniao = dividirNoNivelRaiz(tipoBase, "|");
91
- if (uniao.length > 1) {
92
- cardinalidade = "uniao";
93
- tiposAlternativos = uniao.map(normalizarTipoDeclarado);
94
- tipoBase = tiposAlternativos[0] ?? tipoBase;
95
- }
96
- else if (/^Lista<.+>$/.test(tipoBase)) {
97
- cardinalidade = "lista";
98
- tipoItem = tipoBase.slice("Lista<".length, -1).trim();
99
- tipoBase = tipoItem;
100
- }
101
- else if (/^Mapa<.+>$/.test(tipoBase)) {
102
- cardinalidade = "mapa";
103
- const partesMapa = dividirNoNivelRaiz(tipoBase.slice("Mapa<".length, -1), ",");
104
- chaveMapa = partesMapa[0];
105
- valorMapa = partesMapa[1];
106
- tipoBase = valorMapa ?? tipoBase;
107
- }
108
- return {
109
- tipo: tipoOriginal,
110
- modificadores: modificadoresNormalizados,
111
- tipoOriginal,
112
- tipoBase,
113
- cardinalidade,
114
- opcional,
115
- tiposAlternativos,
116
- tipoItem,
117
- chaveMapa,
118
- valorMapa,
119
- refinamentos,
120
- };
121
- }
122
- function converterCampo(campo) {
123
- return {
124
- nome: campo.nome,
125
- ...analisarCampoTipo(campo.valor, campo.modificadores),
126
- };
127
- }
128
- function converterCampos(bloco) {
129
- if (!bloco) {
130
- return [];
131
- }
132
- return bloco.campos.map(converterCampo);
133
- }
134
- function converterBloco(bloco) {
135
- return {
136
- campos: converterCampos(bloco),
137
- linhas: bloco?.linhas.map((linha) => linha.conteudo) ?? [],
138
- blocos: (bloco?.blocos ?? [])
139
- .filter((subbloco) => subbloco.tipo === "bloco_generico")
140
- .map((subbloco) => ({
141
- nome: subbloco.nome ?? subbloco.palavraChave,
142
- conteudo: converterBloco(subbloco),
143
- })),
144
- };
145
- }
146
- function converterCaso(caso) {
147
- return {
148
- nome: caso.nome,
149
- given: converterBloco(caso.given),
150
- when: caso.when ? converterBloco(caso.when) : undefined,
151
- expect: converterBloco(caso.expect),
152
- error: caso.error ? converterBloco(caso.error) : undefined,
153
- };
154
- }
155
- function coletarLinhasPersistencia(bloco, nome) {
156
- if (!bloco) {
157
- return [];
158
- }
159
- return encontrarSubBloco(bloco, nome)?.linhas.map((linha) => linha.conteudo) ?? [];
160
- }
161
- function resolverTipoRecursoPersistencia(bloco) {
162
- const explicito = valorCampoCompleto(localizarCampoPersistencia(bloco, "resource_kind"));
163
- if (explicito && TIPOS_RECURSO_PERSISTENCIA.has(explicito)) {
164
- return explicito;
165
- }
166
- return nomeTipoRecursoPersistencia(bloco);
167
- }
168
- function converterCompatibilidadePersistencia(compatibilidades) {
169
- return compatibilidades.map((item) => ({ ...item }));
170
- }
171
- function converterRecursoPersistencia(recurso) {
172
- const resourceKind = resolverTipoRecursoPersistencia(recurso);
173
- if (!resourceKind) {
174
- return undefined;
175
- }
176
- const mode = valorCampoCompleto(localizarCampoPersistencia(recurso, "mode"));
177
- const isolation = valorCampoCompleto(localizarCampoPersistencia(recurso, "isolation"));
178
- return {
179
- nome: recurso.nome ?? resourceKind,
180
- resourceKind,
181
- entity: valorCampoCompleto(localizarCampoPersistencia(recurso, "entity")),
182
- collection: valorCampoCompleto(localizarCampoPersistencia(recurso, "collection")),
183
- table: valorCampoCompleto(localizarCampoPersistencia(recurso, "table")),
184
- consistency: normalizarConsistenciaPersistencia(valorCampoCompleto(localizarCampoPersistencia(recurso, "consistency")))
185
- ?? valorCampoCompleto(localizarCampoPersistencia(recurso, "consistency")),
186
- durability: normalizarDurabilidadePersistencia(valorCampoCompleto(localizarCampoPersistencia(recurso, "durability")))
187
- ?? valorCampoCompleto(localizarCampoPersistencia(recurso, "durability")),
188
- transactionModel: normalizarModeloTransacaoPersistencia(valorCampoCompleto(localizarCampoPersistencia(recurso, "transaction_model")))
189
- ?? valorCampoCompleto(localizarCampoPersistencia(recurso, "transaction_model")),
190
- queryModel: normalizarModeloConsultaPersistencia(valorCampoCompleto(localizarCampoPersistencia(recurso, "query_model")))
191
- ?? valorCampoCompleto(localizarCampoPersistencia(recurso, "query_model")),
192
- mode,
193
- isolation,
194
- strategy: valorCampoCompleto(localizarCampoPersistencia(recurso, "strategy")),
195
- ttl: valorCampoCompleto(localizarCampoPersistencia(recurso, "ttl")),
196
- retention: valorCampoCompleto(localizarCampoPersistencia(recurso, "retention")),
197
- path: valorCampoCompleto(localizarCampoPersistencia(recurso, "path")),
198
- from: valorCampoCompleto(localizarCampoPersistencia(recurso, "from")),
199
- to: valorCampoCompleto(localizarCampoPersistencia(recurso, "to")),
200
- surface: valorCampoCompleto(localizarCampoPersistencia(recurso, "surface")),
201
- adapter: valorCampoCompleto(localizarCampoPersistencia(recurso, "adapter")),
202
- portavel: parsearBooleanoPersistencia(valorCampoCompleto(localizarCampoPersistencia(recurso, "portavel"))),
203
- capabilities: coletarLinhasPersistencia(recurso, "capabilities"),
204
- operations: coletarLinhasPersistencia(recurso, "operations"),
205
- indexing: coletarLinhasPersistencia(recurso, "indexing"),
206
- guarantees: coletarLinhasPersistencia(recurso, "guarantees"),
207
- diagnostics: coletarLinhasPersistencia(recurso, "diagnostics"),
208
- risks: coletarLinhasPersistencia(recurso, "risks"),
209
- fields: converterCampos(recurso),
210
- lines: recurso.linhas.map((linha) => linha.conteudo),
211
- block: converterBloco(recurso),
212
- compatibilidade: converterCompatibilidadePersistencia(matrizCompatibilidadePersistencia(resourceKind, { mode, isolation })),
213
- };
214
- }
215
- function converterDatabase(database) {
216
- return {
217
- nome: database.nome ?? "database",
218
- engine: normalizarEngineBanco(valorCampoCompleto(localizarCampoPersistencia(database, "engine"))),
219
- schema: valorCampoCompleto(localizarCampoPersistencia(database, "schema")),
220
- database: valorCampoCompleto(localizarCampoPersistencia(database, "database")),
221
- consistency: normalizarConsistenciaPersistencia(valorCampoCompleto(localizarCampoPersistencia(database, "consistency")))
222
- ?? valorCampoCompleto(localizarCampoPersistencia(database, "consistency")),
223
- durability: normalizarDurabilidadePersistencia(valorCampoCompleto(localizarCampoPersistencia(database, "durability")))
224
- ?? valorCampoCompleto(localizarCampoPersistencia(database, "durability")),
225
- transactionModel: normalizarModeloTransacaoPersistencia(valorCampoCompleto(localizarCampoPersistencia(database, "transaction_model")))
226
- ?? valorCampoCompleto(localizarCampoPersistencia(database, "transaction_model")),
227
- queryModel: normalizarModeloConsultaPersistencia(valorCampoCompleto(localizarCampoPersistencia(database, "query_model")))
228
- ?? valorCampoCompleto(localizarCampoPersistencia(database, "query_model")),
229
- portavel: parsearBooleanoPersistencia(valorCampoCompleto(localizarCampoPersistencia(database, "portavel"))),
230
- adapter: valorCampoCompleto(localizarCampoPersistencia(database, "adapter")),
231
- capabilities: coletarLinhasPersistencia(database, "capabilities"),
232
- operations: coletarLinhasPersistencia(database, "operations"),
233
- indexing: coletarLinhasPersistencia(database, "indexing"),
234
- guarantees: coletarLinhasPersistencia(database, "guarantees"),
235
- diagnostics: coletarLinhasPersistencia(database, "diagnostics"),
236
- risks: coletarLinhasPersistencia(database, "risks"),
237
- fields: converterCampos(database),
238
- lines: database.linhas.map((linha) => linha.conteudo),
239
- block: converterBloco(database),
240
- resources: database.blocos
241
- .filter((bloco) => bloco.tipo === "bloco_generico")
242
- .map(converterRecursoPersistencia)
243
- .filter((item) => Boolean(item)),
244
- };
245
- }
246
- function converterImplementacoes(bloco) {
247
- const implementacoes = [];
248
- for (const campo of bloco?.campos ?? []) {
249
- const origem = campo.nome.toLowerCase();
250
- if (origem === "ts" || origem === "typescript") {
251
- implementacoes.push({ origem: "ts", caminho: campo.valor, resolucaoImpl: campo.valor, statusImpl: "nao_verificado" });
252
- continue;
253
- }
254
- if (origem === "py" || origem === "python") {
255
- implementacoes.push({ origem: "py", caminho: campo.valor, resolucaoImpl: campo.valor, statusImpl: "nao_verificado" });
256
- continue;
257
- }
258
- if (origem === "dart") {
259
- implementacoes.push({ origem: "dart", caminho: campo.valor, resolucaoImpl: campo.valor, statusImpl: "nao_verificado" });
260
- continue;
261
- }
262
- if (origem === "lua") {
263
- implementacoes.push({ origem: "lua", caminho: campo.valor, resolucaoImpl: campo.valor, statusImpl: "nao_verificado" });
264
- continue;
265
- }
266
- if (origem === "cs" || origem === "csharp" || origem === "dotnet") {
267
- implementacoes.push({ origem: "cs", caminho: campo.valor, resolucaoImpl: campo.valor, statusImpl: "nao_verificado" });
268
- continue;
269
- }
270
- if (origem === "java") {
271
- implementacoes.push({ origem: "java", caminho: campo.valor, resolucaoImpl: campo.valor, statusImpl: "nao_verificado" });
272
- continue;
273
- }
274
- if (origem === "go" || origem === "golang") {
275
- implementacoes.push({ origem: "go", caminho: campo.valor, resolucaoImpl: campo.valor, statusImpl: "nao_verificado" });
276
- continue;
277
- }
278
- if (origem === "rust" || origem === "rs") {
279
- implementacoes.push({ origem: "rust", caminho: campo.valor, resolucaoImpl: campo.valor, statusImpl: "nao_verificado" });
280
- continue;
281
- }
282
- if (origem === "cpp" || origem === "cxx" || origem === "cc" || origem === "c++") {
283
- implementacoes.push({ origem: "cpp", caminho: campo.valor, resolucaoImpl: campo.valor, statusImpl: "nao_verificado" });
284
- }
285
- }
286
- return implementacoes;
287
- }
288
- function converterVinculos(bloco) {
289
- if (!bloco) {
290
- return [];
291
- }
292
- const campos = bloco.campos.map((campo) => {
293
- const valor = valorCampoCompleto(campo) ?? "";
294
- return {
295
- tipo: campo.nome,
296
- valor,
297
- arquivo: campo.nome === "arquivo" ? valor : undefined,
298
- simbolo: campo.nome === "simbolo" ? valor : undefined,
299
- recurso: ["recurso", "tabela", "fila", "cache", "storage"].includes(campo.nome) ? valor : undefined,
300
- superficie: ["superficie", "rota", "worker", "cron", "webhook", "evento", "policy", "fila", "cache", "storage"].includes(campo.nome) ? valor : undefined,
301
- statusResolucao: "nao_verificado",
302
- };
303
- });
304
- const linhas = bloco.linhas.map((linha) => {
305
- const [tipo, ...resto] = linha.conteudo.split(/\s+/);
306
- const valor = resto.join(" ").trim();
307
- return {
308
- tipo: tipo ?? "desconhecido",
309
- valor,
310
- statusResolucao: "nao_verificado",
311
- };
312
- }).filter((item) => item.valor);
313
- const subblocos = bloco.blocos
314
- .filter((item) => item.tipo === "bloco_generico")
315
- .map((item) => ({
316
- tipo: item.palavraChave === "desconhecido" ? (item.nome ?? "desconhecido") : item.palavraChave,
317
- valor: item.nome ?? item.palavraChave,
318
- arquivo: valorCampoCompleto(localizarCampo(item, "arquivo")),
319
- simbolo: valorCampoCompleto(localizarCampo(item, "simbolo")),
320
- recurso: valorCampoCompleto(localizarCampo(item, "recurso", "tabela", "fila", "cache", "storage")),
321
- superficie: valorCampoCompleto(localizarCampo(item, "superficie", "rota", "worker", "cron", "webhook", "evento")),
322
- statusResolucao: "nao_verificado",
323
- }));
324
- return [...campos, ...linhas, ...subblocos];
325
- }
326
- function converterExecucao(bloco) {
327
- const idempotencia = valorCampoCompleto(localizarCampo(bloco, "idempotencia"));
328
- const criticidadeOperacional = valorCampoCompleto(localizarCampo(bloco, "criticidade_operacional"));
329
- return {
330
- idempotencia: idempotencia === "verdadeiro" || idempotencia === "true",
331
- timeout: valorCampoCompleto(localizarCampo(bloco, "timeout")) ?? "padrao",
332
- retry: valorCampoCompleto(localizarCampo(bloco, "retry")) ?? "nenhum",
333
- compensacao: valorCampoCompleto(localizarCampo(bloco, "compensacao")) ?? "nenhuma",
334
- criticidadeOperacional: (criticidadeOperacional === "baixa"
335
- || criticidadeOperacional === "alta"
336
- || criticidadeOperacional === "critica") ? criticidadeOperacional : "media",
337
- explicita: Boolean(bloco),
338
- };
339
- }
340
- function converterAuth(bloco) {
341
- return extrairContratoAuth(bloco);
342
- }
343
- function converterAuthz(bloco) {
344
- return extrairContratoAuthz(bloco);
345
- }
346
- function converterDados(bloco) {
347
- return extrairContratoDados(bloco);
348
- }
349
- function converterAudit(bloco) {
350
- return extrairContratoAudit(bloco);
351
- }
352
- function converterSegredos(bloco) {
353
- return extrairContratoSegredos(bloco);
354
- }
355
- function converterForbidden(bloco) {
356
- return extrairContratoForbidden(bloco);
357
- }
358
- function converterErrosTask(bloco, fallback) {
359
- const erros = new Map();
360
- for (const campo of bloco?.campos ?? []) {
361
- erros.set(campo.nome, {
362
- codigo: campo.nome,
363
- mensagem: valorCampoCompleto(campo) ?? "",
364
- });
365
- }
366
- for (const subbloco of bloco?.blocos ?? []) {
367
- if (subbloco.tipo !== "bloco_generico") {
368
- continue;
369
- }
370
- const codigo = subbloco.nome ?? subbloco.palavraChave;
371
- if (!codigo || codigo === "desconhecido") {
372
- continue;
373
- }
374
- erros.set(codigo, {
375
- codigo,
376
- mensagem: valorCampoCompleto(localizarCampo(subbloco, "mensagem")) ?? `Erro estruturado "${codigo}".`,
377
- categoria: valorCampoCompleto(localizarCampo(subbloco, "categoria")),
378
- recuperabilidade: valorCampoCompleto(localizarCampo(subbloco, "recuperabilidade")),
379
- acaoChamador: valorCampoCompleto(localizarCampo(subbloco, "acao_chamador")),
380
- impactaEstado: valorCampoCompleto(localizarCampo(subbloco, "impacta_estado")) === "verdadeiro",
381
- requerCompensacao: valorCampoCompleto(localizarCampo(subbloco, "requer_compensacao")) === "verdadeiro",
382
- });
383
- }
384
- for (const erro of fallback ?? []) {
385
- if (!erros.has(erro.codigo)) {
386
- erros.set(erro.codigo, {
387
- codigo: erro.codigo,
388
- mensagem: erro.mensagem,
389
- categoria: erro.categoria,
390
- recuperabilidade: erro.recuperabilidade,
391
- acaoChamador: erro.acaoChamador,
392
- impactaEstado: erro.impactaEstado,
393
- requerCompensacao: erro.requerCompensacao,
394
- });
395
- }
396
- }
397
- return [...erros.values()];
398
- }
399
- function extrairPerfil(bloco, padrao = "interno") {
400
- const perfil = valorCampoCompleto(localizarCampo(bloco, "perfil", "compatibilidade"))?.toLowerCase();
401
- if (perfil === "publico"
402
- || perfil === "interno"
403
- || perfil === "experimental"
404
- || perfil === "legado"
405
- || perfil === "deprecado") {
406
- return perfil;
407
- }
408
- return padrao;
409
- }
410
- function tipoNaoPrimitivo(campo) {
411
- if (!TIPOS_PRIMITIVOS.has(campo.tipoBase)) {
412
- return campo.tipoBase;
413
- }
414
- if (campo.tipoItem && !TIPOS_PRIMITIVOS.has(campo.tipoItem)) {
415
- return campo.tipoItem;
416
- }
417
- if (campo.valorMapa && !TIPOS_PRIMITIVOS.has(campo.valorMapa)) {
418
- return campo.valorMapa;
419
- }
420
- return undefined;
421
- }
422
- function deduplicarTexto(valores) {
423
- return [...new Set(valores.filter(Boolean))].sort((a, b) => a.localeCompare(b, "pt-BR"));
424
- }
425
- function resumirAgente(params) {
426
- const entidadesAfetadas = deduplicarTexto([
427
- ...(params.input ?? []).map(tipoNaoPrimitivo).filter((item) => Boolean(item)),
428
- ...(params.output ?? []).map(tipoNaoPrimitivo).filter((item) => Boolean(item)),
429
- ...(params.efeitos ?? []).map((efeito) => efeito.alvo),
430
- ]);
431
- const mutacoesPrevistas = deduplicarTexto((params.efeitos ?? []).map((efeito) => `${efeito.categoria}:${efeito.alvo}`));
432
- const riscos = new Set();
433
- if ((params.efeitos ?? []).some((efeito) => efeito.categoria === "persistencia")) {
434
- riscos.add("altera_persistencia");
435
- }
436
- if ((params.efeitos ?? []).some((efeito) => efeitoEhPrivilegiado(efeito))) {
437
- riscos.add("efeito_privilegiado");
438
- }
439
- if ((params.efeitos ?? []).some((efeito) => efeito.criticidade === "alta" || efeito.criticidade === "critica")) {
440
- riscos.add("efeito_critico");
441
- }
442
- if (params.execucao?.criticidadeOperacional === "alta" || params.execucao?.criticidadeOperacional === "critica") {
443
- riscos.add("execucao_critica");
444
- }
445
- if (contratoDadosTemSensivel(params.dados)) {
446
- riscos.add("dados_sensiveis");
447
- }
448
- if (params.segredos?.itens.length) {
449
- riscos.add("segredo_operacional");
450
- }
451
- if ((params.vinculos ?? []).length === 0) {
452
- riscos.add("vinculo_fraco");
453
- }
454
- const checks = new Set();
455
- checks.add("rodar sema validar --json");
456
- if ((params.output ?? []).length > 0) {
457
- checks.add("verificar guarantees");
458
- }
459
- if ((params.vinculos ?? []).length > 0) {
460
- checks.add("rodar sema drift --json");
461
- }
462
- if (params.auth?.explicita || params.authz?.explicita) {
463
- checks.add("revisar auth e authz");
464
- }
465
- if (params.dados?.explicita) {
466
- checks.add("validar classificacao de dados");
467
- }
468
- if (params.audit?.explicita) {
469
- checks.add("validar trilha de auditoria");
470
- }
471
- if (params.forbidden?.explicita) {
472
- checks.add("confirmar proibicoes operacionais");
473
- }
474
- if (params.superficiePublica) {
475
- checks.add("validar superficie publica impactada");
476
- }
477
- return {
478
- riscos: [...riscos],
479
- checks: [...checks],
480
- entidadesAfetadas,
481
- superficiesPublicas: params.superficiePublica ? [params.superficiePublica] : [],
482
- mutacoesPrevistas,
483
- };
484
- }
485
- function recomporCaminho(campo) {
486
- const valor = valorCampoCompleto(campo);
487
- return valor?.replace(/\s*\/\s*/g, "/").trim();
488
- }
489
- function ehUseInterop(use) {
490
- return use.origem !== "sema";
491
- }
492
- function converterErroPublico(erro, origemTask) {
493
- return {
494
- nome: erro.codigo,
495
- codigo: erro.codigo,
496
- mensagem: erro.mensagem,
497
- categoria: erro.categoria,
498
- recuperabilidade: erro.recuperabilidade,
499
- acaoChamador: erro.acaoChamador,
500
- impactaEstado: erro.impactaEstado,
501
- requerCompensacao: erro.requerCompensacao,
502
- origemTask,
503
- };
504
- }
505
- function calcularConfiancaPublica(route) {
506
- if (route.task && route.vinculos.length > 0) {
507
- return "alta";
508
- }
509
- if (route.task || route.vinculos.length > 0) {
510
- return "media";
511
- }
512
- return "baixa";
513
- }
514
- function calcularRiscoPublico(route) {
515
- if (!route.auth.explicita
516
- || contratoDadosTemSensivel(route.dados)
517
- || route.efeitosPublicos.some((efeito) => efeitoEhPrivilegiado(efeito) || efeito.categoria === "persistencia" || efeito.criticidade === "critica")) {
518
- return "alto";
519
- }
520
- if (route.efeitosPublicos.length > 0 || route.errosPublicos.length > 0) {
521
- return "medio";
522
- }
523
- return "baixo";
524
- }
525
- function converterSuperficie(tipo, superficie) {
526
- const input = converterCampos(encontrarSubBloco(superficie, "input"));
527
- const output = converterCampos(encontrarSubBloco(superficie, "output"));
528
- const effects = (encontrarSubBloco(superficie, "effects")?.linhas ?? [])
529
- .map((linha) => parsearEfeitoSemantico(linha.conteudo))
530
- .filter((linha) => Boolean(linha));
531
- const vinculos = converterVinculos(encontrarSubBloco(superficie, "vinculos"));
532
- const execucao = converterExecucao(encontrarSubBloco(superficie, "execucao"));
533
- const auth = converterAuth(encontrarSubBloco(superficie, "auth"));
534
- const authz = converterAuthz(encontrarSubBloco(superficie, "authz"));
535
- const dados = converterDados(encontrarSubBloco(superficie, "dados"));
536
- const audit = converterAudit(encontrarSubBloco(superficie, "audit"));
537
- const segredos = converterSegredos(encontrarSubBloco(superficie, "segredos"));
538
- const forbidden = converterForbidden(encontrarSubBloco(superficie, "forbidden"));
539
- const task = valorCampoCompleto(localizarCampo(superficie, "task", "tarefa"));
540
- const perfilCompatibilidade = extrairPerfil(superficie, tipo === "webhook" ? "publico" : "interno");
541
- const resumoAgente = resumirAgente({
542
- input,
543
- output,
544
- efeitos: effects,
545
- vinculos,
546
- execucao,
547
- auth,
548
- authz,
549
- dados,
550
- audit,
551
- segredos,
552
- forbidden,
553
- superficiePublica: perfilCompatibilidade === "publico" ? `${tipo}:${superficie.nome ?? tipo}` : undefined,
554
- });
555
- return {
556
- tipo,
557
- nome: superficie.nome ?? tipo,
558
- campos: converterCampos(superficie),
559
- linhas: superficie.linhas.map((linha) => linha.conteudo),
560
- task: task || undefined,
561
- input,
562
- output,
563
- effects,
564
- implementacoesExternas: converterImplementacoes(encontrarSubBloco(superficie, "impl")),
565
- vinculos,
566
- execucao,
567
- auth,
568
- authz,
569
- dados,
570
- audit,
571
- segredos,
572
- forbidden,
573
- perfilCompatibilidade,
574
- resumoAgente,
575
- };
576
- }
577
- export function converterParaIr(modulo, diagnosticos, contexto) {
578
- const perfilModulo = extrairPerfil(modulo.vinculos, modulo.routes.length > 0 || modulo.webhooks.length > 0 ? "publico" : "interno");
579
- const types = modulo.types.map((type) => ({
580
- nome: type.nome,
581
- definicao: converterBloco(encontrarSubBloco(type.corpo, "fields") ?? type.corpo),
582
- invariantes: (encontrarSubBloco(type.corpo, "invariants")?.linhas ?? [])
583
- .map((linha) => parsearExpressaoSemantica(linha.conteudo))
584
- .filter((linha) => Boolean(linha)),
585
- }));
586
- const entities = modulo.entities.map((entity) => ({
587
- nome: entity.nome,
588
- campos: converterCampos(encontrarSubBloco(entity.corpo, "fields")),
589
- invariantes: (encontrarSubBloco(entity.corpo, "invariants")?.linhas ?? [])
590
- .map((linha) => parsearExpressaoSemantica(linha.conteudo))
591
- .filter((linha) => Boolean(linha)),
592
- }));
593
- const tarefasSemanticas = contexto?.tarefasDetalhadas ?? new Map();
594
- const tasks = modulo.tasks.map((task) => {
595
- const input = converterCampos(task.input);
596
- const output = converterCampos(task.output);
597
- const effects = (task.effects?.linhas ?? [])
598
- .map((linha) => parsearEfeitoSemantico(linha.conteudo))
599
- .filter((linha) => Boolean(linha));
600
- const vinculos = converterVinculos(task.vinculos);
601
- const execucao = converterExecucao(task.execucao);
602
- const auth = converterAuth(encontrarSubBloco(task.corpo, "auth"));
603
- const authz = converterAuthz(encontrarSubBloco(task.corpo, "authz"));
604
- const dados = converterDados(encontrarSubBloco(task.corpo, "dados"));
605
- const audit = converterAudit(encontrarSubBloco(task.corpo, "audit"));
606
- const segredos = converterSegredos(encontrarSubBloco(task.corpo, "segredos"));
607
- const forbidden = converterForbidden(encontrarSubBloco(task.corpo, "forbidden"));
608
- const errosDetalhados = converterErrosTask(task.error, tarefasSemanticas.get(task.nome)?.errors);
609
- const perfilCompatibilidade = extrairPerfil(task.corpo, "interno");
610
- const resumoAgente = resumirAgente({
611
- input,
612
- output,
613
- efeitos: effects,
614
- vinculos,
615
- execucao,
616
- auth,
617
- authz,
618
- dados,
619
- audit,
620
- segredos,
621
- forbidden,
622
- });
623
- return {
624
- nome: task.nome,
625
- input,
626
- output,
627
- rules: task.rules?.linhas.map((linha) => linha.conteudo) ?? [],
628
- regrasEstruturadas: (task.rules?.linhas ?? [])
629
- .map((linha) => parsearExpressaoSemantica(linha.conteudo))
630
- .filter((linha) => Boolean(linha)),
631
- effects: task.effects?.linhas.map((linha) => linha.conteudo) ?? [],
632
- efeitosEstruturados: effects,
633
- implementacoesExternas: converterImplementacoes(task.impl),
634
- vinculos,
635
- execucao,
636
- auth,
637
- authz,
638
- dados,
639
- audit,
640
- segredos,
641
- forbidden,
642
- guarantees: task.guarantees?.linhas.map((linha) => linha.conteudo) ?? [],
643
- garantiasEstruturadas: (task.guarantees?.linhas ?? [])
644
- .map((linha) => parsearExpressaoSemantica(linha.conteudo))
645
- .filter((linha) => Boolean(linha)),
646
- errors: Object.fromEntries(errosDetalhados.map((erro) => [erro.codigo, erro.mensagem])),
647
- errosDetalhados,
648
- perfilCompatibilidade,
649
- stateContract: task.state ? {
650
- nomeEstado: task.state.nome ?? task.state.campos.find((campo) => campo.nome === "state" || campo.nome === "estado")?.valor,
651
- campos: converterCampos(task.state),
652
- linhas: task.state.linhas.map((linha) => linha.conteudo),
653
- transicoes: (encontrarSubBloco(task.state, "transitions")?.linhas ?? task.state.linhas)
654
- .map((linha) => parsearTransicaoEstado(linha.conteudo))
655
- .filter((linha) => Boolean(linha)),
656
- } : undefined,
657
- resumoAgente,
658
- tests: (task.tests?.blocos.filter((bloco) => bloco.tipo === "caso_teste") ?? []).map(converterCaso),
659
- };
660
- });
661
- const tarefasPorNome = new Map(tasks.map((task) => [task.nome, task]));
662
- const flows = modulo.flows.map((flow) => {
663
- const campos = converterCampos(flow.corpo);
664
- const effects = (encontrarSubBloco(flow.corpo, "effects")?.linhas ?? [])
665
- .map((linha) => parsearEfeitoSemantico(linha.conteudo))
666
- .filter((linha) => Boolean(linha));
667
- const vinculos = converterVinculos(flow.vinculos);
668
- const perfilCompatibilidade = extrairPerfil(flow.corpo, "interno");
669
- return {
670
- nome: flow.nome,
671
- campos,
672
- linhas: flow.corpo.linhas.map((linha) => linha.conteudo),
673
- tasksReferenciadas: flow.corpo.campos
674
- .filter((campo) => campo.nome === "task" || campo.nome === "tarefa")
675
- .map((campo) => campo.valor),
676
- etapasEstruturadas: flow.corpo.linhas
677
- .map((linha) => parsearEtapaFlow(linha.conteudo))
678
- .filter((linha) => Boolean(linha)),
679
- effects: (encontrarSubBloco(flow.corpo, "effects")?.linhas ?? []).map((linha) => linha.conteudo),
680
- efeitosEstruturados: effects,
681
- vinculos,
682
- perfilCompatibilidade,
683
- resumoAgente: resumirAgente({
684
- input: campos,
685
- efeitos: effects,
686
- vinculos,
687
- }),
688
- };
689
- });
690
- const routes = modulo.routes.map((route) => ({
691
- nome: route.nome,
692
- campos: converterCampos(route.corpo),
693
- linhas: route.corpo.linhas.map((linha) => linha.conteudo),
694
- metodo: route.corpo.campos.find((campo) => campo.nome === "metodo")?.valor,
695
- caminho: recomporCaminho(route.corpo.campos.find((campo) => campo.nome === "caminho")),
696
- task: route.corpo.campos.find((campo) => campo.nome === "task" || campo.nome === "tarefa")?.valor,
697
- inputPublico: [],
698
- outputPublico: [],
699
- errosPublicos: [],
700
- efeitosPublicos: [],
701
- vinculos: converterVinculos(route.vinculos),
702
- auth: converterAuth(encontrarSubBloco(route.corpo, "auth")),
703
- authz: converterAuthz(encontrarSubBloco(route.corpo, "authz")),
704
- dados: converterDados(encontrarSubBloco(route.corpo, "dados")),
705
- audit: converterAudit(encontrarSubBloco(route.corpo, "audit")),
706
- segredos: converterSegredos(encontrarSubBloco(route.corpo, "segredos")),
707
- forbidden: converterForbidden(encontrarSubBloco(route.corpo, "forbidden")),
708
- perfilCompatibilidade: extrairPerfil(route.corpo, "publico"),
709
- garantiasPublicasMinimas: [],
710
- resumoAgente: {
711
- riscos: [],
712
- checks: [],
713
- entidadesAfetadas: [],
714
- superficiesPublicas: [],
715
- mutacoesPrevistas: [],
716
- },
717
- publico: {
718
- metodo: undefined,
719
- caminho: undefined,
720
- task: undefined,
721
- input: [],
722
- output: [],
723
- errors: [],
724
- effects: [],
725
- garantiasMinimas: [],
726
- },
727
- })).map((route) => {
728
- const routeAst = modulo.routes.find((item) => item.nome === route.nome);
729
- const tarefaAssociada = route.task ? tarefasPorNome.get(route.task) : undefined;
730
- const tarefaSemantica = route.task ? tarefasSemanticas.get(route.task) : undefined;
731
- const inputPublicoDeclarado = converterCampos(encontrarSubBloco(routeAst.corpo, "input"));
732
- const outputPublicoDeclarado = converterCampos(encontrarSubBloco(routeAst.corpo, "output"));
733
- const errosDeclarados = converterErrosTask(encontrarSubBloco(routeAst.corpo, "error"), tarefaSemantica?.errors);
734
- const efeitosPublicosDeclarados = (encontrarSubBloco(routeAst.corpo, "effects")?.linhas ?? [])
735
- .map((linha) => parsearEfeitoSemantico(linha.conteudo))
736
- .filter((linha) => Boolean(linha));
737
- const inputPublicoResolvido = inputPublicoDeclarado.length > 0
738
- ? inputPublicoDeclarado
739
- : (tarefaAssociada?.input ?? tarefaSemantica?.input?.map((campo) => ({
740
- nome: campo.nome,
741
- tipo: campo.tipo,
742
- modificadores: campo.modificadores,
743
- tipoOriginal: campo.tipo,
744
- tipoBase: campo.tipo,
745
- cardinalidade: "unitario",
746
- opcional: false,
747
- tiposAlternativos: [],
748
- refinamentos: [],
749
- })) ?? []);
750
- const outputPublicoResolvido = outputPublicoDeclarado.length > 0
751
- ? outputPublicoDeclarado
752
- : (tarefaAssociada?.output ?? tarefaSemantica?.output?.map((campo) => ({
753
- nome: campo.nome,
754
- tipo: campo.tipo,
755
- modificadores: campo.modificadores,
756
- tipoOriginal: campo.tipo,
757
- tipoBase: campo.tipo,
758
- cardinalidade: "unitario",
759
- opcional: false,
760
- tiposAlternativos: [],
761
- refinamentos: [],
762
- })) ?? []);
763
- const errosPublicosResolvidos = errosDeclarados.length > 0
764
- ? errosDeclarados.map((erro) => converterErroPublico(erro, route.task))
765
- : (tarefaAssociada?.errosDetalhados ?? (tarefaSemantica?.errors ?? []).map((erro) => ({ codigo: erro.codigo, mensagem: erro.mensagem }))).map((erro) => converterErroPublico(erro, route.task));
766
- const garantiasPublicasMinimas = (tarefaAssociada?.guarantees ?? tarefaSemantica?.guarantees ?? []).filter((garantia) => {
767
- const referencia = garantia.trim().split(/\s+/)[0] ?? "";
768
- return outputPublicoResolvido.some((campo) => campo.nome === referencia || garantia.includes(`${campo.nome}.`));
769
- });
770
- const routeResolvida = {
771
- ...route,
772
- inputPublico: inputPublicoResolvido,
773
- outputPublico: outputPublicoResolvido,
774
- errosPublicos: errosPublicosResolvidos,
775
- efeitosPublicos: efeitosPublicosDeclarados,
776
- garantiasPublicasMinimas,
777
- resumoAgente: resumirAgente({
778
- input: inputPublicoResolvido,
779
- output: outputPublicoResolvido,
780
- efeitos: efeitosPublicosDeclarados,
781
- vinculos: route.vinculos,
782
- auth: route.auth,
783
- authz: route.authz,
784
- dados: route.dados,
785
- audit: route.audit,
786
- segredos: route.segredos,
787
- forbidden: route.forbidden,
788
- superficiePublica: `${route.metodo ?? "?"} ${route.caminho ?? "?"}`,
789
- }),
790
- publico: {
791
- metodo: route.metodo,
792
- caminho: route.caminho,
793
- task: route.task,
794
- input: inputPublicoResolvido,
795
- output: outputPublicoResolvido,
796
- errors: errosPublicosResolvidos,
797
- effects: efeitosPublicosDeclarados,
798
- garantiasMinimas: garantiasPublicasMinimas,
799
- confiancaContrato: "media",
800
- riscoRegressao: "medio",
801
- divergenciasPublicas: [],
802
- },
803
- };
804
- routeResolvida.publico.confiancaContrato = calcularConfiancaPublica(routeResolvida);
805
- routeResolvida.publico.riscoRegressao = calcularRiscoPublico(routeResolvida);
806
- return routeResolvida;
807
- });
808
- const superficies = [
809
- ...modulo.workers.map((item) => converterSuperficie("worker", item)),
810
- ...modulo.eventos.map((item) => converterSuperficie("evento", item)),
811
- ...modulo.filas.map((item) => converterSuperficie("fila", item)),
812
- ...modulo.crons.map((item) => converterSuperficie("cron", item)),
813
- ...modulo.webhooks.map((item) => converterSuperficie("webhook", item)),
814
- ...modulo.caches.map((item) => converterSuperficie("cache", item)),
815
- ...modulo.storages.map((item) => converterSuperficie("storage", item)),
816
- ...modulo.policies.map((item) => converterSuperficie("policy", item)),
817
- ];
818
- const states = modulo.states.map((state) => ({
819
- nome: state.nome,
820
- campos: converterCampos(encontrarSubBloco(state.corpo, "fields") ?? state.corpo),
821
- linhas: state.corpo.linhas.map((linha) => linha.conteudo),
822
- invariantes: (encontrarSubBloco(state.corpo, "invariants")?.linhas ?? [])
823
- .map((linha) => parsearExpressaoSemantica(linha.conteudo))
824
- .filter((linha) => Boolean(linha)),
825
- transicoes: (encontrarSubBloco(state.corpo, "transitions")?.linhas ?? [])
826
- .map((linha) => parsearTransicaoEstado(linha.conteudo))
827
- .filter((linha) => Boolean(linha)),
828
- }));
829
- const databases = modulo.databases.map(converterDatabase);
830
- const resumoAgenteModulo = resumirAgente({
831
- input: [],
832
- output: [],
833
- efeitos: [
834
- ...tasks.flatMap((task) => task.efeitosEstruturados),
835
- ...routes.flatMap((route) => route.efeitosPublicos),
836
- ...superficies.flatMap((superficie) => superficie.effects),
837
- ],
838
- vinculos: [
839
- ...converterVinculos(modulo.vinculos),
840
- ...tasks.flatMap((task) => task.vinculos),
841
- ...routes.flatMap((route) => route.vinculos),
842
- ...superficies.flatMap((superficie) => superficie.vinculos),
843
- ],
844
- });
845
- return {
846
- nome: modulo.nome,
847
- uses: contexto?.modulosImportados.length
848
- ? [...contexto.modulosImportados]
849
- : modulo.uses.filter((use) => use.origem === "sema").map((use) => use.caminho),
850
- imports: modulo.uses.map((use) => ({
851
- origem: use.origem,
852
- caminho: use.caminho,
853
- externo: use.origem !== "sema",
854
- })),
855
- interoperabilidades: contexto?.interoperabilidades.map((interop) => ({ ...interop })) ?? modulo.uses
856
- .filter(ehUseInterop)
857
- .map((use) => ({ origem: use.origem, caminho: use.caminho })),
858
- vinculos: converterVinculos(modulo.vinculos),
859
- perfilCompatibilidade: perfilModulo,
860
- types,
861
- entities,
862
- enums: modulo.enums.map((enumeracao) => ({ nome: enumeracao.nome, valores: enumeracao.valores })),
863
- tasks,
864
- flows,
865
- routes,
866
- superficies,
867
- states,
868
- databases,
869
- resumoAgente: {
870
- ...resumoAgenteModulo,
871
- superficiesPublicas: deduplicarTexto([
872
- ...routes.map((route) => `${route.metodo ?? "?"} ${route.caminho ?? route.nome}`),
873
- ...superficies
874
- .filter((superficie) => superficie.perfilCompatibilidade === "publico")
875
- .map((superficie) => `${superficie.tipo}:${superficie.nome}`),
876
- ]),
877
- },
878
- diagnosticos,
879
- };
880
- }
1
+ // SEMA-GOVERNED: sema.software
2
+ // Descricao: nucleo semantico particionado; consulte contratos/sema/software.sema antes de editar.
3
+ export * from "./conversor.part01.js";
4
+ export * from "./conversor.part02.js";
5
+ export * from "./conversor.part03.js";
881
6
  //# sourceMappingURL=conversor.js.map