@semacode/cli 1.5.30 → 1.5.32

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 (176) hide show
  1. package/AGENTS.md +294 -0
  2. package/AGENT_CONTEXT_PACK.json +164 -0
  3. package/LICENSE +22 -0
  4. package/README.md +85 -144
  5. package/SEMA_BRIEF.curto.txt +11 -0
  6. package/SEMA_BRIEF.md +616 -0
  7. package/SEMA_BRIEF.micro.txt +9 -0
  8. package/SEMA_INDEX.json +9393 -0
  9. package/dist/billing/index.d.ts +46 -0
  10. package/dist/billing/index.js +143 -0
  11. package/dist/billing/index.js.map +1 -0
  12. package/dist/comandos.js +33 -0
  13. package/dist/comandos.js.map +1 -1
  14. package/dist/controleComercialSupabase.d.ts +7 -0
  15. package/dist/controleComercialSupabase.js +6 -0
  16. package/dist/controleComercialSupabase.js.map +1 -0
  17. package/dist/controleComercialSupabaseAdmin.d.ts +7 -0
  18. package/dist/controleComercialSupabaseAdmin.js +138 -0
  19. package/dist/controleComercialSupabaseAdmin.js.map +1 -0
  20. package/dist/controleComercialSupabaseCadastro.d.ts +4 -0
  21. package/dist/controleComercialSupabaseCadastro.js +85 -0
  22. package/dist/controleComercialSupabaseCadastro.js.map +1 -0
  23. package/dist/controleComercialSupabaseConstantes.d.ts +28 -0
  24. package/dist/controleComercialSupabaseConstantes.js +44 -0
  25. package/dist/controleComercialSupabaseConstantes.js.map +1 -0
  26. package/dist/controleComercialSupabaseConsumo.d.ts +2 -0
  27. package/dist/controleComercialSupabaseConsumo.js +77 -0
  28. package/dist/controleComercialSupabaseConsumo.js.map +1 -0
  29. package/dist/controleComercialSupabaseConta.d.ts +11 -0
  30. package/dist/controleComercialSupabaseConta.js +157 -0
  31. package/dist/controleComercialSupabaseConta.js.map +1 -0
  32. package/dist/controleComercialSupabaseProfiles.d.ts +4 -0
  33. package/dist/controleComercialSupabaseProfiles.js +55 -0
  34. package/dist/controleComercialSupabaseProfiles.js.map +1 -0
  35. package/dist/controleComercialSupabaseTipos.d.ts +3 -0
  36. package/dist/controleComercialSupabaseTipos.js +2 -0
  37. package/dist/controleComercialSupabaseTipos.js.map +1 -0
  38. package/dist/controleComercialSupabaseTiposAdmin.d.ts +152 -0
  39. package/dist/controleComercialSupabaseTiposAdmin.js +2 -0
  40. package/dist/controleComercialSupabaseTiposAdmin.js.map +1 -0
  41. package/dist/controleComercialSupabaseTiposBase.d.ts +169 -0
  42. package/dist/controleComercialSupabaseTiposBase.js +2 -0
  43. package/dist/controleComercialSupabaseTiposBase.js.map +1 -0
  44. package/dist/controleComercialSupabaseTiposConta.d.ts +220 -0
  45. package/dist/controleComercialSupabaseTiposConta.js +2 -0
  46. package/dist/controleComercialSupabaseTiposConta.js.map +1 -0
  47. package/dist/dev/index.d.ts +18 -0
  48. package/dist/dev/index.js +143 -0
  49. package/dist/dev/index.js.map +1 -0
  50. package/dist/index.js +222 -46
  51. package/dist/index.js.map +1 -1
  52. package/dist/init/index.d.ts +23 -0
  53. package/dist/init/index.js +112 -0
  54. package/dist/init/index.js.map +1 -0
  55. package/dist/init/templates.d.ts +11 -0
  56. package/dist/init/templates.js +660 -0
  57. package/dist/init/templates.js.map +1 -0
  58. package/dist/runnerValidacaoRemota.d.ts +9 -0
  59. package/dist/runnerValidacaoRemota.js +9 -0
  60. package/dist/runnerValidacaoRemota.js.map +1 -0
  61. package/dist/runnerValidacaoRemotaBateria.d.ts +10 -0
  62. package/dist/runnerValidacaoRemotaBateria.js +115 -0
  63. package/dist/runnerValidacaoRemotaBateria.js.map +1 -0
  64. package/dist/runnerValidacaoRemotaCli.d.ts +4 -0
  65. package/dist/runnerValidacaoRemotaCli.js +86 -0
  66. package/dist/runnerValidacaoRemotaCli.js.map +1 -0
  67. package/dist/runnerValidacaoRemotaComandos.d.ts +7 -0
  68. package/dist/runnerValidacaoRemotaComandos.js +123 -0
  69. package/dist/runnerValidacaoRemotaComandos.js.map +1 -0
  70. package/dist/runnerValidacaoRemotaEscopo.d.ts +4 -0
  71. package/dist/runnerValidacaoRemotaEscopo.js +79 -0
  72. package/dist/runnerValidacaoRemotaEscopo.js.map +1 -0
  73. package/dist/runnerValidacaoRemotaExecucao.d.ts +2 -0
  74. package/dist/runnerValidacaoRemotaExecucao.js +102 -0
  75. package/dist/runnerValidacaoRemotaExecucao.js.map +1 -0
  76. package/dist/runnerValidacaoRemotaRelatorio.d.ts +3 -0
  77. package/dist/runnerValidacaoRemotaRelatorio.js +93 -0
  78. package/dist/runnerValidacaoRemotaRelatorio.js.map +1 -0
  79. package/dist/runnerValidacaoRemotaServidor.d.ts +3 -0
  80. package/dist/runnerValidacaoRemotaServidor.js +157 -0
  81. package/dist/runnerValidacaoRemotaServidor.js.map +1 -0
  82. package/dist/runnerValidacaoRemotaSnapshot.d.ts +10 -0
  83. package/dist/runnerValidacaoRemotaSnapshot.js +217 -0
  84. package/dist/runnerValidacaoRemotaSnapshot.js.map +1 -0
  85. package/dist/runnerValidacaoRemotaTipos.d.ts +158 -0
  86. package/dist/runnerValidacaoRemotaTipos.js +35 -0
  87. package/dist/runnerValidacaoRemotaTipos.js.map +1 -0
  88. package/dist/runnerValidacaoRemotaUtil.d.ts +3 -0
  89. package/dist/runnerValidacaoRemotaUtil.js +18 -0
  90. package/dist/runnerValidacaoRemotaUtil.js.map +1 -0
  91. package/dist/runnerValidacaoRemotaWorkspace.d.ts +2 -0
  92. package/dist/runnerValidacaoRemotaWorkspace.js +110 -0
  93. package/dist/runnerValidacaoRemotaWorkspace.js.map +1 -0
  94. package/dist/sync/index.d.ts +24 -0
  95. package/dist/sync/index.js +174 -0
  96. package/dist/sync/index.js.map +1 -0
  97. package/docs/AGENT_STARTER.md +109 -0
  98. package/docs/api.md +82 -0
  99. package/docs/cli.md +93 -0
  100. package/docs/como-ensinar-a-sema-para-ia.md +30 -0
  101. package/docs/deploy.md +45 -0
  102. package/docs/documentacao.md +88 -0
  103. package/docs/env.md +115 -0
  104. package/docs/extensao-vscode.md +42 -0
  105. package/docs/fluxo-pratico-ia-sema.md +187 -0
  106. package/docs/instalacao-e-primeiro-uso.md +48 -0
  107. package/docs/integracao-com-ia.md +24 -0
  108. package/docs/mcp.md +48 -0
  109. package/docs/pagamento-ponta-a-ponta.md +171 -0
  110. package/docs/persistencia-vendor-first.md +151 -0
  111. package/docs/prompt-base-ia-sema.md +111 -0
  112. package/docs/repositories.md +69 -0
  113. package/docs/rollback.md +24 -0
  114. package/docs/seguranca.md +126 -0
  115. package/docs/sintaxe.md +218 -0
  116. package/exemplos/profile_conversas.sema +165 -0
  117. package/llms-full.txt +35 -0
  118. package/llms.txt +18 -0
  119. package/node_modules/@sema/gerador-css/package.json +7 -14
  120. package/node_modules/@sema/gerador-dart/package.json +7 -14
  121. package/node_modules/@sema/gerador-html/package.json +7 -14
  122. package/node_modules/@sema/gerador-javascript/package.json +7 -14
  123. package/node_modules/@sema/gerador-lua/package.json +7 -14
  124. package/node_modules/@sema/gerador-python/package.json +7 -14
  125. package/node_modules/@sema/gerador-typescript/package.json +7 -14
  126. package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.d.ts +22 -0
  127. package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js +97 -0
  128. package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js.map +1 -0
  129. package/node_modules/@sema/nucleo/dist/index.d.ts +1 -0
  130. package/node_modules/@sema/nucleo/dist/index.js +1 -0
  131. package/node_modules/@sema/nucleo/dist/index.js.map +1 -1
  132. package/node_modules/@sema/nucleo/package.json +7 -10
  133. package/node_modules/@sema/padroes/package.json +7 -10
  134. package/package.json +75 -74
  135. package/exemplos/.prepack-generated +0 -1
  136. package/node_modules/@sema/gerador-css/src/index.ts +0 -605
  137. package/node_modules/@sema/gerador-css/tsconfig.json +0 -13
  138. package/node_modules/@sema/gerador-css/tsconfig.tsbuildinfo +0 -1
  139. package/node_modules/@sema/gerador-dart/src/index.ts +0 -52
  140. package/node_modules/@sema/gerador-dart/tsconfig.json +0 -13
  141. package/node_modules/@sema/gerador-dart/tsconfig.tsbuildinfo +0 -1
  142. package/node_modules/@sema/gerador-html/src/index.ts +0 -185
  143. package/node_modules/@sema/gerador-html/tsconfig.json +0 -13
  144. package/node_modules/@sema/gerador-html/tsconfig.tsbuildinfo +0 -1
  145. package/node_modules/@sema/gerador-javascript/src/index.ts +0 -461
  146. package/node_modules/@sema/gerador-javascript/tsconfig.json +0 -13
  147. package/node_modules/@sema/gerador-javascript/tsconfig.tsbuildinfo +0 -1
  148. package/node_modules/@sema/gerador-lua/src/index.ts +0 -359
  149. package/node_modules/@sema/gerador-lua/tsconfig.json +0 -13
  150. package/node_modules/@sema/gerador-lua/tsconfig.tsbuildinfo +0 -1
  151. package/node_modules/@sema/gerador-python/src/index.ts +0 -850
  152. package/node_modules/@sema/gerador-python/tsconfig.json +0 -13
  153. package/node_modules/@sema/gerador-python/tsconfig.tsbuildinfo +0 -1
  154. package/node_modules/@sema/gerador-typescript/src/index.ts +0 -876
  155. package/node_modules/@sema/gerador-typescript/tsconfig.json +0 -13
  156. package/node_modules/@sema/gerador-typescript/tsconfig.tsbuildinfo +0 -1
  157. package/node_modules/@sema/nucleo/src/ast/tipos.ts +0 -207
  158. package/node_modules/@sema/nucleo/src/diagnosticos/index.ts +0 -43
  159. package/node_modules/@sema/nucleo/src/formatador/index.ts +0 -530
  160. package/node_modules/@sema/nucleo/src/index.ts +0 -183
  161. package/node_modules/@sema/nucleo/src/ir/conversor.ts +0 -1037
  162. package/node_modules/@sema/nucleo/src/ir/modelos.ts +0 -403
  163. package/node_modules/@sema/nucleo/src/lexer/lexer.ts +0 -166
  164. package/node_modules/@sema/nucleo/src/lexer/tokens.ts +0 -79
  165. package/node_modules/@sema/nucleo/src/parser/gramatica.ebnf +0 -41
  166. package/node_modules/@sema/nucleo/src/parser/parser.ts +0 -936
  167. package/node_modules/@sema/nucleo/src/persistencia/contratos.ts +0 -379
  168. package/node_modules/@sema/nucleo/src/semantico/analisador.ts +0 -3126
  169. package/node_modules/@sema/nucleo/src/semantico/estruturas.ts +0 -665
  170. package/node_modules/@sema/nucleo/src/semantico/seguranca.ts +0 -362
  171. package/node_modules/@sema/nucleo/src/util/arquivos.ts +0 -28
  172. package/node_modules/@sema/nucleo/tsconfig.json +0 -9
  173. package/node_modules/@sema/nucleo/tsconfig.tsbuildinfo +0 -1
  174. package/node_modules/@sema/padroes/src/index.ts +0 -382
  175. package/node_modules/@sema/padroes/tsconfig.json +0 -9
  176. package/node_modules/@sema/padroes/tsconfig.tsbuildinfo +0 -1
