@semacode/cli 1.5.28 → 1.5.30
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.
- package/README.md +144 -144
- package/dist/bridge.d.ts +52 -0
- package/dist/bridge.js +318 -0
- package/dist/bridge.js.map +1 -0
- package/dist/comandos.d.ts +11 -0
- package/dist/comandos.js +146 -0
- package/dist/comandos.js.map +1 -0
- package/dist/contexto.d.ts +34 -0
- package/dist/contexto.js +197 -0
- package/dist/contexto.js.map +1 -0
- package/dist/drift.d.ts +1 -1
- package/dist/drift.js +32 -5
- package/dist/drift.js.map +1 -1
- package/dist/guard.d.ts +35 -0
- package/dist/guard.js +164 -0
- package/dist/guard.js.map +1 -0
- package/dist/index.js +391 -64
- package/dist/index.js.map +1 -1
- package/dist/lua-symbols.d.ts +0 -6
- package/dist/lua-symbols.js +11 -78
- package/dist/lua-symbols.js.map +1 -1
- package/dist/projeto.js +6 -0
- package/dist/projeto.js.map +1 -1
- package/dist/tipos.d.ts +1 -1
- package/exemplos/.prepack-generated +1 -0
- package/exemplos/author_obra_comum.sema +294 -294
- package/exemplos/author_tema_sensivel.sema +264 -264
- package/exemplos/profile_game.sema +114 -114
- package/exemplos/profile_legal.sema +105 -105
- package/exemplos/profile_ops.sema +110 -110
- package/exemplos/profile_research.sema +104 -104
- package/exemplos/profile_software.sema +123 -123
- package/exemplos/profile_workflow_n8n.sema +99 -99
- package/node_modules/@sema/gerador-css/package.json +14 -7
- package/node_modules/@sema/gerador-css/src/index.ts +605 -0
- package/node_modules/@sema/gerador-css/tsconfig.json +13 -0
- package/node_modules/@sema/gerador-css/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/gerador-dart/package.json +14 -7
- package/node_modules/@sema/gerador-dart/src/index.ts +52 -0
- package/node_modules/@sema/gerador-dart/tsconfig.json +13 -0
- package/node_modules/@sema/gerador-dart/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/gerador-html/package.json +14 -7
- package/node_modules/@sema/gerador-html/src/index.ts +185 -0
- package/node_modules/@sema/gerador-html/tsconfig.json +13 -0
- package/node_modules/@sema/gerador-html/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/gerador-javascript/package.json +14 -7
- package/node_modules/@sema/gerador-javascript/src/index.ts +461 -0
- package/node_modules/@sema/gerador-javascript/tsconfig.json +13 -0
- package/node_modules/@sema/gerador-javascript/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/gerador-lua/package.json +14 -7
- package/node_modules/@sema/gerador-lua/src/index.ts +359 -0
- package/node_modules/@sema/gerador-lua/tsconfig.json +13 -0
- package/node_modules/@sema/gerador-lua/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/gerador-python/package.json +14 -7
- package/node_modules/@sema/gerador-python/src/index.ts +850 -0
- package/node_modules/@sema/gerador-python/tsconfig.json +13 -0
- package/node_modules/@sema/gerador-python/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/gerador-typescript/package.json +14 -7
- package/node_modules/@sema/gerador-typescript/src/index.ts +876 -0
- package/node_modules/@sema/gerador-typescript/tsconfig.json +13 -0
- package/node_modules/@sema/gerador-typescript/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +1 -1
- package/node_modules/@sema/nucleo/dist/index.d.ts +17 -0
- package/node_modules/@sema/nucleo/dist/index.js +28 -0
- package/node_modules/@sema/nucleo/dist/index.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.js +4 -0
- package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +3 -3
- package/node_modules/@sema/nucleo/dist/parser/parser.js +2 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +2 -2
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js +3 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
- package/node_modules/@sema/nucleo/package.json +10 -7
- package/node_modules/@sema/nucleo/src/ast/tipos.ts +207 -0
- package/node_modules/@sema/nucleo/src/diagnosticos/index.ts +43 -0
- package/node_modules/@sema/nucleo/src/formatador/index.ts +530 -0
- package/node_modules/@sema/nucleo/src/index.ts +183 -0
- package/node_modules/@sema/nucleo/src/ir/conversor.ts +1037 -0
- package/node_modules/@sema/nucleo/src/ir/modelos.ts +403 -0
- package/node_modules/@sema/nucleo/src/lexer/lexer.ts +166 -0
- package/node_modules/@sema/nucleo/src/lexer/tokens.ts +79 -0
- package/node_modules/@sema/nucleo/src/parser/gramatica.ebnf +41 -0
- package/node_modules/@sema/nucleo/src/parser/parser.ts +936 -0
- package/node_modules/@sema/nucleo/src/persistencia/contratos.ts +379 -0
- package/node_modules/@sema/nucleo/src/semantico/analisador.ts +3126 -0
- package/node_modules/@sema/nucleo/src/semantico/estruturas.ts +665 -0
- package/node_modules/@sema/nucleo/src/semantico/seguranca.ts +362 -0
- package/node_modules/@sema/nucleo/src/util/arquivos.ts +28 -0
- package/node_modules/@sema/nucleo/tsconfig.json +9 -0
- package/node_modules/@sema/nucleo/tsconfig.tsbuildinfo +1 -0
- package/node_modules/@sema/padroes/package.json +10 -7
- package/node_modules/@sema/padroes/src/index.ts +382 -0
- package/node_modules/@sema/padroes/tsconfig.json +9 -0
- package/node_modules/@sema/padroes/tsconfig.tsbuildinfo +1 -0
- package/package.json +74 -74
- package/AGENTS.md +0 -280
- package/LICENSE +0 -22
- package/SEMA_BRIEF.curto.txt +0 -11
- package/SEMA_BRIEF.md +0 -112
- package/SEMA_BRIEF.micro.txt +0 -9
- package/SEMA_INDEX.json +0 -1534
- package/dist/php-symbols.d.ts +0 -24
- package/dist/php-symbols.js +0 -375
- package/dist/php-symbols.js.map +0 -1
- package/docs/AGENT_STARTER.md +0 -109
- package/docs/cli.md +0 -175
- package/docs/como-ensinar-a-sema-para-ia.md +0 -155
- package/docs/deploy.md +0 -93
- package/docs/documentacao.md +0 -88
- package/docs/env.md +0 -105
- package/docs/extensao-vscode.md +0 -53
- package/docs/fluxo-pratico-ia-sema.md +0 -187
- package/docs/instalacao-e-primeiro-uso.md +0 -134
- package/docs/integracao-com-ia.md +0 -110
- package/docs/mcp.md +0 -292
- package/docs/pagamento-ponta-a-ponta.md +0 -171
- package/docs/persistencia-vendor-first.md +0 -151
- package/docs/prompt-base-ia-sema.md +0 -111
- package/docs/repositories.md +0 -54
- package/docs/rollback.md +0 -49
- package/docs/seguranca.md +0 -126
- package/docs/sintaxe.md +0 -218
- package/llms-full.txt +0 -34
- package/llms.txt +0 -17
package/dist/php-symbols.d.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
export interface ParametroPhpExtraido {
|
|
2
|
-
nome: string;
|
|
3
|
-
obrigatorio: boolean;
|
|
4
|
-
tipoTexto?: string;
|
|
5
|
-
}
|
|
6
|
-
export interface ParametroRotaPhp {
|
|
7
|
-
nome: string;
|
|
8
|
-
tipoSema: "Texto" | "Inteiro" | "Decimal" | "Id";
|
|
9
|
-
}
|
|
10
|
-
export interface SimboloPhpExtraido {
|
|
11
|
-
simbolo: string;
|
|
12
|
-
retorno?: string;
|
|
13
|
-
parametros: ParametroPhpExtraido[];
|
|
14
|
-
}
|
|
15
|
-
export interface RotaPhpExtraida {
|
|
16
|
-
origem: "php";
|
|
17
|
-
metodo: string;
|
|
18
|
-
caminho: string;
|
|
19
|
-
simbolo: string;
|
|
20
|
-
parametros: ParametroRotaPhp[];
|
|
21
|
-
retorno?: string;
|
|
22
|
-
}
|
|
23
|
-
export declare function extrairSimbolosPhp(codigo: string): SimboloPhpExtraido[];
|
|
24
|
-
export declare function extrairRotasPhp(codigo: string): RotaPhpExtraida[];
|
package/dist/php-symbols.js
DELETED
|
@@ -1,375 +0,0 @@
|
|
|
1
|
-
const METODOS_HTTP = new Set(["GET", "POST", "PUT", "PATCH", "DELETE"]);
|
|
2
|
-
const METODOS_RECURSO_LARAVEL = [
|
|
3
|
-
{ metodo: "GET", sufixo: "", acao: "index" },
|
|
4
|
-
{ metodo: "POST", sufixo: "", acao: "store" },
|
|
5
|
-
{ metodo: "GET", sufixo: "/{id}", acao: "show" },
|
|
6
|
-
{ metodo: "PUT", sufixo: "/{id}", acao: "update" },
|
|
7
|
-
{ metodo: "PATCH", sufixo: "/{id}", acao: "update" },
|
|
8
|
-
{ metodo: "DELETE", sufixo: "/{id}", acao: "destroy" },
|
|
9
|
-
];
|
|
10
|
-
function removerComentariosPhp(codigo) {
|
|
11
|
-
return codigo
|
|
12
|
-
.replace(/<\?(?:php)?|(\?>)/gi, "")
|
|
13
|
-
.replace(/\/\*[\s\S]*?\*\//g, "")
|
|
14
|
-
.replace(/(^|[^\:])\/\/[^\r\n]*/g, "$1")
|
|
15
|
-
.replace(/#[^\[\r\n][^\r\n]*/g, "");
|
|
16
|
-
}
|
|
17
|
-
function contarChar(texto, alvo) {
|
|
18
|
-
return [...texto].filter((char) => char === alvo).length;
|
|
19
|
-
}
|
|
20
|
-
function normalizarNamespacePhp(valor) {
|
|
21
|
-
return (valor ?? "")
|
|
22
|
-
.replace(/^\\+|\\+$/g, "")
|
|
23
|
-
.replace(/\\/g, ".")
|
|
24
|
-
.replace(/::/g, ".")
|
|
25
|
-
.replace(/\.+/g, ".")
|
|
26
|
-
.replace(/^\.+|\.+$/g, "");
|
|
27
|
-
}
|
|
28
|
-
function normalizarSimboloPhp(valor) {
|
|
29
|
-
return normalizarNamespacePhp(valor)
|
|
30
|
-
.replace(/\$\b/g, "")
|
|
31
|
-
.replace(/\.+/g, ".")
|
|
32
|
-
.replace(/^\.+|\.+$/g, "");
|
|
33
|
-
}
|
|
34
|
-
function dividirListaUsePhp(declaracao) {
|
|
35
|
-
const partes = [];
|
|
36
|
-
let atual = "";
|
|
37
|
-
let profundidade = 0;
|
|
38
|
-
for (const caractere of declaracao) {
|
|
39
|
-
if (caractere === "," && profundidade === 0) {
|
|
40
|
-
if (atual.trim()) {
|
|
41
|
-
partes.push(atual.trim());
|
|
42
|
-
}
|
|
43
|
-
atual = "";
|
|
44
|
-
continue;
|
|
45
|
-
}
|
|
46
|
-
if (caractere === "{") {
|
|
47
|
-
profundidade += 1;
|
|
48
|
-
}
|
|
49
|
-
else if (caractere === "}" && profundidade > 0) {
|
|
50
|
-
profundidade -= 1;
|
|
51
|
-
}
|
|
52
|
-
atual += caractere;
|
|
53
|
-
}
|
|
54
|
-
if (atual.trim()) {
|
|
55
|
-
partes.push(atual.trim());
|
|
56
|
-
}
|
|
57
|
-
return partes;
|
|
58
|
-
}
|
|
59
|
-
function registrarUsePhp(imports, item) {
|
|
60
|
-
const alias = item.match(/\s+as\s+([A-Za-z_]\w*)$/i)?.[1];
|
|
61
|
-
const semAlias = item.replace(/\s+as\s+[A-Za-z_]\w*$/i, "").trim();
|
|
62
|
-
const completo = normalizarNamespacePhp(semAlias);
|
|
63
|
-
const nome = alias ?? completo.split(".").at(-1);
|
|
64
|
-
if (nome && completo) {
|
|
65
|
-
imports.set(nome, completo);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
function extrairImportsPhp(codigo) {
|
|
69
|
-
const imports = new Map();
|
|
70
|
-
for (const match of codigo.matchAll(/\buse\s+(?!function\b|const\b)([^;]+);/gi)) {
|
|
71
|
-
const declaracao = match[1].trim();
|
|
72
|
-
const grupo = declaracao.match(/^(.+?)\\\{(.+)\}$/);
|
|
73
|
-
if (grupo) {
|
|
74
|
-
const base = grupo[1];
|
|
75
|
-
for (const item of dividirListaUsePhp(grupo[2])) {
|
|
76
|
-
registrarUsePhp(imports, `${base}\\${item}`);
|
|
77
|
-
}
|
|
78
|
-
continue;
|
|
79
|
-
}
|
|
80
|
-
for (const item of dividirListaUsePhp(declaracao)) {
|
|
81
|
-
registrarUsePhp(imports, item);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
return imports;
|
|
85
|
-
}
|
|
86
|
-
function resolverClassePhp(classe, imports) {
|
|
87
|
-
const normalizada = normalizarNamespacePhp(classe);
|
|
88
|
-
const partes = normalizada.split(".").filter(Boolean);
|
|
89
|
-
const primeiro = partes[0];
|
|
90
|
-
if (primeiro && imports.has(primeiro)) {
|
|
91
|
-
return [imports.get(primeiro), ...partes.slice(1)].filter(Boolean).join(".");
|
|
92
|
-
}
|
|
93
|
-
return normalizada;
|
|
94
|
-
}
|
|
95
|
-
function juntarSimbolo(...partes) {
|
|
96
|
-
return partes.map(normalizarNamespacePhp).filter(Boolean).join(".");
|
|
97
|
-
}
|
|
98
|
-
function normalizarCaminhoPhp(caminho) {
|
|
99
|
-
const semAspas = caminho.trim().replace(/^['"]|['"]$/g, "");
|
|
100
|
-
return `/${semAspas.replace(/^\/+|\/+$/g, "")}`
|
|
101
|
-
.replace(/:([A-Za-z_]\w*)/g, "{$1}")
|
|
102
|
-
.replace(/\{([A-Za-z_]\w*)\??\}/g, "{$1}")
|
|
103
|
-
.replace(/\/+/g, "/");
|
|
104
|
-
}
|
|
105
|
-
function juntarCaminho(base, sufixo) {
|
|
106
|
-
const partes = [base, sufixo]
|
|
107
|
-
.map((parte) => parte?.trim())
|
|
108
|
-
.filter((parte) => Boolean(parte))
|
|
109
|
-
.map((parte) => parte.replace(/^\/+|\/+$/g, ""));
|
|
110
|
-
return normalizarCaminhoPhp(partes.join("/"));
|
|
111
|
-
}
|
|
112
|
-
function mapearTipoRotaPhp(tipo) {
|
|
113
|
-
const normalizado = (tipo ?? "").replace(/^\?/, "").replace(/^\\+/, "").toLowerCase();
|
|
114
|
-
if (/^(int|integer)$/.test(normalizado)) {
|
|
115
|
-
return "Inteiro";
|
|
116
|
-
}
|
|
117
|
-
if (/^(float|double|decimal)$/.test(normalizado)) {
|
|
118
|
-
return "Decimal";
|
|
119
|
-
}
|
|
120
|
-
if (/uuid|id$/.test(normalizado)) {
|
|
121
|
-
return "Id";
|
|
122
|
-
}
|
|
123
|
-
return "Texto";
|
|
124
|
-
}
|
|
125
|
-
function dividirParametrosPhp(parametros) {
|
|
126
|
-
const encontrados = [];
|
|
127
|
-
for (const parametro of parametros.split(",")) {
|
|
128
|
-
const item = parametro.trim();
|
|
129
|
-
if (!item) {
|
|
130
|
-
continue;
|
|
131
|
-
}
|
|
132
|
-
const normalizado = item
|
|
133
|
-
.replace(/#\[[^\]]+\]\s*/g, "")
|
|
134
|
-
.replace(/=.*$/, "")
|
|
135
|
-
.replace(/\b(?:public|protected|private|readonly)\s+/g, "")
|
|
136
|
-
.replace(/&/g, "")
|
|
137
|
-
.replace(/\.\.\./g, "")
|
|
138
|
-
.trim();
|
|
139
|
-
const match = normalizado.match(/^(?:(?<tipo>[?\\A-Za-z_][\\A-Za-z0-9_|.[\]?]*(?:\s*\|\s*[?\\A-Za-z_][\\A-Za-z0-9_|.[\]?]*)*)\s+)?\$(?<nome>[A-Za-z_]\w*)$/);
|
|
140
|
-
if (!match?.groups?.["nome"]) {
|
|
141
|
-
continue;
|
|
142
|
-
}
|
|
143
|
-
const tipoTexto = match.groups["tipo"]?.replace(/\s+/g, "") || undefined;
|
|
144
|
-
encontrados.push({
|
|
145
|
-
nome: match.groups["nome"],
|
|
146
|
-
...(tipoTexto ? { tipoTexto } : {}),
|
|
147
|
-
obrigatorio: !tipoTexto?.startsWith("?"),
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
return encontrados;
|
|
151
|
-
}
|
|
152
|
-
function extrairParametrosRotaPhp(caminho, parametros = []) {
|
|
153
|
-
const tipos = new Map(parametros.map((parametro) => [parametro.nome, parametro.tipoTexto]));
|
|
154
|
-
return [...normalizarCaminhoPhp(caminho).matchAll(/\{([^}]+)\}/g)].map((match) => {
|
|
155
|
-
const nome = match[1];
|
|
156
|
-
return {
|
|
157
|
-
nome,
|
|
158
|
-
tipoSema: mapearTipoRotaPhp(tipos.get(nome)),
|
|
159
|
-
};
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
function extrairAtributosPhp(linhas, inicio) {
|
|
163
|
-
const atributos = [];
|
|
164
|
-
let indice = inicio;
|
|
165
|
-
while (indice < linhas.length) {
|
|
166
|
-
const linha = linhas[indice].trim();
|
|
167
|
-
if (!linha.startsWith("#[")) {
|
|
168
|
-
break;
|
|
169
|
-
}
|
|
170
|
-
let atual = linha;
|
|
171
|
-
let saldo = contarChar(linha, "[") - contarChar(linha, "]");
|
|
172
|
-
while (saldo > 0 && indice + 1 < linhas.length) {
|
|
173
|
-
indice += 1;
|
|
174
|
-
const complemento = linhas[indice].trim();
|
|
175
|
-
atual += ` ${complemento}`;
|
|
176
|
-
saldo += contarChar(complemento, "[") - contarChar(complemento, "]");
|
|
177
|
-
}
|
|
178
|
-
atributos.push(atual);
|
|
179
|
-
indice += 1;
|
|
180
|
-
}
|
|
181
|
-
return { atributos, proximoIndice: indice };
|
|
182
|
-
}
|
|
183
|
-
function extrairCaminhoAtributoPhp(atributo) {
|
|
184
|
-
return atributo.match(/(?:path\s*:\s*)?["']([^"']+)["']/i)?.[1];
|
|
185
|
-
}
|
|
186
|
-
function extrairMetodosAtributoPhp(atributo) {
|
|
187
|
-
const direto = atributo.match(/#\[\s*(?:[A-Za-z_\\][A-Za-z0-9_\\]*\\)?(Get|Post|Put|Patch|Delete)\b/i)?.[1]?.toUpperCase();
|
|
188
|
-
if (direto && METODOS_HTTP.has(direto)) {
|
|
189
|
-
return [direto];
|
|
190
|
-
}
|
|
191
|
-
const encontrados = [...atributo.matchAll(/["'](GET|POST|PUT|PATCH|DELETE)["']/gi)]
|
|
192
|
-
.map((match) => match[1].toUpperCase())
|
|
193
|
-
.filter((metodo) => METODOS_HTTP.has(metodo));
|
|
194
|
-
return encontrados.length > 0 ? [...new Set(encontrados)] : [];
|
|
195
|
-
}
|
|
196
|
-
function registrarSimbolo(simbolos, simbolo, parametros, retorno) {
|
|
197
|
-
const normalizado = normalizarSimboloPhp(simbolo);
|
|
198
|
-
if (!normalizado) {
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
simbolos.set(normalizado, {
|
|
202
|
-
simbolo: normalizado,
|
|
203
|
-
retorno: retorno?.replace(/[;{].*$/, "").trim() || undefined,
|
|
204
|
-
parametros: dividirParametrosPhp(parametros),
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
function extrairSimboloHandlerPhp(handler, imports = new Map()) {
|
|
208
|
-
const arrayClass = handler.match(/\[\s*([A-Za-z_\\][A-Za-z0-9_\\]*)::class\s*,\s*["']([A-Za-z_]\w*)["']\s*\]/);
|
|
209
|
-
if (arrayClass) {
|
|
210
|
-
return normalizarSimboloPhp(`${resolverClassePhp(arrayClass[1], imports)}.${arrayClass[2]}`);
|
|
211
|
-
}
|
|
212
|
-
const stringController = handler.match(/["']([A-Za-z_\\][A-Za-z0-9_\\]*)@([A-Za-z_]\w*)["']/);
|
|
213
|
-
if (stringController) {
|
|
214
|
-
return normalizarSimboloPhp(`${resolverClassePhp(stringController[1], imports)}.${stringController[2]}`);
|
|
215
|
-
}
|
|
216
|
-
const invokable = handler.match(/([A-Za-z_\\][A-Za-z0-9_\\]*)::class/);
|
|
217
|
-
if (invokable) {
|
|
218
|
-
return normalizarSimboloPhp(`${resolverClassePhp(invokable[1], imports)}.__invoke`);
|
|
219
|
-
}
|
|
220
|
-
const callable = handler.match(/([A-Za-z_\\][A-Za-z0-9_\\]*)::([A-Za-z_]\w*)/);
|
|
221
|
-
if (callable) {
|
|
222
|
-
return normalizarSimboloPhp(`${resolverClassePhp(callable[1], imports)}.${callable[2]}`);
|
|
223
|
-
}
|
|
224
|
-
return undefined;
|
|
225
|
-
}
|
|
226
|
-
function registrarRota(rotas, metodo, caminho, simbolo, parametros = [], retorno) {
|
|
227
|
-
const metodoNormalizado = metodo.toUpperCase();
|
|
228
|
-
if (!METODOS_HTTP.has(metodoNormalizado)) {
|
|
229
|
-
return;
|
|
230
|
-
}
|
|
231
|
-
const caminhoNormalizado = normalizarCaminhoPhp(caminho);
|
|
232
|
-
const simboloNormalizado = normalizarSimboloPhp(simbolo);
|
|
233
|
-
if (!simboloNormalizado) {
|
|
234
|
-
return;
|
|
235
|
-
}
|
|
236
|
-
rotas.set(`${metodoNormalizado}:${caminhoNormalizado}:${simboloNormalizado}`, {
|
|
237
|
-
origem: "php",
|
|
238
|
-
metodo: metodoNormalizado,
|
|
239
|
-
caminho: caminhoNormalizado,
|
|
240
|
-
simbolo: simboloNormalizado,
|
|
241
|
-
parametros: extrairParametrosRotaPhp(caminhoNormalizado, parametros),
|
|
242
|
-
retorno,
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
export function extrairSimbolosPhp(codigo) {
|
|
246
|
-
const simbolos = new Map();
|
|
247
|
-
const linhas = removerComentariosPhp(codigo).split(/\r?\n/);
|
|
248
|
-
const pilhaClasses = [];
|
|
249
|
-
let classePendente;
|
|
250
|
-
let namespaceAtual = "";
|
|
251
|
-
let profundidade = 0;
|
|
252
|
-
for (let indice = 0; indice < linhas.length; indice += 1) {
|
|
253
|
-
const linhaOriginal = linhas[indice];
|
|
254
|
-
const linhaTrim = linhaOriginal.trim();
|
|
255
|
-
const namespace = linhaTrim.match(/^namespace\s+([^;{]+)[;{]/);
|
|
256
|
-
if (namespace) {
|
|
257
|
-
namespaceAtual = normalizarNamespacePhp(namespace[1]);
|
|
258
|
-
}
|
|
259
|
-
if (classePendente && linhaTrim.startsWith("{")) {
|
|
260
|
-
pilhaClasses.push(classePendente);
|
|
261
|
-
classePendente = undefined;
|
|
262
|
-
}
|
|
263
|
-
const { atributos, proximoIndice } = extrairAtributosPhp(linhas, indice);
|
|
264
|
-
if (atributos.length > 0) {
|
|
265
|
-
indice = proximoIndice;
|
|
266
|
-
}
|
|
267
|
-
const linha = (linhas[indice] ?? linhaOriginal).trim();
|
|
268
|
-
const classe = linha.match(/\b(?:abstract\s+|final\s+)?(?:class|trait|interface|enum)\s+([A-Za-z_]\w*)/);
|
|
269
|
-
if (classe) {
|
|
270
|
-
const entrada = { nome: classe[1], profundidade: profundidade + 1 };
|
|
271
|
-
if (linha.includes("{")) {
|
|
272
|
-
pilhaClasses.push(entrada);
|
|
273
|
-
}
|
|
274
|
-
else {
|
|
275
|
-
classePendente = entrada;
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
const metodo = linha.match(/\b(?:public|protected|private)?\s*(?:static\s+)?function\s+([A-Za-z_]\w*)\s*\(([^)]*)\)\s*(?::\s*([^;{]+))?/);
|
|
279
|
-
if (metodo) {
|
|
280
|
-
const classeAtual = pilhaClasses[pilhaClasses.length - 1]?.nome;
|
|
281
|
-
registrarSimbolo(simbolos, juntarSimbolo(namespaceAtual, classeAtual, metodo[1]), metodo[2] ?? "", metodo[3]);
|
|
282
|
-
}
|
|
283
|
-
for (const closure of linha.matchAll(/\$([A-Za-z_]\w*)\s*=\s*(?:static\s+)?function\s*\(([^)]*)\)\s*(?::\s*([^;{]+))?/g)) {
|
|
284
|
-
registrarSimbolo(simbolos, juntarSimbolo(namespaceAtual, closure[1]), closure[2] ?? "", closure[3]);
|
|
285
|
-
}
|
|
286
|
-
profundidade += contarChar(linha, "{") - contarChar(linha, "}");
|
|
287
|
-
while (pilhaClasses.length > 0 && profundidade < pilhaClasses[pilhaClasses.length - 1].profundidade) {
|
|
288
|
-
pilhaClasses.pop();
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
return [...simbolos.values()].sort((a, b) => a.simbolo.localeCompare(b.simbolo, "pt-BR"));
|
|
292
|
-
}
|
|
293
|
-
export function extrairRotasPhp(codigo) {
|
|
294
|
-
const rotas = new Map();
|
|
295
|
-
const texto = removerComentariosPhp(codigo);
|
|
296
|
-
const imports = extrairImportsPhp(texto);
|
|
297
|
-
const linhas = texto.split(/\r?\n/);
|
|
298
|
-
const pilhaClasses = [];
|
|
299
|
-
let classePendente;
|
|
300
|
-
let namespaceAtual = "";
|
|
301
|
-
let profundidade = 0;
|
|
302
|
-
for (const match of texto.matchAll(/\bRoute::(get|post|put|patch|delete)\s*\(\s*["']([^"']+)["']\s*,\s*([\s\S]*?)\)\s*;/gi)) {
|
|
303
|
-
const simbolo = extrairSimboloHandlerPhp(match[3] ?? "", imports);
|
|
304
|
-
if (simbolo) {
|
|
305
|
-
registrarRota(rotas, match[1], match[2], simbolo);
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
for (const match of texto.matchAll(/\$[A-Za-z_]\w*->(get|post|put|patch|delete)\s*\(\s*["']([^"']+)["']\s*,\s*([\s\S]*?)\)\s*;/gi)) {
|
|
309
|
-
const simbolo = extrairSimboloHandlerPhp(match[3] ?? "", imports);
|
|
310
|
-
if (simbolo) {
|
|
311
|
-
registrarRota(rotas, match[1], match[2], simbolo);
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
for (const match of texto.matchAll(/\bRoute::(?:apiResource|resource)\s*\(\s*["']([^"']+)["']\s*,\s*([A-Za-z_\\][A-Za-z0-9_\\]*)::class/gi)) {
|
|
315
|
-
const recurso = match[1];
|
|
316
|
-
const classe = resolverClassePhp(match[2], imports);
|
|
317
|
-
for (const rota of METODOS_RECURSO_LARAVEL) {
|
|
318
|
-
registrarRota(rotas, rota.metodo, juntarCaminho(recurso, rota.sufixo), `${classe}.${rota.acao}`);
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
for (let indice = 0; indice < linhas.length; indice += 1) {
|
|
322
|
-
const linhaOriginal = linhas[indice];
|
|
323
|
-
const linhaTrim = linhaOriginal.trim();
|
|
324
|
-
const namespace = linhaTrim.match(/^namespace\s+([^;{]+)[;{]/);
|
|
325
|
-
if (namespace) {
|
|
326
|
-
namespaceAtual = normalizarNamespacePhp(namespace[1]);
|
|
327
|
-
}
|
|
328
|
-
if (classePendente && linhaTrim.startsWith("{")) {
|
|
329
|
-
pilhaClasses.push(classePendente);
|
|
330
|
-
classePendente = undefined;
|
|
331
|
-
}
|
|
332
|
-
const { atributos, proximoIndice } = extrairAtributosPhp(linhas, indice);
|
|
333
|
-
if (atributos.length > 0) {
|
|
334
|
-
indice = proximoIndice;
|
|
335
|
-
}
|
|
336
|
-
const linha = (linhas[indice] ?? linhaOriginal).trim();
|
|
337
|
-
const caminhoClasse = atributos.find((atributo) => /#\[\s*(?:[A-Za-z_\\][A-Za-z0-9_\\]*\\)?Route\b/i.test(atributo))
|
|
338
|
-
? extrairCaminhoAtributoPhp(atributos.find((atributo) => /#\[\s*(?:[A-Za-z_\\][A-Za-z0-9_\\]*\\)?Route\b/i.test(atributo)))
|
|
339
|
-
: undefined;
|
|
340
|
-
const classe = linha.match(/\b(?:abstract\s+|final\s+)?(?:class|trait|interface|enum)\s+([A-Za-z_]\w*)/);
|
|
341
|
-
if (classe) {
|
|
342
|
-
const entrada = { nome: classe[1], profundidade: profundidade + 1, caminhoBase: caminhoClasse };
|
|
343
|
-
if (linha.includes("{")) {
|
|
344
|
-
pilhaClasses.push(entrada);
|
|
345
|
-
}
|
|
346
|
-
else {
|
|
347
|
-
classePendente = entrada;
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
const metodo = linha.match(/\b(?:public|protected|private)?\s*(?:static\s+)?function\s+([A-Za-z_]\w*)\s*\(([^)]*)\)\s*(?::\s*([^;{]+))?/);
|
|
351
|
-
if (metodo) {
|
|
352
|
-
const classeAtual = pilhaClasses[pilhaClasses.length - 1];
|
|
353
|
-
const atributosRota = atributos.filter((atributo) => /#\[\s*(?:[A-Za-z_\\][A-Za-z0-9_\\]*\\)?(?:Route|Get|Post|Put|Patch|Delete)\b/i.test(atributo));
|
|
354
|
-
for (const atributo of atributosRota) {
|
|
355
|
-
const caminho = extrairCaminhoAtributoPhp(atributo);
|
|
356
|
-
if (!caminho) {
|
|
357
|
-
continue;
|
|
358
|
-
}
|
|
359
|
-
const metodos = extrairMetodosAtributoPhp(atributo);
|
|
360
|
-
const simbolo = juntarSimbolo(namespaceAtual, classeAtual?.nome, metodo[1]);
|
|
361
|
-
for (const metodoHttp of metodos.length > 0 ? metodos : ["GET"]) {
|
|
362
|
-
registrarRota(rotas, metodoHttp, juntarCaminho(classeAtual?.caminhoBase, caminho), simbolo, dividirParametrosPhp(metodo[2] ?? ""), metodo[3]);
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
profundidade += contarChar(linha, "{") - contarChar(linha, "}");
|
|
367
|
-
while (pilhaClasses.length > 0 && profundidade < pilhaClasses[pilhaClasses.length - 1].profundidade) {
|
|
368
|
-
pilhaClasses.pop();
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
return [...rotas.values()].sort((a, b) => a.caminho.localeCompare(b.caminho, "pt-BR")
|
|
372
|
-
|| a.metodo.localeCompare(b.metodo, "pt-BR")
|
|
373
|
-
|| a.simbolo.localeCompare(b.simbolo, "pt-BR"));
|
|
374
|
-
}
|
|
375
|
-
//# sourceMappingURL=php-symbols.js.map
|
package/dist/php-symbols.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"php-symbols.js","sourceRoot":"","sources":["../src/php-symbols.ts"],"names":[],"mappings":"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"}
|
package/docs/AGENT_STARTER.md
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
# AGENT_STARTER
|
|
2
|
-
|
|
3
|
-
<!-- sema:i18n -->
|
|
4
|
-
> EN: English first. The canonical operational body below may still be in Portuguese until full translation lands.
|
|
5
|
-
> PT: Português depois, com acentos preservados.
|
|
6
|
-
> ES: Español al final; não traduza comandos, rotas nem sómbolos `.sema` sem contrato.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Use este texto como starter curto para qualquer IA antes de editar `.sema`.
|
|
10
|
-
|
|
11
|
-
Ordem canonica de entrada no repo:
|
|
12
|
-
|
|
13
|
-
1. `llms.txt`
|
|
14
|
-
2. `SEMA_BRIEF.md`
|
|
15
|
-
3. `SEMA_INDEX.json`
|
|
16
|
-
4. `AGENTS.md`
|
|
17
|
-
5. `README.md`
|
|
18
|
-
|
|
19
|
-
Roteamento por capacidade:
|
|
20
|
-
|
|
21
|
-
- IA pequena ou gratuita: `llms.txt` -> `SEMA_BRIEF.micro.txt` -> `SEMA_INDEX.json`
|
|
22
|
-
- IA média: `llms.txt` -> `SEMA_BRIEF.curto.txt` -> `SEMA_INDEX.json` -> `README.md`
|
|
23
|
-
- IA grande ou com tool use: `llms-full.txt` -> `SEMA_BRIEF.md` -> `SEMA_INDEX.json` -> `AGENTS.md` -> `README.md`
|
|
24
|
-
|
|
25
|
-
Tres modos de uso da Sema:
|
|
26
|
-
|
|
27
|
-
- projeto novo: modele, valide, compile e verifique antes de subir código derivado
|
|
28
|
-
- projeto já semantizado: inspecione, leia resumo, rode drift e gere contexto antes de editar
|
|
29
|
-
- legado sem Sema: importe, revise o rascunho, formate, valide e use drift como arbitro da adoção incremental
|
|
30
|
-
|
|
31
|
-
Para manter os artefatos gerados da raiz sincronizados:
|
|
32
|
-
|
|
33
|
-
- `sema sync-ai-entrypoints --json`
|
|
34
|
-
|
|
35
|
-
```text
|
|
36
|
-
Voce esta trabalhando com Sema, um contrato semantico IA-first para agentes operarem software vivo em backend e front consumer.
|
|
37
|
-
|
|
38
|
-
Importante:
|
|
39
|
-
- a Sema e protocolo de governanca semantica desenhado para IA, nao para ergonomia humana
|
|
40
|
-
- humanos sao autores/aprovadores; agentes sao os consumidores primarios do contrato
|
|
41
|
-
- a Sema funciona como camada de navegacao operacional para agente, nao como runtime magico
|
|
42
|
-
- leitura humana e bonus toleravel, nao centro do produto
|
|
43
|
-
- a Sema modela contratos, estados, fluxos, erros, efeitos, garantias, vinculos e execucao
|
|
44
|
-
- a Sema gera codigo e scaffolding real para TypeScript, Python e Dart
|
|
45
|
-
- a Sema usa `importar` para bootstrap revisavel, nao para contrato final automatico
|
|
46
|
-
- a Sema usa `drift` para medir diferenca entre contrato e codigo vivo
|
|
47
|
-
- a Sema usa `impl` para ligar task a simbolo real do runtime
|
|
48
|
-
- a Sema usa `resumo` e `prompt-curto` para IA pequena ou gratuita
|
|
49
|
-
- a Sema pode servir de base para interfaces graficas elegantes e coerentes
|
|
50
|
-
- a primeira onda consumer oficial agora cobre `Next.js consumer`, `React/Vite consumer`, `Angular consumer` e `flutter-consumer`
|
|
51
|
-
- esses slices oficiais cobrem `consumer bridge + superficies rastreaveis`, nao geracao completa de UI
|
|
52
|
-
- a proxima camada semantica de front (`screen`, `action`, `query`, `form`, `navigation`) esta documentada como roadmap, nao como sintaxe oficial ja suportada
|
|
53
|
-
- trate a Sema como cerebro semantico da aplicacao, nao como gerador magico de front-end pronto
|
|
54
|
-
- nao cobre da Sema persistencia real, runtime ou smoke test automatico; isso continua sendo engenharia viva
|
|
55
|
-
- se a tarefa envolver UI, priorize `appRoutes`, `consumerSurfaces` e `consumerBridges` antes de abrir arquivo aleatorio
|
|
56
|
-
- evite pedir HTML unico solto quando a intencao for testar a Sema de verdade
|
|
57
|
-
|
|
58
|
-
Regras:
|
|
59
|
-
- nao invente sintaxe fora da gramatica e dos exemplos oficiais
|
|
60
|
-
- se a IA for pequena, comece em `sema resumo` e `briefing.min.json`
|
|
61
|
-
- trate `ir --json` como fonte de verdade semantica
|
|
62
|
-
- trate `diagnosticos --json` como fonte de correcao
|
|
63
|
-
- use `sema formatar` como fonte unica de estilo
|
|
64
|
-
- preserve a intencao do contrato
|
|
65
|
-
- nao cobre da Sema adivinhacao de negocio que nao esta no contrato nem no codigo
|
|
66
|
-
|
|
67
|
-
Comandos essenciais:
|
|
68
|
-
- resumo por capacidade: `sema resumo <arquivo-ou-pasta> [--micro|--curto|--medio] [--para <resumo|onboarding|review|mudanca|bug|arquitetura>]`
|
|
69
|
-
- prompt curto: `sema prompt-curto <arquivo-ou-pasta> [--micro|--curto|--medio] [--para <resumo|onboarding|review|mudanca|bug|arquitetura>]`
|
|
70
|
-
- contexto completo do modulo: `sema contexto-ia <arquivo.sema>`
|
|
71
|
-
- estrutura sintatica: `sema ast <arquivo.sema> --json`
|
|
72
|
-
- estrutura semantica: `sema ir <arquivo.sema> --json`
|
|
73
|
-
- validacao: `sema validar <arquivo.sema> --json`
|
|
74
|
-
- diagnosticos: `sema diagnosticos <arquivo.sema> --json`
|
|
75
|
-
- formatacao: `sema formatar <arquivo.sema>`
|
|
76
|
-
- importacao assistida de legado: `sema importar <nestjs|fastapi|flask|nextjs|nextjs-consumer|react-vite-consumer|angular-consumer|flutter-consumer|firebase|typescript|python|dart|dotnet|java|go|rust|cpp> <diretorio> --saida <diretorio>`
|
|
77
|
-
- geracao de codigo: `sema compilar <arquivo-ou-pasta> --alvo <typescript|python|dart> --saida <diretorio>`
|
|
78
|
-
- verificacao final: `sema verificar <arquivo-ou-pasta> [--json]`
|
|
79
|
-
|
|
80
|
-
Regra pratica de ouro:
|
|
81
|
-
- se a tarefa pedir codigo derivado, `sema compilar` e obrigatorio
|
|
82
|
-
- se a tarefa partir de projeto que nao nasceu com Sema, `sema importar` deve entrar antes da lapidacao semantica
|
|
83
|
-
- se a tarefa pedir apenas leitura ou correcao sem gerar codigo, `sema compilar` pode ficar fora
|
|
84
|
-
|
|
85
|
-
Antes de editar:
|
|
86
|
-
1. leia README, docs de IA e um exemplo oficial parecido
|
|
87
|
-
2. se a IA for pequena, rode `sema resumo <arquivo> --micro`
|
|
88
|
-
3. se a tarefa pedir contexto mais rico, consulte `drift`, `briefing.min.json` e depois AST/IR
|
|
89
|
-
|
|
90
|
-
Depois de editar:
|
|
91
|
-
1. rode `sema formatar`
|
|
92
|
-
2. rode `sema validar --json`
|
|
93
|
-
3. se houver falha, use `diagnosticos --json`
|
|
94
|
-
4. se a tarefa pedir codigo derivado, rode `sema compilar`
|
|
95
|
-
5. feche com `sema verificar <arquivo-ou-pasta> --json`
|
|
96
|
-
|
|
97
|
-
Priorize sempre:
|
|
98
|
-
- exemplos oficiais
|
|
99
|
-
- JSON da CLI
|
|
100
|
-
- consistencia semantica
|
|
101
|
-
|
|
102
|
-
Nao improvise quando faltar contexto.
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
Documentos de apoio:
|
|
106
|
-
|
|
107
|
-
- [como-ensinar-a-sema-para-ia.md](./como-ensinar-a-sema-para-ia.md)
|
|
108
|
-
- [prompt-base-ia-sema.md](./prompt-base-ia-sema.md)
|
|
109
|
-
- [fluxo-pratico-ia-sema.md](./fluxo-pratico-ia-sema.md)
|