@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,145 @@
1
+ // SEMA-GOVERNED: sema.governanca_ia_contexto
2
+ // Descricao: inferencias de body e schemas Zod em TypeScript; consulte contratos/sema/governanca_ia_contexto.sema antes de editar.
3
+ import ts from "typescript";
4
+ import { deduplicarCampos, desembrulharExpressao, } from "./typescript-http-modelos.js";
5
+ import { ehCallRequest, extrairMetadadosTipoExplicito, inferirTipoBasicoDeExpressao, obterNomeSchema, tipoInferidoPorNomeCampo, } from "./typescript-http-expressoes.js";
6
+ export function resolverMetadadosOrigemBody(expr, sourceFile, requestNames, bodyAliases, jsonAliases, safeParseAliases, schemasZod, typeNodeDeclarado) {
7
+ const normalizado = desembrulharExpressao(expr);
8
+ if (ts.isIdentifier(normalizado) && bodyAliases.has(normalizado.text)) {
9
+ return bodyAliases.get(normalizado.text);
10
+ }
11
+ if (ehCallRequest(expr, requestNames, "json")) {
12
+ return extrairMetadadosTipoExplicito(expr, sourceFile, typeNodeDeclarado);
13
+ }
14
+ if (ts.isCallExpression(normalizado)
15
+ && ts.isPropertyAccessExpression(normalizado.expression)
16
+ && ["parse", "safeParse"].includes(normalizado.expression.name.text)) {
17
+ const schemaNome = obterNomeSchema(normalizado);
18
+ const schemaCampos = schemaNome ? schemasZod.get(schemaNome) : undefined;
19
+ const argumento = normalizado.arguments[0];
20
+ const argumentoNormalizado = argumento ? desembrulharExpressao(argumento) : undefined;
21
+ if (schemaCampos
22
+ && argumento
23
+ && (ehCallRequest(argumento, requestNames, "json")
24
+ || (argumentoNormalizado && ts.isIdentifier(argumentoNormalizado) && jsonAliases.has(argumentoNormalizado.text)))) {
25
+ return {
26
+ tipoTexto: undefined,
27
+ campos: schemaCampos,
28
+ };
29
+ }
30
+ }
31
+ if (ts.isPropertyAccessExpression(normalizado)
32
+ && normalizado.name.text === "data"
33
+ && ts.isIdentifier(normalizado.expression)
34
+ && safeParseAliases.has(normalizado.expression.text)) {
35
+ return {
36
+ tipoTexto: undefined,
37
+ campos: safeParseAliases.get(normalizado.expression.text) ?? [],
38
+ };
39
+ }
40
+ return undefined;
41
+ }
42
+ export function extrairCamposBindingPattern(pattern, sourceFile, camposConhecidos) {
43
+ const conhecidos = new Map(camposConhecidos.map((campo) => [campo.nome, campo]));
44
+ const campos = [];
45
+ for (const elemento of pattern.elements) {
46
+ if (!ts.isIdentifier(elemento.name)) {
47
+ continue;
48
+ }
49
+ const nomeCampo = elemento.propertyName?.getText(sourceFile) ?? elemento.name.text;
50
+ const conhecido = conhecidos.get(nomeCampo);
51
+ campos.push({
52
+ nome: nomeCampo,
53
+ tipoTexto: conhecido?.tipoTexto ?? inferirTipoBasicoDeExpressao(elemento.initializer, nomeCampo) ?? tipoInferidoPorNomeCampo(nomeCampo),
54
+ obrigatorio: conhecido?.obrigatorio ?? false,
55
+ });
56
+ }
57
+ return deduplicarCampos(campos);
58
+ }
59
+ export function extrairCampoZod(expr, nome) {
60
+ const texto = expr.getText().replace(/\s+/g, "");
61
+ let tipoTexto = tipoInferidoPorNomeCampo(nome);
62
+ if (/\.uuid\(/i.test(texto)) {
63
+ tipoTexto = "Id";
64
+ }
65
+ else if (/\.string\(/i.test(texto)) {
66
+ tipoTexto = "string";
67
+ }
68
+ else if (/\.number\(/i.test(texto) || /\.int\(/i.test(texto)) {
69
+ tipoTexto = /\.int\(/i.test(texto) ? "int" : "number";
70
+ }
71
+ else if (/\.boolean\(/i.test(texto)) {
72
+ tipoTexto = "boolean";
73
+ }
74
+ else if (/\.date\(/i.test(texto)) {
75
+ tipoTexto = "date";
76
+ }
77
+ else if (/\.array\(/i.test(texto) || /\.object\(/i.test(texto) || /\.record\(/i.test(texto)) {
78
+ tipoTexto = "Json";
79
+ }
80
+ return {
81
+ nome,
82
+ tipoTexto,
83
+ obrigatorio: !/\.optional\(/i.test(texto),
84
+ };
85
+ }
86
+ export function extrairSchemasZodLocais(sourceFile) {
87
+ const schemas = new Map();
88
+ sourceFile.forEachChild((node) => {
89
+ if (!ts.isVariableStatement(node)) {
90
+ return;
91
+ }
92
+ for (const declaracao of node.declarationList.declarations) {
93
+ if (!ts.isIdentifier(declaracao.name) || !declaracao.initializer) {
94
+ continue;
95
+ }
96
+ let chamada;
97
+ if (ts.isCallExpression(declaracao.initializer)) {
98
+ chamada = declaracao.initializer;
99
+ }
100
+ else if (ts.isCallExpression(declaracao.initializer)
101
+ && ts.isPropertyAccessExpression(declaracao.initializer.expression)) {
102
+ chamada = declaracao.initializer;
103
+ }
104
+ else if (ts.isCallExpression(declaracao.initializer)
105
+ && ts.isPropertyAccessExpression(declaracao.initializer.expression)) {
106
+ chamada = declaracao.initializer;
107
+ }
108
+ const chamadaInicial = chamada ?? (ts.isCallExpression(declaracao.initializer) ? declaracao.initializer : undefined);
109
+ if (!chamadaInicial) {
110
+ continue;
111
+ }
112
+ let chamadaObjeto;
113
+ if (ts.isPropertyAccessExpression(chamadaInicial.expression)
114
+ && chamadaInicial.expression.name.text === "object") {
115
+ chamadaObjeto = chamadaInicial;
116
+ }
117
+ else if (ts.isPropertyAccessExpression(chamadaInicial.expression)
118
+ && ts.isCallExpression(chamadaInicial.expression.expression)
119
+ && ts.isPropertyAccessExpression(chamadaInicial.expression.expression.expression)
120
+ && chamadaInicial.expression.expression.expression.name.text === "object") {
121
+ chamadaObjeto = chamadaInicial.expression.expression;
122
+ }
123
+ if (!chamadaObjeto) {
124
+ continue;
125
+ }
126
+ const objeto = chamadaObjeto.arguments[0];
127
+ if (!objeto || !ts.isObjectLiteralExpression(objeto)) {
128
+ continue;
129
+ }
130
+ const campos = [];
131
+ for (const propriedade of objeto.properties) {
132
+ if (!ts.isPropertyAssignment(propriedade)) {
133
+ continue;
134
+ }
135
+ const nomeCampo = propriedade.name.getText(sourceFile).replace(/^["']|["']$/g, "");
136
+ campos.push(extrairCampoZod(propriedade.initializer, nomeCampo));
137
+ }
138
+ if (campos.length > 0) {
139
+ schemas.set(declaracao.name.text, deduplicarCampos(campos));
140
+ }
141
+ }
142
+ });
143
+ return schemas;
144
+ }
145
+ //# sourceMappingURL=typescript-http-body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript-http-body.js","sourceRoot":"","sources":["../src/typescript-http-body.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import ts from "typescript";
2
+ import { type CampoInferidoTypeScriptHttp } from "./typescript-http-modelos.js";
3
+ export declare function tipoInferidoPorNomeCampo(nome: string): string | undefined;
4
+ export declare function normalizarTypeNode(typeNode: ts.TypeNode | undefined): ts.TypeNode | undefined;
5
+ export declare function extrairCamposTypeNode(typeNode: ts.TypeNode | undefined, sourceFile: ts.SourceFile): CampoInferidoTypeScriptHttp[];
6
+ export declare function extrairMetadadosTipoExplicito(expr: ts.Expression, sourceFile: ts.SourceFile, typeNodeDeclarado?: ts.TypeNode): {
7
+ tipoTexto?: string;
8
+ campos: CampoInferidoTypeScriptHttp[];
9
+ };
10
+ export declare function inferirTipoBasicoDeExpressao(expr: ts.Expression | undefined, nomeCampo?: string): string | undefined;
11
+ export declare function extrairCamposObjetoLiteral(objeto: ts.ObjectLiteralExpression, sourceFile: ts.SourceFile): CampoInferidoTypeScriptHttp[];
12
+ export declare function extrairStatusHttp(expr?: ts.Expression): number | undefined;
13
+ export declare function ehRequestUrl(expr: ts.Expression, requestNames: Set<string>): boolean;
14
+ export declare function ehNewUrl(expr: ts.Expression, requestNames: Set<string>): boolean;
15
+ export declare function ehSearchParamsSource(expr: ts.Expression, requestNames: Set<string>, urlAliases: Set<string>, searchParamsAliases: Set<string>): boolean;
16
+ export declare function ehCallRequest(expr: ts.Expression, requestNames: Set<string>, metodo: "json" | "formData"): boolean;
17
+ export declare function obterNomeSchema(call: ts.CallExpression): string | undefined;
@@ -0,0 +1,194 @@
1
+ // SEMA-GOVERNED: sema.governanca_ia_contexto
2
+ // Descricao: inferencias de campos e expressoes TypeScript; consulte contratos/sema/governanca_ia_contexto.sema antes de editar.
3
+ import ts from "typescript";
4
+ import { deduplicarCampos, desembrulharExpressao, } from "./typescript-http-modelos.js";
5
+ export function tipoInferidoPorNomeCampo(nome) {
6
+ return /(^|_)?id$/i.test(nome) || /Id$/.test(nome)
7
+ ? "Id"
8
+ : undefined;
9
+ }
10
+ export function normalizarTypeNode(typeNode) {
11
+ if (!typeNode) {
12
+ return undefined;
13
+ }
14
+ if (ts.isParenthesizedTypeNode(typeNode)) {
15
+ return normalizarTypeNode(typeNode.type);
16
+ }
17
+ if (ts.isUnionTypeNode(typeNode)) {
18
+ const uteis = typeNode.types
19
+ .filter((item) => item.kind !== ts.SyntaxKind.NullKeyword && item.kind !== ts.SyntaxKind.UndefinedKeyword)
20
+ .map((item) => normalizarTypeNode(item))
21
+ .filter((item) => Boolean(item));
22
+ if (uteis.length === 1) {
23
+ return uteis[0];
24
+ }
25
+ }
26
+ return typeNode;
27
+ }
28
+ export function extrairCamposTypeNode(typeNode, sourceFile) {
29
+ const normalizado = normalizarTypeNode(typeNode);
30
+ if (!normalizado || !ts.isTypeLiteralNode(normalizado)) {
31
+ return [];
32
+ }
33
+ const campos = [];
34
+ for (const membro of normalizado.members) {
35
+ if (!ts.isPropertySignature(membro) || !membro.name) {
36
+ continue;
37
+ }
38
+ let nome;
39
+ if (ts.isIdentifier(membro.name) || ts.isStringLiteralLike(membro.name) || ts.isNumericLiteral(membro.name)) {
40
+ nome = membro.name.text;
41
+ }
42
+ if (!nome) {
43
+ continue;
44
+ }
45
+ campos.push({
46
+ nome,
47
+ tipoTexto: membro.type?.getText(sourceFile) ?? tipoInferidoPorNomeCampo(nome),
48
+ obrigatorio: !membro.questionToken,
49
+ });
50
+ }
51
+ return deduplicarCampos(campos);
52
+ }
53
+ export function extrairMetadadosTipoExplicito(expr, sourceFile, typeNodeDeclarado) {
54
+ const typeNode = normalizarTypeNode(typeNodeDeclarado)
55
+ ?? (() => {
56
+ let atual = expr;
57
+ while (true) {
58
+ if (ts.isParenthesizedExpression(atual)) {
59
+ atual = atual.expression;
60
+ continue;
61
+ }
62
+ if (ts.isAsExpression(atual) || ts.isSatisfiesExpression(atual) || ts.isTypeAssertionExpression(atual)) {
63
+ return normalizarTypeNode(atual.type);
64
+ }
65
+ if (ts.isAwaitExpression(atual)) {
66
+ atual = atual.expression;
67
+ continue;
68
+ }
69
+ return undefined;
70
+ }
71
+ })();
72
+ return {
73
+ tipoTexto: typeNode?.getText(sourceFile),
74
+ campos: extrairCamposTypeNode(typeNode, sourceFile),
75
+ };
76
+ }
77
+ export function inferirTipoBasicoDeExpressao(expr, nomeCampo) {
78
+ if (!expr) {
79
+ return nomeCampo ? tipoInferidoPorNomeCampo(nomeCampo) : undefined;
80
+ }
81
+ if (ts.isParenthesizedExpression(expr) || ts.isAsExpression(expr) || ts.isSatisfiesExpression(expr) || ts.isTypeAssertionExpression(expr)) {
82
+ return inferirTipoBasicoDeExpressao(expr.expression, nomeCampo);
83
+ }
84
+ if (ts.isAwaitExpression(expr)) {
85
+ return inferirTipoBasicoDeExpressao(expr.expression, nomeCampo);
86
+ }
87
+ if (ts.isStringLiteralLike(expr) || ts.isNoSubstitutionTemplateLiteral(expr) || ts.isTemplateExpression(expr)) {
88
+ return "string";
89
+ }
90
+ if (ts.isNumericLiteral(expr)) {
91
+ return "number";
92
+ }
93
+ if (expr.kind === ts.SyntaxKind.TrueKeyword || expr.kind === ts.SyntaxKind.FalseKeyword) {
94
+ return "boolean";
95
+ }
96
+ if (ts.isArrayLiteralExpression(expr) || ts.isObjectLiteralExpression(expr)) {
97
+ return "Json";
98
+ }
99
+ if (expr.kind === ts.SyntaxKind.NullKeyword) {
100
+ return "Json";
101
+ }
102
+ if (ts.isCallExpression(expr)) {
103
+ const nome = expr.expression.getText().replace(/\s+/g, "");
104
+ if (/^(Number|parseFloat)$/.test(nome)) {
105
+ return "number";
106
+ }
107
+ if (/^parseInt$/.test(nome)) {
108
+ return "int";
109
+ }
110
+ if (/^(Boolean)$/.test(nome)) {
111
+ return "boolean";
112
+ }
113
+ if (/^(String)$/.test(nome)) {
114
+ return "string";
115
+ }
116
+ }
117
+ return nomeCampo ? tipoInferidoPorNomeCampo(nomeCampo) : undefined;
118
+ }
119
+ export function extrairCamposObjetoLiteral(objeto, sourceFile) {
120
+ const campos = [];
121
+ for (const propriedade of objeto.properties) {
122
+ if (!ts.isPropertyAssignment(propriedade) && !ts.isShorthandPropertyAssignment(propriedade)) {
123
+ continue;
124
+ }
125
+ const nome = propriedade.name.getText(sourceFile).replace(/^["']|["']$/g, "");
126
+ campos.push({
127
+ nome,
128
+ tipoTexto: inferirTipoBasicoDeExpressao(ts.isPropertyAssignment(propriedade) ? propriedade.initializer : propriedade.name, nome),
129
+ obrigatorio: true,
130
+ });
131
+ }
132
+ return deduplicarCampos(campos);
133
+ }
134
+ export function extrairStatusHttp(expr) {
135
+ if (!expr || !ts.isObjectLiteralExpression(expr)) {
136
+ return undefined;
137
+ }
138
+ for (const propriedade of expr.properties) {
139
+ if (!ts.isPropertyAssignment(propriedade) || propriedade.name.getText().replace(/^["']|["']$/g, "") !== "status") {
140
+ continue;
141
+ }
142
+ if (ts.isNumericLiteral(propriedade.initializer)) {
143
+ return Number(propriedade.initializer.text);
144
+ }
145
+ }
146
+ return undefined;
147
+ }
148
+ export function ehRequestUrl(expr, requestNames) {
149
+ return ts.isPropertyAccessExpression(expr)
150
+ && expr.name.text === "url"
151
+ && ts.isIdentifier(expr.expression)
152
+ && requestNames.has(expr.expression.text);
153
+ }
154
+ export function ehNewUrl(expr, requestNames) {
155
+ return ts.isNewExpression(expr)
156
+ && ts.isIdentifier(expr.expression)
157
+ && expr.expression.text === "URL"
158
+ && Boolean(expr.arguments?.some((argumento) => ehRequestUrl(argumento, requestNames)));
159
+ }
160
+ export function ehSearchParamsSource(expr, requestNames, urlAliases, searchParamsAliases) {
161
+ const normalizado = desembrulharExpressao(expr);
162
+ if (ts.isIdentifier(normalizado)) {
163
+ return searchParamsAliases.has(normalizado.text);
164
+ }
165
+ if (ts.isPropertyAccessExpression(normalizado) && normalizado.name.text === "searchParams") {
166
+ const alvo = normalizado.expression;
167
+ if (ts.isPropertyAccessExpression(alvo) && alvo.name.text === "nextUrl" && ts.isIdentifier(alvo.expression) && requestNames.has(alvo.expression.text)) {
168
+ return true;
169
+ }
170
+ if (ts.isIdentifier(alvo) && urlAliases.has(alvo.text)) {
171
+ return true;
172
+ }
173
+ }
174
+ return false;
175
+ }
176
+ export function ehCallRequest(expr, requestNames, metodo) {
177
+ const alvo = desembrulharExpressao(expr);
178
+ return ts.isCallExpression(alvo)
179
+ && ts.isPropertyAccessExpression(alvo.expression)
180
+ && alvo.expression.name.text === metodo
181
+ && ts.isIdentifier(alvo.expression.expression)
182
+ && requestNames.has(alvo.expression.expression.text);
183
+ }
184
+ export function obterNomeSchema(call) {
185
+ if (!ts.isPropertyAccessExpression(call.expression)) {
186
+ return undefined;
187
+ }
188
+ const alvo = call.expression.expression;
189
+ if (!ts.isIdentifier(alvo)) {
190
+ return undefined;
191
+ }
192
+ return alvo.text;
193
+ }
194
+ //# sourceMappingURL=typescript-http-expressoes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript-http-expressoes.js","sourceRoot":"","sources":["../src/typescript-http-expressoes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import ts from "typescript";
2
+ export interface ParametroRotaTypeScript {
3
+ nome: string;
4
+ tipoSema: "Texto" | "Inteiro" | "Decimal" | "Id";
5
+ }
6
+ export interface RotaTypeScriptExtraida {
7
+ origem: "nextjs" | "firebase";
8
+ metodo: string;
9
+ caminho: string;
10
+ simbolo: string;
11
+ parametros: ParametroRotaTypeScript[];
12
+ }
13
+ export interface CampoInferidoTypeScriptHttp {
14
+ nome: string;
15
+ tipoTexto?: string;
16
+ obrigatorio: boolean;
17
+ }
18
+ export interface ExportacaoTypeScriptHttp {
19
+ corpo?: ts.Block;
20
+ retorno?: string;
21
+ parametros: readonly ts.ParameterDeclaration[];
22
+ declaracao: ts.FunctionLikeDeclarationBase;
23
+ }
24
+ export interface SemanticaHandlerTypeScriptHttp {
25
+ query: CampoInferidoTypeScriptHttp[];
26
+ body: CampoInferidoTypeScriptHttp[];
27
+ bodyTipoTexto?: string;
28
+ response: CampoInferidoTypeScriptHttp[];
29
+ responseTipoTexto?: string;
30
+ statuses: number[];
31
+ errorStatuses: number[];
32
+ }
33
+ export interface ValorLocalTypeScriptHttp {
34
+ tipoTexto?: string;
35
+ campos: CampoInferidoTypeScriptHttp[];
36
+ status?: number;
37
+ }
38
+ export declare const METODOS_HTTP: Set<string>;
39
+ export declare function normalizarSeparadores(relacao: string): string;
40
+ export declare function deduplicarRotas(rotas: RotaTypeScriptExtraida[]): RotaTypeScriptExtraida[];
41
+ export declare function deduplicarCampos(campos: CampoInferidoTypeScriptHttp[]): CampoInferidoTypeScriptHttp[];
42
+ export declare function deduplicarNumeros(valores: number[]): number[];
43
+ export declare function desembrulharExpressao(expr: ts.Expression): ts.Expression;
44
+ export declare function extrairNomeExportado(statement: ts.Statement, sourceFile: ts.SourceFile): string[];
45
+ export declare function extrairMetodosHttpNext(sourceFile: ts.SourceFile): string[];
@@ -0,0 +1,82 @@
1
+ // SEMA-GOVERNED: sema.governanca_ia_contexto
2
+ // Descricao: modelos e utilitarios base de HTTP TypeScript; consulte contratos/sema/governanca_ia_contexto.sema antes de editar.
3
+ import ts from "typescript";
4
+ export const METODOS_HTTP = new Set(["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"]);
5
+ export function normalizarSeparadores(relacao) {
6
+ return relacao.replace(/\\/g, "/");
7
+ }
8
+ export function deduplicarRotas(rotas) {
9
+ const mapa = new Map();
10
+ for (const rota of rotas) {
11
+ const chave = `${rota.origem}:${rota.metodo}:${rota.caminho}:${rota.simbolo}`;
12
+ if (!mapa.has(chave)) {
13
+ mapa.set(chave, rota);
14
+ }
15
+ }
16
+ return [...mapa.values()];
17
+ }
18
+ export function deduplicarCampos(campos) {
19
+ const mapa = new Map();
20
+ for (const campo of campos) {
21
+ const chave = campo.nome;
22
+ const existente = mapa.get(chave);
23
+ if (!existente) {
24
+ mapa.set(chave, campo);
25
+ continue;
26
+ }
27
+ mapa.set(chave, {
28
+ nome: campo.nome,
29
+ tipoTexto: existente.tipoTexto ?? campo.tipoTexto,
30
+ obrigatorio: existente.obrigatorio || campo.obrigatorio,
31
+ });
32
+ }
33
+ return [...mapa.values()];
34
+ }
35
+ export function deduplicarNumeros(valores) {
36
+ return [...new Set(valores)].sort((a, b) => a - b);
37
+ }
38
+ export function desembrulharExpressao(expr) {
39
+ let atual = expr;
40
+ while (true) {
41
+ if (ts.isParenthesizedExpression(atual) || ts.isAsExpression(atual) || ts.isSatisfiesExpression(atual) || ts.isTypeAssertionExpression(atual)) {
42
+ atual = atual.expression;
43
+ continue;
44
+ }
45
+ if (ts.isAwaitExpression(atual)) {
46
+ atual = atual.expression;
47
+ continue;
48
+ }
49
+ return atual;
50
+ }
51
+ }
52
+ export function extrairNomeExportado(statement, sourceFile) {
53
+ if (ts.isFunctionDeclaration(statement) && statement.name && statement.modifiers?.some((item) => item.kind === ts.SyntaxKind.ExportKeyword)) {
54
+ return [statement.name.text];
55
+ }
56
+ if (!ts.isVariableStatement(statement) || !statement.modifiers?.some((item) => item.kind === ts.SyntaxKind.ExportKeyword)) {
57
+ return [];
58
+ }
59
+ const nomes = [];
60
+ for (const declaracao of statement.declarationList.declarations) {
61
+ if (!ts.isIdentifier(declaracao.name) || !declaracao.initializer) {
62
+ continue;
63
+ }
64
+ if (ts.isArrowFunction(declaracao.initializer) || ts.isFunctionExpression(declaracao.initializer) || ts.isCallExpression(declaracao.initializer) || ts.isIdentifier(declaracao.initializer)) {
65
+ nomes.push(declaracao.name.getText(sourceFile));
66
+ }
67
+ }
68
+ return nomes;
69
+ }
70
+ export function extrairMetodosHttpNext(sourceFile) {
71
+ const encontrados = new Set();
72
+ for (const statement of sourceFile.statements) {
73
+ for (const nome of extrairNomeExportado(statement, sourceFile)) {
74
+ const metodo = nome.toUpperCase();
75
+ if (METODOS_HTTP.has(metodo)) {
76
+ encontrados.add(metodo);
77
+ }
78
+ }
79
+ }
80
+ return [...encontrados];
81
+ }
82
+ //# sourceMappingURL=typescript-http-modelos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript-http-modelos.js","sourceRoot":"","sources":["../src/typescript-http-modelos.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import ts from "typescript";
2
+ import { type ParametroRotaTypeScript, type RotaTypeScriptExtraida } from "./typescript-http-modelos.js";
3
+ export declare function inferirCaminhoNext(relacaoArquivo: string): {
4
+ caminho: string;
5
+ parametros: ParametroRotaTypeScript[];
6
+ } | undefined;
7
+ export declare function identificarRotasNodeHttp(sourceFile: ts.SourceFile, nomeSimbolo: string, corpo: ts.Block): RotaTypeScriptExtraida[];
8
+ export declare function extrairRotasNodeWorker(sourceFile: ts.SourceFile, relacaoArquivo: string): RotaTypeScriptExtraida[];
9
+ export declare function extrairRotasTypeScriptHttp(sourceFile: ts.SourceFile, relacaoArquivo: string): RotaTypeScriptExtraida[];
@@ -0,0 +1,129 @@
1
+ // SEMA-GOVERNED: sema.governanca_ia_contexto
2
+ // Descricao: extracao de rotas HTTP em TypeScript; consulte contratos/sema/governanca_ia_contexto.sema antes de editar.
3
+ import ts from "typescript";
4
+ import { METODOS_HTTP, deduplicarRotas, extrairMetodosHttpNext, normalizarSeparadores, } from "./typescript-http-modelos.js";
5
+ export function inferirCaminhoNext(relacaoArquivo) {
6
+ const relacao = normalizarSeparadores(relacaoArquivo);
7
+ const segmentos = relacao.split("/");
8
+ const indiceSrcAppApi = segmentos.findIndex((segmento, indice) => segmento === "src" && segmentos[indice + 1] === "app" && segmentos[indice + 2] === "api");
9
+ const indiceAppApi = segmentos.findIndex((segmento, indice) => segmento === "app" && segmentos[indice + 1] === "api");
10
+ const inicioApi = indiceSrcAppApi >= 0
11
+ ? indiceSrcAppApi + 3
12
+ : indiceAppApi >= 0
13
+ ? indiceAppApi + 2
14
+ : -1;
15
+ if (inicioApi < 0) {
16
+ return undefined;
17
+ }
18
+ const caminhoAteRoute = segmentos.slice(inicioApi, -1);
19
+ if (segmentos.at(-1) !== "route.ts" && segmentos.at(-1) !== "route.js") {
20
+ return undefined;
21
+ }
22
+ const parametros = [];
23
+ const partes = caminhoAteRoute
24
+ .filter((segmento) => segmento && !/^\(.*\)$/.test(segmento) && !segmento.startsWith("@"))
25
+ .map((segmento) => {
26
+ const opcionalCatchAll = segmento.match(/^\[\[\.\.\.([A-Za-z_]\w*)\]\]$/);
27
+ if (opcionalCatchAll) {
28
+ parametros.push({ nome: opcionalCatchAll[1], tipoSema: "Texto" });
29
+ return `{${opcionalCatchAll[1]}}`;
30
+ }
31
+ const catchAll = segmento.match(/^\[\.\.\.([A-Za-z_]\w*)\]$/);
32
+ if (catchAll) {
33
+ parametros.push({ nome: catchAll[1], tipoSema: "Texto" });
34
+ return `{${catchAll[1]}}`;
35
+ }
36
+ const dinamico = segmento.match(/^\[([A-Za-z_]\w*)\]$/);
37
+ if (dinamico) {
38
+ const nome = dinamico[1];
39
+ parametros.push({
40
+ nome,
41
+ tipoSema: /(^|_)id$/i.test(nome) ? "Id" : "Texto",
42
+ });
43
+ return `{${nome}}`;
44
+ }
45
+ return segmento;
46
+ });
47
+ return {
48
+ caminho: (`/api/${partes.join("/")}`).replace(/\/+/g, "/"),
49
+ parametros,
50
+ };
51
+ }
52
+ export function identificarRotasNodeHttp(sourceFile, nomeSimbolo, corpo) {
53
+ const rotas = [];
54
+ const visitar = (node) => {
55
+ if (ts.isIfStatement(node)) {
56
+ const expressao = node.expression.getText(sourceFile);
57
+ const caminho = expressao.match(/(?:req|request)\.url\s*===\s*["'`]([^"'`]+)["'`]/)?.[1];
58
+ const metodo = expressao.match(/(?:req|request)\.method\s*===\s*["'`]([A-Z]+)["'`]/)?.[1]?.toUpperCase();
59
+ if (caminho && metodo && METODOS_HTTP.has(metodo)) {
60
+ rotas.push({ caminho, metodo });
61
+ }
62
+ }
63
+ node.forEachChild(visitar);
64
+ };
65
+ visitar(corpo);
66
+ return deduplicarRotas(rotas.map((rota) => ({
67
+ origem: "firebase",
68
+ metodo: rota.metodo,
69
+ caminho: rota.caminho,
70
+ simbolo: nomeSimbolo,
71
+ parametros: [],
72
+ })));
73
+ }
74
+ export function extrairRotasNodeWorker(sourceFile, relacaoArquivo) {
75
+ const relacao = normalizarSeparadores(relacaoArquivo);
76
+ const pareceWorkerHttp = /(?:^|\/)(?:apps\/worker\/|src\/services\/health-check|health-check\.ts$|sema_contract_bridge\.ts$)/.test(relacao);
77
+ if (!pareceWorkerHttp) {
78
+ return [];
79
+ }
80
+ const rotas = [];
81
+ for (const statement of sourceFile.statements) {
82
+ if (ts.isFunctionDeclaration(statement) && statement.name && statement.body && statement.modifiers?.some((item) => item.kind === ts.SyntaxKind.ExportKeyword)) {
83
+ rotas.push(...identificarRotasNodeHttp(sourceFile, statement.name.text, statement.body));
84
+ continue;
85
+ }
86
+ if (ts.isVariableStatement(statement) && statement.modifiers?.some((item) => item.kind === ts.SyntaxKind.ExportKeyword)) {
87
+ for (const declaracao of statement.declarationList.declarations) {
88
+ if (!ts.isIdentifier(declaracao.name) || !declaracao.initializer) {
89
+ continue;
90
+ }
91
+ if (ts.isArrowFunction(declaracao.initializer) || ts.isFunctionExpression(declaracao.initializer)) {
92
+ const corpo = declaracao.initializer.body;
93
+ if (ts.isBlock(corpo)) {
94
+ rotas.push(...identificarRotasNodeHttp(sourceFile, declaracao.name.text, corpo));
95
+ }
96
+ }
97
+ }
98
+ continue;
99
+ }
100
+ if (!ts.isClassDeclaration(statement) || !statement.name) {
101
+ continue;
102
+ }
103
+ for (const member of statement.members) {
104
+ if (!ts.isMethodDeclaration(member) || !member.body || !member.name) {
105
+ continue;
106
+ }
107
+ rotas.push(...identificarRotasNodeHttp(sourceFile, `${statement.name.text}.${member.name.getText(sourceFile)}`, member.body));
108
+ }
109
+ }
110
+ return deduplicarRotas(rotas);
111
+ }
112
+ export function extrairRotasTypeScriptHttp(sourceFile, relacaoArquivo) {
113
+ const rotas = [];
114
+ const caminhoNext = inferirCaminhoNext(relacaoArquivo);
115
+ if (caminhoNext) {
116
+ for (const metodo of extrairMetodosHttpNext(sourceFile)) {
117
+ rotas.push({
118
+ origem: "nextjs",
119
+ metodo,
120
+ caminho: caminhoNext.caminho,
121
+ simbolo: metodo,
122
+ parametros: caminhoNext.parametros,
123
+ });
124
+ }
125
+ }
126
+ rotas.push(...extrairRotasNodeWorker(sourceFile, relacaoArquivo));
127
+ return deduplicarRotas(rotas);
128
+ }
129
+ //# sourceMappingURL=typescript-http-rotas.js.map