@semacode/cli 2.3.1 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/README.md +265 -217
  2. package/dist/agentContextPack.js +14 -10
  3. package/dist/agentEntryPoints.d.ts +5 -0
  4. package/dist/agentEntryPoints.js +592 -568
  5. package/dist/angular-consumer-standalone.js +1 -1
  6. package/dist/bin.d.ts +6 -0
  7. package/dist/bin.js +130 -0
  8. package/dist/cliArgs.js +4 -4
  9. package/dist/cliControlError.d.ts +12 -0
  10. package/dist/cliControlError.js +47 -0
  11. package/dist/cliGrammar.d.ts +11 -0
  12. package/dist/cliGrammar.js +551 -0
  13. package/dist/cliHelp.d.ts +13 -0
  14. package/dist/cliHelp.js +19 -0
  15. package/dist/cliHelpTexto.d.ts +3 -0
  16. package/dist/cliHelpTexto.js +168 -0
  17. package/dist/cliRuntime.d.ts +2 -0
  18. package/dist/cliRuntime.js +31 -0
  19. package/dist/comandos.js +9 -22
  20. package/dist/contexto.js +5 -5
  21. package/dist/dev/index.d.ts +1 -0
  22. package/dist/dev/index.js +51 -9
  23. package/dist/discovery/catalog.js +3 -3
  24. package/dist/distribuicao/filesystemGlobal.d.ts +63 -0
  25. package/dist/distribuicao/filesystemGlobal.js +701 -0
  26. package/dist/distribuicao/index.d.ts +7 -0
  27. package/dist/distribuicao/index.js +227 -0
  28. package/dist/distribuicao/launcherGlobal.d.ts +53 -0
  29. package/dist/distribuicao/launcherGlobal.js +643 -0
  30. package/dist/distribuicao/launcherWindows.d.ts +28 -0
  31. package/dist/distribuicao/launcherWindows.js +326 -0
  32. package/dist/distribuicao/lockContextGlobal.d.ts +10 -0
  33. package/dist/distribuicao/lockContextGlobal.js +17 -0
  34. package/dist/distribuicao/lockGlobal.d.ts +6 -0
  35. package/dist/distribuicao/lockGlobal.js +520 -0
  36. package/dist/distribuicao/skillGlobal.d.ts +48 -0
  37. package/dist/distribuicao/skillGlobal.js +652 -0
  38. package/dist/distribuicao/skillIntentPolicy.d.ts +21 -0
  39. package/dist/distribuicao/skillIntentPolicy.js +115 -0
  40. package/dist/distribuicao/tipos.d.ts +50 -0
  41. package/dist/distribuicao/tipos.js +10 -0
  42. package/dist/distribuicao/versaoSemantica.d.ts +3 -0
  43. package/dist/distribuicao/versaoSemantica.js +62 -0
  44. package/dist/docs.part01.d.ts +4 -1
  45. package/dist/docs.part01.js +8 -0
  46. package/dist/docs.part02.js +9 -1
  47. package/dist/drift.part01.d.ts +33 -25
  48. package/dist/drift.part01.js +2 -1
  49. package/dist/drift.part04.d.ts +26 -5
  50. package/dist/drift.part04.js +123 -19
  51. package/dist/drift.part05.d.ts +2 -2
  52. package/dist/drift.part05.js +8 -6
  53. package/dist/drift.part06.d.ts +2 -2
  54. package/dist/drift.part06.js +113 -26
  55. package/dist/drift.part07.d.ts +11 -11
  56. package/dist/drift.part07.js +261 -265
  57. package/dist/drift.part08.d.ts +2 -2
  58. package/dist/drift.part08.js +35 -26
  59. package/dist/drift.part09.d.ts +2 -2
  60. package/dist/drift.part09.js +10 -3
  61. package/dist/drift.part11.js +261 -58
  62. package/dist/drift.part12.d.ts +1 -1
  63. package/dist/drift.part12.js +193 -21
  64. package/dist/drift.part13.d.ts +20 -39
  65. package/dist/drift.part13.js +601 -647
  66. package/dist/drift.part14.js +23 -7
  67. package/dist/driftCacheCas.d.ts +43 -0
  68. package/dist/driftCacheCas.js +351 -0
  69. package/dist/driftCacheFilesystem.d.ts +64 -0
  70. package/dist/driftCacheFilesystem.js +313 -0
  71. package/dist/driftCacheModes.d.ts +38 -0
  72. package/dist/driftCacheModes.js +147 -0
  73. package/dist/driftCacheStore.d.ts +80 -0
  74. package/dist/driftCacheStore.js +603 -0
  75. package/dist/driftCatalogo.d.ts +2 -28
  76. package/dist/driftCatalogo.js +143 -284
  77. package/dist/driftEscopo.d.ts +1 -3
  78. package/dist/driftEscopo.js +235 -151
  79. package/dist/driftEscopoReferencias.d.ts +5 -1
  80. package/dist/driftEscopoReferencias.js +375 -28
  81. package/dist/driftOrcamento.d.ts +0 -6
  82. package/dist/driftOrcamento.js +2 -1
  83. package/dist/execucoesExternas.js +19 -5
  84. package/dist/exemplosOficiais.d.ts +2 -1
  85. package/dist/exemplosOficiais.js +9 -3
  86. package/dist/geracaoCore.d.ts +1 -0
  87. package/dist/geracaoCore.js +6 -6
  88. package/dist/iaPrompts.d.ts +3 -3
  89. package/dist/iaPrompts.js +312 -313
  90. package/dist/importador.part01.d.ts +1 -1
  91. package/dist/importador.part06.d.ts +2 -0
  92. package/dist/importador.part06.js +87 -1
  93. package/dist/importador.part09.js +7 -1
  94. package/dist/index.d.ts +4 -1
  95. package/dist/index.js +6 -25
  96. package/dist/index.part01.d.ts +20 -28
  97. package/dist/index.part01.js +16 -237
  98. package/dist/index.part02.js +36 -22
  99. package/dist/index.part03.d.ts +24 -2
  100. package/dist/index.part03.js +83 -19
  101. package/dist/index.part04.d.ts +10 -2
  102. package/dist/index.part04.js +152 -123
  103. package/dist/index.part05.js +80 -78
  104. package/dist/index.part06.js +34 -17
  105. package/dist/index.part07.d.ts +8 -2
  106. package/dist/index.part07.js +153 -7
  107. package/dist/index.part08.d.ts +1 -1
  108. package/dist/index.part08.js +25 -30
  109. package/dist/initCommand.d.ts +1 -0
  110. package/dist/initCommand.js +20 -4
  111. package/dist/initTemplatesBase.js +6 -4
  112. package/dist/pipelineConteudo/command.d.ts +1 -0
  113. package/dist/pipelineConteudo/command.js +9 -2
  114. package/dist/pipelineConteudo/help.d.ts +2 -0
  115. package/dist/pipelineConteudo/help.js +33 -0
  116. package/dist/profileAuthorCommand.js +3 -7
  117. package/dist/profileCommand.js +3 -7
  118. package/dist/projetoCarregar.js +35 -17
  119. package/dist/projetoCatalogo.d.ts +1 -0
  120. package/dist/projetoCatalogo.js +64 -25
  121. package/dist/projetoConfig.js +2 -0
  122. package/dist/projetoLegado.js +18 -0
  123. package/dist/projetoOrigens.d.ts +2 -0
  124. package/dist/projetoOrigens.js +65 -9
  125. package/dist/projetoTipos.d.ts +1 -0
  126. package/dist/resultadoCli.d.ts +20 -0
  127. package/dist/resultadoCli.js +57 -0
  128. package/dist/saidaCli.d.ts +35 -0
  129. package/dist/saidaCli.js +118 -0
  130. package/dist/sistemasInterativos/acceptanceEvidence.d.ts +22 -0
  131. package/dist/sistemasInterativos/acceptanceEvidence.js +345 -0
  132. package/dist/sistemasInterativos/engineObservation.d.ts +12 -0
  133. package/dist/sistemasInterativos/engineObservation.js +438 -0
  134. package/dist/sistemasInterativos/jobOrchestration.d.ts +2 -0
  135. package/dist/sistemasInterativos/jobOrchestration.js +204 -0
  136. package/dist/sistemasInterativos/operationPrimitives.d.ts +21 -0
  137. package/dist/sistemasInterativos/operationPrimitives.js +194 -0
  138. package/dist/sistemasInterativos/operations.d.ts +4 -39
  139. package/dist/sistemasInterativos/operations.js +5 -1164
  140. package/dist/skillCommand.d.ts +5 -0
  141. package/dist/skillCommand.js +88 -0
  142. package/dist/tipos.d.ts +1 -1
  143. package/dist/typescript-http-modelos.d.ts +1 -1
  144. package/dist/typescript-http-rotas.d.ts +1 -0
  145. package/dist/typescript-http-rotas.js +93 -0
  146. package/dist/typescript-http.d.ts +1 -1
  147. package/dist/typescript-http.js +1 -1
  148. package/dist/verificacaoCache.d.ts +25 -0
  149. package/dist/verificacaoCache.js +80 -0
  150. package/docs/README.md +34 -30
  151. package/docs/ai-integration.md +25 -12
  152. package/docs/ai-onboarding.md +37 -18
  153. package/docs/ai-workflow.md +9 -7
  154. package/docs/cli.md +125 -7
  155. package/docs/commands.md +41 -20
  156. package/docs/deploy.md +21 -8
  157. package/docs/descoberta-capacidades.md +106 -106
  158. package/docs/documentation.md +49 -39
  159. package/docs/drift-cache.md +108 -0
  160. package/docs/getting-started.md +43 -18
  161. package/docs/pipeline-conteudo.md +246 -246
  162. package/docs/profiles.md +54 -54
  163. package/docs/repositories.md +19 -2
  164. package/docs/rollback.md +15 -8
  165. package/docs/security.md +25 -3
  166. package/docs/sistemas-interativos.md +379 -374
  167. package/docs/syntax.md +14 -0
  168. package/docs/testing.md +139 -40
  169. package/exemplos/express_crud.sema +139 -0
  170. package/exemplos/fastify_crud.sema +146 -0
  171. package/exemplos/pipeline-conteudo/README.md +44 -44
  172. package/exemplos/pipeline-conteudo/alvos.json +23 -23
  173. package/exemplos/pipeline-conteudo/definicao.json +136 -136
  174. package/exemplos/profile_simulation.sema +211 -211
  175. package/exemplos/sistemas-interativos/README.md +100 -100
  176. package/exemplos/sistemas-interativos/advanced/acceptance-context-evaluate-valid.json +5 -5
  177. package/exemplos/sistemas-interativos/advanced/acceptance-lock-valid.json +16 -16
  178. package/exemplos/sistemas-interativos/advanced/asset-provenance-valid.json +32 -32
  179. package/exemplos/sistemas-interativos/advanced/autonomy-repair-valid.json +93 -93
  180. package/exemplos/sistemas-interativos/advanced/control-run-definition-valid.json +78 -78
  181. package/exemplos/sistemas-interativos/advanced/control-run-valid.json +27 -27
  182. package/exemplos/sistemas-interativos/advanced/distributed-workers-valid.json +79 -79
  183. package/exemplos/sistemas-interativos/advanced/editor-state-valid.json +42 -42
  184. package/exemplos/sistemas-interativos/advanced/engine-snapshot-after-valid.json +32 -32
  185. package/exemplos/sistemas-interativos/advanced/engine-snapshot-before-valid.json +23 -23
  186. package/exemplos/sistemas-interativos/advanced/job-orchestration-valid.json +39 -39
  187. package/exemplos/sistemas-interativos/advanced/multimodal-evidence-valid.json +46 -46
  188. package/exemplos/sistemas-interativos/advanced/multiplayer-authority-valid.json +39 -39
  189. package/exemplos/sistemas-interativos/advanced/playtest-fuzz-valid.json +37 -37
  190. package/exemplos/sistemas-interativos/advanced/portability-valid.json +104 -104
  191. package/exemplos/sistemas-interativos/advanced/temporal-evidence-valid.json +27 -27
  192. package/exemplos/sistemas-interativos/advanced/temporal-valid.json +118 -118
  193. package/exemplos/sistemas-interativos/experience-ir-valid.json +459 -459
  194. package/exemplos/sistemas-interativos/game-2d.json +83 -83
  195. package/exemplos/sistemas-interativos/game-3d-human.json +81 -81
  196. package/exemplos/sistemas-interativos/game-pixel-16-bit.json +97 -97
  197. package/exemplos/sistemas-interativos/game-pixel-8-bit.json +94 -94
  198. package/exemplos/sistemas-interativos/game-xr-human.json +80 -80
  199. package/exemplos/sistemas-interativos/hybrid-2-5d.json +108 -108
  200. package/exemplos/sistemas-interativos/protocol-mutating-rollback-valid.json +75 -75
  201. package/exemplos/sistemas-interativos/protocol-read-only-valid.json +58 -58
  202. package/exemplos/sistemas-interativos/simulation-2d-controlled.json +97 -97
  203. package/exemplos/sistemas-interativos/simulation-3d-calibrated-autonomous.json +141 -141
  204. package/exemplos/sistemas-interativos/simulation-headless-autonomous-batch.json +112 -112
  205. package/exemplos/sistemas-interativos/simulation-pixel-16-bit.json +103 -103
  206. package/exemplos/sistemas-interativos/simulation-text-controlled.json +95 -95
  207. package/node_modules/@sema/gerador-cpp/package.json +1 -1
  208. package/node_modules/@sema/gerador-dotnet/package.json +1 -1
  209. package/node_modules/@sema/gerador-lua/dist/index.js +51 -51
  210. package/node_modules/@sema/gerador-php/dist/index.js +113 -113
  211. package/node_modules/@sema/nucleo/dist/ir/conversor.part01.js +37 -38
  212. package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +1 -0
  213. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +1 -0
  214. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +1 -0
  215. package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.d.ts +7 -0
  216. package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.js +33 -10
  217. package/package.json +9 -4
  218. package/scripts/postinstall.mjs +148 -0
  219. package/skills/sema/SKILL.md +199 -0
  220. package/skills/sema/agents/openai.yaml +4 -0
  221. package/dist/driftCache.d.ts +0 -49
  222. package/dist/driftCache.js +0 -311
  223. package/dist/driftCacheIncremental.d.ts +0 -98
  224. package/dist/driftCacheIncremental.js +0 -596
  225. package/dist/driftCatalogoPersistente.d.ts +0 -8
  226. package/dist/driftCatalogoPersistente.js +0 -77
  227. package/node_modules/@sema/gerador-cpp/dist/index.js.map +0 -1
  228. package/node_modules/@sema/gerador-css/dist/index.js.map +0 -1
  229. package/node_modules/@sema/gerador-css/dist/index.part01.js.map +0 -1
  230. package/node_modules/@sema/gerador-css/dist/index.part02.js.map +0 -1
  231. package/node_modules/@sema/gerador-dart/dist/index.js.map +0 -1
  232. package/node_modules/@sema/gerador-dotnet/dist/index.js.map +0 -1
  233. package/node_modules/@sema/gerador-html/dist/index.js.map +0 -1
  234. package/node_modules/@sema/gerador-javascript/dist/index.js.map +0 -1
  235. package/node_modules/@sema/gerador-lua/dist/index.js.map +0 -1
  236. package/node_modules/@sema/gerador-php/dist/index.js.map +0 -1
  237. package/node_modules/@sema/gerador-python/dist/index.js.map +0 -1
  238. package/node_modules/@sema/gerador-python/dist/index.part01.js.map +0 -1
  239. package/node_modules/@sema/gerador-python/dist/index.part02.js.map +0 -1
  240. package/node_modules/@sema/gerador-typescript/dist/index.js.map +0 -1
  241. package/node_modules/@sema/gerador-typescript/dist/index.part01.js.map +0 -1
  242. package/node_modules/@sema/gerador-typescript/dist/index.part02.js.map +0 -1
  243. package/node_modules/@sema/gerador-typescript/dist/index.part03.js.map +0 -1
  244. package/node_modules/@sema/nucleo/dist/ast/tipos.js.map +0 -1
  245. package/node_modules/@sema/nucleo/dist/diagnosticos/index.js.map +0 -1
  246. package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js.map +0 -1
  247. package/node_modules/@sema/nucleo/dist/diagnosticos/snippets.js.map +0 -1
  248. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +0 -1
  249. package/node_modules/@sema/nucleo/dist/formatador/index.part01.js.map +0 -1
  250. package/node_modules/@sema/nucleo/dist/formatador/index.part02.js.map +0 -1
  251. package/node_modules/@sema/nucleo/dist/index.js.map +0 -1
  252. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +0 -1
  253. package/node_modules/@sema/nucleo/dist/ir/conversor.part01.js.map +0 -1
  254. package/node_modules/@sema/nucleo/dist/ir/conversor.part02.js.map +0 -1
  255. package/node_modules/@sema/nucleo/dist/ir/conversor.part03.js.map +0 -1
  256. package/node_modules/@sema/nucleo/dist/ir/modelos.js.map +0 -1
  257. package/node_modules/@sema/nucleo/dist/lexer/lexer.js.map +0 -1
  258. package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +0 -1
  259. package/node_modules/@sema/nucleo/dist/parser/parser.declaracoes.js.map +0 -1
  260. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +0 -1
  261. package/node_modules/@sema/nucleo/dist/parser/parser.modulo.js.map +0 -1
  262. package/node_modules/@sema/nucleo/dist/parser/parser.part01.js.map +0 -1
  263. package/node_modules/@sema/nucleo/dist/parser/parser.part02.js.map +0 -1
  264. package/node_modules/@sema/nucleo/dist/parser/parser.part03.js.map +0 -1
  265. package/node_modules/@sema/nucleo/dist/persistencia/contratos.js.map +0 -1
  266. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +0 -1
  267. package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.js.map +0 -1
  268. package/node_modules/@sema/nucleo/dist/semantico/analisador.part02.js.map +0 -1
  269. package/node_modules/@sema/nucleo/dist/semantico/analisador.part03.js.map +0 -1
  270. package/node_modules/@sema/nucleo/dist/semantico/analisador.part04.js.map +0 -1
  271. package/node_modules/@sema/nucleo/dist/semantico/analisador.part05.js.map +0 -1
  272. package/node_modules/@sema/nucleo/dist/semantico/analisador.part06.js.map +0 -1
  273. package/node_modules/@sema/nucleo/dist/semantico/analisador.part07.js.map +0 -1
  274. package/node_modules/@sema/nucleo/dist/semantico/analisador.part08.js.map +0 -1
  275. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +0 -1
  276. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part01.js.map +0 -1
  277. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part02.js.map +0 -1
  278. package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.js.map +0 -1
  279. package/node_modules/@sema/nucleo/dist/semantico/seguranca.js.map +0 -1
  280. package/node_modules/@sema/nucleo/dist/util/arquivos.js.map +0 -1
  281. package/node_modules/@sema/padroes/dist/index.js.map +0 -1