@@ -1,403 +0,0 @@
1
- import type { Diagnostico } from "../diagnosticos/index.js";
2
- import type {
3
- ContratoErroRouteSemantico,
4
- EfeitoSemantico,
5
- EtapaFlowSemantica,
6
- ExpressaoSemantica,
7
- TransicaoEstadoSemantica,
8
- } from "../semantico/estruturas.js";
9
- import type {
10
- CompatibilidadePersistencia,
11
- ConsistenciaPersistencia,
12
- DurabilidadePersistencia,
13
- EngineBanco,
14
- ModeloConsultaPersistencia,
15
- ModeloTransacaoPersistencia,
16
- StatusCompatibilidadePersistencia,
17
- TipoRecursoPersistencia,
18
- } from "../persistencia/contratos.js";
19
- import type {
20
- ClassificacaoDadoSemantico,
21
- ModoAuthSemantico,
22
- MotivoAuditSemantico,
23
- OrigemAuthSemantica,
24
- PrincipalAuthSemantico,
25
- RedacaoLogSemantica,
26
- TenantAuthzSemantico,
27
- } from "../semantico/seguranca.js";
28
-
29
- export type PerfilCompatibilidade = "publico" | "interno" | "experimental" | "legado" | "deprecado";
30
- export type StatusResolucaoSemantica = "nao_verificado" | "resolvido" | "parcial" | "inferido" | "quebrado" | "nao_encontrado";
31
- export type NivelConfiancaSemantica = "alta" | "media" | "baixa";
32
- export type NivelRiscoSemantico = "baixo" | "medio" | "alto";
33
- export type TipoSuperficieIr = "worker" | "evento" | "fila" | "cron" | "webhook" | "cache" | "storage" | "policy";
34
-
35
- export interface IrCampo {
36
- nome: string;
37
- tipo: string;
38
- modificadores: string[];
39
- tipoOriginal: string;
40
- tipoBase: string;
41
- cardinalidade: "unitario" | "lista" | "mapa" | "uniao";
42
- opcional: boolean;
43
- tiposAlternativos: string[];
44
- tipoItem?: string;
45
- chaveMapa?: string;
46
- valorMapa?: string;
47
- refinamentos: string[];
48
- }
49
-
50
- export interface IrImplementacaoTask {
51
- origem: "ts" | "py" | "dart" | "lua" | "cs" | "java" | "go" | "rust" | "cpp";
52
- caminho: string;
53
- origemArquivo?: string;
54
- origemSimbolo?: string;
55
- resolucaoImpl?: string;
56
- statusImpl?: StatusResolucaoSemantica;
57
- }
58
-
59
- export interface IrVinculo {
60
- tipo: string;
61
- valor: string;
62
- arquivo?: string;
63
- simbolo?: string;
64
- recurso?: string;
65
- superficie?: string;
66
- statusResolucao?: StatusResolucaoSemantica;
67
- confianca?: NivelConfiancaSemantica;
68
- }
69
-
70
- export interface IrExecucao {
71
- idempotencia: boolean;
72
- timeout: string;
73
- retry: string;
74
- compensacao: string;
75
- criticidadeOperacional: "baixa" | "media" | "alta" | "critica";
76
- explicita: boolean;
77
- }
78
-
79
- export interface IrAuth {
80
- explicita: boolean;
81
- modo?: ModoAuthSemantico | string;
82
- estrategia?: string;
83
- principal?: PrincipalAuthSemantico | string;
84
- origem?: OrigemAuthSemantica | string;
85
- }
86
-
87
- export interface IrAuthz {
88
- explicita: boolean;
89
- papeis: string[];
90
- escopos: string[];
91
- politica?: string;
92
- tenant?: TenantAuthzSemantico | string;
93
- }
94
-
95
- export interface IrCampoDadoClassificado {
96
- origem: string;
97
- campo: string;
98
- classificacao: ClassificacaoDadoSemantico | string;
99
- }
100
-
101
- export interface IrDados {
102
- explicita: boolean;
103
- classificacaoPadrao?: ClassificacaoDadoSemantico | string;
104
- redacaoLog?: RedacaoLogSemantica | string;
105
- retencao?: string;
106
- campos: IrCampoDadoClassificado[];
107
- }
108
-
109
- export interface IrAudit {
110
- explicita: boolean;
111
- evento?: string;
112
- ator?: string;
113
- correlacao?: string;
114
- retencao?: string;
115
- motivo?: MotivoAuditSemantico | string;
116
- }
117
-
118
- export interface IrSegredo {
119
- nome: string;
120
- origem?: string;
121
- escopo?: string;
122
- acesso?: string;
123
- rotacao?: string;
124
- naoLogar?: boolean;
125
- naoRetornar?: boolean;
126
- mascarar?: boolean;
127
- }
128
-
129
- export interface IrSegredos {
130
- explicita: boolean;
131
- itens: IrSegredo[];
132
- }
133
-
134
- export interface IrForbidden {
135
- explicita: boolean;
136
- regras: string[];
137
- }
138
-
139
- export interface IrBlocoDeclarativo {
140
- campos: IrCampo[];
141
- linhas: string[];
142
- blocos: IrBlocoDeclarativoAninhado[];
143
- }
144
-
145
- export interface IrBlocoDeclarativoAninhado {
146
- nome: string;
147
- conteudo: IrBlocoDeclarativo;
148
- }
149
-
150
- export interface IrCasoTeste {
151
- nome: string;
152
- given: IrBlocoDeclarativo;
153
- when?: IrBlocoDeclarativo;
154
- expect: IrBlocoDeclarativo;
155
- error?: IrBlocoDeclarativo;
156
- }
157
-
158
- export interface IrResumoAgente {
159
- riscos: string[];
160
- checks: string[];
161
- entidadesAfetadas: string[];
162
- superficiesPublicas: string[];
163
- mutacoesPrevistas: string[];
164
- }
165
-
166
- export interface IrType {
167
- nome: string;
168
- definicao: IrBlocoDeclarativo;
169
- invariantes: ExpressaoSemantica[];
170
- }
171
-
172
- export interface IrEntity {
173
- nome: string;
174
- campos: IrCampo[];
175
- invariantes: ExpressaoSemantica[];
176
- }
177
-
178
- export interface IrEnum {
179
- nome: string;
180
- valores: string[];
181
- }
182
-
183
- export interface IrUse {
184
- origem: "sema" | "ts" | "py" | "dart" | "lua" | "cs" | "java" | "go" | "rust" | "cpp";
185
- caminho: string;
186
- externo: boolean;
187
- }
188
-
189
- export interface IrInteropExterno {
190
- origem: "ts" | "py" | "dart" | "lua" | "cs" | "java" | "go" | "rust" | "cpp";
191
- caminho: string;
192
- }
193
-
194
- export interface IrErroOperacional {
195
- codigo: string;
196
- mensagem: string;
197
- categoria?: string;
198
- recuperabilidade?: string;
199
- acaoChamador?: string;
200
- impactaEstado?: boolean;
201
- requerCompensacao?: boolean;
202
- origemTask?: string;
203
- }
204
-
205
- export interface IrTask {
206
- nome: string;
207
- input: IrCampo[];
208
- output: IrCampo[];
209
- rules: string[];
210
- regrasEstruturadas: ExpressaoSemantica[];
211
- effects: string[];
212
- efeitosEstruturados: EfeitoSemantico[];
213
- implementacoesExternas: IrImplementacaoTask[];
214
- vinculos: IrVinculo[];
215
- execucao: IrExecucao;
216
- auth: IrAuth;
217
- authz: IrAuthz;
218
- dados: IrDados;
219
- audit: IrAudit;
220
- segredos: IrSegredos;
221
- forbidden: IrForbidden;
222
- guarantees: string[];
223
- garantiasEstruturadas: ExpressaoSemantica[];
224
- errors: Record<string, string>;
225
- errosDetalhados: IrErroOperacional[];
226
- perfilCompatibilidade: PerfilCompatibilidade;
227
- stateContract?: IrTaskStateContract;
228
- resumoAgente: IrResumoAgente;
229
- tests: IrCasoTeste[];
230
- }
231
-
232
- export interface IrErroPublico extends IrErroOperacional {
233
- nome: string;
234
- }
235
-
236
- export interface IrRoutePublica {
237
- metodo?: string;
238
- caminho?: string;
239
- task?: string;
240
- input: IrCampo[];
241
- output: IrCampo[];
242
- errors: IrErroPublico[];
243
- effects: EfeitoSemantico[];
244
- garantiasMinimas: string[];
245
- confiancaContrato?: NivelConfiancaSemantica;
246
- riscoRegressao?: NivelRiscoSemantico;
247
- divergenciasPublicas?: string[];
248
- }
249
-
250
- export interface IrTaskStateContract {
251
- nomeEstado?: string;
252
- campos: IrCampo[];
253
- linhas: string[];
254
- transicoes: TransicaoEstadoSemantica[];
255
- }
256
-
257
- export interface IrFlow {
258
- nome: string;
259
- campos: IrCampo[];
260
- linhas: string[];
261
- tasksReferenciadas: string[];
262
- etapasEstruturadas: EtapaFlowSemantica[];
263
- effects: string[];
264
- efeitosEstruturados: EfeitoSemantico[];
265
- vinculos: IrVinculo[];
266
- perfilCompatibilidade: PerfilCompatibilidade;
267
- resumoAgente: IrResumoAgente;
268
- }
269
-
270
- export interface IrRoute {
271
- nome: string;
272
- campos: IrCampo[];
273
- linhas: string[];
274
- metodo?: string;
275
- caminho?: string;
276
- task?: string;
277
- inputPublico: IrCampo[];
278
- outputPublico: IrCampo[];
279
- errosPublicos: ContratoErroRouteSemantico[];
280
- efeitosPublicos: EfeitoSemantico[];
281
- vinculos: IrVinculo[];
282
- auth: IrAuth;
283
- authz: IrAuthz;
284
- dados: IrDados;
285
- audit: IrAudit;
286
- segredos: IrSegredos;
287
- forbidden: IrForbidden;
288
- perfilCompatibilidade: PerfilCompatibilidade;
289
- garantiasPublicasMinimas: string[];
290
- resumoAgente: IrResumoAgente;
291
- publico: IrRoutePublica;
292
- }
293
-
294
- export interface IrSuperficie {
295
- tipo: TipoSuperficieIr;
296
- nome: string;
297
- campos: IrCampo[];
298
- linhas: string[];
299
- task?: string;
300
- input: IrCampo[];
301
- output: IrCampo[];
302
- effects: EfeitoSemantico[];
303
- implementacoesExternas: IrImplementacaoTask[];
304
- vinculos: IrVinculo[];
305
- execucao: IrExecucao;
306
- auth: IrAuth;
307
- authz: IrAuthz;
308
- dados: IrDados;
309
- audit: IrAudit;
310
- segredos: IrSegredos;
311
- forbidden: IrForbidden;
312
- perfilCompatibilidade: PerfilCompatibilidade;
313
- resumoAgente: IrResumoAgente;
314
- }
315
-
316
- export interface IrState {
317
- nome?: string;
318
- campos: IrCampo[];
319
- linhas: string[];
320
- invariantes: ExpressaoSemantica[];
321
- transicoes: TransicaoEstadoSemantica[];
322
- }
323
-
324
- export interface IrCompatibilidadePersistencia extends CompatibilidadePersistencia {
325
- engine: EngineBanco;
326
- status: StatusCompatibilidadePersistencia;
327
- }
328
-
329
- export interface IrRecursoPersistencia {
330
- nome: string;
331
- resourceKind: TipoRecursoPersistencia;
332
- entity?: string;
333
- collection?: string;
334
- table?: string;
335
- consistency?: ConsistenciaPersistencia | string;
336
- durability?: DurabilidadePersistencia | string;
337
- transactionModel?: ModeloTransacaoPersistencia | string;
338
- queryModel?: ModeloConsultaPersistencia | string;
339
- mode?: string;
340
- isolation?: string;
341
- strategy?: string;
342
- ttl?: string;
343
- retention?: string;
344
- path?: string;
345
- from?: string;
346
- to?: string;
347
- surface?: string;
348
- adapter?: string;
349
- portavel?: boolean;
350
- capabilities: string[];
351
- operations: string[];
352
- indexing: string[];
353
- guarantees: string[];
354
- diagnostics: string[];
355
- risks: string[];
356
- fields: IrCampo[];
357
- lines: string[];
358
- block: IrBlocoDeclarativo;
359
- compatibilidade: IrCompatibilidadePersistencia[];
360
- }
361
-
362
- export interface IrBancoDados {
363
- nome: string;
364
- engine?: EngineBanco;
365
- schema?: string;
366
- database?: string;
367
- consistency?: ConsistenciaPersistencia | string;
368
- durability?: DurabilidadePersistencia | string;
369
- transactionModel?: ModeloTransacaoPersistencia | string;
370
- queryModel?: ModeloConsultaPersistencia | string;
371
- portavel?: boolean;
372
- adapter?: string;
373
- capabilities: string[];
374
- operations: string[];
375
- indexing: string[];
376
- guarantees: string[];
377
- diagnostics: string[];
378
- risks: string[];
379
- fields: IrCampo[];
380
- lines: string[];
381
- block: IrBlocoDeclarativo;
382
- resources: IrRecursoPersistencia[];
383
- }
384
-
385
- export interface IrModulo {
386
- nome: string;
387
- uses: string[];
388
- imports: IrUse[];
389
- interoperabilidades: IrInteropExterno[];
390
- vinculos: IrVinculo[];
391
- perfilCompatibilidade: PerfilCompatibilidade;
392
- types: IrType[];
393
- entities: IrEntity[];
394
- enums: IrEnum[];
395
- tasks: IrTask[];
396
- flows: IrFlow[];
397
- routes: IrRoute[];
398
- superficies: IrSuperficie[];
399
- states: IrState[];
400
- databases: IrBancoDados[];
401
- resumoAgente: IrResumoAgente;
402
- diagnosticos: Diagnostico[];
403
- }
@@ -1,166 +0,0 @@
1
- import { criarDiagnostico, type Diagnostico, type PosicaoFonte } from "../diagnosticos/index.js";
2
- import { PALAVRAS_CHAVE, type Token, type TipoToken } from "./tokens.js";
3
-
4
- export interface ResultadoLexer {
5
- tokens: Token[];
6
- diagnosticos: Diagnostico[];
7
- }
8
-
9
- function avancar(posicao: PosicaoFonte, caractere: string): PosicaoFonte {
10
- if (caractere === "\n") {
11
- return { indice: posicao.indice + 1, linha: posicao.linha + 1, coluna: 1 };
12
- }
13
- return { indice: posicao.indice + 1, linha: posicao.linha, coluna: posicao.coluna + 1 };
14
- }
15
-
16
- function criarToken(tipo: TipoToken, valor: string, inicio: PosicaoFonte, fim: PosicaoFonte, arquivo?: string): Token {
17
- return {
18
- tipo,
19
- valor,
20
- intervalo: { inicio, fim, arquivo },
21
- };
22
- }
23
-
24
- export function tokenizar(codigo: string, arquivo?: string): ResultadoLexer {
25
- const tokens: Token[] = [];
26
- const diagnosticos: Diagnostico[] = [];
27
- let posicao: PosicaoFonte = { indice: 0, linha: 1, coluna: 1 };
28
-
29
- while (posicao.indice < codigo.length) {
30
- const inicio = { ...posicao };
31
- const atual = codigo[posicao.indice]!;
32
-
33
- if (atual === " " || atual === "\t" || atual === "\r") {
34
- posicao = avancar(posicao, atual);
35
- continue;
36
- }
37
-
38
- if (atual === "\n") {
39
- posicao = avancar(posicao, atual);
40
- tokens.push(criarToken("nova_linha", "\n", inicio, { ...posicao }, arquivo));
41
- continue;
42
- }
43
-
44
- if (atual === "/" && codigo[posicao.indice + 1] === "/") {
45
- let texto = "";
46
- let cursor = { ...posicao };
47
- while (cursor.indice < codigo.length && codigo[cursor.indice] !== "\n") {
48
- texto += codigo[cursor.indice];
49
- cursor = avancar(cursor, codigo[cursor.indice]!);
50
- }
51
- tokens.push(criarToken("comentario", texto, inicio, cursor, arquivo));
52
- posicao = cursor;
53
- continue;
54
- }
55
-
56
- if (atual === "\"") {
57
- let texto = "";
58
- let cursor = avancar(posicao, atual);
59
- let fechado = false;
60
- while (cursor.indice < codigo.length) {
61
- const caractere = codigo[cursor.indice]!;
62
- if (caractere === "\\") {
63
- const proximo = codigo[cursor.indice + 1];
64
- if (proximo) {
65
- texto += caractere + proximo;
66
- cursor = avancar(avancar(cursor, caractere), proximo);
67
- continue;
68
- }
69
- }
70
- if (caractere === "\"") {
71
- fechado = true;
72
- cursor = avancar(cursor, caractere);
73
- break;
74
- }
75
- texto += caractere;
76
- cursor = avancar(cursor, caractere);
77
- }
78
- if (!fechado) {
79
- diagnosticos.push(
80
- criarDiagnostico(
81
- "LEX001",
82
- "Texto nao foi fechado com aspas.",
83
- "erro",
84
- { inicio, fim: cursor, arquivo },
85
- "Feche a string com aspas duplas.",
86
- ),
87
- );
88
- posicao = cursor;
89
- continue;
90
- }
91
- tokens.push(criarToken("texto", texto, inicio, cursor, arquivo));
92
- posicao = cursor;
93
- continue;
94
- }
95
-
96
- if (/[0-9]/.test(atual)) {
97
- let texto = "";
98
- let cursor = { ...posicao };
99
- while (cursor.indice < codigo.length && /[0-9.]/.test(codigo[cursor.indice]!)) {
100
- texto += codigo[cursor.indice];
101
- cursor = avancar(cursor, codigo[cursor.indice]!);
102
- }
103
- tokens.push(criarToken("numero", texto, inicio, cursor, arquivo));
104
- posicao = cursor;
105
- continue;
106
- }
107
-
108
- if (/[A-Za-z_]/.test(atual)) {
109
- let texto = "";
110
- let cursor = { ...posicao };
111
- while (cursor.indice < codigo.length && /[A-Za-z0-9_.-]/.test(codigo[cursor.indice]!)) {
112
- texto += codigo[cursor.indice];
113
- cursor = avancar(cursor, codigo[cursor.indice]!);
114
- }
115
- const tipo: TipoToken = PALAVRAS_CHAVE.has(texto) ? "palavra_chave" : "identificador";
116
- tokens.push(criarToken(tipo, texto, inicio, cursor, arquivo));
117
- posicao = cursor;
118
- continue;
119
- }
120
-
121
- const doisCaracteres = codigo.slice(posicao.indice, posicao.indice + 2);
122
- if (["==", "!=", ">=", "<=", "->"].includes(doisCaracteres)) {
123
- const cursor = avancar(avancar(posicao, doisCaracteres[0]!), doisCaracteres[1]!);
124
- tokens.push(criarToken("operador", doisCaracteres, inicio, cursor, arquivo));
125
- posicao = cursor;
126
- continue;
127
- }
128
-
129
- if ("{}[]():,.".includes(atual)) {
130
- const cursor = avancar(posicao, atual);
131
- tokens.push(criarToken("pontuacao", atual, inicio, cursor, arquivo));
132
- posicao = cursor;
133
- continue;
134
- }
135
-
136
- if ("=><+-*/|?".includes(atual)) {
137
- const cursor = avancar(posicao, atual);
138
- tokens.push(criarToken("operador", atual, inicio, cursor, arquivo));
139
- posicao = cursor;
140
- continue;
141
- }
142
-
143
- diagnosticos.push(
144
- criarDiagnostico(
145
- "LEX002",
146
- `Caractere inesperado encontrado: "${atual}".`,
147
- "erro",
148
- { inicio, fim: avancar(posicao, atual), arquivo },
149
- "Remova o caractere ou adicione suporte no lexer.",
150
- ),
151
- );
152
- posicao = avancar(posicao, atual);
153
- }
154
-
155
- tokens.push(
156
- criarToken(
157
- "fim_arquivo",
158
- "",
159
- { ...posicao },
160
- { ...posicao },
161
- arquivo,
162
- ),
163
- );
164
-
165
- return { tokens, diagnosticos };
166
- }
@@ -1,79 +0,0 @@
1
- import type { IntervaloFonte } from "../diagnosticos/index.js";
2
-
3
- export type TipoToken =
4
- | "palavra_chave"
5
- | "identificador"
6
- | "texto"
7
- | "numero"
8
- | "pontuacao"
9
- | "operador"
10
- | "nova_linha"
11
- | "comentario"
12
- | "fim_arquivo";
13
-
14
- export interface Token {
15
- tipo: TipoToken;
16
- valor: string;
17
- intervalo: IntervaloFonte;
18
- }
19
-
20
- export const PALAVRAS_CHAVE = new Set([
21
- "module",
22
- "use",
23
- "database",
24
- "type",
25
- "entity",
26
- "enum",
27
- "task",
28
- "worker",
29
- "evento",
30
- "fila",
31
- "cron",
32
- "webhook",
33
- "cache",
34
- "storage",
35
- "policy",
36
- "input",
37
- "output",
38
- "rules",
39
- "effects",
40
- "impl",
41
- "vinculos",
42
- "execucao",
43
- "auth",
44
- "authz",
45
- "dados",
46
- "audit",
47
- "segredos",
48
- "forbidden",
49
- "guarantees",
50
- "state",
51
- "flow",
52
- "route",
53
- "tests",
54
- "error",
55
- "docs",
56
- "comments",
57
- "table",
58
- "view",
59
- "query",
60
- "transaction",
61
- "index",
62
- "constraint",
63
- "relationship",
64
- "collection",
65
- "document",
66
- "keyspace",
67
- "stream",
68
- "lock",
69
- "retention",
70
- "replication",
71
- "fields",
72
- "invariants",
73
- "transitions",
74
- "given",
75
- "when",
76
- "expect",
77
- "caso",
78
- "required",
79
- ]);
@@ -1,41 +0,0 @@
1
- arquivo = modulo ;
2
- modulo = "module" identificador "{" declaracao_modulo* "}" ;
3
- declaracao_modulo = use | docs | comments | vinculos | database | type | entity | enum | task | flow | route | worker | evento | fila | cron | webhook | cache | storage | policy | state | tests ;
4
- use = "use" identificador ;
5
- database = "database" identificador bloco_generico ;
6
- type = "type" identificador bloco_generico ;
7
- entity = "entity" identificador bloco_generico ;
8
- enum = "enum" identificador "{" identificador ("," identificador)* "}" ;
9
- task = "task" identificador bloco_generico ;
10
- flow = "flow" identificador bloco_generico ;
11
- route = "route" identificador bloco_generico ;
12
- worker = "worker" identificador bloco_generico ;
13
- evento = "evento" identificador bloco_generico ;
14
- fila = "fila" identificador bloco_generico ;
15
- cron = "cron" identificador bloco_generico ;
16
- webhook = "webhook" identificador bloco_generico ;
17
- cache = "cache" identificador bloco_generico ;
18
- storage = "storage" identificador bloco_generico ;
19
- policy = "policy" identificador bloco_generico ;
20
- state = "state" bloco_generico ;
21
- tests = "tests" "{" caso* "}" ;
22
- caso = "caso" texto "{" given? when? expect? error? docs? comments? "}" ;
23
- given = "given" bloco_generico ;
24
- when = "when" bloco_generico ;
25
- expect = "expect" bloco_generico ;
26
- error = "error" bloco_generico ;
27
- vinculos = "vinculos" bloco_generico ;
28
- docs = "docs" bloco_generico ;
29
- comments = "comments" bloco_generico ;
30
- bloco_generico = "{" item_bloco* "}" ;
31
- item_bloco = campo | linha | bloco_generico_nomeado | bloco_generico_nomeado_livre ;
32
- bloco_generico_nomeado = palavra_chave "{" item_bloco* "}" ;
33
- bloco_generico_nomeado_livre = identificador identificador "{" item_bloco* "}" ;
34
- campo = identificador ":" valor valor_modificador* ;
35
- linha = valor+ ;
36
- valor = identificador | numero | texto ;
37
- valor_modificador = identificador ;
38
- identificador = ? token de identificador ? ;
39
- numero = ? token numerico ? ;
40
- texto = ? token textual ? ;
41
- palavra_chave = "input" | "output" | "rules" | "effects" | "impl" | "vinculos" | "execucao" | "auth" | "authz" | "dados" | "audit" | "segredos" | "forbidden" | "guarantees" | "state" | "fields" | "tests" | "error" | "docs" | "comments" | "given" | "when" | "expect" ;