@netoalmanca/advpl-sensei 1.1.2 → 1.1.5

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.
@@ -0,0 +1,26 @@
1
+ ---
2
+ description: Busca informações técnicas detalhadas sobre um Entry Point (Ponto de Entrada) diretamente no TDN da TOTVS
3
+ parameters:
4
+ name:
5
+ type: string
6
+ description: "Nome do Entry Point (ex: MT100LOK, MATA010, etc.)"
7
+ ---
8
+
9
+ # /advpl-sensei:entrypoint
10
+
11
+ Busca a documentação oficial do Entry Point no TOTVS Developer Network (TDN) e retorna os parâmetros `PARAMIXB`, tipos de retorno e rotinas envolvidas.
12
+
13
+ ## O que esta ferramenta retorna:
14
+
15
+ - **PARAMIXB**: Lista detalhada de todos os parâmetros recebidos.
16
+ - **Return Type**: Qual o tipo de retorno esperado pelo sistema.
17
+ - **Routine**: Qual programa padrão aciona este ponto de entrada.
18
+ - **URL**: Link oficial para conferência.
19
+
20
+ ## Uso
21
+
22
+ ```bash
23
+ /advpl-sensei:entrypoint MT100LOK
24
+ ```
25
+
26
+ Esta ferramenta é essencial antes de gerar código para pontos de entrada, garantindo que a assinatura da função esteja correta de acordo com a versão atual do Protheus.
@@ -0,0 +1,27 @@
1
+ ---
2
+ description: Valida o código ADVPL/TLPP seguindo as regras de ouro do Sensei (Locals no topo, Notação Húngara, sem Privates)
3
+ parameters:
4
+ source:
5
+ type: string
6
+ description: "Código fonte ADVPL/TLPP para validar"
7
+ filename:
8
+ type: string
9
+ description: "Nome do arquivo (opcional)"
10
+ required: false
11
+ ---
12
+
13
+ # /advpl-sensei:lint
14
+
15
+ Valida o código fonte fornecido contra as regras de ouro do Advpl Sensei.
16
+
17
+ ## Regras Verificadas
18
+
19
+ | Código | Regra | Severidade |
20
+ |--------|-------|------------|
21
+ | `L001` | Variáveis `Local` no topo da função | Erro |
22
+ | `L002` | Proibido uso de `Private` ou `Public` | Erro |
23
+ | `L003` | Notação Húngara obrigatória | Aviso |
24
+
25
+ ## Uso
26
+
27
+ Forneça o código fonte completo ou parcial para análise.
@@ -0,0 +1,207 @@
1
+ ---
2
+ name: Snippets Generator
3
+ description: Gera snippets VS Code baseado nas regras de ouro do Sensei. Facilita a escrita de código ADVPL/TLPP seguindo os padrões.
4
+ parameters:
5
+ action:
6
+ type: string
7
+ description: "Ação a executar: list, generate_vscode, export_json, export_markdown"
8
+ required: true
9
+ output:
10
+ type: string
11
+ description: "Caminho de saída para o arquivo de snippets (opcional)"
12
+ required: false
13
+ outputDir:
14
+ type: string
15
+ description: "Diretório para salvar o arquivo (padrão: diretório atual)"
16
+ required: false
17
+ ---
18
+
19
+ # Snippets Generator - Templates para VS Code
20
+
21
+ Gerador de snippets VS Code que facilitam a escrita de código ADVPL/TLPP seguindo as regras de ouro do Sensei.
22
+
23
+ ## Funcionalidades
24
+
25
+ ### 1. **list** - Lista todos os snippets disponíveis
26
+ Exibe todos os snippets com seus prefixos e descrições
27
+
28
+ **Exemplo:**
29
+ ```
30
+ action: list
31
+ ```
32
+
33
+ **Snippets Disponíveis:**
34
+
35
+ - `advpl_func` - Função ADVPL com estrutura padrão
36
+ - `advpl_func_array` - Função que retorna array
37
+ - `tlpp_class` - Classe TLPP com namespaces
38
+ - `advpl_report` - Report com Pergunte() para parâmetros
39
+ - `advpl_rest` - REST API ADVPL
40
+ - `advpl_validation` - Função de validação
41
+ - `advpl_mvc` - Estrutura MVC
42
+ - `advpl_job` - Job de processamento
43
+ - `advpl_try_catch` - Begin Sequence/Except padrão
44
+ - `advpl_db_select` - Acesso seguro a área de dados
45
+
46
+ ### 2. **generate_vscode** - Gera arquivo de snippets para VS Code
47
+ Cria o arquivo `.code-snippets` na estrutura do projeto
48
+
49
+ **Exemplo:**
50
+ ```
51
+ action: generate_vscode
52
+ output: .vscode/advpl-sensei.code-snippets
53
+ outputDir: /path/to/project
54
+ ```
55
+
56
+ Resultado: Cria arquivo JSON pronto para usar como snippets globais do VS Code
57
+
58
+ ### 3. **export_json** - Exporta snippets em JSON
59
+ Exporta todos os snippets em formato JSON
60
+
61
+ **Exemplo:**
62
+ ```
63
+ action: export_json
64
+ ```
65
+
66
+ ### 4. **export_markdown** - Exporta referência em Markdown
67
+ Gera documentação Markdown com todos os snippets
68
+
69
+ **Exemplo:**
70
+ ```
71
+ action: export_markdown
72
+ ```
73
+
74
+ ## Estrutura dos Snippets
75
+
76
+ Todos os snippets seguem estas regras de ouro do Sensei:
77
+
78
+ ✅ **Includes corretos** - `#Include "TOTVS.CH"` e `#Include "PROTHEUS.CH"`
79
+ ✅ **Protheus.doc header** - Documentação padrão
80
+ ✅ **Begin Sequence com tratamento de erro** - Tratamento de exceções
81
+ ✅ **Locals no topo** - Variáveis declaradas corretamente
82
+ ✅ **Notação Húngara** - Nomenclatura de variáveis
83
+ ✅ **RestArea** - Preservação de área de dados
84
+
85
+ ## Exemplos de Uso
86
+
87
+ ### Snippet: `advpl_func`
88
+ Função completa com estrutura padrão
89
+
90
+ ```advpl
91
+ #Include "TOTVS.CH"
92
+ #Include "PROTHEUS.CH"
93
+
94
+ /*/{Protheus.doc} NomeFuncao
95
+ Descrição breve da função
96
+ @type function
97
+ @author Seu Nome
98
+ @since Data
99
+ @version 1.0
100
+ /*/
101
+ User Function NomeFuncao()
102
+ // Declarações de variáveis locais
103
+ Local nRetorno := 0
104
+ Local cMsg := ""
105
+ Local aArea := GetArea()
106
+
107
+ Begin Sequence
108
+ // Lógica da função aqui
109
+
110
+ Except
111
+ cMsg := "Erro em NomeFuncao: " + AllTrim(OldNotation(GetErrorMessage(GetException())))
112
+ ConOut(cMsg)
113
+ nRetorno := 0
114
+
115
+ End Sequence
116
+
117
+ RestArea(aArea)
118
+ Return nRetorno
119
+ ```
120
+
121
+ ### Snippet: `tlpp_class`
122
+ Classe TLPP com namespace e métodos
123
+
124
+ ```tlpp
125
+ #Include "TOTVS.CH"
126
+ #Include "PROTHEUS.CH"
127
+
128
+ Namespace NomeNamespace
129
+
130
+ /*/{Protheus.doc} NomeClasse
131
+ Descrição da classe
132
+ @type class
133
+ @author Seu Nome
134
+ @since Data
135
+ @version 1.0
136
+ /*/
137
+ Class NomeClasse
138
+ Data cPropriedade := ""
139
+ Data nValor := 0
140
+
141
+ Method New() Constructor
142
+ Method Execute() As Logical
143
+ EndClass
144
+
145
+ Method New() Class NomeClasse
146
+ ::cPropriedade := ""
147
+ ::nValor := 0
148
+ Return Self
149
+
150
+ Method Execute() As Logical Class NomeClasse
151
+ Local lRetorno := .T.
152
+ Local cMsg := ""
153
+
154
+ Begin Sequence
155
+ // Implementação aqui
156
+
157
+ Except
158
+ cMsg := "Erro em Execute: " + AllTrim(OldNotation(GetErrorMessage(GetException())))
159
+ ConOut(cMsg)
160
+ lRetorno := .F.
161
+
162
+ End Sequence
163
+
164
+ Return lRetorno
165
+
166
+ EndClass
167
+
168
+ End Namespace
169
+ ```
170
+
171
+ ## Como Usar no VS Code
172
+
173
+ ### 1. **Gerar e instalar os snippets**
174
+ ```
175
+ Ação: generate_vscode
176
+ Output: .vscode/advpl-sensei.code-snippets
177
+ ```
178
+
179
+ ### 2. **Usar um snippet**
180
+ - Abra um arquivo `.prw` ou `.tlpp`
181
+ - Digite o prefixo (ex: `advpl_func`)
182
+ - Pressione Tab ou Enter para expandir
183
+ - Preencha os placeholders (${1:texto}, ${2:texto}, etc)
184
+
185
+ ### 3. **Exemplo prático**
186
+ 1. Digite `advpl_func` e pressione Tab
187
+ 2. VS Code expande para a estrutura completa
188
+ 3. Seu nome fica destacado para preenchimento
189
+ 4. Pressione Tab para ir para próximo placeholder
190
+ 5. Continue até completar todos os campos
191
+
192
+ ## Benefícios
193
+
194
+ ✨ **Consistência** - Garante uso das regras de ouro em todo projeto
195
+ 📝 **Agilidade** - Economiza tempo na escrita de boilerplate
196
+ 🎓 **Educação** - Demonstra padrões corretos para novos desenvolvedores
197
+ 🔍 **Rastreabilidade** - Facilita análise e linting de código
198
+
199
+ ## Customização
200
+
201
+ Para adicionar novos snippets ou modificar existentes:
202
+
203
+ 1. Mantenha a estrutura de Begin Sequence...Except
204
+ 2. Use Notação Húngara em variáveis
205
+ 3. Inclua Protheus.doc header
206
+ 4. Adicione RestArea para preservar área de dados
207
+ 5. Siga as convenções de naming do Sensei
package/commands/sx.md ADDED
@@ -0,0 +1,110 @@
1
+ ---
2
+ name: SX Tool
3
+ description: Consulta estruturada ao dicionário Protheus (SX tables). Busque tabelas, campos, parâmetros do sistema e tabelas genéricas.
4
+ parameters:
5
+ action:
6
+ type: string
7
+ description: "Ação a executar: list_tables, get_table, search_fields, get_parameters, get_generic_table, export"
8
+ required: true
9
+ query:
10
+ type: string
11
+ description: "Parâmetro da consulta (nome da tabela, padrão de busca, código de parâmetro, etc)"
12
+ required: false
13
+ format:
14
+ type: string
15
+ description: "Formato de resposta: markdown ou json (padrão: markdown)"
16
+ required: false
17
+ ---
18
+
19
+ # SX Tool - Consulta ao Dicionário Protheus
20
+
21
+ Ferramenta especializada em fornecer acesso rápido e estruturado ao dicionário de dados Protheus (tabelas SX).
22
+
23
+ ## Funcionalidades
24
+
25
+ ### 1. **list_tables** - Lista todas as tabelas
26
+ Exibe todas as tabelas disponíveis com suas descrições
27
+
28
+ **Exemplo de uso:**
29
+ ```
30
+ action: list_tables
31
+ ```
32
+
33
+ ### 2. **get_table** - Obtém detalhes de uma tabela
34
+ Retorna a estrutura completa de uma tabela com todos os campos
35
+
36
+ **Exemplo de uso:**
37
+ ```
38
+ action: get_table
39
+ query: SA1
40
+ ```
41
+
42
+ ### 3. **search_fields** - Busca campos por padrão
43
+ Busca campos em uma tabela usando wildcards (*)
44
+
45
+ **Exemplo de uso:**
46
+ ```
47
+ action: search_fields
48
+ query: SA1|*COD
49
+ ```
50
+ Busca todos os campos contendo "COD" na tabela SA1
51
+
52
+ ### 4. **get_parameters** - Lista parâmetros do sistema
53
+ Retorna parâmetros MV_* organizados por módulo
54
+
55
+ **Exemplo de uso:**
56
+ ```
57
+ action: get_parameters
58
+ query: Financeiro
59
+ ```
60
+
61
+ ### 5. **get_generic_table** - Consulta tabelas genéricas (SX5)
62
+ Retorna valores de uma tabela genérica com códigos e descrições
63
+
64
+ **Exemplo de uso:**
65
+ ```
66
+ action: get_generic_table
67
+ query: 13
68
+ ```
69
+
70
+ ### 6. **export** - Exporta dados em JSON
71
+ Exporta os dados do dicionário em formato JSON
72
+
73
+ **Exemplo de uso:**
74
+ ```
75
+ action: export
76
+ query: tables
77
+ ```
78
+
79
+ ## Tabelas Disponíveis para Consulta
80
+
81
+ - **SA1** - Clientes
82
+ - **SA3** - Vendedores
83
+ - **SC5** - Pedidos de Vendas
84
+ - **SX3** - Dicionário de Campos
85
+
86
+ ## Tabelas Genéricas (SX5)
87
+
88
+ - **01** - Condições de Pagamento
89
+ - **13** - Estados/Províncias
90
+ - **AB** - Possíveis UF
91
+
92
+ ## Parâmetros por Módulo
93
+
94
+ - Geral: MV_ESTADO
95
+ - Financeiro: MV_MOEDA1, MV_JUROS, MV_MULTA
96
+ - Faturamento: MV_USARFT
97
+
98
+ ## Exemplo de Fluxo
99
+
100
+ 1. Usuário: "Quais são os campos da tabela SA1?"
101
+ - SX Tool executa: `get_table | SA1`
102
+ - Retorna estrutura completa com tipos, tamanhos e descrições
103
+
104
+ 2. Usuário: "Como validar um estado?"
105
+ - SX Tool executa: `get_generic_table | 13`
106
+ - Retorna lista de estados válidos
107
+
108
+ 3. Usuário: "Qual é a taxa de juros padrão?"
109
+ - SX Tool executa: `get_parameters | Financeiro`
110
+ - Retorna valor do parâmetro MV_JUROS
@@ -0,0 +1,202 @@
1
+ ---
2
+ name: validate-tdn
3
+ description: Valida código ADVPL/TLPP ou funções individuais contra TDN (TOTVS Developer Network). Detecta funções fictícias, incompatibilidades de linguagem e cobertura TDN.
4
+ parameters:
5
+ code:
6
+ type: string
7
+ required: false
8
+ description: "Código ADVPL/TLPP a validar. Análise de funções usadas. Exemplo: 'Local x := Upper(\"test\")'"
9
+ function:
10
+ type: string
11
+ required: false
12
+ description: "Nome de função individual a validar. Exemplo: 'DbSeek'"
13
+ language:
14
+ type: string
15
+ required: false
16
+ description: "Linguagem do código. Valores: 'advpl', 'tlpp', 'both'. Padrão: 'advpl'"
17
+ enum: ["advpl", "tlpp", "both"]
18
+ filename:
19
+ type: string
20
+ required: false
21
+ description: "Nome do arquivo para contexto. Exemplo: 'meu-programa.prw'. Padrão: 'code.prw'"
22
+ detailed:
23
+ type: boolean
24
+ required: false
25
+ description: "Se true, retorna detalhes completos incluindo sugestões. Padrão: false"
26
+ forceRefresh:
27
+ type: boolean
28
+ required: false
29
+ description: "Se true, busca dados TDN atualizados (ignora cache de 24h). Padrão: false"
30
+ ---
31
+
32
+ # Validação TDN - Comando ADVPL Sensei
33
+
34
+ ## Descrição
35
+
36
+ Valida código ADVPL/TLPP ou funções individuais contra o banco de dados de funções TDN (TOTVS Developer Network).
37
+
38
+ **Funcionalidades:**
39
+ - ✅ Validação de funções contra TDN
40
+ - ✅ Detecção automática de funções fictícias
41
+ - ✅ Verificação de compatibilidade ADVPL/TLPP
42
+ - ✅ Relatórios formatados com severity
43
+ - ✅ Cache inteligente de 24 horas
44
+ - ✅ Sugestões de correção
45
+
46
+ ## Uso
47
+
48
+ ### Validar Função Individual
49
+
50
+ ```
51
+ advpl_validate_tdn function="DbSeek" language="advpl"
52
+ ```
53
+
54
+ **Resultado:**
55
+ ```
56
+ ✅ Status: VALID
57
+ 📝 Message: Function 'DbSeek' verified in TDN ✅
58
+ ⚠️ Severity: info
59
+ ```
60
+
61
+ ### Validar Bloco de Código
62
+
63
+ ```
64
+ advpl_validate_tdn code="Local x := Upper('hello')" language="advpl"
65
+ ```
66
+
67
+ **Resultado:**
68
+ ```
69
+ ✅ No issues found - Code is valid!
70
+
71
+ 🎯 TDN Coverage: 100%
72
+ 📊 Functions Found: 0 (none to validate)
73
+ ```
74
+
75
+ ### Validar com Detalhes
76
+
77
+ ```
78
+ advpl_validate_tdn code="Local y := FakeFunc()" language="advpl" detailed=true
79
+ ```
80
+
81
+ **Resultado mostrará:**
82
+ - Informações completas sobre funções
83
+ - Sugestões de correção
84
+ - Links para documentação TDN
85
+
86
+ ## Fases
87
+
88
+ - **Phase 6:** TdnFunctionValidator criado (base)
89
+ - **Phase 8:** Integração com snippets (validação de código)
90
+ - **Phase 9:** TdnFunctionScraper (76 funções catalogadas)
91
+ - **Phase 10:** `advpl_validate_tdn` command (NEW)
92
+
93
+ ## TDN Coverage
94
+
95
+ **76 funções verificadas em 9 categorias:**
96
+
97
+ | Categoria | Funções | Exemplos |
98
+ |-----------|---------|----------|
99
+ | Database | 20 | DbSeek, DbSkip, Eof, GetArea, RestArea |
100
+ | Type | 17 | Val, Str, Date, Empty, Int, Round |
101
+ | String | 13 | Upper, Lower, SubStr, StrTran, Len |
102
+ | Math | 6 | Min, Max, Mod, Sqrt, Exp, Log |
103
+ | Array | 6 | AClone, AAdd, ADel, ASize, AScan, ASort |
104
+ | Date | 4 | Month, Year, Day, Time |
105
+ | Parameters | 4 | GetMV, GetSX3, GetSX5, PutMV |
106
+ | Interface | 3 | Alert, MsgBox, ConOut |
107
+ | Framework | 3 | GetException, GetErrorMessage, OldNotation |
108
+
109
+ ## Exemplos
110
+
111
+ ### Exemplo 1: Detectar Ficção
112
+
113
+ ```
114
+ advpl_validate_tdn code="oServer := HttpServer():New()"
115
+ ```
116
+
117
+ Resultado: **❌ HttpServer is fictitious** (não existe em TDN)
118
+
119
+ ### Exemplo 2: Compatibilidade ADVPL/TLPP
120
+
121
+ ```
122
+ advpl_validate_tdn code="DbSeek(...)" language="tlpp"
123
+ ```
124
+
125
+ Resultado: **⚠️ Incompatibility** (DbSeek é ADVPL-only)
126
+
127
+ ### Exemplo 3: Validação Completa
128
+
129
+ ```
130
+ advpl_validate_tdn code="
131
+ Local aArea := GetArea()
132
+ DbSeek(cCodigo)
133
+ If !Eof()
134
+ RecLock()
135
+ ...
136
+ RestArea(aArea)
137
+ EndIf
138
+ " language="advpl" detailed=true
139
+ ```
140
+
141
+ Resultado: **✅ All functions verified**
142
+
143
+ ## Fluxo de Validação
144
+
145
+ ```
146
+ 1. Code Input
147
+
148
+ 2. Parse Functions
149
+
150
+ 3. Check against TdnFunctionValidator
151
+
152
+ 4. Verify with TdnFunctionScraper (76 functions)
153
+
154
+ 5. Check Registry (78 functions)
155
+
156
+ 6. Generate Report with Severity
157
+ ```
158
+
159
+ ## Relatórios
160
+
161
+ ### Formato: Problema Encontrado
162
+
163
+ ```
164
+ ⚠️ Issues Found: 2
165
+
166
+ 🔴 TDN Validation Issues:
167
+
168
+ ERRORS (1):
169
+ • HttpServer: Function 'HttpServer' is fictitious or deprecated
170
+
171
+ WARNINGS (0):
172
+
173
+ 🟡 Structure Validation Issues:
174
+ • [ERROR] Missing return statement
175
+ ```
176
+
177
+ ### Formato: Sem Problemas
178
+
179
+ ```
180
+ ✅ No issues found - Code is valid!
181
+
182
+ 🎯 TDN Coverage: 100%
183
+ 📊 Functions Found: 0 (none to validate)
184
+ ```
185
+
186
+ ## Cache
187
+
188
+ - **Duração:** 24 horas
189
+ - **Bypass:** Use `forceRefresh=true`
190
+ - **Rastreamento:** Campo `"Cache Hit"` no relatório
191
+
192
+ ## Próximas Melhorias
193
+
194
+ - [ ] Web scraper real de TDN
195
+ - [ ] Persistência de cache em arquivo
196
+ - [ ] Integração com IDE real
197
+ - [ ] Análise de padrões de uso
198
+
199
+ ---
200
+
201
+ **Versão:** Phase 10 - MCP Integration
202
+ **Status:** ✅ Production Ready