@@ -1,11 +1,71 @@
1
- // SEMA-GOVERNED: sema.governanca_ia_contexto
2
- // Descricao: CLI particionada; consulte contratos/sema/governanca_ia_contexto.sema antes de editar.
1
+ // SEMA-GOVERNED: sema.produto.governanca_ia.drift
2
+ // Descricao: compartilha primitivas de indexacao e leitura do drift entre linguagens.
3
+ import { AsyncLocalStorage } from "node:async_hooks";
3
4
  import { readdir } from "node:fs/promises";
4
5
  import path from "node:path";
5
6
  import ts from "typescript";
6
7
  import { diretoriosIgnoradosAtivos } from "./drift.part01.js";
7
8
  import { escolherArquivoPorVinculo, escolherSimboloPorVinculo } from "./drift.part03.js";
8
9
  import { avaliarPontuacaoSemantica, resolverPoliticaPontuacaoSemantica } from "./driftScore.js";
10
+ export function chaveCaminhoCanonicoDrift(caminho) {
11
+ const resolvido = path.resolve(caminho);
12
+ return process.platform === "win32" ? resolvido.toLowerCase() : resolvido;
13
+ }
14
+ function caminhoEstaDentroDaRaizDrift(raiz, candidato) {
15
+ const relativo = path.relative(path.resolve(raiz), path.resolve(candidato));
16
+ return relativo === "" || (!relativo.startsWith("..") && !path.isAbsolute(relativo));
17
+ }
18
+ const contextoRaizesSobrepostasDrift = new AsyncLocalStorage();
19
+ export function deduplicarRaizesSobrepostasDrift(diretorios) {
20
+ const unicas = new Map();
21
+ for (const diretorio of diretorios) {
22
+ const chave = chaveCaminhoCanonicoDrift(diretorio);
23
+ if (!unicas.has(chave)) {
24
+ unicas.set(chave, diretorio);
25
+ }
26
+ }
27
+ const candidatas = [...unicas.values()];
28
+ const raizesFisicas = candidatas.filter((candidata, indice) => !candidatas.some((outra, outroIndice) => indice !== outroIndice
29
+ && chaveCaminhoCanonicoDrift(candidata) !== chaveCaminhoCanonicoDrift(outra)
30
+ && caminhoEstaDentroDaRaizDrift(outra, candidata)));
31
+ const aliasesPorRaiz = new Map();
32
+ for (const raizFisica of raizesFisicas) {
33
+ aliasesPorRaiz.set(chaveCaminhoCanonicoDrift(raizFisica), candidatas.filter((candidata) => chaveCaminhoCanonicoDrift(candidata) !== chaveCaminhoCanonicoDrift(raizFisica)
34
+ && caminhoEstaDentroDaRaizDrift(raizFisica, candidata)));
35
+ }
36
+ contextoRaizesSobrepostasDrift.enterWith(aliasesPorRaiz);
37
+ return raizesFisicas;
38
+ }
39
+ export function encontrarCandidatosFisicosImplementacaoDrift(simbolos, origem, caminhoDeclarado) {
40
+ const caminhoNormalizado = caminhoDeclarado.trim().toLowerCase();
41
+ if (!caminhoNormalizado) {
42
+ return [];
43
+ }
44
+ const mesmaFamilia = (candidato) => candidato.origem === origem
45
+ || ((origem === "ts" || origem === "js") && (candidato.origem === "ts" || candidato.origem === "js"));
46
+ const porArquivo = new Map();
47
+ for (const candidato of simbolos) {
48
+ const caminhoCandidato = candidato.caminho.toLowerCase();
49
+ if (!mesmaFamilia(candidato)
50
+ || (caminhoCandidato !== caminhoNormalizado && !caminhoCandidato.endsWith(`.${caminhoNormalizado}`))) {
51
+ continue;
52
+ }
53
+ const chaveArquivo = chaveCaminhoCanonicoDrift(candidato.arquivo);
54
+ const anterior = porArquivo.get(chaveArquivo);
55
+ const candidatoExato = caminhoCandidato === caminhoNormalizado;
56
+ const anteriorExato = anterior?.caminho.toLowerCase() === caminhoNormalizado;
57
+ if (!anterior
58
+ || (candidatoExato && !anteriorExato)
59
+ || (candidatoExato === anteriorExato
60
+ && (candidato.caminho.length < anterior.caminho.length
61
+ || (candidato.caminho.length === anterior.caminho.length
62
+ && candidato.caminho.localeCompare(anterior.caminho, "pt-BR") < 0)))) {
63
+ porArquivo.set(chaveArquivo, candidato);
64
+ }
65
+ }
66
+ return [...porArquivo.values()].sort((a, b) => a.arquivo.localeCompare(b.arquivo, "pt-BR")
67
+ || a.caminho.localeCompare(b.caminho, "pt-BR"));
68
+ }
9
69
  export function resolverArquivoOuSimboloAncora(vinculos, simbolos, mapaImpl, arquivos) {
10
70
  for (const vinculo of vinculos) {
11
71
  if (vinculo.simbolo) {
@@ -94,7 +154,34 @@ export function calcularConfiancaTask(task, implsValidos, implsQuebrados, vincul
94
154
  }
95
155
  return "baixa";
96
156
  }
97
- export function calcularScoreTask(task, implsValidos, implsQuebrados, vinculosValidos, vinculosQuebrados, semImplementacao) {
157
+ export async function carregarEvidenciaVerificacaoDrift(opcoes) {
158
+ const { readFile } = await import("node:fs/promises");
159
+ const { calcularChaveVerificacao, carregarManifestoVerificacao } = await import("./verificacaoCache.js");
160
+ const pacoteCli = (await import("../package.json", { with: { type: "json" } })).default;
161
+ const conteudoContrato = await readFile(opcoes.caminhoContrato, "utf8").catch(() => "");
162
+ if (!conteudoContrato) {
163
+ return undefined;
164
+ }
165
+ const chave = calcularChaveVerificacao({
166
+ versaoCli: pacoteCli.version,
167
+ versaoNode: process.versions.node ?? "",
168
+ modulo: opcoes.nomeModulo,
169
+ alvo: opcoes.alvo,
170
+ framework: opcoes.framework,
171
+ estrutura: opcoes.estrutura,
172
+ conteudoContrato,
173
+ });
174
+ const manifesto = await carregarManifestoVerificacao(chave);
175
+ if (!manifesto) {
176
+ return undefined;
177
+ }
178
+ return {
179
+ sucesso: manifesto.sucesso,
180
+ quantidadeTestes: manifesto.quantidadeTestes,
181
+ alvo: manifesto.alvo,
182
+ };
183
+ }
184
+ export function calcularScoreTask(task, implsValidos, implsQuebrados, vinculosValidos, vinculosQuebrados, semImplementacao, evidenciaVerificada) {
98
185
  let score = 45;
99
186
  if (!semImplementacao && task.implementacoesExternas.length > 0) {
100
187
  score += 15;
@@ -109,9 +196,12 @@ export function calcularScoreTask(task, implsValidos, implsQuebrados, vinculosVa
109
196
  if (task.execucao.explicita) {
110
197
  score += 5;
111
198
  }
199
+ if (evidenciaVerificada?.sucesso && evidenciaVerificada.quantidadeTestes > 0) {
200
+ score += 8;
201
+ }
112
202
  return Math.max(0, Math.min(100, score));
113
203
  }
114
- export function resumirLacunasTask(task, semImplementacao, implsQuebrados, vinculosQuebrados, guardrails) {
204
+ export function resumirLacunasTask(task, semImplementacao, implsQuebrados, vinculosQuebrados, guardrails, evidenciaVerificada) {
115
205
  const lacunas = [];
116
206
  if (semImplementacao) {
117
207
  lacunas.push("sem_impl");
@@ -128,6 +218,9 @@ export function resumirLacunasTask(task, semImplementacao, implsQuebrados, vincu
128
218
  if (!task.execucao.explicita) {
129
219
  lacunas.push("execucao_implicita");
130
220
  }
221
+ if ((guardrails.publica || guardrails.sensivel) && !semImplementacao && !evidenciaVerificada) {
222
+ lacunas.push("sem_evidencia_verificada");
223
+ }
131
224
  if (guardrails.publica && !task.execucao.explicita) {
132
225
  lacunas.push("superficie_publica_sem_execucao");
133
226
  }
@@ -258,9 +351,11 @@ export function juntarCaminhoHttp(base, sufixo) {
258
351
  const caminho = `/${partes.join("/")}`.replace(/\/+/g, "/");
259
352
  return caminho === "//" ? "/" : caminho;
260
353
  }
261
- export async function listarArquivosRecursivos(diretorio, extensoes, catalogo) {
262
- if (catalogo) {
263
- return catalogo.listarPorRaiz(diretorio, extensoes);
354
+ export async function listarArquivosRecursivos(diretorio, extensoes, adaptadorLeitura) {
355
+ if (adaptadorLeitura) {
356
+ const arquivos = await adaptadorLeitura.listarPorRaiz(diretorio, extensoes);
357
+ return [...new Map(arquivos.map((arquivo) => [chaveCaminhoCanonicoDrift(arquivo), arquivo])).values()]
358
+ .sort((a, b) => a.localeCompare(b, "pt-BR"));
264
359
  }
265
360
  let entradas;
266
361
  try {
@@ -294,16 +389,19 @@ export const EXTENSOES_ARQUIVOS_RASTREAVEIS_DRIFT = [
294
389
  ".yml", ".yaml", ".toml", ".xml", ".html", ".htm", ".css",
295
390
  ".Caddyfile", ".caddyfile",
296
391
  ];
297
- export async function indexarArquivosRastreaveis(diretorios, catalogo) {
298
- const arquivos = new Set();
299
- for (const diretorio of diretorios) {
300
- for (const arquivo of await listarArquivosRecursivos(diretorio, EXTENSOES_ARQUIVOS_RASTREAVEIS_DRIFT, catalogo)) {
301
- arquivos.add(arquivo);
392
+ export async function indexarArquivosRastreaveis(diretorios, adaptadorLeitura) {
393
+ const arquivos = new Map();
394
+ for (const diretorio of deduplicarRaizesSobrepostasDrift(diretorios)) {
395
+ for (const arquivo of await listarArquivosRecursivos(diretorio, EXTENSOES_ARQUIVOS_RASTREAVEIS_DRIFT, adaptadorLeitura)) {
396
+ const chave = chaveCaminhoCanonicoDrift(arquivo);
397
+ if (!arquivos.has(chave)) {
398
+ arquivos.set(chave, arquivo);
399
+ }
302
400
  }
303
401
  }
304
- return [...arquivos].sort((a, b) => a.localeCompare(b, "pt-BR"));
402
+ return [...arquivos.values()].sort((a, b) => a.localeCompare(b, "pt-BR"));
305
403
  }
306
- export function caminhosSimbolicos(baseDiretorio, arquivo) {
404
+ function caminhosSimbolicosParaBaseDrift(baseDiretorio, arquivo) {
307
405
  const relativo = path.relative(baseDiretorio, arquivo).replace(/\.[^.]+$/, "");
308
406
  const semPrefixo = relativo
309
407
  .split(path.sep)
@@ -312,13 +410,19 @@ export function caminhosSimbolicos(baseDiretorio, arquivo) {
312
410
  .join(".");
313
411
  const prefixo = paraIdentificadorModulo(path.basename(baseDiretorio));
314
412
  const comPrefixo = prefixo ? [prefixo, semPrefixo].filter(Boolean).join(".") : semPrefixo;
413
+ const aliasesBase = [semPrefixo, comPrefixo].filter(Boolean);
315
414
  const aliasesIndex = path.basename(relativo) === "index"
316
- ? [
317
- semPrefixo.replace(/(?:^|\.)index$/, ""),
318
- comPrefixo.replace(/(?:^|\.)index$/, ""),
319
- ]
415
+ ? aliasesBase.map((alias) => alias.replace(/(?:^|\.)index$/, ""))
320
416
  : [];
321
- return [...new Set([semPrefixo, comPrefixo, ...aliasesIndex].filter(Boolean))];
417
+ return [...new Set([...aliasesBase, ...aliasesIndex].filter(Boolean))];
418
+ }
419
+ export function caminhosSimbolicos(baseDiretorio, arquivo) {
420
+ const aliasesConfigurados = contextoRaizesSobrepostasDrift.getStore()
421
+ ?.get(chaveCaminhoCanonicoDrift(baseDiretorio))
422
+ ?.filter((raiz) => caminhoEstaDentroDaRaizDrift(raiz, arquivo))
423
+ ?? [];
424
+ return [...new Set([baseDiretorio, ...aliasesConfigurados]
425
+ .flatMap((base) => caminhosSimbolicosParaBaseDrift(base, arquivo)))];
322
426
  }
323
427
  export function registrarSimboloTypeScript(simbolos, basesSimbolicas, arquivo, nome, nomeClasse, origem = "ts") {
324
428
  for (const baseSimbolica of basesSimbolicas) {
@@ -1,6 +1,6 @@
1
1
  import ts from "typescript";
2
2
  import { RegistroConsumerSurfaceDrift, SimboloResolvido } from "./drift.part01.js";
3
- import type { CatalogoDrift } from "./driftCatalogo.js";
3
+ import { type AdaptadorLeituraCompartilhadaDrift } from "./drift.part04.js";
4
4
  export declare function registrarMetodoTypeScriptProtoOuObjeto(simbolos: Map<string, SimboloResolvido>, basesSimbolicas: string[], arquivo: string, nomeMetodo: string, nomeClasse?: string, origem?: "ts" | "js"): void;
5
5
  export declare function registrarMetodosObjectAssignTypeScript(simbolos: Map<string, SimboloResolvido>, basesSimbolicas: string[], arquivo: string, objeto: ts.ObjectLiteralExpression, sourceFile: ts.SourceFile, nomeClasse?: string, origem?: "ts" | "js"): void;
6
6
  export declare function registrarAtribuicaoPrototypeTypeScript(simbolos: Map<string, SimboloResolvido>, basesSimbolicas: string[], arquivo: string, sourceFile: ts.SourceFile, esquerda: ts.Expression, direita: ts.Expression, origem?: "ts" | "js"): void;
@@ -44,5 +44,5 @@ export declare function extrairRotasReactViteConsumer(relacaoArquivo: string, co
44
44
  export declare function normalizarRotaDeclaradaFlutter(caminhoCru: string): string;
45
45
  export declare function extrairRotasFlutterConsumer(relacaoArquivo: string, codigo: string): RotaFlutterConsumerDrift[];
46
46
  export declare function extrairRotasAngularConsumerDiretas(relacaoArquivo: string, codigo: string, prefixo?: string): RotaAngularConsumerDrift[];
47
- export declare function extrairRotasAngularConsumer(diretorioBase: string, relacaoArquivo: string, prefixo?: string, visitados?: Set<string>, catalogo?: CatalogoDrift): Promise<RotaAngularConsumerDrift[]>;
47
+ export declare function extrairRotasAngularConsumer(diretorioBase: string, relacaoArquivo: string, prefixo?: string, visitados?: Set<string>, adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<RotaAngularConsumerDrift[]>;
48
48
  export declare function simboloEhBridgeConsumer(caminho: string, arquivo: string): boolean;
@@ -1,9 +1,9 @@
1
- // SEMA-GOVERNED: sema.governanca_ia_contexto
2
- // Descricao: CLI particionada; consulte contratos/sema/governanca_ia_contexto.sema antes de editar.
1
+ // SEMA-GOVERNED: sema.produto.governanca_ia.drift
2
+ // Descricao: extrai rotas e superficies consumidoras dentro do escopo fisico planejado.
3
3
  import { readFile } from "node:fs/promises";
4
4
  import path from "node:path";
5
5
  import ts from "typescript";
6
- import { desembrulharExpressaoTypeScript, extrairNomePropriedadeTypeScript, registrarSimboloTypeScript } from "./drift.part04.js";
6
+ import { desembrulharExpressaoTypeScript, extrairNomePropriedadeTypeScript, registrarSimboloTypeScript, } from "./drift.part04.js";
7
7
  export function registrarMetodoTypeScriptProtoOuObjeto(simbolos, basesSimbolicas, arquivo, nomeMetodo, nomeClasse, origem = "ts") {
8
8
  if (!nomeMetodo) {
9
9
  return;
@@ -318,7 +318,7 @@ export function extrairRotasAngularConsumerDiretas(relacaoArquivo, codigo, prefi
318
318
  }
319
319
  return rotas;
320
320
  }
321
- export async function extrairRotasAngularConsumer(diretorioBase, relacaoArquivo, prefixo = "/", visitados = new Set(), catalogo) {
321
+ export async function extrairRotasAngularConsumer(diretorioBase, relacaoArquivo, prefixo = "/", visitados = new Set(), adaptadorLeitura) {
322
322
  const relacaoNormalizada = normalizarRelacaoConsumer(relacaoArquivo);
323
323
  if (visitados.has(relacaoNormalizada)) {
324
324
  return [];
@@ -327,7 +327,9 @@ export async function extrairRotasAngularConsumer(diretorioBase, relacaoArquivo,
327
327
  let codigo = "";
328
328
  try {
329
329
  const arquivo = path.join(diretorioBase, relacaoNormalizada);
330
- codigo = catalogo ? await catalogo.lerTexto(arquivo) : await readFile(arquivo, "utf8");
330
+ codigo = adaptadorLeitura
331
+ ? await adaptadorLeitura.lerTexto(arquivo)
332
+ : await readFile(arquivo, "utf8");
331
333
  }
332
334
  catch {
333
335
  return [];
@@ -338,7 +340,7 @@ export async function extrairRotasAngularConsumer(diretorioBase, relacaoArquivo,
338
340
  if (!rota.arquivoRotasFilhas) {
339
341
  continue;
340
342
  }
341
- filhas.push(...await extrairRotasAngularConsumer(diretorioBase, rota.arquivoRotasFilhas, rota.rota, visitados, catalogo));
343
+ filhas.push(...await extrairRotasAngularConsumer(diretorioBase, rota.arquivoRotasFilhas, rota.rota, visitados, adaptadorLeitura));
342
344
  }
343
345
  return [...rotas, ...filhas];
344
346
  }
@@ -1,9 +1,9 @@
1
1
  import type { FonteLegado } from "./tipos.js";
2
2
  import { ConsumerFramework, RecursoResolvido, RegistroConsumerBridgeDrift, RegistroConsumerSurfaceDrift, RotaResolvida, SimboloResolvido } from "./drift.part01.js";
3
- import type { CatalogoDrift } from "./driftCatalogo.js";
3
+ import { type AdaptadorLeituraCompartilhadaDrift } from "./drift.part04.js";
4
4
  export declare function inferirConsumerFrameworkPrincipal(fontesLegado: FonteLegado[], consumerSurfaces: RegistroConsumerSurfaceDrift[], consumerBridges: RegistroConsumerBridgeDrift[]): ConsumerFramework | null;
5
5
  export declare function extrairColecoesFirebase(arquivo: string, codigo: string): RecursoResolvido[];
6
- export declare function indexarTypeScript(diretorios: string[], catalogo?: CatalogoDrift): Promise<{
6
+ export declare function indexarTypeScript(diretorios: string[], adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<{
7
7
  simbolos: SimboloResolvido[];
8
8
  rotas: RotaResolvida[];
9
9
  recursos: RecursoResolvido[];
@@ -1,12 +1,12 @@
1
- // SEMA-GOVERNED: sema.governanca_ia_contexto
2
- // Descricao: CLI particionada; consulte contratos/sema/governanca_ia_contexto.sema antes de editar.
1
+ // SEMA-GOVERNED: sema.produto.governanca_ia.drift
2
+ // Descricao: indexa TypeScript com catalogo e AST compartilhados pelo drift.
3
3
  import { readFile } from "node:fs/promises";
4
4
  import path from "node:path";
5
5
  import ts from "typescript";
6
6
  import { coletarSuperficiesAngularStandaloneConsumer } from "./angular-consumer-standalone.js";
7
7
  import { extrairRotasTypeScriptHttp } from "./typescript-http.js";
8
8
  import { arquivoEhRotasAngularConsumer, arquivoEhRotasAngularConsumerRaiz, arquivoEhRotasReactViteConsumer, arquivoEhSuperficieNextJsConsumer, arquivoEhSuperficieReactViteConsumer, extrairRotasAngularConsumer, extrairRotasReactViteConsumer, inferirRotaNextJsConsumer, inferirRotaReactViteConsumer, normalizarRelacaoConsumer, registrarAtribuicaoPrototypeTypeScript, registrarMetodosObjectAssignTypeScript } from "./drift.part05.js";
9
- import { caminhosSimbolicos, desembrulharExpressaoTypeScript, extrairNomeClassePrototypeTypeScript, extrairTextoLiteral, juntarCaminhoHttp, lerDecorator, listarArquivosRecursivos, registrarSimboloTypeScript } from "./drift.part04.js";
9
+ import { caminhosSimbolicos, chaveCaminhoCanonicoDrift, deduplicarRaizesSobrepostasDrift, desembrulharExpressaoTypeScript, extrairNomeClassePrototypeTypeScript, extrairTextoLiteral, juntarCaminhoHttp, lerDecorator, listarArquivosRecursivos, registrarSimboloTypeScript, } from "./drift.part04.js";
10
10
  import { extrairRecursosPersistenciaCodigoVivo, registrarRecursoDrift } from "./drift.part03.js";
11
11
  export function inferirConsumerFrameworkPrincipal(fontesLegado, consumerSurfaces, consumerBridges) {
12
12
  const arquivos = [
@@ -38,6 +38,75 @@ export function inferirConsumerFrameworkPrincipal(fontesLegado, consumerSurfaces
38
38
  }
39
39
  return null;
40
40
  }
41
+ function fonteDeclaraRotasReactVite(relacaoArquivo, sourceFile) {
42
+ if (arquivoEhRotasReactViteConsumer(relacaoArquivo)) {
43
+ return true;
44
+ }
45
+ let encontrouDeclaracao = false;
46
+ const nomeExpressao = (expressao) => {
47
+ if (ts.isIdentifier(expressao))
48
+ return expressao.text;
49
+ if (ts.isPropertyAccessExpression(expressao))
50
+ return expressao.name.text;
51
+ return undefined;
52
+ };
53
+ const nomePropriedade = (elemento) => {
54
+ if (!("name" in elemento) || !elemento.name)
55
+ return undefined;
56
+ if (ts.isIdentifier(elemento.name) || ts.isStringLiteralLike(elemento.name)) {
57
+ return elemento.name.text;
58
+ }
59
+ return undefined;
60
+ };
61
+ const visitar = (node) => {
62
+ if (encontrouDeclaracao)
63
+ return;
64
+ if (ts.isCallExpression(node)
65
+ && ["createBrowserRouter", "createRoutesFromElements", "useRoutes"]
66
+ .includes(nomeExpressao(node.expression) ?? "")) {
67
+ encontrouDeclaracao = true;
68
+ return;
69
+ }
70
+ if ((ts.isJsxOpeningElement(node) || ts.isJsxSelfClosingElement(node))
71
+ && ["Route", "Routes", "RouterProvider"].includes(nomeExpressao(node.tagName) ?? "")) {
72
+ encontrouDeclaracao = true;
73
+ return;
74
+ }
75
+ if (ts.isObjectLiteralExpression(node)) {
76
+ const propriedades = new Set(node.properties.map(nomePropriedade).filter(Boolean));
77
+ if ((propriedades.has("path") || propriedades.has("index"))
78
+ && (propriedades.has("element") || propriedades.has("Component"))) {
79
+ encontrouDeclaracao = true;
80
+ return;
81
+ }
82
+ }
83
+ ts.forEachChild(node, visitar);
84
+ };
85
+ visitar(sourceFile);
86
+ return encontrouDeclaracao;
87
+ }
88
+ function resolverArquivoConsumerCatalogado(diretorio, caminhoRelativo, arquivosCatalogados) {
89
+ const normalizado = caminhoRelativo.replace(/\\/g, "/");
90
+ const semExtensao = normalizado.replace(/\.(?:ts|tsx|js|jsx)$/i, "");
91
+ const candidatos = [
92
+ normalizado,
93
+ `${semExtensao}.ts`,
94
+ `${semExtensao}.tsx`,
95
+ `${semExtensao}.js`,
96
+ `${semExtensao}.jsx`,
97
+ `${semExtensao}/index.ts`,
98
+ `${semExtensao}/index.tsx`,
99
+ `${semExtensao}/index.js`,
100
+ `${semExtensao}/index.jsx`,
101
+ ];
102
+ for (const candidato of candidatos) {
103
+ const absoluto = path.resolve(diretorio, ...candidato.split("/"));
104
+ const catalogado = arquivosCatalogados.get(chaveCaminhoCanonicoDrift(absoluto));
105
+ if (catalogado)
106
+ return catalogado;
107
+ }
108
+ return undefined;
109
+ }
41
110
  export function extrairColecoesFirebase(arquivo, codigo) {
42
111
  const recursos = new Map();
43
112
  const registrar = (nome) => {
@@ -126,27 +195,39 @@ function aplicarReexportacoesTypeScript(simbolos, reexportacoes) {
126
195
  }
127
196
  }
128
197
  }
129
- export async function indexarTypeScript(diretorios, catalogo) {
130
- catalogo?.emitir("extractor.run");
198
+ export async function indexarTypeScript(diretorios, adaptadorLeitura) {
199
+ adaptadorLeitura?.emitir?.("extractor.run");
131
200
  const simbolos = new Map();
132
201
  const rotas = [];
133
202
  const recursos = new Map();
134
203
  const consumerSurfaces = new Map();
135
204
  const sourceFiles = new Map();
136
- for (const diretorio of diretorios) {
137
- const arquivos = (await listarArquivosRecursivos(diretorio, [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"], catalogo))
205
+ const arquivosProcessados = new Set();
206
+ for (const diretorio of deduplicarRaizesSobrepostasDrift(diretorios)) {
207
+ const arquivos = (await listarArquivosRecursivos(diretorio, [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"], adaptadorLeitura))
138
208
  .filter((arquivo) => !arquivo.endsWith(".d.ts")
139
209
  && !arquivo.endsWith(".spec.ts")
140
- && !arquivo.endsWith(".test.ts"));
210
+ && !arquivo.endsWith(".test.ts"))
211
+ .filter((arquivo) => {
212
+ const chave = chaveCaminhoCanonicoDrift(arquivo);
213
+ if (arquivosProcessados.has(chave)) {
214
+ return false;
215
+ }
216
+ arquivosProcessados.add(chave);
217
+ return true;
218
+ });
141
219
  const arquivosRotasAngular = arquivos.filter((arquivo) => arquivoEhRotasAngularConsumer(path.relative(diretorio, arquivo)));
142
220
  const arquivosRotasAngularRaiz = new Set(arquivosRotasAngular
143
221
  .filter((arquivo) => arquivoEhRotasAngularConsumerRaiz(path.relative(diretorio, arquivo)))
144
222
  .map((arquivo) => path.resolve(arquivo)));
223
+ const arquivosCatalogadosRaiz = new Map(arquivos.map((arquivo) => [chaveCaminhoCanonicoDrift(arquivo), arquivo]));
145
224
  const usarApenasRotasAngularRaiz = arquivosRotasAngularRaiz.size > 0;
146
225
  let encontrouSuperficieAngularPorRotas = false;
147
226
  const reexportacoes = [];
148
227
  for (const arquivo of arquivos) {
149
- const codigo = catalogo ? await catalogo.lerTexto(arquivo) : await readFile(arquivo, "utf8");
228
+ const codigo = adaptadorLeitura
229
+ ? await adaptadorLeitura.lerTexto(arquivo)
230
+ : await readFile(arquivo, "utf8");
150
231
  const origemArquivo = /\.(?:js|jsx|mjs|cjs)$/i.test(arquivo) ? "js" : "ts";
151
232
  const scriptKind = arquivo.endsWith(".tsx")
152
233
  ? ts.ScriptKind.TSX
@@ -155,7 +236,7 @@ export async function indexarTypeScript(diretorios, catalogo) {
155
236
  : origemArquivo === "js"
156
237
  ? ts.ScriptKind.JS
157
238
  : ts.ScriptKind.TS;
158
- catalogo?.emitir("ast.create", arquivo);
239
+ adaptadorLeitura?.emitir?.("ast.create", arquivo);
159
240
  const sourceFile = ts.createSourceFile(arquivo, codigo, ts.ScriptTarget.Latest, true, scriptKind);
160
241
  sourceFiles.set(path.resolve(arquivo), sourceFile);
161
242
  const basesSimbolicas = caminhosSimbolicos(diretorio, arquivo);
@@ -206,7 +287,7 @@ export async function indexarTypeScript(diretorios, catalogo) {
206
287
  simbolo: superficieReact.tipoArquivo,
207
288
  });
208
289
  }
209
- if (arquivoEhRotasReactViteConsumer(relacao, codigo)) {
290
+ if (fonteDeclaraRotasReactVite(relacao, sourceFile)) {
210
291
  for (const rotaReact of extrairRotasReactViteConsumer(relacao, codigo)) {
211
292
  consumerSurfaces.set(`${rotaReact.rota}:${arquivo}:router`, {
212
293
  rota: rotaReact.rota,
@@ -221,19 +302,23 @@ export async function indexarTypeScript(diretorios, catalogo) {
221
302
  simbolo: "router",
222
303
  });
223
304
  if (rotaReact.arquivoComponente) {
224
- const arquivoComponente = path.join(diretorio, rotaReact.arquivoComponente);
225
- consumerSurfaces.set(`${rotaReact.rota}:${arquivoComponente}:page`, {
226
- rota: rotaReact.rota,
227
- arquivo: arquivoComponente,
228
- tipoArquivo: "page",
229
- });
305
+ const arquivoComponente = resolverArquivoConsumerCatalogado(diretorio, rotaReact.arquivoComponente, arquivosCatalogadosRaiz);
306
+ if (arquivoComponente) {
307
+ consumerSurfaces.set(`${rotaReact.rota}:${arquivoComponente}:page`, {
308
+ rota: rotaReact.rota,
309
+ arquivo: arquivoComponente,
310
+ tipoArquivo: "page",
311
+ });
312
+ }
230
313
  }
231
314
  }
232
315
  }
233
316
  if (arquivoEhRotasAngularConsumer(relacao) && (!usarApenasRotasAngularRaiz || arquivosRotasAngularRaiz.has(path.resolve(arquivo)))) {
234
317
  encontrouSuperficieAngularPorRotas = true;
235
- for (const rotaAngular of await extrairRotasAngularConsumer(diretorio, relacao, "/", new Set(), catalogo)) {
236
- const arquivoRotasAngular = path.join(diretorio, rotaAngular.arquivoRotas);
318
+ for (const rotaAngular of await extrairRotasAngularConsumer(diretorio, relacao, "/", new Set(), adaptadorLeitura)) {
319
+ const arquivoRotasAngular = resolverArquivoConsumerCatalogado(diretorio, rotaAngular.arquivoRotas, arquivosCatalogadosRaiz);
320
+ if (!arquivoRotasAngular)
321
+ continue;
237
322
  consumerSurfaces.set(`${rotaAngular.rota}:${arquivoRotasAngular}:routes`, {
238
323
  rota: rotaAngular.rota,
239
324
  arquivo: arquivoRotasAngular,
@@ -247,12 +332,14 @@ export async function indexarTypeScript(diretorios, catalogo) {
247
332
  simbolo: rotaAngular.componente ?? "routes",
248
333
  });
249
334
  if (rotaAngular.arquivoComponente) {
250
- const arquivoComponente = path.join(diretorio, rotaAngular.arquivoComponente);
251
- consumerSurfaces.set(`${rotaAngular.rota}:${arquivoComponente}:component`, {
252
- rota: rotaAngular.rota,
253
- arquivo: arquivoComponente,
254
- tipoArquivo: "component",
255
- });
335
+ const arquivoComponente = resolverArquivoConsumerCatalogado(diretorio, rotaAngular.arquivoComponente, arquivosCatalogadosRaiz);
336
+ if (arquivoComponente) {
337
+ consumerSurfaces.set(`${rotaAngular.rota}:${arquivoComponente}:component`, {
338
+ rota: rotaAngular.rota,
339
+ arquivo: arquivoComponente,
340
+ tipoArquivo: "component",
341
+ });
342
+ }
256
343
  }
257
344
  }
258
345
  }
@@ -332,7 +419,7 @@ export async function indexarTypeScript(diretorios, catalogo) {
332
419
  }
333
420
  }
334
421
  if (!encontrouSuperficieAngularPorRotas) {
335
- for (const superficie of await coletarSuperficiesAngularStandaloneConsumer(diretorio, arquivos, catalogo ? (arquivo) => catalogo.lerTexto(arquivo) : undefined, sourceFiles)) {
422
+ for (const superficie of await coletarSuperficiesAngularStandaloneConsumer(diretorio, arquivos, adaptadorLeitura ? (arquivo) => adaptadorLeitura.lerTexto(arquivo) : undefined, sourceFiles)) {
336
423
  const arquivoSuperficie = path.join(diretorio, superficie.arquivo);
337
424
  consumerSurfaces.set(`${superficie.rota}:${arquivoSuperficie}:${superficie.tipoArquivo}`, {
338
425
  rota: superficie.rota,
@@ -1,52 +1,52 @@
1
1
  import type { EngineBanco } from "@sema/nucleo";
2
2
  import { OrigemRecursoDrift, RecursoResolvido, RegistroColunaPersistenciaDrift, RegistroConsumerSurfaceDrift, RotaResolvida, SimboloResolvido } from "./drift.part01.js";
3
- import type { CatalogoDrift } from "./driftCatalogo.js";
4
- export declare function indexarPython(diretorios: string[], catalogo?: CatalogoDrift): Promise<{
3
+ import { type AdaptadorLeituraCompartilhadaDrift } from "./drift.part04.js";
4
+ export declare function indexarPython(diretorios: string[], adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<{
5
5
  simbolos: SimboloResolvido[];
6
6
  rotas: RotaResolvida[];
7
7
  recursos: RecursoResolvido[];
8
8
  }>;
9
- export declare function indexarDart(diretorios: string[], catalogo?: CatalogoDrift): Promise<{
9
+ export declare function indexarDart(diretorios: string[], adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<{
10
10
  simbolos: SimboloResolvido[];
11
11
  rotas: RotaResolvida[];
12
12
  recursos: RecursoResolvido[];
13
13
  consumerSurfaces: RegistroConsumerSurfaceDrift[];
14
14
  }>;
15
15
  export declare function registrarSimboloGenerico(simbolos: Map<string, SimboloResolvido>, origem: SimboloResolvido["origem"], basesSimbolicas: string[], arquivo: string, simbolo: string): void;
16
- export declare function indexarDotnet(diretorios: string[], catalogo?: CatalogoDrift): Promise<{
16
+ export declare function indexarDotnet(diretorios: string[], adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<{
17
17
  simbolos: SimboloResolvido[];
18
18
  rotas: RotaResolvida[];
19
19
  recursos: RecursoResolvido[];
20
20
  }>;
21
- export declare function indexarJava(diretorios: string[], catalogo?: CatalogoDrift): Promise<{
21
+ export declare function indexarJava(diretorios: string[], adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<{
22
22
  simbolos: SimboloResolvido[];
23
23
  rotas: RotaResolvida[];
24
24
  recursos: RecursoResolvido[];
25
25
  }>;
26
- export declare function indexarGo(diretorios: string[], catalogo?: CatalogoDrift): Promise<{
26
+ export declare function indexarGo(diretorios: string[], adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<{
27
27
  simbolos: SimboloResolvido[];
28
28
  rotas: RotaResolvida[];
29
29
  recursos: RecursoResolvido[];
30
30
  }>;
31
- export declare function indexarRust(diretorios: string[], catalogo?: CatalogoDrift): Promise<{
31
+ export declare function indexarRust(diretorios: string[], adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<{
32
32
  simbolos: SimboloResolvido[];
33
33
  rotas: RotaResolvida[];
34
34
  recursos: RecursoResolvido[];
35
35
  }>;
36
- export declare function indexarCpp(diretorios: string[], catalogo?: CatalogoDrift): Promise<{
36
+ export declare function indexarCpp(diretorios: string[], adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<{
37
37
  simbolos: SimboloResolvido[];
38
38
  recursos: RecursoResolvido[];
39
39
  }>;
40
- export declare function indexarPhp(diretorios: string[], catalogo?: CatalogoDrift): Promise<{
40
+ export declare function indexarPhp(diretorios: string[], adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<{
41
41
  simbolos: SimboloResolvido[];
42
42
  rotas: RotaResolvida[];
43
43
  recursos: RecursoResolvido[];
44
44
  }>;
45
- export declare function indexarLua(diretorios: string[], catalogo?: CatalogoDrift): Promise<{
45
+ export declare function indexarLua(diretorios: string[], adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<{
46
46
  simbolos: SimboloResolvido[];
47
47
  recursos: RecursoResolvido[];
48
48
  }>;
49
- export declare function indexarPersistenciaDeclarativa(diretorios: string[], catalogo?: CatalogoDrift): Promise<{
49
+ export declare function indexarPersistenciaDeclarativa(diretorios: string[], adaptadorLeitura?: AdaptadorLeituraCompartilhadaDrift): Promise<{
50
50
  recursos: RecursoResolvido[];
51
51
  simbolos: SimboloResolvido[];
52
52
  }>;