@semacode/cli 2.3.1 → 3.0.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 (250) 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 +567 -557
  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/drift.part01.d.ts +26 -24
  45. package/dist/drift.part01.js +2 -1
  46. package/dist/drift.part04.d.ts +12 -3
  47. package/dist/drift.part04.js +88 -17
  48. package/dist/drift.part05.d.ts +2 -2
  49. package/dist/drift.part05.js +8 -6
  50. package/dist/drift.part06.d.ts +2 -2
  51. package/dist/drift.part06.js +113 -26
  52. package/dist/drift.part07.d.ts +11 -11
  53. package/dist/drift.part07.js +261 -265
  54. package/dist/drift.part08.d.ts +2 -2
  55. package/dist/drift.part08.js +35 -26
  56. package/dist/drift.part11.js +238 -56
  57. package/dist/drift.part12.d.ts +1 -1
  58. package/dist/drift.part12.js +193 -21
  59. package/dist/drift.part13.d.ts +20 -39
  60. package/dist/drift.part13.js +601 -647
  61. package/dist/drift.part14.js +21 -7
  62. package/dist/driftCacheCas.d.ts +43 -0
  63. package/dist/driftCacheCas.js +351 -0
  64. package/dist/driftCacheFilesystem.d.ts +64 -0
  65. package/dist/driftCacheFilesystem.js +313 -0
  66. package/dist/driftCacheModes.d.ts +38 -0
  67. package/dist/driftCacheModes.js +147 -0
  68. package/dist/driftCacheStore.d.ts +80 -0
  69. package/dist/driftCacheStore.js +603 -0
  70. package/dist/driftCatalogo.d.ts +2 -28
  71. package/dist/driftCatalogo.js +143 -284
  72. package/dist/driftEscopo.d.ts +1 -3
  73. package/dist/driftEscopo.js +235 -151
  74. package/dist/driftEscopoReferencias.d.ts +5 -1
  75. package/dist/driftEscopoReferencias.js +375 -28
  76. package/dist/driftOrcamento.d.ts +0 -6
  77. package/dist/driftOrcamento.js +2 -1
  78. package/dist/execucoesExternas.js +19 -5
  79. package/dist/geracaoCore.js +4 -6
  80. package/dist/iaPrompts.d.ts +3 -3
  81. package/dist/iaPrompts.js +312 -313
  82. package/dist/index.d.ts +4 -1
  83. package/dist/index.js +6 -25
  84. package/dist/index.part01.d.ts +20 -28
  85. package/dist/index.part01.js +16 -237
  86. package/dist/index.part02.js +36 -22
  87. package/dist/index.part03.d.ts +24 -2
  88. package/dist/index.part03.js +83 -19
  89. package/dist/index.part04.d.ts +10 -2
  90. package/dist/index.part04.js +142 -120
  91. package/dist/index.part05.js +80 -78
  92. package/dist/index.part06.js +34 -17
  93. package/dist/index.part07.js +7 -3
  94. package/dist/index.part08.d.ts +1 -1
  95. package/dist/index.part08.js +22 -27
  96. package/dist/initCommand.js +5 -1
  97. package/dist/initTemplatesBase.js +81 -79
  98. package/dist/pipelineConteudo/command.d.ts +1 -0
  99. package/dist/pipelineConteudo/command.js +9 -2
  100. package/dist/pipelineConteudo/help.d.ts +2 -0
  101. package/dist/pipelineConteudo/help.js +33 -0
  102. package/dist/profileAuthorCommand.js +3 -7
  103. package/dist/profileCommand.js +3 -7
  104. package/dist/projetoCarregar.js +35 -17
  105. package/dist/projetoCatalogo.d.ts +1 -0
  106. package/dist/projetoCatalogo.js +64 -25
  107. package/dist/projetoOrigens.d.ts +2 -0
  108. package/dist/projetoOrigens.js +65 -9
  109. package/dist/projetoTipos.d.ts +1 -0
  110. package/dist/resultadoCli.d.ts +20 -0
  111. package/dist/resultadoCli.js +57 -0
  112. package/dist/saidaCli.d.ts +35 -0
  113. package/dist/saidaCli.js +118 -0
  114. package/dist/sistemasInterativos/acceptanceEvidence.d.ts +22 -0
  115. package/dist/sistemasInterativos/acceptanceEvidence.js +345 -0
  116. package/dist/sistemasInterativos/engineObservation.d.ts +12 -0
  117. package/dist/sistemasInterativos/engineObservation.js +438 -0
  118. package/dist/sistemasInterativos/jobOrchestration.d.ts +2 -0
  119. package/dist/sistemasInterativos/jobOrchestration.js +204 -0
  120. package/dist/sistemasInterativos/operationPrimitives.d.ts +21 -0
  121. package/dist/sistemasInterativos/operationPrimitives.js +194 -0
  122. package/dist/sistemasInterativos/operations.d.ts +4 -39
  123. package/dist/sistemasInterativos/operations.js +5 -1164
  124. package/dist/skillCommand.d.ts +5 -0
  125. package/dist/skillCommand.js +88 -0
  126. package/docs/README.md +34 -30
  127. package/docs/ai-integration.md +25 -12
  128. package/docs/ai-onboarding.md +37 -18
  129. package/docs/ai-workflow.md +9 -7
  130. package/docs/cli.md +125 -7
  131. package/docs/commands.md +41 -20
  132. package/docs/deploy.md +21 -8
  133. package/docs/descoberta-capacidades.md +106 -106
  134. package/docs/documentation.md +49 -39
  135. package/docs/drift-cache.md +108 -0
  136. package/docs/getting-started.md +43 -18
  137. package/docs/pipeline-conteudo.md +246 -246
  138. package/docs/profiles.md +54 -54
  139. package/docs/repositories.md +19 -2
  140. package/docs/rollback.md +15 -8
  141. package/docs/security.md +25 -3
  142. package/docs/sistemas-interativos.md +379 -374
  143. package/docs/testing.md +139 -40
  144. package/exemplos/pipeline-conteudo/README.md +44 -44
  145. package/exemplos/pipeline-conteudo/alvos.json +23 -23
  146. package/exemplos/pipeline-conteudo/definicao.json +136 -136
  147. package/exemplos/profile_simulation.sema +211 -211
  148. package/exemplos/sistemas-interativos/README.md +100 -100
  149. package/exemplos/sistemas-interativos/advanced/acceptance-context-evaluate-valid.json +5 -5
  150. package/exemplos/sistemas-interativos/advanced/acceptance-lock-valid.json +16 -16
  151. package/exemplos/sistemas-interativos/advanced/asset-provenance-valid.json +32 -32
  152. package/exemplos/sistemas-interativos/advanced/autonomy-repair-valid.json +93 -93
  153. package/exemplos/sistemas-interativos/advanced/control-run-definition-valid.json +78 -78
  154. package/exemplos/sistemas-interativos/advanced/control-run-valid.json +27 -27
  155. package/exemplos/sistemas-interativos/advanced/distributed-workers-valid.json +79 -79
  156. package/exemplos/sistemas-interativos/advanced/editor-state-valid.json +42 -42
  157. package/exemplos/sistemas-interativos/advanced/engine-snapshot-after-valid.json +32 -32
  158. package/exemplos/sistemas-interativos/advanced/engine-snapshot-before-valid.json +23 -23
  159. package/exemplos/sistemas-interativos/advanced/job-orchestration-valid.json +39 -39
  160. package/exemplos/sistemas-interativos/advanced/multimodal-evidence-valid.json +46 -46
  161. package/exemplos/sistemas-interativos/advanced/multiplayer-authority-valid.json +39 -39
  162. package/exemplos/sistemas-interativos/advanced/playtest-fuzz-valid.json +37 -37
  163. package/exemplos/sistemas-interativos/advanced/portability-valid.json +104 -104
  164. package/exemplos/sistemas-interativos/advanced/temporal-evidence-valid.json +27 -27
  165. package/exemplos/sistemas-interativos/advanced/temporal-valid.json +118 -118
  166. package/exemplos/sistemas-interativos/experience-ir-valid.json +459 -459
  167. package/exemplos/sistemas-interativos/game-2d.json +83 -83
  168. package/exemplos/sistemas-interativos/game-3d-human.json +81 -81
  169. package/exemplos/sistemas-interativos/game-pixel-16-bit.json +97 -97
  170. package/exemplos/sistemas-interativos/game-pixel-8-bit.json +94 -94
  171. package/exemplos/sistemas-interativos/game-xr-human.json +80 -80
  172. package/exemplos/sistemas-interativos/hybrid-2-5d.json +108 -108
  173. package/exemplos/sistemas-interativos/protocol-mutating-rollback-valid.json +75 -75
  174. package/exemplos/sistemas-interativos/protocol-read-only-valid.json +58 -58
  175. package/exemplos/sistemas-interativos/simulation-2d-controlled.json +97 -97
  176. package/exemplos/sistemas-interativos/simulation-3d-calibrated-autonomous.json +141 -141
  177. package/exemplos/sistemas-interativos/simulation-headless-autonomous-batch.json +112 -112
  178. package/exemplos/sistemas-interativos/simulation-pixel-16-bit.json +103 -103
  179. package/exemplos/sistemas-interativos/simulation-text-controlled.json +95 -95
  180. package/node_modules/@sema/gerador-cpp/package.json +1 -1
  181. package/node_modules/@sema/gerador-dotnet/package.json +1 -1
  182. package/node_modules/@sema/gerador-lua/dist/index.js +51 -51
  183. package/node_modules/@sema/gerador-php/dist/index.js +113 -113
  184. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +1 -0
  185. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +1 -0
  186. package/package.json +9 -4
  187. package/scripts/postinstall.mjs +148 -0
  188. package/skills/sema/SKILL.md +199 -0
  189. package/skills/sema/agents/openai.yaml +4 -0
  190. package/dist/driftCache.d.ts +0 -49
  191. package/dist/driftCache.js +0 -311
  192. package/dist/driftCacheIncremental.d.ts +0 -98
  193. package/dist/driftCacheIncremental.js +0 -596
  194. package/dist/driftCatalogoPersistente.d.ts +0 -8
  195. package/dist/driftCatalogoPersistente.js +0 -77
  196. package/node_modules/@sema/gerador-cpp/dist/index.js.map +0 -1
  197. package/node_modules/@sema/gerador-css/dist/index.js.map +0 -1
  198. package/node_modules/@sema/gerador-css/dist/index.part01.js.map +0 -1
  199. package/node_modules/@sema/gerador-css/dist/index.part02.js.map +0 -1
  200. package/node_modules/@sema/gerador-dart/dist/index.js.map +0 -1
  201. package/node_modules/@sema/gerador-dotnet/dist/index.js.map +0 -1
  202. package/node_modules/@sema/gerador-html/dist/index.js.map +0 -1
  203. package/node_modules/@sema/gerador-javascript/dist/index.js.map +0 -1
  204. package/node_modules/@sema/gerador-lua/dist/index.js.map +0 -1
  205. package/node_modules/@sema/gerador-php/dist/index.js.map +0 -1
  206. package/node_modules/@sema/gerador-python/dist/index.js.map +0 -1
  207. package/node_modules/@sema/gerador-python/dist/index.part01.js.map +0 -1
  208. package/node_modules/@sema/gerador-python/dist/index.part02.js.map +0 -1
  209. package/node_modules/@sema/gerador-typescript/dist/index.js.map +0 -1
  210. package/node_modules/@sema/gerador-typescript/dist/index.part01.js.map +0 -1
  211. package/node_modules/@sema/gerador-typescript/dist/index.part02.js.map +0 -1
  212. package/node_modules/@sema/gerador-typescript/dist/index.part03.js.map +0 -1
  213. package/node_modules/@sema/nucleo/dist/ast/tipos.js.map +0 -1
  214. package/node_modules/@sema/nucleo/dist/diagnosticos/index.js.map +0 -1
  215. package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js.map +0 -1
  216. package/node_modules/@sema/nucleo/dist/diagnosticos/snippets.js.map +0 -1
  217. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +0 -1
  218. package/node_modules/@sema/nucleo/dist/formatador/index.part01.js.map +0 -1
  219. package/node_modules/@sema/nucleo/dist/formatador/index.part02.js.map +0 -1
  220. package/node_modules/@sema/nucleo/dist/index.js.map +0 -1
  221. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +0 -1
  222. package/node_modules/@sema/nucleo/dist/ir/conversor.part01.js.map +0 -1
  223. package/node_modules/@sema/nucleo/dist/ir/conversor.part02.js.map +0 -1
  224. package/node_modules/@sema/nucleo/dist/ir/conversor.part03.js.map +0 -1
  225. package/node_modules/@sema/nucleo/dist/ir/modelos.js.map +0 -1
  226. package/node_modules/@sema/nucleo/dist/lexer/lexer.js.map +0 -1
  227. package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +0 -1
  228. package/node_modules/@sema/nucleo/dist/parser/parser.declaracoes.js.map +0 -1
  229. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +0 -1
  230. package/node_modules/@sema/nucleo/dist/parser/parser.modulo.js.map +0 -1
  231. package/node_modules/@sema/nucleo/dist/parser/parser.part01.js.map +0 -1
  232. package/node_modules/@sema/nucleo/dist/parser/parser.part02.js.map +0 -1
  233. package/node_modules/@sema/nucleo/dist/parser/parser.part03.js.map +0 -1
  234. package/node_modules/@sema/nucleo/dist/persistencia/contratos.js.map +0 -1
  235. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +0 -1
  236. package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.js.map +0 -1
  237. package/node_modules/@sema/nucleo/dist/semantico/analisador.part02.js.map +0 -1
  238. package/node_modules/@sema/nucleo/dist/semantico/analisador.part03.js.map +0 -1
  239. package/node_modules/@sema/nucleo/dist/semantico/analisador.part04.js.map +0 -1
  240. package/node_modules/@sema/nucleo/dist/semantico/analisador.part05.js.map +0 -1
  241. package/node_modules/@sema/nucleo/dist/semantico/analisador.part06.js.map +0 -1
  242. package/node_modules/@sema/nucleo/dist/semantico/analisador.part07.js.map +0 -1
  243. package/node_modules/@sema/nucleo/dist/semantico/analisador.part08.js.map +0 -1
  244. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +0 -1
  245. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part01.js.map +0 -1
  246. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part02.js.map +0 -1
  247. package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.js.map +0 -1
  248. package/node_modules/@sema/nucleo/dist/semantico/seguranca.js.map +0 -1
  249. package/node_modules/@sema/nucleo/dist/util/arquivos.js.map +0 -1
  250. package/node_modules/@sema/padroes/dist/index.js.map +0 -1
@@ -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
  }>;